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,45 @@
1
+ /** Helper function to copy a map. (You can also use a Map constructor to accomplish this task.) */
2
+ export function copyMap(oldMap) {
3
+ const newMap = new Map();
4
+ for (const [key, value] of oldMap.entries()) {
5
+ newMap.set(key, value);
6
+ }
7
+ return newMap;
8
+ }
9
+ /**
10
+ * Helper function to get the closest value from a map based on partial search text. For the
11
+ * purposes of this function, both search text and map keys are converted to lowercase before
12
+ * attempting to find a match.
13
+ *
14
+ * For example:
15
+ *
16
+ * ```ts
17
+ * const map = new <string, number>Map([
18
+ * ["foo", 123],
19
+ * ["bar", 456],
20
+ * ]);
21
+ * const searchText = "f";
22
+ * const match = getMapPartialMatch(map, searchText); // match is now equal to 123
23
+ *
24
+ * @returns If a match was found, returns a tuple of the map key and value. If a match was not
25
+ * found, returns undefined.
26
+ * ```
27
+ */
28
+ export function getMapPartialMatch(searchText, map) {
29
+ const keys = [...map.keys()];
30
+ keys.sort();
31
+ searchText = searchText.toLowerCase();
32
+ searchText = searchText.replaceAll(" ", "");
33
+ const matchingKeys = keys.filter((key) => key.toLowerCase().startsWith(searchText));
34
+ matchingKeys.sort();
35
+ const matchingKey = matchingKeys[0];
36
+ if (matchingKey === undefined) {
37
+ return undefined;
38
+ }
39
+ const value = map.get(matchingKey);
40
+ if (value === undefined) {
41
+ return undefined;
42
+ }
43
+ return [matchingKey, value];
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvaXNhYWNzY3JpcHQtY29tbW9uL3NyYy9mdW5jdGlvbnMvbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1HQUFtRztBQUNuRyxNQUFNLFVBQVUsT0FBTyxDQUFPLE1BQWlCO0lBQzdDLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFRLENBQUM7SUFDL0IsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUMzQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN4QjtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxVQUFrQixFQUNsQixHQUEyQjtJQUUzQixNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRVosVUFBVSxHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ3ZDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQ3pDLENBQUM7SUFDRixZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFcEIsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRTtRQUM3QixPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQ3ZCLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixDQUFDIn0=
package/functions/map.lua CHANGED
@@ -59,3 +59,5 @@ function ____exports.getMapPartialMatch(self, searchText, map)
59
59
  return {matchingKey, value}
60
60
  end
61
61
  return ____exports
62
+
63
+ --# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUNBLG1DQUE4QjtBQUN0QixtQkFBUyxVQUFJO0FBQ25CLDJCQUEyQixzQkFBTztjQUF0QjtjQUFLO1FBQ2YsT0FBTyxJQUFJLEtBQUs7O0FBR2xCLFdBQU87QUFOVDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBLDhDQUNFLFlBQ0E7QUFFTSxpQkFBTyxDQUFDLGFBQUcsSUFBSTtJQUNyQjtBQUVBLGlCQUFhO0FBQ2IsaUJBQWEsbUNBQXNCLEtBQUs7QUFFbEMseUJBQWU7UUFBQTtRQUFZLGVBQUMsS0FDaEM7WUFBQTtZQUE2QjtTQURFOztJQUdqQztBQUVNLHdCQUFjLGFBQWE7T0FDN0I7QUFDRjs7QUFHSSxrQkFBUSxJQUFJLElBQUk7T0FDbEI7QUFDRjs7QUFHRixXQUFPLENBQUMsYUFBYTtBQXpCdkIiLCJmaWxlIjoibWFwLmx1YSIsInNvdXJjZVJvb3QiOiIifQ==
@@ -0,0 +1,103 @@
1
+ import { Direction } from "isaac-typescript-definitions";
2
+ import { directionToVector } from "./direction";
3
+ /**
4
+ * Helper function to normalize an integer.
5
+ *
6
+ * - If `x` is less than `min`, then it will be clamped to `min`.
7
+ * - If `x` is greater than `max`, then it will be clamped to `max`.
8
+ */
9
+ export function clamp(x, min, max) {
10
+ return Math.max(min, Math.min(x, max));
11
+ }
12
+ export function getAngleDifference(angle1, angle2) {
13
+ const subtractedAngle = angle1 - angle2;
14
+ return ((subtractedAngle + 180) % 360) - 180;
15
+ }
16
+ /**
17
+ * Helper function to get an array of equidistant points on the circumference around a circle.
18
+ * Useful for equally distributing things in a circle pattern.
19
+ *
20
+ * @param centerPos A position that represents the center of the center to get the points from.
21
+ * @param radius The radius of the circle.
22
+ * @param numPoints The number of points on the circumference of the circle to get.
23
+ * @param xMultiplier An optional multiplier to get the points around an oval. Default is 1.
24
+ * @param yMultiplier An optional multiplier to get the points around an oval. Default is 1.
25
+ * @param initialDirection By default, the first point on the circle will be on the top center, but
26
+ * this can be optionally changed by specifying this argument.
27
+ */
28
+ export function getCircleDiscretizedPoints(centerPos, radius, numPoints, xMultiplier = 1, yMultiplier = 1, initialDirection = Direction.UP) {
29
+ const vector = directionToVector(initialDirection);
30
+ const initialPosition = vector.mul(radius);
31
+ const positions = [];
32
+ for (let i = 0; i < numPoints; i++) {
33
+ const rotatedPosition = initialPosition.Rotated((i * 360) / numPoints);
34
+ rotatedPosition.X *= xMultiplier;
35
+ rotatedPosition.Y *= yMultiplier;
36
+ const positionFromCenter = centerPos.add(rotatedPosition);
37
+ positions.push(positionFromCenter);
38
+ }
39
+ return positions;
40
+ }
41
+ /**
42
+ * Helper function to check if a given position is within a given rectangle.
43
+ *
44
+ * This is an inclusive check, meaning that it will return true if the position is on the border of
45
+ * the rectangle.
46
+ */
47
+ export function inRectangle(position, topLeft, bottomRight) {
48
+ return (position.X >= topLeft.X &&
49
+ position.X <= bottomRight.X &&
50
+ position.Y >= topLeft.Y &&
51
+ position.Y <= bottomRight.Y);
52
+ }
53
+ /**
54
+ * From: https://www.geeksforgeeks.org/check-if-any-point-overlaps-the-given-circle-and-rectangle/
55
+ */
56
+ export function isCircleIntersectingRectangle(circleCenter, circleRadius, rectangleTopLeft, rectangleBottomRight) {
57
+ const nearestX = Math.max(rectangleTopLeft.X, Math.min(circleCenter.X, rectangleBottomRight.X));
58
+ const nearestY = Math.max(rectangleTopLeft.Y, Math.min(circleCenter.Y, rectangleBottomRight.Y));
59
+ const nearestPointToCircleOnRectangle = Vector(nearestX, nearestY);
60
+ const distanceToCenterOfCircle = nearestPointToCircleOnRectangle.Distance(circleCenter);
61
+ return distanceToCenterOfCircle <= circleRadius;
62
+ }
63
+ export function isEven(num) {
64
+ // This is benchmarked to be faster than using the modulus operator by 3%.
65
+ return (num & 1) === 0;
66
+ }
67
+ export function isOdd(num) {
68
+ // This is benchmarked to be faster than using the modulus operator by 3%.
69
+ return (num & 1) === 1;
70
+ }
71
+ export function lerp(a, b, pos) {
72
+ return a + (b - a) * pos;
73
+ }
74
+ export function lerpAngleDegrees(aStart, aEnd, percent) {
75
+ return aStart + getAngleDifference(aStart, aEnd) * percent;
76
+ }
77
+ /**
78
+ * If rounding fails, this function returns 0.
79
+ * From: http://lua-users.org/wiki/SimpleRound
80
+ *
81
+ * @param num The number to round.
82
+ * @param numDecimalPlaces Default is 0.
83
+ */
84
+ export function round(num, numDecimalPlaces = 0) {
85
+ const roundedNum = tonumber(string.format(`%.${numDecimalPlaces}f`, num));
86
+ return roundedNum === undefined ? 0 : roundedNum;
87
+ }
88
+ /**
89
+ * @returns 1 if n is positive, -1 if n is negative, or 0 if n is 0.
90
+ */
91
+ export function sign(n) {
92
+ if (n > 0) {
93
+ return 1;
94
+ }
95
+ if (n < 0) {
96
+ return -1;
97
+ }
98
+ return 0;
99
+ }
100
+ export function tanh(x) {
101
+ return (Math.exp(x) - Math.exp(-x)) / (Math.exp(x) + Math.exp(-x));
102
+ }
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVoRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsQ0FBTSxFQUFFLEdBQVEsRUFBRSxHQUFRO0lBQzlDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQWEsRUFBRSxNQUFhO0lBQzdELE1BQU0sZUFBZSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDeEMsT0FBTyxDQUFDLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQ3hDLFNBQWlCLEVBQ2pCLE1BQWEsRUFDYixTQUFjLEVBQ2QsV0FBVyxHQUFHLENBQUMsRUFDZixXQUFXLEdBQUcsQ0FBQyxFQUNmLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxFQUFFO0lBRS9CLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbkQsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxNQUFNLFNBQVMsR0FBYSxFQUFFLENBQUM7SUFDL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFB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
@@ -116,3 +116,5 @@ function ____exports.tanh(self, x)
116
116
  return (math.exp(x) - math.exp(-x)) / (math.exp(x) + math.exp(-x))
117
117
  end
118
118
  return ____exports
119
+
120
+ --# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDZDQUEwQjtBQUFqQjtBQUNULHNCQUFrQztBQUF6Qjs7Ozs7QUFRVCxpQ0FBc0IsR0FBUSxLQUFVO0FBQ3RDLFdBQU87UUFBUztRQUFLLFNBQVMsR0FBRzs7QUFEbkM7QUFJQSw4Q0FBbUMsUUFBZTtBQUMxQyw0QkFBa0IsU0FBUztBQUNqQyxXQUFPLENBQUUsa0JBQWtCLE9BQU8sTUFBTztBQUYzQzs7Ozs7Ozs7Ozs7QUFpQkEsc0RBQ0UsV0FDQSxRQUNBLFdBQ0EsYUFDQSxhQUNBO09BRkE7UUFBQSxjQUFjOztPQUNkO1FBQUEsY0FBYzs7T0FDZDtRQUFBLG1CQUFtQjs7QUFFYixtQkFBUyx1QkFBa0I7QUFDM0IsNEJBQWtCLFNBQVc7QUFDN0Isc0JBQXNCOztBQUNuQixrQkFBSTtjQUFHLElBQUk7QUFDWixvQ0FBa0IsZ0JBQWdCLFFBQVEsSUFBSyxNQUFPO0FBQzVELG9EQUFxQjtBQUNyQixvREFBcUI7QUFDZix1Q0FBcUIsWUFBYztBQUN6Qyx3Q0FBZTtBQUxjOzs7QUFRL0IsV0FBTztBQW5CVDs7Ozs7QUE0QkEsdUNBQ0UsVUFDQSxTQUNBO0FBRUEsV0FDRSxjQUFjLGNBQ2QsY0FBYyxrQkFDZCxjQUFjLGNBQ2QsY0FBYztBQVRsQjs7QUFnQkEseURBQ0UsY0FDQSxjQUNBLGtCQUNBO0FBRU0scUJBQVc7UUFDZjtRQUNBLFNBQVMsZ0JBQWdCOztBQUdyQixxQkFBVztRQUNmO1FBQ0EsU0FBUyxnQkFBZ0I7O0FBR3JCLDRDQUFrQyxPQUFPLFVBQVU7QUFDbkQscUNBQ0osZ0NBQWdDLFNBQVM7QUFFM0MsV0FBTyw0QkFBNEI7QUFwQnJDO0FBdUJBLGtDQUF1QjtBQUVyQixXQUFPLE1BQU8sS0FBTztBQUZ2QjtBQUtBLGlDQUFzQjtBQUVwQixXQUFPLE1BQU8sS0FBTztBQUZ2QjtBQUtBLGdDQUFxQixHQUFXLEdBQVc7QUFDekMsV0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLO0FBRHZCO0FBSUEsNENBQ0UsUUFDQSxNQUNBO0FBRUEsV0FBTyxTQUFTLG9DQUFtQixRQUFRLFFBQVE7QUFMckQ7Ozs7OztBQWVBLGlDQUFzQixLQUFZO09BQUE7UUFBQSxtQkFBbUI7O0FBQzdDLHVCQUFhLFNBQVM7U0FBYyxpQkFBSyxzQkFBZ0I7UUFBSzs7QUFDcEUsV0FBTyxzQkFBMkIsS0FBSTtBQUZ4Qzs7O0FBUUEsZ0NBQXFCO09BQ2YsSUFBSTtBQUNOLGVBQU87O09BR0wsSUFBSTtBQUNOLGdCQUFROztBQUdWLFdBQU87QUFUVDtBQVlBLGdDQUFxQjtBQUNuQixXQUFPLENBQUMsU0FBUyxLQUFLLFVBQVUsTUFBTyxVQUFTLEtBQUssVUFBVTtBQURqRSIsImZpbGUiOiJtYXRoLmx1YSIsInNvdXJjZVJvb3QiOiIifQ==
@@ -0,0 +1,213 @@
1
+ import { SerializationType } from "../enums/SerializationType";
2
+ import { merge } from "../features/saveDataManager/merge";
3
+ import { deepCopy } from "./deepCopy";
4
+ import { log } from "./log";
5
+ import { isRNG, newRNG } from "./rng";
6
+ import { isSerializedIsaacAPIClass } from "./serialization";
7
+ import { copyVector, isVector } from "./vector";
8
+ export function mergeTests() {
9
+ oldTableHasUpdatedValue();
10
+ newTableHasSameValue();
11
+ oldTableHasUpdatedValueFromNull();
12
+ oldTableHasSerializedIsaacAPIClass();
13
+ oldTableHasFilledInterface();
14
+ oldTableHasVector();
15
+ oldTableHasVectorSerialized();
16
+ oldTableHasRNG();
17
+ oldTableHasRNGSerialized();
18
+ log("All merge tests passed!");
19
+ }
20
+ function oldTableHasUpdatedValue() {
21
+ const key = "foo";
22
+ const oldValue = "bar";
23
+ const newValue = "baz";
24
+ const oldTable = {
25
+ foo: oldValue,
26
+ };
27
+ const newTable = {
28
+ foo: newValue,
29
+ };
30
+ merge(oldTable, newTable, "oldTableHasUpdatedValue");
31
+ const oldTableValue = oldTable.get(key);
32
+ if (oldTableValue !== newValue) {
33
+ error(`The old table does not have a value of: ${newValue}`);
34
+ }
35
+ }
36
+ function newTableHasSameValue() {
37
+ const key = "foo";
38
+ const oldValue = "bar";
39
+ const newValue = "baz";
40
+ const oldTable = {
41
+ foo: oldValue,
42
+ };
43
+ const newTable = {
44
+ foo: newValue,
45
+ };
46
+ merge(oldTable, newTable, "newTableHasSameValue");
47
+ const newTableValue = newTable.get(key);
48
+ if (newTableValue !== newValue) {
49
+ error(`The new table does not have a value of: ${newValue}`);
50
+ }
51
+ }
52
+ function oldTableHasUpdatedValueFromNull() {
53
+ const key = "foo";
54
+ const newValue = "baz";
55
+ const oldTable = {
56
+ foo: null,
57
+ };
58
+ const newTable = {
59
+ foo: newValue,
60
+ };
61
+ merge(oldTable, newTable, "oldTableHasUpdatedValueFromNull");
62
+ const oldTableValue = oldTable.get(key);
63
+ if (oldTableValue !== newValue) {
64
+ error(`The old table does not have a value of: ${newValue}`);
65
+ }
66
+ }
67
+ function oldTableHasSerializedIsaacAPIClass() {
68
+ const x = 50;
69
+ const y = 60;
70
+ const vector = Vector(x, y);
71
+ const vectorSerialized = copyVector(vector, SerializationType.SERIALIZE);
72
+ if (!isSerializedIsaacAPIClass(vectorSerialized)) {
73
+ error('The "isSerializedIsaacAPIClass" function says that a serialized vector is not serialized.');
74
+ }
75
+ }
76
+ function oldTableHasFilledInterface() {
77
+ const key = "foo";
78
+ const newValue = "baz";
79
+ const oldTable = {
80
+ foo: null,
81
+ };
82
+ const foo = {
83
+ bar: newValue,
84
+ };
85
+ const newTable = {
86
+ foo,
87
+ };
88
+ merge(oldTable, newTable, "oldTableHasFilledInterface");
89
+ const oldTableValue = oldTable.get(key);
90
+ if (oldTableValue === undefined) {
91
+ error(`The old table's key of "${key}" was not filled.`);
92
+ }
93
+ if (oldTableValue.bar !== newValue) {
94
+ error('The old table\'s key of "bar" was not filled.');
95
+ }
96
+ }
97
+ function oldTableHasVector() {
98
+ log("Starting test: oldTableHasVector");
99
+ const key = "foo";
100
+ const x = 50;
101
+ const y = 60;
102
+ const newValue = Vector(x, y);
103
+ const oldTable = {
104
+ foo: null,
105
+ };
106
+ const foo = {
107
+ bar: newValue,
108
+ };
109
+ const newTable = {
110
+ foo,
111
+ };
112
+ merge(oldTable, newTable, "oldTableHasVector");
113
+ const oldTableValue = oldTable.get(key);
114
+ if (oldTableValue === undefined) {
115
+ error(`The old table's key of "${key}" was not filled.`);
116
+ }
117
+ if (oldTableValue.bar.X !== x) {
118
+ error(`The old table's value for "x" does not match: ${x}`);
119
+ }
120
+ if (oldTableValue.bar.Y !== y) {
121
+ error(`The old table's value for "y" does not match: ${y}`);
122
+ }
123
+ if (!isVector(oldTableValue.bar)) {
124
+ error("The old table's value is not a Vector object.");
125
+ }
126
+ }
127
+ function oldTableHasVectorSerialized() {
128
+ log("Starting test: oldTableHasVectorSerialized");
129
+ const key = "foo";
130
+ const x = 50;
131
+ const y = 60;
132
+ const newValue = Vector(x, y);
133
+ const oldTable = {
134
+ foo: null,
135
+ };
136
+ const foo = {
137
+ bar: newValue,
138
+ };
139
+ const newTable = {
140
+ foo,
141
+ };
142
+ const newTableSerialized = deepCopy(newTable, SerializationType.SERIALIZE);
143
+ merge(oldTable, newTableSerialized, "oldTableHasVectorSerialized");
144
+ const oldTableValue = oldTable.get(key);
145
+ if (oldTableValue === undefined) {
146
+ error(`The old table's key of "${key}" was not filled.`);
147
+ }
148
+ if (oldTableValue.bar.X !== x) {
149
+ error(`The old table's value for "x" does not match: ${x}`);
150
+ }
151
+ if (oldTableValue.bar.Y !== y) {
152
+ error(`The old table's value for "y" does not match: ${y}`);
153
+ }
154
+ if (!isVector(oldTableValue.bar)) {
155
+ error("The old table's value is not a Vector object (during the serialized test).");
156
+ }
157
+ }
158
+ function oldTableHasRNG() {
159
+ log("Starting test: oldTableHasRNG");
160
+ const key = "foo";
161
+ const seed = 50;
162
+ const newValue = newRNG(seed);
163
+ const oldTable = {
164
+ foo: null,
165
+ };
166
+ const foo = {
167
+ bar: newValue,
168
+ };
169
+ const newTable = {
170
+ foo,
171
+ };
172
+ merge(oldTable, newTable, "oldTableHasRNG");
173
+ const oldTableValue = oldTable.get(key);
174
+ if (oldTableValue === undefined) {
175
+ error(`The old table's key of "${key}" was not filled.`);
176
+ }
177
+ if (!isRNG(oldTableValue.bar)) {
178
+ error("The old table's value is not an RNG object.");
179
+ }
180
+ const newSeed = oldTableValue.bar.GetSeed();
181
+ if (newSeed !== seed) {
182
+ error(`The old table's seed not match: ${seed}`);
183
+ }
184
+ }
185
+ function oldTableHasRNGSerialized() {
186
+ log("Starting test: oldTableHasRNGSerialized");
187
+ const key = "foo";
188
+ const seed = 50;
189
+ const newValue = newRNG(seed);
190
+ const oldTable = {
191
+ foo: null,
192
+ };
193
+ const foo = {
194
+ bar: newValue,
195
+ };
196
+ const newTable = {
197
+ foo,
198
+ };
199
+ const newTableSerialized = deepCopy(newTable, SerializationType.SERIALIZE);
200
+ merge(oldTable, newTableSerialized, "oldTableHasRNGSerialized");
201
+ const oldTableValue = oldTable.get(key);
202
+ if (oldTableValue === undefined) {
203
+ error(`The old table's key of "${key}" was not filled.`);
204
+ }
205
+ if (!isRNG(oldTableValue.bar)) {
206
+ error("The old table's value is not an RNG object (during the serialized test).");
207
+ }
208
+ const newSeed = oldTableValue.bar.GetSeed();
209
+ if (newSeed !== seed) {
210
+ error(`The old table's seed not match: ${seed}`);
211
+ }
212
+ }
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2VUZXN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL21lcmdlVGVzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM1QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN0QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVoRCxNQUFNLFVBQVUsVUFBVTtJQUN4Qix1QkFBdUIsRUFBRSxDQUFDO0lBQzFCLG9CQUFvQixFQUFFLENBQUM7SUFDdkIsK0JBQStCLEVBQUUsQ0FBQztJQUNsQyxrQ0FBa0MsRUFBRSxDQUFDO0lBRXJDLDBCQUEwQixFQUFFLENBQUM7SUFDN0IsaUJBQWlCLEVBQUUsQ0FBQztJQUNwQiwyQkFBMkIsRUFBRSxDQUFDO0lBQzlCLGNBQWMsRUFBRSxDQUFDO0lBQ2pCLHdCQUF3QixFQUFFLENBQUM7SUFFM0IsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVELFNBQVMsdUJBQXVCO0lBQzlCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQztJQUNsQixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDdkIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLE1BQU0sUUFBUSxHQUFHO1FBQ2YsR0FBRyxFQUFFLFFBQVE7S0FDNkIs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
@@ -180,3 +180,5 @@ function ____exports.mergeTests(self)
180
180
  log("All merge tests passed!")
181
181
  end
182
182
  return ____exports
183
+
184
+ --# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL21lcmdlVGVzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtNQXVCUyx5QkFtQkEsc0JBbUJBLGlDQWtCQSxvQ0FhQSw0QkE2QkEsbUJBeUNBLDZCQStDQSxnQkFxQ0E7QUF0UFQsOEJBQWtDO0FBQXpCO0FBQ1Qsa0JBQXNCO0FBQWI7QUFDVCxxQkFBeUI7QUFBaEI7QUFDVCxnQkFBb0I7QUFBWDtBQUNULGdCQUE4QjtBQUFyQjtBQUFPO0FBQ2hCLDBCQUEwQztBQUFqQztBQUNULG1CQUFxQztBQUE1QjtBQUFZO0FBaUJyQixTQUFTO0FBQ0QsZ0JBQU07QUFDTixxQkFBVztBQUNYLHFCQUFXO0FBQ1gscUJBQVcsQ0FDZixNQUFLO0FBRUQscUJBQVcsQ0FDZixNQUFLO0lBR1AsV0FBTSxVQUFVLFVBQVU7QUFFcEIsMEJBQWdCLFNBQWE7T0FDL0IsaUJBQWtCO1FBQ3BCLE1BQU0sOENBQTJDOzs7QUFJckQsU0FBUztBQUNELGdCQUFNO0FBQ04scUJBQVc7QUFDWCxxQkFBVztBQUNYLHFCQUFXLENBQ2YsTUFBSztBQUVELHFCQUFXLENBQ2YsTUFBSztJQUdQLFdBQU0sVUFBVSxVQUFVO0FBRXBCLDBCQUFnQixTQUFhO09BQy9CLGlCQUFrQjtRQUNwQixNQUFNLDhDQUEyQzs7O0FBSXJELFNBQVM7QUFDRCxnQkFBTTtBQUNOLHFCQUFXO0FBQ1gscUJBQVcsQ0FDZixNQUFLO0FBRUQscUJBQVcsQ0FDZixNQUFLO0lBR1AsV0FBTSxVQUFVLFVBQVU7QUFFcEIsMEJBQWdCLFNBQWE7T0FDL0IsaUJBQWtCO1FBQ3BCLE1BQU0sOENBQTJDOzs7QUFJckQsU0FBUztBQUNELGNBQUk7QUFDSixjQUFJO0FBQ0osbUJBQVMsT0FBTyxHQUFHO0FBRW5CLDZCQUFtQixnQkFBVyxRQUFRO1dBQ3ZDLCtCQUEwQjtRQUM3QixNQUNFOzs7QUFLTixTQUFTO0FBS0QsZ0JBQU07QUFDTixxQkFBVztBQUNYLHFCQUFXLENBQ2YsTUFBSztBQUVELGdCQUFXLENBQ2YsTUFBSztBQUVELHFCQUFXLENBQ2Y7SUFHRixXQUFNLFVBQVUsVUFBVTtBQUVwQiwwQkFBZ0IsU0FBYTtPQUMvQjtRQUNGLE9BQU0sK0JBQTJCLFFBQUc7O09BR2xDLHFCQUFzQjtRQUN4QixNQUFNOzs7QUFJVixTQUFTO0lBQ1AsSUFBSTtBQU1FLGdCQUFNO0FBQ04sY0FBSTtBQUNKLGNBQUk7QUFDSixxQkFBVyxPQUFPLEdBQUc7QUFDckIscUJBQVcsQ0FDZixNQUFLO0FBRUQsZ0JBQVcsQ0FDZixNQUFLO0FBRUQscUJBQVcsQ0FDZjtJQUdGLFdBQU0sVUFBVSxVQUFVO0FBRXBCLDBCQUFnQixTQUFhO09BQy9CO1FBQ0YsT0FBTSwrQkFBMkIsUUFBRzs7T0FHbEMsdUJBQXdCO1FBQzFCLE1BQU0sK0RBQWlEOztPQUdyRCx1QkFBd0I7UUFDMUIsTUFBTSwrREFBaUQ7O1dBR3BELGNBQVM7UUFDWixNQUFNOzs7QUFJVixTQUFTO0lBQ1AsSUFBSTtBQU1FLGdCQUFNO0FBQ04sY0FBSTtBQUNKLGNBQUk7QUFDSixxQkFBVyxPQUFPLEdBQUc7QUFDckIscUJBQVcsQ0FDZixNQUFLO0FBRUQsZ0JBQVcsQ0FDZixNQUFLO0FBRUQscUJBQVcsQ0FDZjtBQUVJLCtCQUFxQixjQUN6QixVQUNBO0lBR0YsV0FBTSxVQUFVLG9CQUFvQjtBQUU5QiwwQkFBZ0IsU0FBYTtPQUMvQjtRQUNGLE9BQU0sK0JBQTJCLFFBQUc7O09BR2xDLHVCQUF3QjtRQUMxQixNQUFNLCtEQUFpRDs7T0FHckQsdUJBQXdCO1FBQzFCLE1BQU0sK0RBQWlEOztXQUdwRCxjQUFTO1FBQ1osTUFDRTs7O0FBS04sU0FBUztJQUNQLElBQUk7QUFNRSxnQkFBTTtBQUNOLGlCQUFPO0FBQ1AscUJBQVcsWUFBTztBQUNsQixxQkFBVyxDQUNmLE1BQUs7QUFFRCxnQkFBVyxDQUNmLE1BQUs7QUFFRCxxQkFBVyxDQUNmO0lBR0YsV0FBTSxVQUFVLFVBQVU7QUFFcEIsMEJBQWdCLFNBQWE7T0FDL0I7UUFDRixPQUFNLCtCQUEyQixRQUFHOztXQUdqQyxXQUFNO1FBQ1QsTUFBTTs7QUFHRixvQkFBVSxrQkFBa0I7T0FDOUIsV0FBWTtRQUNkLE1BQU0sK0NBQW1DOzs7QUFJN0MsU0FBUztJQUNQLElBQUk7QUFNRSxnQkFBTTtBQUNOLGlCQUFPO0FBQ1AscUJBQVcsWUFBTztBQUNsQixxQkFBVyxDQUNmLE1BQUs7QUFFRCxnQkFBVyxDQUNmLE1BQUs7QUFFRCxxQkFBVyxDQUNmO0FBRUksK0JBQXFCLGNBQ3pCLFVBQ0E7SUFHRixXQUFNLFVBQVUsb0JBQW9CO0FBRTlCLDBCQUFnQixTQUFhO09BQy9CO1FBQ0YsT0FBTSwrQkFBMkIsUUFBRzs7V0FHakMsV0FBTTtRQUNULE1BQ0U7O0FBSUUsb0JBQVUsa0JBQWtCO09BQzlCLFdBQVk7UUFDZCxNQUFNLCtDQUFtQzs7O0FBclI3QztJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBRUE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUVBLElBQUk7QUFaTiIsImZpbGUiOiJtZXJnZVRlc3RzLmx1YSIsInNvdXJjZVJvb3QiOiIifQ==
@@ -0,0 +1,80 @@
1
+ import { DisplayFlagZero } from "isaac-typescript-definitions";
2
+ import { game } from "../cachedClasses";
3
+ import { getRoomDescriptor } from "./roomData";
4
+ import { getRoomsInGrid } from "./rooms";
5
+ /**
6
+ * Helper function to set the value of `DisplayFlag` for every room on the floor to 0.
7
+ *
8
+ * This function automatically calls the `Level.UpdateVisibility` after setting the flags so that
9
+ * the changes will be immediately visible.
10
+ */
11
+ export function clearFloorDisplayFlags() {
12
+ const level = game.GetLevel();
13
+ for (const room of getRoomsInGrid()) {
14
+ room.DisplayFlags = DisplayFlagZero;
15
+ }
16
+ // We must call the "Level.UpdateVisibility" method for the changes to be visible.
17
+ level.UpdateVisibility();
18
+ }
19
+ /**
20
+ * Helper function to get the minimap `DisplayFlag` value for every room on the floor. Returns a map
21
+ * that is indexed by the room's safe grid index.
22
+ */
23
+ export function getFloorDisplayFlags() {
24
+ const displayFlagsMap = new Map();
25
+ const roomsInGrid = getRoomsInGrid();
26
+ for (const roomDescriptor of roomsInGrid) {
27
+ displayFlagsMap.set(roomDescriptor.SafeGridIndex, roomDescriptor.DisplayFlags);
28
+ }
29
+ return displayFlagsMap;
30
+ }
31
+ /**
32
+ * Helper function to get a particular room's minimap display flags (e.g. whether or not it is
33
+ * visible and so on).
34
+ *
35
+ * @param roomGridIndex Optional. Default is the current room index.
36
+ */
37
+ export function getRoomDisplayFlags(roomGridIndex) {
38
+ const roomDescriptor = getRoomDescriptor(roomGridIndex);
39
+ return roomDescriptor.DisplayFlags;
40
+ }
41
+ /**
42
+ * Helper function to set the minimap `DisplayFlag` value for multiple rooms at once.
43
+ *
44
+ * This function automatically calls the `Level.UpdateVisibility` after setting the flags so that
45
+ * the changes will be immediately visible.
46
+ *
47
+ * @param displayFlagsMap A map of the display flags that is indexed by the room's safe grid index.
48
+ */
49
+ export function setDisplayFlags(displayFlagsMap) {
50
+ const level = game.GetLevel();
51
+ for (const [roomGridIndex, displayFlags] of displayFlagsMap.entries()) {
52
+ if (MinimapAPI === undefined) {
53
+ setRoomDisplayFlags(roomGridIndex, displayFlags);
54
+ }
55
+ else {
56
+ const roomDescriptor = MinimapAPI.GetRoomByIdx(roomGridIndex);
57
+ if (roomDescriptor !== undefined) {
58
+ roomDescriptor.DisplayFlags = displayFlags;
59
+ }
60
+ }
61
+ }
62
+ // We must call the "Level.UpdateVisibility" method for the changes to be visible.
63
+ level.UpdateVisibility();
64
+ }
65
+ /** Alias for the `setDisplayFlags` function. */
66
+ export function setFloorDisplayFlags(displayFlagsMap) {
67
+ setDisplayFlags(displayFlagsMap);
68
+ }
69
+ /**
70
+ * Helper function to set a particular room's minimap display flags (e.g. whether or not it is
71
+ * visible and so on).
72
+ *
73
+ * @param roomGridIndex Set to undefined to use the current room index.
74
+ * @param displayFlags The bit flags value to set. (See the `DisplayFlag` enum.)
75
+ */
76
+ export function setRoomDisplayFlags(roomGridIndex, displayFlags) {
77
+ const roomDescriptor = getRoomDescriptor(roomGridIndex);
78
+ roomDescriptor.DisplayFlags = displayFlags;
79
+ }
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL21pbmltYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV6Qzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxzQkFBc0I7SUFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRTlCLEtBQUssTUFBTSxJQUFJLElBQUksY0FBYyxFQUFFLEVBQUU7UUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxlQUFlLENBQUM7S0FDckM7SUFFRCxrRkFBa0Y7SUFDbEYsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7QUFDM0IsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7SUFFOUQsTUFBTSxXQUFXLEdBQUcsY0FBYyxFQUFFLENBQUM7SUFDckMsS0FBSyxNQUFNLGNBQWMsSUFBSSxXQUFXLEVBQUU7UUFDeEMsZUFBZSxDQUFDLEdBQUcsQ0FDakIsY0FBYyxDQUFDLGFBQWEsRUFDNUIsY0FBYyxDQUFDLFlBQVksQ0FDNUIsQ0FBQztLQUNIO0lBRUQsT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxhQUFtQjtJQUVuQixNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4RCxPQUFPLGNBQWMsQ0FBQyxZQUFZLENBQUM7QUFDckMsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUM3QixlQUFnRDtJQUVoRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFOUIsS0FBSyxNQUFNLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNyRSxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDNUIsbUJBQW1CLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ2xEO2FBQU07WUFDTCxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlELElBQUksY0FBYyxLQUFLLFNBQVMsRUFBRTtnQkFDaEMsY0FBYyxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7YUFDNUM7U0FDRjtLQUNGO0lBRUQsa0ZBQWtGO0lBQ2xGLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0FBQzNCLENBQUM7QUFFRCxnREFBZ0Q7QUFDaEQsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxlQUFnRDtJQUVoRCxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsYUFBOEIsRUFDOUIsWUFBbUM7SUFFbkMsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEQsY0FBYyxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7QUFDN0MsQ0FBQyJ9
@@ -76,3 +76,5 @@ function ____exports.setFloorDisplayFlags(self, displayFlagsMap)
76
76
  ____exports.setDisplayFlags(nil, displayFlagsMap)
77
77
  end
78
78
  return ____exports
79
+
80
+ --# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL21pbmltYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBNkM7QUFBdkI7QUFDdEIsMEJBQXFCO0FBQVo7QUFDVCxxQkFBa0M7QUFBekI7QUFDVCxrQkFBK0I7QUFBdEI7Ozs7OztBQTRGVCwrQ0FDRSxlQUNBO0FBRU0sMkJBQWlCLHVCQUFrQjtBQUN6QyxrQ0FBOEI7QUFMaEM7Ozs7O0FBcEZBO0FBQ1Esa0JBQVEsS0FBSztBQUVuQixjQUFXLGVBQVE7QUFDakIsNEJBQW9COztJQUl0QixNQUFNO0FBUlI7OztBQWVBO0FBQ1EsNEJBQWtCLFVBQUk7QUFFdEIsd0JBQWM7QUFDcEIsY0FBVyx5QkFBa0I7UUFDM0IsZ0JBQWdCLElBQ2QsOEJBQ0E7O0FBSUosV0FBTztBQVhUOzs7OztBQW9CQSwrQ0FDRTtBQUVNLDJCQUFpQix1QkFBa0I7QUFDekMsV0FBTztBQUpUOzs7Ozs7O0FBZUEsMkNBQ0U7QUFFTSxrQkFBUSxLQUFLO0FBRW5CLDJCQUE0QywrQkFBZ0I7Y0FBaEQ7Y0FBZTtXQUNyQjtZQUNGLHFDQUFvQixlQUFlOztBQUU3QixtQ0FBaUIsV0FBVyxhQUFhO2VBQzNDO0FBQ0YsOENBQThCOzs7O0lBTXBDLE1BQU07QUFqQlI7O0FBcUJBLGdEQUNFO0lBRUEsaUNBQWdCO0FBSGxCIiwiZmlsZSI6Im1pbmltYXAubHVhIiwic291cmNlUm9vdCI6IiJ9