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,104 @@
1
+ import { GridEntityType, ModCallback, } from "isaac-typescript-definitions";
2
+ import { ModCallbackCustom } from "../../enums/ModCallbackCustom";
3
+ import { isArray } from "../../functions/array";
4
+ import { saveDataManager } from "../saveDataManager/exports";
5
+ import { setBackdrop } from "./backdrop";
6
+ import { removeUrnRewards, setCustomDecorationGraphics, setCustomDoorGraphics, setCustomPitGraphics, setCustomRockGraphics, } from "./gridEntities";
7
+ import * as metadataJSON from "./metadata.json"; // This will correspond to "metadata.lua" at run-time.
8
+ import { setShadows } from "./shadows";
9
+ import { streakTextGetShaderParams, streakTextPostRender } from "./streakText";
10
+ import v, { customStagesMap } from "./v";
11
+ import { playVersusScreenAnimation, versusScreenPostRender, } from "./versusScreen";
12
+ export function customStageInit(mod) {
13
+ saveDataManager("customStage", v);
14
+ initRoomTypeMaps();
15
+ mod.AddCallback(ModCallback.POST_RENDER, postRender); // 2
16
+ mod.AddCallback(ModCallback.GET_SHADER_PARAMS, getShaderParams); // 21
17
+ mod.AddCallbackCustom(ModCallbackCustom.POST_GRID_ENTITY_BROKEN, postGridEntityBrokenRockAlt, GridEntityType.ROCK_ALT);
18
+ mod.AddCallbackCustom(ModCallbackCustom.POST_GRID_ENTITY_INIT, postGridEntityBrokenInit);
19
+ mod.AddCallbackCustom(ModCallbackCustom.POST_NEW_ROOM_REORDERED, postNewRoomReordered);
20
+ }
21
+ function initRoomTypeMaps() {
22
+ if (!isArray(metadataJSON)) {
23
+ error('The IsaacScript standard library attempted to read the custom stage metadata from the "metadata.lua" file, but it was not an array.');
24
+ }
25
+ const customStagesLua = metadataJSON;
26
+ for (const customStageLua of customStagesLua) {
27
+ const roomTypeMap = getRoomTypeMap(customStageLua);
28
+ const customStage = {
29
+ ...customStageLua,
30
+ roomTypeMap,
31
+ };
32
+ customStagesMap.set(customStage.name, customStage);
33
+ }
34
+ }
35
+ function getRoomTypeMap(customStageLua) {
36
+ const roomTypeMap = new Map();
37
+ for (const roomMetadata of customStageLua.roomsMetadata) {
38
+ const roomType = roomMetadata.type;
39
+ let roomShapeMap = roomTypeMap.get(roomType);
40
+ if (roomShapeMap === undefined) {
41
+ roomShapeMap = new Map();
42
+ roomTypeMap.set(roomType, roomShapeMap);
43
+ }
44
+ const roomShape = roomMetadata.shape;
45
+ let roomDoorSlotFlagMap = roomShapeMap.get(roomShape);
46
+ if (roomDoorSlotFlagMap === undefined) {
47
+ roomDoorSlotFlagMap = new Map();
48
+ roomShapeMap.set(roomShape, roomDoorSlotFlagMap);
49
+ }
50
+ const doorSlotFlags = roomMetadata.doorSlotFlags;
51
+ let rooms = roomDoorSlotFlagMap.get(doorSlotFlags);
52
+ if (rooms === undefined) {
53
+ rooms = [];
54
+ roomDoorSlotFlagMap.set(doorSlotFlags, rooms);
55
+ }
56
+ rooms.push(roomMetadata);
57
+ }
58
+ return roomTypeMap;
59
+ }
60
+ // ModCallback.POST_RENDER (2)
61
+ function postRender() {
62
+ const customStage = v.run.currentCustomStage;
63
+ if (customStage === null) {
64
+ return;
65
+ }
66
+ streakTextPostRender(customStage);
67
+ versusScreenPostRender();
68
+ }
69
+ // ModCallback.GET_SHADER_PARAMS (22)
70
+ function getShaderParams(shaderName) {
71
+ streakTextGetShaderParams(shaderName);
72
+ return undefined;
73
+ }
74
+ // ModCallbackCustom.POST_GRID_ENTITY_BROKEN
75
+ // GridEntityType.ROCK_ALT
76
+ function postGridEntityBrokenRockAlt(gridEntity) {
77
+ const customStage = v.run.currentCustomStage;
78
+ if (customStage === null) {
79
+ return;
80
+ }
81
+ removeUrnRewards(customStage, gridEntity);
82
+ }
83
+ // ModCallbackCustom.POST_GRID_ENTITY_INIT
84
+ function postGridEntityBrokenInit(gridEntity) {
85
+ const customStage = v.run.currentCustomStage;
86
+ if (customStage === null) {
87
+ return;
88
+ }
89
+ setCustomDecorationGraphics(customStage, gridEntity);
90
+ setCustomRockGraphics(customStage, gridEntity);
91
+ setCustomPitGraphics(customStage, gridEntity);
92
+ setCustomDoorGraphics(customStage, gridEntity);
93
+ }
94
+ // ModCallbackCustom.POST_NEW_ROOM_REORDERED
95
+ function postNewRoomReordered() {
96
+ const customStage = v.run.currentCustomStage;
97
+ if (customStage === null) {
98
+ return;
99
+ }
100
+ setBackdrop(customStage);
101
+ setShadows(customStage);
102
+ playVersusScreenAnimation(customStage);
103
+ }
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2UvaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsY0FBYyxFQUNkLFdBQVcsR0FHWixNQUFNLDhCQUE4QixDQUFDO0FBRXRDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU1oRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLDJCQUEyQixFQUMzQixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLHFCQUFxQixHQUN0QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sS0FBSyxZQUFZLE1BQU0saUJBQWlCLENBQUMsQ0FBQyxzREFBc0Q7QUFDdkcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0UsT0FBTyxDQUFDLEVBQUUsRUFBRSxlQUFlLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDekMsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixzQkFBc0IsR0FDdkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixNQUFNLFVBQVUsZUFBZSxDQUFDLEdBQWdCO0lBQzlDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsZ0JBQWdCLEVBQUUsQ0FBQztJQUVuQixHQUFHLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJ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
@@ -7,8 +7,6 @@ local initRoomTypeMaps, getRoomTypeMap, postRender, getShaderParams, postGridEnt
7
7
  local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
8
8
  local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
9
9
  local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
10
- local ____cachedClasses = require("cachedClasses")
11
- local game = ____cachedClasses.game
12
10
  local ____ModCallbackCustom = require("enums.ModCallbackCustom")
13
11
  local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
14
12
  local ____array = require("functions.array")
@@ -26,7 +24,6 @@ local setCustomRockGraphics = ____gridEntities.setCustomRockGraphics
26
24
  local metadataJSON = require("features.customStage.metadata")
27
25
  local ____shadows = require("features.customStage.shadows")
28
26
  local setShadows = ____shadows.setShadows
29
- local shadowsPostRender = ____shadows.shadowsPostRender
30
27
  local ____streakText = require("features.customStage.streakText")
31
28
  local streakTextGetShaderParams = ____streakText.streakTextGetShaderParams
32
29
  local streakTextPostRender = ____streakText.streakTextPostRender
@@ -77,16 +74,12 @@ function postRender(self)
77
74
  if customStage == nil then
78
75
  return
79
76
  end
80
- local isPaused = game:IsPaused()
81
- if isPaused then
82
- return
83
- end
84
77
  streakTextPostRender(nil, customStage)
85
- shadowsPostRender(nil, customStage)
86
78
  versusScreenPostRender(nil)
87
79
  end
88
80
  function getShaderParams(self, shaderName)
89
- return streakTextGetShaderParams(nil, shaderName)
81
+ streakTextGetShaderParams(nil, shaderName)
82
+ return nil
90
83
  end
91
84
  function postGridEntityBrokenRockAlt(self, gridEntity)
92
85
  local customStage = v.run.currentCustomStage
@@ -124,3 +117,5 @@ function ____exports.customStageInit(self, mod)
124
117
  mod:AddCallbackCustom(ModCallbackCustom.POST_NEW_ROOM_REORDERED, postNewRoomReordered)
125
118
  end
126
119
  return ____exports
120
+
121
+ --# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2UvaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztNQTBEUyxrQkFrQkEsZ0JBMkNBLFlBV0EsaUJBU0EsNkJBVUEsMEJBYUE7QUFsS1QsNkNBTU87QUFKTDtBQUNBO0FBS0YsOEJBQWtDO0FBQXpCO0FBQ1Qsa0JBQXdCO0FBQWY7QUFNVCxvQkFBZ0M7QUFBdkI7QUFDVCxxQkFBNEI7QUFBbkI7QUFDVCx5QkFNTztBQUxMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFRixNQUFZLGVBQWtCO0FBQzlCLG9CQUEyQjtBQUFsQjtBQUNULHVCQUFnRTtBQUF2RDtBQUEyQjtBQUNwQyxjQUFtQztBQUE1QjtBQUFLO0FBQ1oseUJBR087QUFGTDtBQUNBO0FBNEJGLFNBQVM7V0FDRixhQUFRO1FBQ1gsTUFDRTs7QUFHRSw0QkFBa0I7QUFFeEIsY0FBVyx5QkFBa0I7QUFDckIsNEJBQWMsb0JBQWU7QUFDN0IsNEJBQTJCLHVCQUM1QixnQkFENEIsQ0FFL0I7UUFFRixnQkFBZ0IsSUFBSSxrQkFBa0I7OztBQUkxQyxTQUFTLHFCQUFlO0FBQ2hCLHdCQUFjLFVBQUk7QUFLeEIsY0FBVyx1QkFBZ0I7QUFDbkIseUJBQVc7QUFFYiw2QkFBZSxZQUFZLElBQUk7V0FDL0I7QUFDRiwyQkFBZSxVQUFJO1lBSW5CLFlBQVksSUFBSSxVQUFVOztBQUd0QiwwQkFBWTtBQUVkLG9DQUFzQixhQUFhLElBQUk7V0FDdkM7QUFDRixrQ0FBc0IsVUFBSTtZQUkxQixhQUFhLElBQUksV0FBVzs7QUFHeEIsOEJBQWdCO0FBQ2xCLHNCQUFRLG9CQUFvQixJQUFJO1dBQ2hDO0FBQ0Ysb0JBQVE7WUFDUixvQkFBb0IsSUFBSSxlQUFlOztBQUd6Qyw0QkFBVzs7QUFHYixXQUFPOztBQUlULFNBQVM7QUFDRCx3QkFBYztPQUNoQixlQUFnQjtBQUNsQjs7SUFHRiwwQkFBcUI7SUFDckI7O0FBSUYsU0FBUyxzQkFDUDtJQUVBLCtCQUEwQjtBQUMxQjs7QUFLRixTQUFTLGtDQUE0QjtBQUM3Qix3QkFBYztPQUNoQixlQUFnQjtBQUNsQjs7SUFHRixzQkFBaUIsYUFBYTs7QUFJaEMsU0FBUywrQkFBeUI7QUFDMUIsd0JBQWM7T0FDaEIsZUFBZ0I7QUFDbEI7O0lBR0YsaUNBQTRCLGFBQWE7SUFDekMsMkJBQXNCLGFBQWE7SUFDbkMsMEJBQXFCLGFBQWE7SUFDbEMsMkJBQXNCLGFBQWE7O0FBSXJDLFNBQVM7QUFDRCx3QkFBYztPQUNoQixlQUFnQjtBQUNsQjs7SUFHRixpQkFBWTtJQUNaLGdCQUFXO0lBQ1gsK0JBQTBCOztBQXpJNUIsMkNBQWdDO0lBQzlCLHFCQUFnQixlQUFlO0lBQy9CO0lBRUEsSUFBSSxZQUFZLHlCQUF5QjtJQUV6QyxJQUFJLFlBQVksK0JBQStCO0lBRS9DLElBQUksa0JBQ0YsMkNBQ0EsNkJBQ0E7SUFHRixJQUFJLGtCQUNGLHlDQUNBO0lBR0YsSUFBSSxrQkFDRiwyQ0FDQTtBQXJCSiIsImZpbGUiOiJpbml0Lmx1YSIsInNvdXJjZVJvb3QiOiIifQ==
@@ -0,0 +1 @@
1
+ []
@@ -1 +1,3 @@
1
1
  return {}
2
+
3
+ --# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2UvbWV0YWRhdGEuanNvbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiT0FBQSIsImZpbGUiOiJtZXRhZGF0YS5sdWEiLCJzb3VyY2VSb290IjoiIn0=
@@ -1,3 +1,2 @@
1
1
  import { CustomStage } from "../../interfaces/CustomStage";
2
2
  export declare function setShadows(customStage: CustomStage): void;
3
- export declare function shadowsPostRender(_customStage: CustomStage): void;
@@ -0,0 +1,63 @@
1
+ import { EffectVariant, RoomShape } from "isaac-typescript-definitions";
2
+ import { game } from "../../cachedClasses";
3
+ import { getRandomArrayElement } from "../../functions/array";
4
+ import { spawnEffectWithSeed } from "../../functions/entitySpecific";
5
+ import { ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH } from "./customStageConstants";
6
+ import v from "./v";
7
+ /**
8
+ * Normally, we would make a custom entity to represent a shadow effect, but we don't want to
9
+ * interfere with the "entities2.xml" file in end-user mods. Thus, we must select a vanilla effect
10
+ * to masquerade as a backdrop effect.
11
+ *
12
+ * We arbitrarily choose a ladder for this purpose because it will not automatically despawn after
13
+ * time passes, like most other effects.
14
+ */
15
+ const SHADOW_EFFECT_VARIANT = EffectVariant.LADDER;
16
+ /** The animation comes from StageAPI. */
17
+ const ROOM_SHAPE_TO_SHADOW_ANIMATION = {
18
+ [RoomShape.SHAPE_1x1]: "1x1",
19
+ [RoomShape.IH]: "1x1",
20
+ [RoomShape.IV]: "1x1",
21
+ [RoomShape.SHAPE_1x2]: "1x2",
22
+ [RoomShape.IIV]: "1x2",
23
+ [RoomShape.SHAPE_2x1]: "2x1",
24
+ [RoomShape.IIH]: "2x1",
25
+ [RoomShape.SHAPE_2x2]: "2x2",
26
+ [RoomShape.LTL]: "2x2",
27
+ [RoomShape.LTR]: "2x2",
28
+ [RoomShape.LBL]: "2x2",
29
+ [RoomShape.LBR]: "2x2", // 12
30
+ };
31
+ const FADED_BLACK = Color(0, 0, 0, 0.25);
32
+ const shadowSprite = Sprite();
33
+ shadowSprite.Load(`${ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH}/stage-shadow.anm2`, true);
34
+ export function setShadows(customStage) {
35
+ if (customStage.shadows === undefined) {
36
+ return;
37
+ }
38
+ const room = game.GetRoom();
39
+ const roomShape = room.GetRoomShape();
40
+ const centerPos = room.GetCenterPos();
41
+ const animation = ROOM_SHAPE_TO_SHADOW_ANIMATION[roomShape];
42
+ const shadows = customStage.shadows[animation];
43
+ if (shadows === undefined) {
44
+ return;
45
+ }
46
+ // We spawn an effect instead of simply rendering a static sprite so that the effect will properly
47
+ // slide in during a room transition animation. (It looks stupid if the shadow stays statically
48
+ // rendering throughout this animation.)
49
+ const shadowEffect = spawnEffectWithSeed(SHADOW_EFFECT_VARIANT, 0, centerPos, 1);
50
+ const sprite = shadowEffect.GetSprite();
51
+ sprite.Load(`${ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH}/stage-shadow.anm2`, false);
52
+ const decorationSeed = room.GetDecorationSeed();
53
+ const shadow = getRandomArrayElement(shadows, decorationSeed);
54
+ sprite.ReplaceSpritesheet(0, shadow.pngPath);
55
+ sprite.LoadGraphics();
56
+ sprite.SetFrame(animation, 0);
57
+ sprite.Color =
58
+ shadow.color === undefined
59
+ ? FADED_BLACK
60
+ : Color(shadow.color.r, shadow.color.g, shadow.color.b, shadow.color.a);
61
+ v.room.showingShadows = true;
62
+ }
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZG93cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2Uvc2hhZG93cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVyRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7QUFJcEI7Ozs7Ozs7R0FPRztBQUNILE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztBQUVuRCx5Q0FBeUM7QUFDekMsTUFBTSw4QkFBOEIsR0FFaEM7SUFDRixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLO0lBQzVCLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUs7SUFDckIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSztJQUNyQixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLO0lBQzVCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDdEIsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSztJQUM1QixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ3RCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUs7SUFDNUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUN0QixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ3RCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDdEIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUs7Q0FDckIsQ0FBQztBQUVYLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUV6QyxNQUFNLFlBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUM5QixZQUFZLENBQUMsSUFBSSxDQUNmLEdBQUcsaUNBQWlDLG9CQUFvQixFQUN4RCxJQUFJLENBQ0wsQ0FBQztBQUVGLE1BQU0sVUFBVSxVQUFVLENBQUMsV0FBd0I7SUFDakQsSUFBSSxXQUFXLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtRQUNyQyxPQUFPO0tBQ1I7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxNQUFNLFNBQVMsR0FBRyw4QkFBOEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1RCxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtRQUN6QixPQUFPO0tBQ1I7SUFFRCxrR0FBa0c7SUFDbEcsK0ZBQStGO0lBQy9GLHdDQUF3QztJQUN4QyxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FDdEMscUJBQXFCLEVBQ3JCLENBQUMsRUFDRCxTQUFTLEVBQ1QsQ0FBUyxDQUNWLENBQUM7SUFFRixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGlDQUFpQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3RSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNoRCxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDOUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sQ0FBQyxLQUFLO1FBQ1YsTUFBTSxDQUFDLEtBQUssS0FBSyxTQUFTO1lBQ3hCLENBQUMsQ0FBQyxXQUFXO1lBQ2IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTVFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztBQUMvQixDQUFDIn0=
@@ -1,16 +1,24 @@
1
1
  local ____exports = {}
2
2
  local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
3
+ local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant
3
4
  local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
4
5
  local ____cachedClasses = require("cachedClasses")
5
6
  local game = ____cachedClasses.game
6
- local ____constants = require("constants")
7
- local VectorZero = ____constants.VectorZero
8
7
  local ____array = require("functions.array")
9
8
  local getRandomArrayElement = ____array.getRandomArrayElement
9
+ local ____entitySpecific = require("functions.entitySpecific")
10
+ local spawnEffectWithSeed = ____entitySpecific.spawnEffectWithSeed
10
11
  local ____customStageConstants = require("features.customStage.customStageConstants")
11
12
  local ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH = ____customStageConstants.ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH
12
13
  local ____v = require("features.customStage.v")
13
14
  local v = ____v.default
15
+ --- Normally, we would make a custom entity to represent a shadow effect, but we don't want to
16
+ -- interfere with the "entities2.xml" file in end-user mods. Thus, we must select a vanilla effect
17
+ -- to masquerade as a backdrop effect.
18
+ --
19
+ -- We arbitrarily choose a ladder for this purpose because it will not automatically despawn after
20
+ -- time passes, like most other effects.
21
+ local SHADOW_EFFECT_VARIANT = EffectVariant.LADDER
14
22
  --- The animation comes from StageAPI.
15
23
  local ROOM_SHAPE_TO_SHADOW_ANIMATION = {
16
24
  [RoomShape.SHAPE_1x1] = "1x1",
@@ -26,34 +34,38 @@ local ROOM_SHAPE_TO_SHADOW_ANIMATION = {
26
34
  [RoomShape.LBL] = "2x2",
27
35
  [RoomShape.LBR] = "2x2"
28
36
  }
37
+ local FADED_BLACK = Color(0, 0, 0, 0.25)
29
38
  local shadowSprite = Sprite()
30
39
  shadowSprite:Load(ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/stage-shadow.anm2", true)
31
40
  function ____exports.setShadows(self, customStage)
32
- if customStage.shadowPNGPaths == nil then
41
+ if customStage.shadows == nil then
33
42
  return
34
43
  end
35
44
  local room = game:GetRoom()
36
45
  local roomShape = room:GetRoomShape()
46
+ local centerPos = room:GetCenterPos()
37
47
  local animation = ROOM_SHAPE_TO_SHADOW_ANIMATION[roomShape]
38
- local shadowPNGPaths = customStage.shadowPNGPaths[animation]
39
- if shadowPNGPaths == nil then
48
+ local shadows = customStage.shadows[animation]
49
+ if shadows == nil then
40
50
  return
41
51
  end
52
+ local shadowEffect = spawnEffectWithSeed(
53
+ nil,
54
+ SHADOW_EFFECT_VARIANT,
55
+ 0,
56
+ centerPos,
57
+ 1
58
+ )
59
+ local sprite = shadowEffect:GetSprite()
60
+ sprite:Load(ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/stage-shadow.anm2", false)
42
61
  local decorationSeed = room:GetDecorationSeed()
43
- local shadowPNGPath = getRandomArrayElement(nil, shadowPNGPaths, decorationSeed)
44
- shadowSprite:ReplaceSpritesheet(0, shadowPNGPath)
45
- shadowSprite:LoadGraphics()
46
- shadowSprite:SetFrame(animation, 0)
62
+ local shadow = getRandomArrayElement(nil, shadows, decorationSeed)
63
+ sprite:ReplaceSpritesheet(0, shadow.pngPath)
64
+ sprite:LoadGraphics()
65
+ sprite:SetFrame(animation, 0)
66
+ sprite.Color = shadow.color == nil and FADED_BLACK or Color(shadow.color.r, shadow.color.g, shadow.color.b, shadow.color.a)
47
67
  v.room.showingShadows = true
48
68
  end
49
- function ____exports.shadowsPostRender(self, _customStage)
50
- if not v.room.showingShadows then
51
- return
52
- end
53
- local room = game:GetRoom()
54
- local renderPosition = Isaac.WorldToRenderPosition(VectorZero)
55
- local renderScrollOffset = room:GetRenderScrollOffset()
56
- local position = renderPosition + renderScrollOffset
57
- shadowSprite:Render(position)
58
- end
59
69
  return ____exports
70
+
71
+ --# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2Uvc2hhZG93cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNkNBQXlDO0FBQWhDO0FBQWU7QUFDeEIsMEJBQXFCO0FBQVo7QUFDVCxrQkFBc0M7QUFBN0I7QUFDVCwyQkFBb0M7QUFBM0I7QUFFVCxpQ0FBa0Q7QUFBekM7QUFDVCxjQUFjO0FBQVA7Ozs7Ozs7QUFZRCw4QkFBd0I7O0FBR3hCLHVDQUVGO0lBQ0YsQ0FBQyx1QkFBc0I7SUFDdkIsQ0FBQyxnQkFBZTtJQUNoQixDQUFDLGdCQUFlO0lBQ2hCLENBQUMsdUJBQXNCO0lBQ3ZCLENBQUMsaUJBQWdCO0lBQ2pCLENBQUMsdUJBQXNCO0lBQ3ZCLENBQUMsaUJBQWdCO0lBQ2pCLENBQUMsdUJBQXNCO0lBQ3ZCLENBQUMsaUJBQWdCO0lBQ2pCLENBQUMsaUJBQWdCO0lBQ2pCLENBQUMsaUJBQWdCO0lBQ2pCLENBQUMsaUJBQWdCOztBQUdiLG9CQUFjLE1BQU0sR0FBRyxHQUFHLEdBQUc7QUFFN0IscUJBQWU7QUFDckIsYUFBYSxLQUNSLHFDQUFpQyxzQkFDcEM7QUFHRixzQ0FBMkI7T0FDckI7QUFDRjs7QUFHSSxpQkFBTyxLQUFLO0FBQ1osc0JBQVksS0FBSztBQUNqQixzQkFBWSxLQUFLO0FBQ2pCLHNCQUFZLCtCQUErQjtBQUMzQyxvQkFBVSxvQkFBb0I7T0FDaEM7QUFDRjs7QUFNSSx5QkFBZTs7UUFDbkI7UUFDQTtRQUNBO1FBQ0E7O0FBR0ksbUJBQVMsYUFBYTtJQUM1QixPQUFPLEtBQVEscUNBQWlDLHNCQUFzQjtBQUNoRSwyQkFBaUIsS0FBSztBQUN0QixtQkFBUywyQkFBc0IsU0FBUztJQUM5QyxPQUFPLG1CQUFtQixHQUFHO0lBQzdCLE9BQU87SUFDUCxPQUFPLFNBQVMsV0FBVztBQUMzQixtQkFDRSx3QkFDSSxlQUNBLE1BQU0sZ0JBQWdCLGdCQUFnQixnQkFBZ0I7QUFFNUQsNEJBQXdCO0FBcEMxQiIsImZpbGUiOiJzaGFkb3dzLmx1YSIsInNvdXJjZVJvb3QiOiIifQ==
@@ -1,3 +1,3 @@
1
1
  import { CustomStage } from "../../interfaces/CustomStage";
2
2
  export declare function streakTextPostRender(customStage: CustomStage): void;
3
- export declare function streakTextGetShaderParams(shaderName: string): Record<string, unknown> | undefined;
3
+ export declare function streakTextGetShaderParams(shaderName: string): void;
@@ -0,0 +1,35 @@
1
+ import { fonts, game } from "../../cachedClasses";
2
+ import { KColorDefault } from "../../constants";
3
+ import { getScreenBottomCenterPos } from "../../functions/ui";
4
+ import { todo } from "../../functions/utils";
5
+ import v from "./v";
6
+ /** This must match the name of the shader in "shaders.xml". */
7
+ const EMPTY_SHADER_NAME = "IsaacScript-RenderAboveHUD";
8
+ /** This matches the offset that the vanilla game uses. */
9
+ const STREAK_TEXT_BOTTOM_OFFSET = Vector(0, -60);
10
+ // ModCallback.POST_RENDER (2)
11
+ export function streakTextPostRender(customStage) {
12
+ if (!v.run.showingStreakText) {
13
+ return;
14
+ }
15
+ const isPaused = game.IsPaused();
16
+ if (isPaused) {
17
+ return;
18
+ }
19
+ const font = fonts.upheaval;
20
+ const length = font.GetStringWidthUTF8(customStage.name);
21
+ const bottomCenterPos = getScreenBottomCenterPos();
22
+ const position = bottomCenterPos.add(STREAK_TEXT_BOTTOM_OFFSET);
23
+ const adjustedX = position.X - length / 2;
24
+ font.DrawString(customStage.name, adjustedX, position.Y, KColorDefault);
25
+ }
26
+ // ModCallback.INPUT_ACTION (13)
27
+ // TODO
28
+ // ModCallback.GET_SHADER_PARAMS (22)
29
+ export function streakTextGetShaderParams(shaderName) {
30
+ if (shaderName !== EMPTY_SHADER_NAME) {
31
+ return;
32
+ }
33
+ todo();
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFrVGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2Uvc3RyZWFrVGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0MsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO0FBRXBCLCtEQUErRDtBQUMvRCxNQUFNLGlCQUFpQixHQUFHLDRCQUE0QixDQUFDO0FBRXZELDBEQUEwRDtBQUMxRCxNQUFNLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUVqRCw4QkFBOEI7QUFDOUIsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFdBQXdCO0lBQzNELElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFO1FBQzVCLE9BQU87S0FDUjtJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxJQUFJLFFBQVEsRUFBRTtRQUNaLE9BQU87S0FDUjtJQUVELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RCxNQUFNLGVBQWUsR0FBRyx3QkFBd0IsRUFBRSxDQUFDO0lBQ25ELE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNoRSxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQzFFLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsT0FBTztBQUVQLHFDQUFxQztBQUNyQyxNQUFNLFVBQVUseUJBQXlCLENBQUMsVUFBa0I7SUFDMUQsSUFBSSxVQUFVLEtBQUssaUJBQWlCLEVBQUU7UUFDcEMsT0FBTztLQUNSO0lBRUQsSUFBSSxFQUFFLENBQUM7QUFDVCxDQUFDIn0=
@@ -1,18 +1,27 @@
1
1
  local ____exports = {}
2
2
  local ____cachedClasses = require("cachedClasses")
3
3
  local fonts = ____cachedClasses.fonts
4
+ local game = ____cachedClasses.game
4
5
  local ____constants = require("constants")
5
6
  local KColorDefault = ____constants.KColorDefault
6
7
  local ____ui = require("functions.ui")
7
8
  local getScreenBottomCenterPos = ____ui.getScreenBottomCenterPos
9
+ local ____utils = require("functions.utils")
10
+ local todo = ____utils.todo
8
11
  local ____v = require("features.customStage.v")
9
12
  local v = ____v.default
10
- local EMPTY_SHADER_NAME = "IsaacScriptEmptyShader"
13
+ --- This must match the name of the shader in "shaders.xml".
14
+ local EMPTY_SHADER_NAME = "IsaacScript-RenderAboveHUD"
15
+ --- This matches the offset that the vanilla game uses.
11
16
  local STREAK_TEXT_BOTTOM_OFFSET = Vector(0, -60)
12
17
  function ____exports.streakTextPostRender(self, customStage)
13
18
  if not v.run.showingStreakText then
14
19
  return
15
20
  end
21
+ local isPaused = game:IsPaused()
22
+ if isPaused then
23
+ return
24
+ end
16
25
  local font = fonts.upheaval
17
26
  local length = font:GetStringWidthUTF8(customStage.name)
18
27
  local bottomCenterPos = getScreenBottomCenterPos(nil)
@@ -22,8 +31,10 @@ function ____exports.streakTextPostRender(self, customStage)
22
31
  end
23
32
  function ____exports.streakTextGetShaderParams(self, shaderName)
24
33
  if shaderName ~= EMPTY_SHADER_NAME then
25
- return nil
34
+ return
26
35
  end
27
- return {}
36
+ todo(nil)
28
37
  end
29
38
  return ____exports
39
+
40
+ --# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2Uvc3RyZWFrVGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEJBQTRCO0FBQW5CO0FBQU87QUFDaEIsc0JBQThCO0FBQXJCO0FBQ1QsZUFBeUM7QUFBaEM7QUFDVCxrQkFBcUI7QUFBWjtBQUVULGNBQWM7QUFBUDs7QUFHRCwwQkFBb0I7O0FBR3BCLGtDQUE0QixPQUFPLElBQUk7QUFHN0MsZ0RBQXFDO1dBQzlCO0FBQ0g7O0FBR0kscUJBQVcsS0FBSztPQUNsQjtBQUNGOztBQUdJLGlCQUFPO0FBQ1AsbUJBQVMsS0FBSyxtQkFBbUI7QUFDakMsNEJBQWtCO0FBQ2xCLHFCQUFXLGtCQUFvQjtBQUMvQixzQkFBWSxhQUFhLFNBQVM7SUFDeEMsS0FBSyxXQUFXLGtCQUFrQixXQUFXLFlBQVk7QUFmM0Q7QUFzQkEscURBQTBDO09BQ3BDLGNBQWU7QUFDakI7O0lBR0Y7QUFMRiIsImZpbGUiOiJzdHJlYWtUZXh0Lmx1YSIsInNvdXJjZVJvb3QiOiIifQ==
@@ -0,0 +1,36 @@
1
+ import { sumArray } from "../../functions/array";
2
+ import { log } from "../../functions/log";
3
+ import { getRandomFloat } from "../../functions/random";
4
+ import { getRandomSeed } from "../../functions/rng";
5
+ /**
6
+ * Helper function to get a random custom stage room from an array of custom stage rooms.
7
+ *
8
+ * Note that this function does not simply choose a random element in the provided array; it will
9
+ * properly account for each room weight using the algorithm from:
10
+ * https://stackoverflow.com/questions/1761626/weighted-random-numbers
11
+ */
12
+ export function getRandomCustomStageRoom(roomsMetadata, seedOrRNG = getRandomSeed(), verbose = false) {
13
+ const totalWeight = getTotalWeightOfCustomStageRooms(roomsMetadata);
14
+ if (verbose) {
15
+ log(`Total weight of the custom stage rooms provided: ${totalWeight}`);
16
+ }
17
+ const chosenWeight = getRandomFloat(0, totalWeight, seedOrRNG);
18
+ if (verbose) {
19
+ log(`Randomly chose weight for custom stage room: ${chosenWeight}`);
20
+ }
21
+ return getCustomStageRoomWithChosenWeight(roomsMetadata, chosenWeight);
22
+ }
23
+ function getTotalWeightOfCustomStageRooms(roomsMetadata) {
24
+ const weights = roomsMetadata.map((roomMetadata) => roomMetadata.weight);
25
+ return sumArray(weights);
26
+ }
27
+ function getCustomStageRoomWithChosenWeight(roomsMetadata, chosenWeight) {
28
+ for (const roomMetadata of roomsMetadata) {
29
+ if (chosenWeight < roomMetadata.weight) {
30
+ return roomMetadata;
31
+ }
32
+ chosenWeight -= roomMetadata.weight;
33
+ }
34
+ error(`Failed to get a custom stage room with chosen weight: ${chosenWeight}`);
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2UvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHcEQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxhQUFpRCxFQUNqRCxZQUF3QixhQUFhLEVBQUUsRUFDdkMsT0FBTyxHQUFHLEtBQUs7SUFFZixNQUFNLFdBQVcsR0FBRyxnQ0FBZ0MsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwRSxJQUFJLE9BQU8sRUFBRTtRQUNYLEdBQUcsQ0FBQyxvREFBb0QsV0FBVyxFQUFFLENBQUMsQ0FBQztLQUN4RTtJQUVELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQy9ELElBQUksT0FBTyxFQUFFO1FBQ1gsR0FBRyxDQUFDLGdEQUFnRCxZQUFZLEVBQUUsQ0FBQyxDQUFDO0tBQ3JFO0lBRUQsT0FBTyxrQ0FBa0MsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDekUsQ0FBQztBQUVELFNBQVMsZ0NBQWdDLENBQ3ZDLGFBQWlEO0lBRWpELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsU0FBUyxrQ0FBa0MsQ0FDekMsYUFBaUQsRUFDakQsWUFBbUI7SUFFbkIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7UUFDeEMsSUFBSSxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUN0QyxPQUFPLFlBQVksQ0FBQztTQUNyQjtRQUVELFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDO0tBQ3JDO0lBRUQsS0FBSyxDQUNILHlEQUF5RCxZQUFZLEVBQUUsQ0FDeEUsQ0FBQztBQUNKLENBQUMifQ==
@@ -49,3 +49,5 @@ function ____exports.getRandomCustomStageRoom(self, roomsMetadata, seedOrRNG, ve
49
49
  return getCustomStageRoomWithChosenWeight(nil, roomsMetadata, chosenWeight)
50
50
  end
51
51
  return ____exports
52
+
53
+ --# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2UvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7TUErQlMsa0NBT0E7QUF0Q1Qsa0JBQXlCO0FBQWhCO0FBQ1QsZ0JBQW9CO0FBQVg7QUFDVCxtQkFBK0I7QUFBdEI7QUFDVCxnQkFBOEI7QUFBckI7QUE0QlQsU0FBUyx1Q0FDUDtBQUVNLG9CQUFVO1FBQUE7UUFBa0IsZUFBQyxjQUFpQiwwQkFBbEI7O0FBQ2xDLFdBQU8sY0FBUzs7QUFHbEIsU0FBUyx5Q0FDUCxlQUNBO0FBRUEsY0FBVyx1QkFBZ0I7V0FDckIsZUFBZTtBQUNqQixtQkFBTzs7QUFHVCxzQ0FBZ0I7O0lBR2xCLE1BQ0UscUVBQXlEOzs7Ozs7O0FBdEM3RCxvREFDRSxlQUNBLFdBQ0E7T0FEQTtRQUFBLFlBQXdCOztPQUN4QjtRQUFBLFVBQVU7O0FBRUosd0JBQWMsc0NBQWlDO09BQ2pEO1FBQ0YsSUFBSSxnRUFBb0Q7O0FBR3BELHlCQUFlLG9CQUFlLEdBQUcsYUFBYTtPQUNoRDtRQUNGLElBQUksNERBQWdEOztBQUd0RCxXQUFPLHdDQUFtQyxlQUFlO0FBZjNEIiwiZmlsZSI6InV0aWwubHVhIiwic291cmNlUm9vdCI6IiJ9
@@ -0,0 +1,18 @@
1
+ const v = {
2
+ run: {
3
+ currentCustomStage: null,
4
+ showingStreakText: false,
5
+ showingBossVersusScreen: false,
6
+ },
7
+ room: {
8
+ showingShadows: false,
9
+ },
10
+ };
11
+ export default v;
12
+ /** Indexed by custom stage name. */
13
+ export const customStagesMap = new Map();
14
+ /** Indexed by room variant. */
15
+ export const customStageCachedRoomData = new Map();
16
+ /** Indexed by entity ID. */
17
+ export const customBossPNGPaths = new Map();
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2Uvdi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsR0FBRztJQUNSLEdBQUcsRUFBRTtRQUNILGtCQUFrQixFQUFFLElBQTBCO1FBQzlDLGlCQUFpQixFQUFFLEtBQUs7UUFDeEIsdUJBQXVCLEVBQUUsS0FBSztLQUMvQjtJQUVELElBQUksRUFBRTtRQUNKLGNBQWMsRUFBRSxLQUFLO0tBQ3RCO0NBQ0YsQ0FBQztBQUNGLGVBQWUsQ0FBQyxDQUFDO0FBRWpCLG9DQUFvQztBQUNwQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7QUFFOUQsK0JBQStCO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksR0FBRyxFQUE2QixDQUFDO0FBRTlFLDRCQUE0QjtBQUM1QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFHdEMsQ0FBQyJ9
@@ -11,3 +11,5 @@ ____exports.customStageCachedRoomData = __TS__New(Map)
11
11
  --- Indexed by entity ID.
12
12
  ____exports.customBossPNGPaths = __TS__New(Map)
13
13
  return ____exports
14
+
15
+ --# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2Uvdi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRU0sVUFBSSxDQUNSLE1BQUssQ0FDSCxxQkFBb0IsS0FDcEIsb0JBQW1CLE9BQ25CLDBCQUF5QixRQUczQixPQUFNLENBQ0osaUJBQWdCO0FBR3BCLHNCQUFlOztBQUdGLDhCQUFrQixVQUFJOztBQUd0Qix3Q0FBNEIsVUFBSTs7QUFHaEMsaUNBQXFCLFVBQUkiLCJmaWxlIjoidi5sdWEiLCJzb3VyY2VSb290IjoiIn0=