isaacscript-common 84.0.0 → 84.1.0

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 (568) hide show
  1. package/dist/arrays/cachedEnumValues.js +33 -0
  2. package/dist/callbackClasses.js +289 -0
  3. package/dist/callbacks.js +181 -0
  4. package/dist/classes/DefaultMap.js +171 -0
  5. package/dist/classes/ModFeature.js +244 -0
  6. package/dist/classes/ModUpgraded.js +324 -0
  7. package/dist/classes/callbacks/EntityTakeDmgFilter.js +19 -0
  8. package/dist/classes/callbacks/EntityTakeDmgPlayer.js +29 -0
  9. package/dist/classes/callbacks/InputActionFilter.js +24 -0
  10. package/dist/classes/callbacks/InputActionPlayer.js +37 -0
  11. package/dist/classes/callbacks/PostAmbushFinished.js +40 -0
  12. package/dist/classes/callbacks/PostAmbushStarted.js +40 -0
  13. package/dist/classes/callbacks/PostBombExploded.js +24 -0
  14. package/dist/classes/callbacks/PostBombInitFilter.js +21 -0
  15. package/dist/classes/callbacks/PostBombInitLate.js +31 -0
  16. package/dist/classes/callbacks/PostBombRenderFilter.js +21 -0
  17. package/dist/classes/callbacks/PostBombUpdateFilter.js +21 -0
  18. package/dist/classes/callbacks/PostBoneSwing.js +53 -0
  19. package/dist/classes/callbacks/PostCollectibleEmpty.js +50 -0
  20. package/dist/classes/callbacks/PostCursedTeleport.js +119 -0
  21. package/dist/classes/callbacks/PostCustomRevive.js +17 -0
  22. package/dist/classes/callbacks/PostDiceRoomActivated.js +50 -0
  23. package/dist/classes/callbacks/PostDoorRender.js +24 -0
  24. package/dist/classes/callbacks/PostDoorUpdate.js +24 -0
  25. package/dist/classes/callbacks/PostEffectInitFilter.js +21 -0
  26. package/dist/classes/callbacks/PostEffectInitLate.js +31 -0
  27. package/dist/classes/callbacks/PostEffectRenderFilter.js +21 -0
  28. package/dist/classes/callbacks/PostEffectStateChanged.js +34 -0
  29. package/dist/classes/callbacks/PostEffectUpdateFilter.js +21 -0
  30. package/dist/classes/callbacks/PostEntityKillFilter.js +21 -0
  31. package/dist/classes/callbacks/PostEsauJr.js +12 -0
  32. package/dist/classes/callbacks/PostFamiliarInitFilter.js +21 -0
  33. package/dist/classes/callbacks/PostFamiliarInitLate.js +31 -0
  34. package/dist/classes/callbacks/PostFamiliarRenderFilter.js +21 -0
  35. package/dist/classes/callbacks/PostFamiliarStateChanged.js +34 -0
  36. package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +21 -0
  37. package/dist/classes/callbacks/PostFirstEsauJr.js +12 -0
  38. package/dist/classes/callbacks/PostFirstFlip.js +12 -0
  39. package/dist/classes/callbacks/PostFlip.js +12 -0
  40. package/dist/classes/callbacks/PostGameEndFilter.js +21 -0
  41. package/dist/classes/callbacks/PostGameStartedReordered.js +14 -0
  42. package/dist/classes/callbacks/PostGameStartedReorderedLast.js +14 -0
  43. package/dist/classes/callbacks/PostGreedModeWave.js +35 -0
  44. package/dist/classes/callbacks/PostGridEntityBroken.js +14 -0
  45. package/dist/classes/callbacks/PostGridEntityCollision.js +28 -0
  46. package/dist/classes/callbacks/PostGridEntityCustomBroken.js +14 -0
  47. package/dist/classes/callbacks/PostGridEntityCustomCollision.js +24 -0
  48. package/dist/classes/callbacks/PostGridEntityCustomInit.js +14 -0
  49. package/dist/classes/callbacks/PostGridEntityCustomRemove.js +18 -0
  50. package/dist/classes/callbacks/PostGridEntityCustomRender.js +14 -0
  51. package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +14 -0
  52. package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +14 -0
  53. package/dist/classes/callbacks/PostGridEntityInit.js +14 -0
  54. package/dist/classes/callbacks/PostGridEntityRemove.js +19 -0
  55. package/dist/classes/callbacks/PostGridEntityRender.js +14 -0
  56. package/dist/classes/callbacks/PostGridEntityStateChanged.js +14 -0
  57. package/dist/classes/callbacks/PostGridEntityUpdate.js +14 -0
  58. package/dist/classes/callbacks/PostHolyMantleRemoved.js +43 -0
  59. package/dist/classes/callbacks/PostItemDischarge.js +122 -0
  60. package/dist/classes/callbacks/PostItemPickup.js +14 -0
  61. package/dist/classes/callbacks/PostKeyboardChanged.js +46 -0
  62. package/dist/classes/callbacks/PostKnifeInitFilter.js +21 -0
  63. package/dist/classes/callbacks/PostKnifeInitLate.js +31 -0
  64. package/dist/classes/callbacks/PostKnifeRenderFilter.js +21 -0
  65. package/dist/classes/callbacks/PostKnifeUpdateFilter.js +21 -0
  66. package/dist/classes/callbacks/PostLaserInitFilter.js +21 -0
  67. package/dist/classes/callbacks/PostLaserInitLate.js +31 -0
  68. package/dist/classes/callbacks/PostLaserRenderFilter.js +21 -0
  69. package/dist/classes/callbacks/PostLaserUpdateFilter.js +21 -0
  70. package/dist/classes/callbacks/PostNPCDeathFilter.js +21 -0
  71. package/dist/classes/callbacks/PostNPCInitFilter.js +21 -0
  72. package/dist/classes/callbacks/PostNPCInitLate.js +31 -0
  73. package/dist/classes/callbacks/PostNPCRenderFilter.js +21 -0
  74. package/dist/classes/callbacks/PostNPCStateChanged.js +34 -0
  75. package/dist/classes/callbacks/PostNPCUpdateFilter.js +21 -0
  76. package/dist/classes/callbacks/PostNewLevelReordered.js +14 -0
  77. package/dist/classes/callbacks/PostNewRoomEarly.js +74 -0
  78. package/dist/classes/callbacks/PostNewRoomReordered.js +14 -0
  79. package/dist/classes/callbacks/PostPEffectUpdateReordered.js +14 -0
  80. package/dist/classes/callbacks/PostPickupChanged.js +14 -0
  81. package/dist/classes/callbacks/PostPickupCollect.js +38 -0
  82. package/dist/classes/callbacks/PostPickupInitFilter.js +21 -0
  83. package/dist/classes/callbacks/PostPickupInitFirst.js +33 -0
  84. package/dist/classes/callbacks/PostPickupInitLate.js +31 -0
  85. package/dist/classes/callbacks/PostPickupRenderFilter.js +21 -0
  86. package/dist/classes/callbacks/PostPickupSelectionFilter.js +29 -0
  87. package/dist/classes/callbacks/PostPickupStateChanged.js +34 -0
  88. package/dist/classes/callbacks/PostPickupUpdateFilter.js +21 -0
  89. package/dist/classes/callbacks/PostPitRender.js +24 -0
  90. package/dist/classes/callbacks/PostPitUpdate.js +24 -0
  91. package/dist/classes/callbacks/PostPlayerChangeHealth.js +47 -0
  92. package/dist/classes/callbacks/PostPlayerChangeStat.js +79 -0
  93. package/dist/classes/callbacks/PostPlayerChangeType.js +36 -0
  94. package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +14 -0
  95. package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +14 -0
  96. package/dist/classes/callbacks/PostPlayerFatalDamage.js +83 -0
  97. package/dist/classes/callbacks/PostPlayerInitFirst.js +41 -0
  98. package/dist/classes/callbacks/PostPlayerInitLate.js +33 -0
  99. package/dist/classes/callbacks/PostPlayerRenderReordered.js +14 -0
  100. package/dist/classes/callbacks/PostPlayerUpdateReordered.js +14 -0
  101. package/dist/classes/callbacks/PostPoopRender.js +24 -0
  102. package/dist/classes/callbacks/PostPoopUpdate.js +24 -0
  103. package/dist/classes/callbacks/PostPressurePlateRender.js +24 -0
  104. package/dist/classes/callbacks/PostPressurePlateUpdate.js +24 -0
  105. package/dist/classes/callbacks/PostProjectileInitFilter.js +21 -0
  106. package/dist/classes/callbacks/PostProjectileInitLate.js +31 -0
  107. package/dist/classes/callbacks/PostProjectileKill.js +52 -0
  108. package/dist/classes/callbacks/PostProjectileRenderFilter.js +21 -0
  109. package/dist/classes/callbacks/PostProjectileUpdateFilter.js +21 -0
  110. package/dist/classes/callbacks/PostPurchase.js +90 -0
  111. package/dist/classes/callbacks/PostRockRender.js +24 -0
  112. package/dist/classes/callbacks/PostRockUpdate.js +24 -0
  113. package/dist/classes/callbacks/PostRoomClearChanged.js +46 -0
  114. package/dist/classes/callbacks/PostSacrifice.js +36 -0
  115. package/dist/classes/callbacks/PostSlotAnimationChanged.js +14 -0
  116. package/dist/classes/callbacks/PostSlotCollision.js +25 -0
  117. package/dist/classes/callbacks/PostSlotDestroyed.js +14 -0
  118. package/dist/classes/callbacks/PostSlotInit.js +14 -0
  119. package/dist/classes/callbacks/PostSlotRender.js +14 -0
  120. package/dist/classes/callbacks/PostSlotUpdate.js +14 -0
  121. package/dist/classes/callbacks/PostSpikesRender.js +24 -0
  122. package/dist/classes/callbacks/PostSpikesUpdate.js +24 -0
  123. package/dist/classes/callbacks/PostTNTRender.js +24 -0
  124. package/dist/classes/callbacks/PostTNTUpdate.js +24 -0
  125. package/dist/classes/callbacks/PostTearInitFilter.js +21 -0
  126. package/dist/classes/callbacks/PostTearInitLate.js +31 -0
  127. package/dist/classes/callbacks/PostTearInitVeryLate.js +35 -0
  128. package/dist/classes/callbacks/PostTearKill.js +52 -0
  129. package/dist/classes/callbacks/PostTearRenderFilter.js +21 -0
  130. package/dist/classes/callbacks/PostTearUpdateFilter.js +21 -0
  131. package/dist/classes/callbacks/PostTransformation.js +47 -0
  132. package/dist/classes/callbacks/PostTrinketBreak.js +70 -0
  133. package/dist/classes/callbacks/PostUsePillFilter.js +76 -0
  134. package/dist/classes/callbacks/PreBerserkDeath.js +41 -0
  135. package/dist/classes/callbacks/PreBombCollisionFilter.js +19 -0
  136. package/dist/classes/callbacks/PreCustomRevive.js +14 -0
  137. package/dist/classes/callbacks/PreEntitySpawnFilter.js +24 -0
  138. package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +19 -0
  139. package/dist/classes/callbacks/PreGetPedestal.js +46 -0
  140. package/dist/classes/callbacks/PreItemPickup.js +14 -0
  141. package/dist/classes/callbacks/PreKnifeCollisionFilter.js +19 -0
  142. package/dist/classes/callbacks/PreNPCCollisionFilter.js +19 -0
  143. package/dist/classes/callbacks/PreNPCUpdateFilter.js +19 -0
  144. package/dist/classes/callbacks/PreNewLevel.js +51 -0
  145. package/dist/classes/callbacks/PreProjectileCollisionFilter.js +19 -0
  146. package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +26 -0
  147. package/dist/classes/callbacks/PreTearCollisionFilter.js +19 -0
  148. package/dist/classes/features/callbackLogic/CustomGridEntities.js +359 -0
  149. package/dist/classes/features/callbackLogic/CustomRevive.js +170 -0
  150. package/dist/classes/features/callbackLogic/EsauJrDetection.js +70 -0
  151. package/dist/classes/features/callbackLogic/FlipDetection.js +61 -0
  152. package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +220 -0
  153. package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +62 -0
  154. package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +35 -0
  155. package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +147 -0
  156. package/dist/classes/features/callbackLogic/ItemPickupDetection.js +68 -0
  157. package/dist/classes/features/callbackLogic/PickupChangeDetection.js +43 -0
  158. package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +193 -0
  159. package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +109 -0
  160. package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +95 -0
  161. package/dist/classes/features/callbackLogic/SlotRenderDetection.js +48 -0
  162. package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +52 -0
  163. package/dist/classes/features/other/CharacterHealthConversion.js +112 -0
  164. package/dist/classes/features/other/CharacterStats.js +68 -0
  165. package/dist/classes/features/other/CollectibleItemPoolType.js +75 -0
  166. package/dist/classes/features/other/CustomHotkeys.js +144 -0
  167. package/dist/classes/features/other/CustomItemPools.js +128 -0
  168. package/dist/classes/features/other/CustomPickups.js +118 -0
  169. package/dist/classes/features/other/CustomStages.js +471 -0
  170. package/dist/classes/features/other/CustomTrapdoors.js +596 -0
  171. package/dist/classes/features/other/DebugDisplay.js +699 -0
  172. package/dist/classes/features/other/DeployJSONRoom.js +301 -0
  173. package/dist/classes/features/other/DisableAllSound.js +90 -0
  174. package/dist/classes/features/other/DisableInputs.js +249 -0
  175. package/dist/classes/features/other/EdenStartingStatsHealth.js +197 -0
  176. package/dist/classes/features/other/ExtraConsoleCommands.js +292 -0
  177. package/dist/classes/features/other/FadeInRemover.js +67 -0
  178. package/dist/classes/features/other/FastReset.js +88 -0
  179. package/dist/classes/features/other/FlyingDetection.js +64 -0
  180. package/dist/classes/features/other/ForgottenSwitch.js +43 -0
  181. package/dist/classes/features/other/ItemPoolDetection.js +187 -0
  182. package/dist/classes/features/other/ModdedElementDetection.js +399 -0
  183. package/dist/classes/features/other/ModdedElementSets.js +1251 -0
  184. package/dist/classes/features/other/NoSirenSteal.js +88 -0
  185. package/dist/classes/features/other/Pause.js +197 -0
  186. package/dist/classes/features/other/PersistentEntities.js +168 -0
  187. package/dist/classes/features/other/PickupIndexCreation.js +229 -0
  188. package/dist/classes/features/other/PlayerCollectibleTracking.js +102 -0
  189. package/dist/classes/features/other/PonyDetection.js +86 -0
  190. package/dist/classes/features/other/PressInput.js +71 -0
  191. package/dist/classes/features/other/PreventChildEntities.js +60 -0
  192. package/dist/classes/features/other/PreventGridEntityRespawn.js +159 -0
  193. package/dist/classes/features/other/RerunDetection.js +69 -0
  194. package/dist/classes/features/other/RoomClearFrame.js +94 -0
  195. package/dist/classes/features/other/RoomHistory.js +196 -0
  196. package/dist/classes/features/other/RunInNFrames.js +323 -0
  197. package/dist/classes/features/other/RunNextRoom.js +53 -0
  198. package/dist/classes/features/other/RunNextRun.js +60 -0
  199. package/dist/classes/features/other/SaveDataManager.js +383 -0
  200. package/dist/classes/features/other/SpawnRockAltRewards.js +469 -0
  201. package/dist/classes/features/other/StageHistory.js +244 -0
  202. package/dist/classes/features/other/StartAmbush.js +62 -0
  203. package/dist/classes/features/other/TaintedLazarusPlayers.js +115 -0
  204. package/dist/classes/features/other/UnlockAchievementsDetection.js +60 -0
  205. package/dist/classes/features/other/customStages/backdrop.js +195 -0
  206. package/dist/classes/features/other/customStages/constants.js +19 -0
  207. package/dist/classes/features/other/customStages/gridEntities.js +177 -0
  208. package/dist/classes/features/other/customStages/shadows.js +67 -0
  209. package/dist/classes/features/other/customStages/streakText.js +222 -0
  210. package/dist/classes/features/other/customStages/utils.js +65 -0
  211. package/dist/classes/features/other/customStages/v.js +27 -0
  212. package/dist/classes/features/other/customStages/versusScreen.js +227 -0
  213. package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +23 -0
  214. package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +22 -0
  215. package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +23 -0
  216. package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +23 -0
  217. package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +23 -0
  218. package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +23 -0
  219. package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +23 -0
  220. package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +23 -0
  221. package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +22 -0
  222. package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +25 -0
  223. package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +22 -0
  224. package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +25 -0
  225. package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +23 -0
  226. package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +22 -0
  227. package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +22 -0
  228. package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +22 -0
  229. package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +22 -0
  230. package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +23 -0
  231. package/dist/classes/features/other/debugDisplay/utils.js +13 -0
  232. package/dist/classes/features/other/extraConsoleCommands/commands.js +1598 -0
  233. package/dist/classes/features/other/extraConsoleCommands/subroutines.js +135 -0
  234. package/dist/classes/features/other/extraConsoleCommands/v.js +30 -0
  235. package/dist/classes/features/other/saveDataManager/constants.js +4 -0
  236. package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +106 -0
  237. package/dist/classes/features/other/saveDataManager/loadFromDisk.js +69 -0
  238. package/dist/classes/features/other/saveDataManager/restoreDefaults.js +69 -0
  239. package/dist/classes/features/other/saveDataManager/saveToDisk.js +46 -0
  240. package/dist/classes/private/CustomCallback.js +59 -0
  241. package/dist/classes/private/Feature.js +39 -0
  242. package/dist/core/cachedClasses.js +61 -0
  243. package/dist/core/constants.js +289 -0
  244. package/dist/core/constantsFirstLast.js +98 -0
  245. package/dist/core/constantsVanilla.js +131 -0
  246. package/dist/core/upgradeMod.js +71 -0
  247. package/dist/customStageMetadata.json +1 -0
  248. package/dist/data/itempools.json +16625 -0
  249. package/dist/decorators.js +21 -0
  250. package/dist/enums/AmbushType.js +9 -0
  251. package/dist/enums/CornerType.js +11 -0
  252. package/dist/enums/HealthType.js +20 -0
  253. package/dist/enums/ISCFeature.js +65 -0
  254. package/dist/enums/LadderSubTypeCustom.js +20 -0
  255. package/dist/enums/ModCallbackCustom.js +2477 -0
  256. package/dist/enums/MysteriousPaperEffect.js +16 -0
  257. package/dist/enums/PlayerStat.js +37 -0
  258. package/dist/enums/PocketItemType.js +13 -0
  259. package/dist/enums/RockAltType.js +23 -0
  260. package/dist/enums/SaveDataKey.js +14 -0
  261. package/dist/enums/SerializationType.js +10 -0
  262. package/dist/enums/SlotDestructionType.js +22 -0
  263. package/dist/enums/private/GridEntityTypeCustom.js +10 -0
  264. package/dist/enums/private/SerializationBrand.js +42 -0
  265. package/dist/enums/private/StageTravelState.js +13 -0
  266. package/dist/enums/private/TrapdoorAnimation.js +9 -0
  267. package/dist/enums/private/UIStreakAnimation.js +10 -0
  268. package/dist/features.js +150 -0
  269. package/dist/functions/ambush.js +26 -0
  270. package/dist/functions/array.js +586 -0
  271. package/dist/functions/arrayLua.js +81 -0
  272. package/dist/functions/benchmark.js +36 -0
  273. package/dist/functions/bitSet128.js +64 -0
  274. package/dist/functions/bitwise.js +82 -0
  275. package/dist/functions/bombs.js +14 -0
  276. package/dist/functions/bosses.js +238 -0
  277. package/dist/functions/cards.js +164 -0
  278. package/dist/functions/challenges.js +117 -0
  279. package/dist/functions/characters.js +182 -0
  280. package/dist/functions/charge.js +251 -0
  281. package/dist/functions/chargeBar.js +54 -0
  282. package/dist/functions/collectibleTag.js +24 -0
  283. package/dist/functions/collectibles.js +581 -0
  284. package/dist/functions/color.js +88 -0
  285. package/dist/functions/console.js +18 -0
  286. package/dist/functions/curses.js +37 -0
  287. package/dist/functions/debugFunctions.js +108 -0
  288. package/dist/functions/decorators.js +113 -0
  289. package/dist/functions/deepCopy.js +406 -0
  290. package/dist/functions/deepCopyTests.js +361 -0
  291. package/dist/functions/dimensions.js +30 -0
  292. package/dist/functions/direction.js +78 -0
  293. package/dist/functions/doors.js +524 -0
  294. package/dist/functions/easing.js +327 -0
  295. package/dist/functions/effects.js +14 -0
  296. package/dist/functions/emptyRoom.js +79 -0
  297. package/dist/functions/entities.js +529 -0
  298. package/dist/functions/entitiesSpecific.js +582 -0
  299. package/dist/functions/entityTypes.js +9 -0
  300. package/dist/functions/enums.js +244 -0
  301. package/dist/functions/external.js +59 -0
  302. package/dist/functions/familiars.js +136 -0
  303. package/dist/functions/flag.js +146 -0
  304. package/dist/functions/frames.js +166 -0
  305. package/dist/functions/globals.js +291 -0
  306. package/dist/functions/gridEntities.js +990 -0
  307. package/dist/functions/gridEntitiesSpecific.js +456 -0
  308. package/dist/functions/gridIndex.js +35 -0
  309. package/dist/functions/hash.js +75 -0
  310. package/dist/functions/hex.js +57 -0
  311. package/dist/functions/input.js +185 -0
  312. package/dist/functions/isaacAPIClass.js +157 -0
  313. package/dist/functions/itemPool.js +118 -0
  314. package/dist/functions/jsonHelpers.js +73 -0
  315. package/dist/functions/jsonRoom.js +184 -0
  316. package/dist/functions/kColor.js +89 -0
  317. package/dist/functions/language.js +16 -0
  318. package/dist/functions/level.js +66 -0
  319. package/dist/functions/levelGrid.js +497 -0
  320. package/dist/functions/log.js +86 -0
  321. package/dist/functions/logEntities.js +308 -0
  322. package/dist/functions/logMisc.js +510 -0
  323. package/dist/functions/map.js +121 -0
  324. package/dist/functions/math.js +149 -0
  325. package/dist/functions/merge.js +159 -0
  326. package/dist/functions/mergeTests.js +313 -0
  327. package/dist/functions/minimap.js +204 -0
  328. package/dist/functions/modFeatures.js +39 -0
  329. package/dist/functions/newArray.js +30 -0
  330. package/dist/functions/nextStage.js +169 -0
  331. package/dist/functions/npcDataStructures.js +146 -0
  332. package/dist/functions/npcs.js +132 -0
  333. package/dist/functions/pickupVariants.js +63 -0
  334. package/dist/functions/pickups.js +168 -0
  335. package/dist/functions/pickupsSpecific.js +376 -0
  336. package/dist/functions/pills.js +200 -0
  337. package/dist/functions/playerCenter.js +53 -0
  338. package/dist/functions/playerCollectibles.js +300 -0
  339. package/dist/functions/playerDataStructures.js +145 -0
  340. package/dist/functions/playerEffects.js +63 -0
  341. package/dist/functions/playerHealth.js +604 -0
  342. package/dist/functions/playerIndex.js +186 -0
  343. package/dist/functions/playerTrinkets.js +149 -0
  344. package/dist/functions/players.js +471 -0
  345. package/dist/functions/pocketItems.js +165 -0
  346. package/dist/functions/positionVelocity.js +158 -0
  347. package/dist/functions/pressurePlate.js +26 -0
  348. package/dist/functions/projectiles.js +57 -0
  349. package/dist/functions/random.js +90 -0
  350. package/dist/functions/readOnly.js +33 -0
  351. package/dist/functions/render.js +36 -0
  352. package/dist/functions/revive.js +151 -0
  353. package/dist/functions/rng.js +140 -0
  354. package/dist/functions/rockAlt.js +50 -0
  355. package/dist/functions/roomData.js +155 -0
  356. package/dist/functions/roomGrid.js +97 -0
  357. package/dist/functions/roomShape.js +143 -0
  358. package/dist/functions/roomShapeWalls.js +187 -0
  359. package/dist/functions/roomTransition.js +43 -0
  360. package/dist/functions/rooms.js +782 -0
  361. package/dist/functions/run.js +121 -0
  362. package/dist/functions/seeds.js +22 -0
  363. package/dist/functions/serialization.js +98 -0
  364. package/dist/functions/set.js +215 -0
  365. package/dist/functions/slots.js +41 -0
  366. package/dist/functions/sort.js +158 -0
  367. package/dist/functions/sound.js +45 -0
  368. package/dist/functions/spawnCollectible.js +112 -0
  369. package/dist/functions/sprites.js +130 -0
  370. package/dist/functions/stage.js +540 -0
  371. package/dist/functions/stats.js +104 -0
  372. package/dist/functions/storyBosses.js +63 -0
  373. package/dist/functions/string.js +194 -0
  374. package/dist/functions/table.js +162 -0
  375. package/dist/functions/tears.js +128 -0
  376. package/dist/functions/transformations.js +89 -0
  377. package/dist/functions/trinketGive.js +145 -0
  378. package/dist/functions/trinkets.js +213 -0
  379. package/dist/functions/tstlClass.js +97 -0
  380. package/dist/functions/types.js +225 -0
  381. package/dist/functions/ui.js +148 -0
  382. package/dist/functions/utils.d.ts +4 -1
  383. package/dist/functions/utils.d.ts.map +1 -1
  384. package/dist/functions/utils.js +195 -0
  385. package/dist/functions/utils.lua +6 -2
  386. package/dist/functions/vector.js +150 -0
  387. package/dist/functions/versusScreen.js +58 -0
  388. package/dist/functions/weighted.js +57 -0
  389. package/dist/index.js +219 -0
  390. package/dist/index.rollup.d.ts +4 -1
  391. package/dist/indexLua.js +220 -0
  392. package/dist/interfaces/ChargeBarSprites.js +2 -0
  393. package/dist/interfaces/Corner.js +2 -0
  394. package/dist/interfaces/CustomStageTSConfig.js +2 -0
  395. package/dist/interfaces/GridEntityCustomData.js +2 -0
  396. package/dist/interfaces/JSONRoomsFile.js +2 -0
  397. package/dist/interfaces/PlayerHealth.js +2 -0
  398. package/dist/interfaces/PlayerStats.js +4 -0
  399. package/dist/interfaces/PocketItemDescription.js +2 -0
  400. package/dist/interfaces/RoomDescription.js +2 -0
  401. package/dist/interfaces/SaveData.js +98 -0
  402. package/dist/interfaces/StageHistoryEntry.js +2 -0
  403. package/dist/interfaces/TSTLClassMetatable.js +2 -0
  404. package/dist/interfaces/TrinketSituation.js +2 -0
  405. package/dist/interfaces/private/AddCallbackParametersCustom.js +4 -0
  406. package/dist/interfaces/private/CustomStage.js +2 -0
  407. package/dist/interfaces/private/CustomTrapdoorDescription.js +2 -0
  408. package/dist/interfaces/private/ModUpgradedInterface.js +2 -0
  409. package/dist/isaacscript-common.lua +7 -3
  410. package/dist/maps/PHDPillConversionsMap.js +23 -0
  411. package/dist/maps/cardNameToTypeMap.js +211 -0
  412. package/dist/maps/characterNameToTypeMap.js +91 -0
  413. package/dist/maps/collectibleNameToTypeMap.js +19 -0
  414. package/dist/maps/defaultPlayerStatMap.js +17 -0
  415. package/dist/maps/entityTypeVariantToBossIDMap.js +11 -0
  416. package/dist/maps/falsePHDPillConversionsMap.js +37 -0
  417. package/dist/maps/gridEntityTypeToBrokenStateMap.js +32 -0
  418. package/dist/maps/gridEntityXMLMap.js +133 -0
  419. package/dist/maps/itemPoolTypeToItemPoolName.js +38 -0
  420. package/dist/maps/keyboardToStringMap.js +71 -0
  421. package/dist/maps/pillNameToEffectMap.js +91 -0
  422. package/dist/maps/roomNameToTypeMap.js +43 -0
  423. package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +17 -0
  424. package/dist/maps/transformationNameToPlayerFormMap.js +35 -0
  425. package/dist/maps/trinketNameToTypeMap.js +19 -0
  426. package/dist/objects/LRoomShapeToRectangles.js +43 -0
  427. package/dist/objects/backdropTypeToRockAltType.js +68 -0
  428. package/dist/objects/batteryNames.js +13 -0
  429. package/dist/objects/bombNames.js +17 -0
  430. package/dist/objects/bossIDToEntityTypeVariant.js +228 -0
  431. package/dist/objects/bossNamePNGFileNames.js +120 -0
  432. package/dist/objects/bossNames.js +119 -0
  433. package/dist/objects/bossPortraitPNGFileNames.js +123 -0
  434. package/dist/objects/cardDescriptions.js +106 -0
  435. package/dist/objects/cardNames.js +106 -0
  436. package/dist/objects/challengeBosses.js +60 -0
  437. package/dist/objects/challengeCharacters.js +58 -0
  438. package/dist/objects/challengeCollectibleTypes.js +255 -0
  439. package/dist/objects/challengeNames.js +54 -0
  440. package/dist/objects/challengeTrinketType.js +58 -0
  441. package/dist/objects/characterDamageMultipliers.js +49 -0
  442. package/dist/objects/characterNames.js +48 -0
  443. package/dist/objects/characterSpritePNGFileNames.js +50 -0
  444. package/dist/objects/characterStartingCollectibleTypes.js +105 -0
  445. package/dist/objects/characterStartingTrinketTypes.js +90 -0
  446. package/dist/objects/chestNames.js +20 -0
  447. package/dist/objects/coinNames.js +16 -0
  448. package/dist/objects/coinSubTypeToValue.js +15 -0
  449. package/dist/objects/collectibleDescriptions.js +742 -0
  450. package/dist/objects/collectibleNames.js +745 -0
  451. package/dist/objects/colors.js +26 -0
  452. package/dist/objects/directionNames.js +11 -0
  453. package/dist/objects/directionToDegrees.js +11 -0
  454. package/dist/objects/directionToMoveAction.js +11 -0
  455. package/dist/objects/directionToShootAction.js +11 -0
  456. package/dist/objects/directionToVector.js +13 -0
  457. package/dist/objects/doorSlotFlagToDoorSlot.js +15 -0
  458. package/dist/objects/doorSlotToDirection.js +15 -0
  459. package/dist/objects/doorSlotToDoorSlotFlag.js +15 -0
  460. package/dist/objects/gridEntityTypeToANM2Name.js +37 -0
  461. package/dist/objects/heartNames.js +21 -0
  462. package/dist/objects/isaacAPIClassTypeToBrand.js +12 -0
  463. package/dist/objects/isaacAPIClassTypeToFunctions.js +46 -0
  464. package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +57 -0
  465. package/dist/objects/kColors.js +27 -0
  466. package/dist/objects/keyNames.js +13 -0
  467. package/dist/objects/languageNames.js +13 -0
  468. package/dist/objects/oppositeDoorSlots.js +15 -0
  469. package/dist/objects/pillEffectClasses.js +57 -0
  470. package/dist/objects/pillEffectNames.js +57 -0
  471. package/dist/objects/pillEffectTypeToPillEffects.js +23 -0
  472. package/dist/objects/pillEffectTypes.js +57 -0
  473. package/dist/objects/playerNamePNGFileNames.js +57 -0
  474. package/dist/objects/playerPortraitPNGFileNames.js +54 -0
  475. package/dist/objects/roomShapeBounds.js +48 -0
  476. package/dist/objects/roomShapeCorners.js +330 -0
  477. package/dist/objects/roomShapeLayoutSizes.js +41 -0
  478. package/dist/objects/roomShapeToBottomRightPosition.js +25 -0
  479. package/dist/objects/roomShapeToDoorSlotCoordinates.js +111 -0
  480. package/dist/objects/roomShapeToDoorSlots.js +72 -0
  481. package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +118 -0
  482. package/dist/objects/roomShapeToGridWidth.js +20 -0
  483. package/dist/objects/roomShapeToTopLeftPosition.js +26 -0
  484. package/dist/objects/roomShapeVolumes.js +32 -0
  485. package/dist/objects/roomTypeNames.js +35 -0
  486. package/dist/objects/roomTypeSpecialGotoPrefixes.js +35 -0
  487. package/dist/objects/sackNames.js +11 -0
  488. package/dist/objects/slotNames.js +26 -0
  489. package/dist/objects/stageIDNames.js +43 -0
  490. package/dist/objects/stageToMusic.js +91 -0
  491. package/dist/objects/stageToStageID.js +117 -0
  492. package/dist/objects/stageTypeSuffixes.js +14 -0
  493. package/dist/objects/transformationNames.js +20 -0
  494. package/dist/objects/trinketDescriptions.js +199 -0
  495. package/dist/objects/trinketNames.js +202 -0
  496. package/dist/objects/versusScreenBackgroundColors.js +46 -0
  497. package/dist/objects/versusScreenDirtSpotColors.js +46 -0
  498. package/dist/patchErrorFunctions.js +65 -0
  499. package/dist/serialization.js +21 -0
  500. package/dist/sets/LRoomShapesSet.js +11 -0
  501. package/dist/sets/bigRoomShapesSet.js +14 -0
  502. package/dist/sets/bossSets.js +465 -0
  503. package/dist/sets/charactersThatStartWithAnActiveItemSet.js +18 -0
  504. package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +9 -0
  505. package/dist/sets/charactersWithFreeDevilDealsSet.js +6 -0
  506. package/dist/sets/charactersWithNoRedHeartsSet.js +19 -0
  507. package/dist/sets/charactersWithNoSoulHeartsSet.js +16 -0
  508. package/dist/sets/consoleCommandsSet.js +64 -0
  509. package/dist/sets/entitiesWithArmorSet.js +59 -0
  510. package/dist/sets/familiarsThatShootPlayerTearsSet.js +15 -0
  511. package/dist/sets/itemConfigCardTypesForCards.js +14 -0
  512. package/dist/sets/lostStyleCharactersSet.js +16 -0
  513. package/dist/sets/mineShaftRoomSubTypesSet.js +12 -0
  514. package/dist/sets/narrowRoomShapesSet.js +11 -0
  515. package/dist/sets/poopGridEntityXMLTypesSet.js +16 -0
  516. package/dist/sets/redHeartSubTypesSet.js +10 -0
  517. package/dist/sets/repentanceBossIDsSet.js +30 -0
  518. package/dist/sets/sinEntityTypesSet.js +14 -0
  519. package/dist/sets/singleUseActiveCollectibleTypesSet.js +15 -0
  520. package/dist/shaderCrashFix.js +24 -0
  521. package/dist/shouldFire.js +226 -0
  522. package/dist/types/AddSubtract.js +2 -0
  523. package/dist/types/AllButFirst.js +2 -0
  524. package/dist/types/AllButLast.js +2 -0
  525. package/dist/types/AnyClass.js +2 -0
  526. package/dist/types/AnyEntity.js +2 -0
  527. package/dist/types/AnyFunction.js +2 -0
  528. package/dist/types/AnyGridEntity.js +2 -0
  529. package/dist/types/CompositionTypeSatisfiesEnum.js +11 -0
  530. package/dist/types/ConversionHeartSubType.js +2 -0
  531. package/dist/types/Decrement.js +2 -0
  532. package/dist/types/ERange.js +2 -0
  533. package/dist/types/EntityID.js +2 -0
  534. package/dist/types/FunctionTuple.js +2 -0
  535. package/dist/types/GridEntityID.js +2 -0
  536. package/dist/types/HasFunction.js +2 -0
  537. package/dist/types/IRange.js +2 -0
  538. package/dist/types/Immutable.js +2 -0
  539. package/dist/types/Increment.js +2 -0
  540. package/dist/types/LowercaseKeys.js +2 -0
  541. package/dist/types/NaturalNumbersLessThan.js +2 -0
  542. package/dist/types/NaturalNumbersLessThanOrEqualTo.js +2 -0
  543. package/dist/types/PickingUpItem.js +44 -0
  544. package/dist/types/PickupIndex.js +2 -0
  545. package/dist/types/PlayerIndex.js +2 -0
  546. package/dist/types/PossibleStatType.js +2 -0
  547. package/dist/types/PublicInterface.js +2 -0
  548. package/dist/types/ReadonlyMap.js +6 -0
  549. package/dist/types/ReadonlyRecord.js +2 -0
  550. package/dist/types/ReadonlySet.js +6 -0
  551. package/dist/types/StartsWithLowercase.js +2 -0
  552. package/dist/types/StartsWithUppercase.js +2 -0
  553. package/dist/types/TSTLClass.js +2 -0
  554. package/dist/types/Tuple.js +2 -0
  555. package/dist/types/TupleKeys.js +2 -0
  556. package/dist/types/TupleToIntersection.js +2 -0
  557. package/dist/types/TupleToUnion.js +2 -0
  558. package/dist/types/TupleWithLengthBetween.js +22 -0
  559. package/dist/types/TupleWithMaxLength.js +27 -0
  560. package/dist/types/UnionToIntersection.js +2 -0
  561. package/dist/types/UppercaseKeys.js +2 -0
  562. package/dist/types/WeightedArray.js +2 -0
  563. package/dist/types/WidenLiteral.js +2 -0
  564. package/dist/types/Writable.js +2 -0
  565. package/dist/types/private/CallbackTuple.js +2 -0
  566. package/dist/types/private/ModUpgradedWithFeatures.js +2 -0
  567. package/package.json +1 -1
  568. package/src/functions/utils.ts +6 -2
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.topStreakTextStart = exports.streakTextGetShaderParams = exports.streakTextPostRender = void 0;
4
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
+ const cachedEnumValues_1 = require("../../../../arrays/cachedEnumValues");
6
+ const cachedClasses_1 = require("../../../../core/cachedClasses");
7
+ const constants_1 = require("../../../../core/constants");
8
+ const UIStreakAnimation_1 = require("../../../../enums/private/UIStreakAnimation");
9
+ const frames_1 = require("../../../../functions/frames");
10
+ const ui_1 = require("../../../../functions/ui");
11
+ const v_1 = require("./v");
12
+ /** Corresponds to "resources/gfx/ui/ui_streak.anm2". */
13
+ const UI_STREAK_ANIMATION_END_FRAMES = {
14
+ [UIStreakAnimation_1.UIStreakAnimation.NONE]: 0,
15
+ [UIStreakAnimation_1.UIStreakAnimation.TEXT]: 69,
16
+ [UIStreakAnimation_1.UIStreakAnimation.TEXT_STAY]: 1,
17
+ };
18
+ /** This must match the name of the shader in "shaders.xml". */
19
+ const EMPTY_SHADER_NAME = "IsaacScript-RenderAboveHUD";
20
+ /**
21
+ * The frame of the "Text" animation that corresponds to when it reaches the center of the screen
22
+ * and stays put.
23
+ */
24
+ const TEXT_STAY_FRAME = 8;
25
+ /** The frame of the "Text" animation that corresponds to when it starts to move right. */
26
+ const TEXT_OUT_FRAME = 60;
27
+ /** This matches the offset that the vanilla game uses; determined via trial and error. */
28
+ const STREAK_SPRITE_TOP_OFFSET = Vector(0, 47);
29
+ /** This matches the offset that the vanilla game uses; determined via trial and error. */
30
+ const STREAK_SPRITE_BOTTOM_OFFSET = Vector(0, -48.25);
31
+ /**
32
+ * The offset from the bottom of the sprite that the rendered text should go; determined via trial
33
+ * and error.
34
+ */
35
+ const STREAK_TEXT_BOTTOM_Y_OFFSET = -9;
36
+ /**
37
+ * Corresponds to the vanilla value; determined via trial and error.
38
+ *
39
+ * 8 is too little and 9 has the vanilla text come out just slightly ahead, so we go with 9.
40
+ */
41
+ const NUM_RENDER_FRAMES_MAP_HELD_BEFORE_STREAK_TEXT = 11;
42
+ /** Taken from StageAPI. */
43
+ const TEXT_IN_ADJUSTMENTS = [-800, -639, -450, -250, -70, 10, 6, 3];
44
+ /** Taken from StageAPI. */
45
+ const TEXT_OUT_ADJUSTMENTS = [
46
+ 0, -5, -10, -15, -20, 144, 308, 472, 636, 800,
47
+ ];
48
+ /** Taken from StageAPI. */
49
+ const TEXT_IN_SCALES = [
50
+ Vector(3, 0.2),
51
+ Vector(2.6, 0.36),
52
+ Vector(2.2, 0.52),
53
+ Vector(1.8, 0.68),
54
+ Vector(1.4, 0.84),
55
+ Vector(0.95, 1.05),
56
+ Vector(0.97, 1.03),
57
+ Vector(0.98, 1.02),
58
+ ];
59
+ /** Taken from StageAPI. */
60
+ const TEXT_OUT_SCALES = [
61
+ Vector(1, 1),
62
+ Vector(0.99, 1.03),
63
+ Vector(0.98, 1.05),
64
+ Vector(0.96, 1.08),
65
+ Vector(0.95, 1.1),
66
+ Vector(1.36, 0.92),
67
+ Vector(1.77, 0.74),
68
+ Vector(2.18, 0.56),
69
+ Vector(2.59, 0.38),
70
+ Vector(3, 0.2),
71
+ ];
72
+ // ModCallback.POST_RENDER (2)
73
+ function streakTextPostRender() {
74
+ // The top streak only plays when the player arrives on the floor (or continues a game from the
75
+ // main menu.)
76
+ checkEndTopStreakText();
77
+ // The bottom streak only plays when the player holds down the map button.
78
+ trackMapInputPressed();
79
+ checkStartBottomStreakText();
80
+ checkEndBottomStreakText();
81
+ }
82
+ exports.streakTextPostRender = streakTextPostRender;
83
+ function checkEndTopStreakText() {
84
+ if (v_1.v.run.topStreakTextStartedRenderFrame === null ||
85
+ v_1.v.run.topStreakText.animation !== UIStreakAnimation_1.UIStreakAnimation.TEXT_STAY) {
86
+ return;
87
+ }
88
+ const elapsedFrames = (0, frames_1.getElapsedRenderFramesSince)(v_1.v.run.topStreakTextStartedRenderFrame);
89
+ if (elapsedFrames >= 115) {
90
+ v_1.v.run.topStreakText.animation = UIStreakAnimation_1.UIStreakAnimation.TEXT;
91
+ // We adjust by the frame backwards by an arbitrary amount to roughly align with the speed of
92
+ // the vanilla animation.
93
+ v_1.v.run.topStreakText.frame = TEXT_OUT_FRAME - 2;
94
+ }
95
+ }
96
+ function trackMapInputPressed() {
97
+ const gameFrameCount = cachedClasses_1.game.GetFrameCount();
98
+ for (const controllerIndex of cachedEnumValues_1.CONTROLLER_INDEX_VALUES) {
99
+ const oldPushedMapFrame = v_1.v.run.controllerIndexPushingMapRenderFrame.get(controllerIndex);
100
+ const isPushingMap = Input.IsActionPressed(isaac_typescript_definitions_1.ButtonAction.MAP, controllerIndex);
101
+ if (isPushingMap) {
102
+ if (oldPushedMapFrame === undefined) {
103
+ v_1.v.run.controllerIndexPushingMapRenderFrame.set(controllerIndex, gameFrameCount);
104
+ }
105
+ }
106
+ else {
107
+ v_1.v.run.controllerIndexPushingMapRenderFrame.delete(controllerIndex);
108
+ }
109
+ }
110
+ }
111
+ /**
112
+ * If the map input has been pressed down for long enough, play the animation where the level streak
113
+ * slides in from the left.
114
+ */
115
+ function checkStartBottomStreakText() {
116
+ if (v_1.v.run.bottomStreakText.animation !== UIStreakAnimation_1.UIStreakAnimation.NONE) {
117
+ return;
118
+ }
119
+ const pushedMapFrames = [
120
+ ...v_1.v.run.controllerIndexPushingMapRenderFrame.values(),
121
+ ];
122
+ if (pushedMapFrames.length === 0) {
123
+ return;
124
+ }
125
+ const earliestFrame = Math.min(...pushedMapFrames);
126
+ const elapsedFrames = (0, frames_1.getElapsedGameFramesSince)(earliestFrame);
127
+ if (elapsedFrames >= NUM_RENDER_FRAMES_MAP_HELD_BEFORE_STREAK_TEXT) {
128
+ v_1.v.run.bottomStreakText.animation = UIStreakAnimation_1.UIStreakAnimation.TEXT;
129
+ v_1.v.run.bottomStreakText.frame = 0;
130
+ }
131
+ }
132
+ /**
133
+ * If the map input has been released, play the animation where the level streak slides out to the
134
+ * right.
135
+ */
136
+ function checkEndBottomStreakText() {
137
+ if (v_1.v.run.bottomStreakText.animation !== UIStreakAnimation_1.UIStreakAnimation.TEXT_STAY) {
138
+ return;
139
+ }
140
+ const pushedMapFrames = [
141
+ ...v_1.v.run.controllerIndexPushingMapRenderFrame.values(),
142
+ ];
143
+ if (pushedMapFrames.length === 0) {
144
+ v_1.v.run.bottomStreakText.animation = UIStreakAnimation_1.UIStreakAnimation.TEXT;
145
+ // We adjust by the frame backwards by an arbitrary amount to roughly align with the speed of
146
+ // the vanilla animation.
147
+ v_1.v.run.bottomStreakText.frame = TEXT_OUT_FRAME - 2;
148
+ }
149
+ }
150
+ // ModCallback.GET_SHADER_PARAMS (22)
151
+ function streakTextGetShaderParams(customStage, shaderName) {
152
+ if (shaderName !== EMPTY_SHADER_NAME) {
153
+ return;
154
+ }
155
+ const topCenterPos = (0, ui_1.getScreenTopCenterPos)();
156
+ const topStreakPosition = topCenterPos.add(STREAK_SPRITE_TOP_OFFSET);
157
+ renderStreakText(customStage, v_1.v.run.topStreakText, topStreakPosition);
158
+ const bottomCenterPos = (0, ui_1.getScreenBottomCenterPos)();
159
+ const bottomStreakPosition = bottomCenterPos.add(STREAK_SPRITE_BOTTOM_OFFSET);
160
+ renderStreakText(customStage, v_1.v.run.bottomStreakText, bottomStreakPosition);
161
+ }
162
+ exports.streakTextGetShaderParams = streakTextGetShaderParams;
163
+ function renderStreakText(customStage, streakText, position) {
164
+ if (streakText.animation === UIStreakAnimation_1.UIStreakAnimation.NONE) {
165
+ return;
166
+ }
167
+ if (streakText.animation !== UIStreakAnimation_1.UIStreakAnimation.TEXT_STAY) {
168
+ const { pauseFrame } = streakText;
169
+ streakText.pauseFrame = !streakText.pauseFrame;
170
+ if (!pauseFrame) {
171
+ streakText.frame++;
172
+ }
173
+ }
174
+ const endFrame = UI_STREAK_ANIMATION_END_FRAMES[streakText.animation];
175
+ if (streakText.frame > endFrame) {
176
+ streakText.animation = UIStreakAnimation_1.UIStreakAnimation.NONE;
177
+ streakText.frame = 0;
178
+ return;
179
+ }
180
+ if (streakText.animation === UIStreakAnimation_1.UIStreakAnimation.TEXT &&
181
+ streakText.frame === TEXT_STAY_FRAME) {
182
+ streakText.animation = UIStreakAnimation_1.UIStreakAnimation.TEXT_STAY;
183
+ streakText.frame = 0;
184
+ }
185
+ const isPaused = cachedClasses_1.game.IsPaused();
186
+ if (isPaused) {
187
+ return;
188
+ }
189
+ const font = cachedClasses_1.fonts.upheaval;
190
+ const { name } = customStage;
191
+ const numberSuffix = v_1.v.run.firstFloor ? "I" : "II";
192
+ const nameWithNumberSuffix = `${name} ${numberSuffix}`;
193
+ const length = font.GetStringWidthUTF8(nameWithNumberSuffix);
194
+ const centeredX = position.X - length / 2;
195
+ let adjustment = 0;
196
+ let scale = constants_1.VectorOne;
197
+ if (streakText.animation === UIStreakAnimation_1.UIStreakAnimation.TEXT) {
198
+ if (streakText.frame < TEXT_STAY_FRAME) {
199
+ adjustment = TEXT_IN_ADJUSTMENTS[streakText.frame] ?? 0;
200
+ scale = TEXT_IN_SCALES[streakText.frame] ?? constants_1.VectorOne;
201
+ }
202
+ else {
203
+ const adjustedFrame = streakText.frame - TEXT_OUT_FRAME;
204
+ adjustment = TEXT_OUT_ADJUSTMENTS[adjustedFrame] ?? 0;
205
+ scale = TEXT_OUT_SCALES[adjustedFrame] ?? constants_1.VectorOne;
206
+ }
207
+ }
208
+ const adjustedX = centeredX + adjustment;
209
+ const adjustedY = position.Y + STREAK_TEXT_BOTTOM_Y_OFFSET;
210
+ font.DrawStringScaled(nameWithNumberSuffix, adjustedX, adjustedY, scale.X, scale.Y, constants_1.KColorDefault);
211
+ }
212
+ function topStreakTextStart() {
213
+ const level = cachedClasses_1.game.GetLevel();
214
+ const renderFrameCount = Isaac.GetFrameCount();
215
+ // Show the vanilla streak text, which will have a blank name because of the -1 floor.
216
+ level.ShowName(false);
217
+ // Initiate the animation for the custom text.
218
+ v_1.v.run.topStreakText.animation = UIStreakAnimation_1.UIStreakAnimation.TEXT;
219
+ v_1.v.run.topStreakText.frame = 0;
220
+ v_1.v.run.topStreakTextStartedRenderFrame = renderFrameCount;
221
+ }
222
+ exports.topStreakTextStart = topStreakTextStart;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRandomBossRoomFromPool = exports.getRandomCustomStageRoom = void 0;
4
+ const array_1 = require("../../../../functions/array");
5
+ const log_1 = require("../../../../functions/log");
6
+ const random_1 = require("../../../../functions/random");
7
+ /**
8
+ * Helper function to get a random custom stage room from an array of custom stage rooms.
9
+ *
10
+ * Note that this function does not simply choose a random element in the provided array; it will
11
+ * properly account for each room weight using the algorithm from:
12
+ * https://stackoverflow.com/questions/1761626/weighted-random-numbers
13
+ */
14
+ function getRandomCustomStageRoom(roomsMetadata, seedOrRNG, verbose = false) {
15
+ const totalWeight = getTotalWeightOfCustomStageRooms(roomsMetadata);
16
+ if (verbose) {
17
+ (0, log_1.log)(`Total weight of the custom stage rooms provided: ${totalWeight}`);
18
+ }
19
+ const chosenWeight = (0, random_1.getRandomFloat)(0, totalWeight, seedOrRNG);
20
+ if (verbose) {
21
+ (0, log_1.log)(`Randomly chose weight for custom stage room: ${chosenWeight}`);
22
+ }
23
+ return getCustomStageRoomWithChosenWeight(roomsMetadata, chosenWeight);
24
+ }
25
+ exports.getRandomCustomStageRoom = getRandomCustomStageRoom;
26
+ function getTotalWeightOfCustomStageRooms(roomsMetadata) {
27
+ const weights = roomsMetadata.map((roomMetadata) => roomMetadata.weight);
28
+ return (0, array_1.sumArray)(weights);
29
+ }
30
+ function getCustomStageRoomWithChosenWeight(roomsMetadata, chosenWeight) {
31
+ for (const roomMetadata of roomsMetadata) {
32
+ if (chosenWeight < roomMetadata.weight) {
33
+ return roomMetadata;
34
+ }
35
+ chosenWeight -= roomMetadata.weight;
36
+ }
37
+ error(`Failed to get a custom stage room with chosen weight: ${chosenWeight}`);
38
+ }
39
+ function getRandomBossRoomFromPool(roomsMetadata, bossPool, seedOrRNG, verbose = false) {
40
+ const totalWeight = getTotalWeightOfBossPool(bossPool);
41
+ if (verbose) {
42
+ (0, log_1.log)(`Total weight of the custom stage boss pool provided: ${totalWeight}`);
43
+ }
44
+ const chosenWeight = (0, random_1.getRandomFloat)(0, totalWeight, seedOrRNG);
45
+ if (verbose) {
46
+ (0, log_1.log)(`Randomly chose weight for custom stage boss pool: ${chosenWeight}`);
47
+ }
48
+ const bossEntry = getBossEntryWithChosenWeight(bossPool, chosenWeight);
49
+ const roomsMetadataForBoss = roomsMetadata.filter((roomMetadata) => roomMetadata.subType === bossEntry.subType);
50
+ return getRandomCustomStageRoom(roomsMetadataForBoss, seedOrRNG, verbose);
51
+ }
52
+ exports.getRandomBossRoomFromPool = getRandomBossRoomFromPool;
53
+ function getTotalWeightOfBossPool(bossPool) {
54
+ const weights = bossPool.map((bossEntry) => bossEntry.weight);
55
+ return (0, array_1.sumArray)(weights);
56
+ }
57
+ function getBossEntryWithChosenWeight(bossPool, chosenWeight) {
58
+ for (const bossEntry of bossPool) {
59
+ if (chosenWeight < bossEntry.weight) {
60
+ return bossEntry;
61
+ }
62
+ chosenWeight -= bossEntry.weight;
63
+ }
64
+ error(`Failed to get a custom stage boss entry with chosen weight: ${chosenWeight}`);
65
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.v = void 0;
4
+ const UIStreakAnimation_1 = require("../../../../enums/private/UIStreakAnimation");
5
+ // This is registered in "CustomStages.ts".
6
+ // eslint-disable-next-line isaacscript/require-v-registration
7
+ exports.v = {
8
+ run: {
9
+ currentCustomStage: null,
10
+ /** Whether we are on e.g. Caves 1 or Caves 2. */
11
+ firstFloor: true,
12
+ showingBossVersusScreen: false,
13
+ /** Values are the render frame that the controller first pressed the map button. */
14
+ controllerIndexPushingMapRenderFrame: new Map(),
15
+ topStreakTextStartedRenderFrame: null,
16
+ topStreakText: {
17
+ animation: UIStreakAnimation_1.UIStreakAnimation.NONE,
18
+ frame: 0,
19
+ pauseFrame: false,
20
+ },
21
+ bottomStreakText: {
22
+ animation: UIStreakAnimation_1.UIStreakAnimation.NONE,
23
+ frame: 0,
24
+ pauseFrame: false,
25
+ },
26
+ },
27
+ };
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ // This emulates the vanilla versus screen that shows up when you enter a boss room.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.versusScreenPostRender = exports.playVersusScreenAnimation = void 0;
5
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
6
+ const cachedClasses_1 = require("../../../../core/cachedClasses");
7
+ const array_1 = require("../../../../functions/array");
8
+ const bosses_1 = require("../../../../functions/bosses");
9
+ const roomData_1 = require("../../../../functions/roomData");
10
+ const string_1 = require("../../../../functions/string");
11
+ const ui_1 = require("../../../../functions/ui");
12
+ const utils_1 = require("../../../../functions/utils");
13
+ const versusScreen_1 = require("../../../../functions/versusScreen");
14
+ const versusScreenBackgroundColors_1 = require("../../../../objects/versusScreenBackgroundColors");
15
+ const versusScreenDirtSpotColors_1 = require("../../../../objects/versusScreenDirtSpotColors");
16
+ const constants_1 = require("./constants");
17
+ const v_1 = require("./v");
18
+ const DEFAULT_STAGE_ID = isaac_typescript_definitions_1.StageID.BASEMENT;
19
+ const VERSUS_SCREEN_ANIMATION_NAME = "Scene";
20
+ /** The layers range from 0 to 13. */
21
+ const NUM_VERSUS_SCREEN_ANM2_LAYERS = 14;
22
+ /** Corresponds to "resources/gfx/ui/boss/versusscreen.anm2". */
23
+ var VersusScreenLayer;
24
+ (function (VersusScreenLayer) {
25
+ VersusScreenLayer[VersusScreenLayer["BACKGROUND"] = 0] = "BACKGROUND";
26
+ VersusScreenLayer[VersusScreenLayer["FRAME"] = 1] = "FRAME";
27
+ /** The boss dirt spot. */
28
+ VersusScreenLayer[VersusScreenLayer["BOSS_SPOT"] = 2] = "BOSS_SPOT";
29
+ /** The player dirt spot. */
30
+ VersusScreenLayer[VersusScreenLayer["PLAYER_SPOT"] = 3] = "PLAYER_SPOT";
31
+ VersusScreenLayer[VersusScreenLayer["BOSS_PORTRAIT"] = 4] = "BOSS_PORTRAIT";
32
+ VersusScreenLayer[VersusScreenLayer["PLAYER_PORTRAIT"] = 5] = "PLAYER_PORTRAIT";
33
+ VersusScreenLayer[VersusScreenLayer["PLAYER_NAME"] = 6] = "PLAYER_NAME";
34
+ VersusScreenLayer[VersusScreenLayer["BOSS_NAME"] = 7] = "BOSS_NAME";
35
+ VersusScreenLayer[VersusScreenLayer["VS_TEXT"] = 8] = "VS_TEXT";
36
+ VersusScreenLayer[VersusScreenLayer["BOSS_DOUBLE"] = 9] = "BOSS_DOUBLE";
37
+ VersusScreenLayer[VersusScreenLayer["DT_TEXT"] = 10] = "DT_TEXT";
38
+ VersusScreenLayer[VersusScreenLayer["OVERLAY"] = 11] = "OVERLAY";
39
+ /**
40
+ * We only need to render either the normal player portrait layer or the alternate player portrait
41
+ * layer. Rendering both will cause the player not to shake.
42
+ */
43
+ VersusScreenLayer[VersusScreenLayer["PLAYER_PORTRAIT_ALT"] = 12] = "PLAYER_PORTRAIT_ALT";
44
+ VersusScreenLayer[VersusScreenLayer["BOSS_PORTRAIT_GROUND"] = 13] = "BOSS_PORTRAIT_GROUND";
45
+ VersusScreenLayer[VersusScreenLayer["BOSS_PORTRAIT_2_GROUND"] = 14] = "BOSS_PORTRAIT_2_GROUND";
46
+ })(VersusScreenLayer || (VersusScreenLayer = {}));
47
+ /** These are the non-special layers that we will render last. */
48
+ const OTHER_ANM2_LAYERS = (0, array_1.arrayRemove)((0, utils_1.eRange)(NUM_VERSUS_SCREEN_ANM2_LAYERS), VersusScreenLayer.BACKGROUND, VersusScreenLayer.BOSS_SPOT, VersusScreenLayer.PLAYER_SPOT, VersusScreenLayer.OVERLAY, VersusScreenLayer.PLAYER_PORTRAIT_ALT);
49
+ const VANILLA_VERSUS_PLAYBACK_SPEED = 0.5;
50
+ /** We lazy load the sprite when first needed. */
51
+ const versusScreenSprite = Sprite();
52
+ /**
53
+ * We lazy load the sprite when first needed.
54
+ *
55
+ * Unfortunately, we must split the background layer into an entirely different sprite so that we
56
+ * can color it with the `Color` field.
57
+ */
58
+ const versusScreenBackgroundSprite = Sprite();
59
+ /**
60
+ * We lazy load the sprite when first needed.
61
+ *
62
+ * Unfortunately, we must split the dirt layer into an entirely different sprite so that we can
63
+ * color it with the `Color` field.
64
+ */
65
+ const versusScreenDirtSpotSprite = Sprite();
66
+ function playVersusScreenAnimation(customStage, disableAllSound, pause, runInNFrames) {
67
+ const room = cachedClasses_1.game.GetRoom();
68
+ const roomType = room.GetType();
69
+ const roomCleared = room.IsClear();
70
+ const hud = cachedClasses_1.game.GetHUD();
71
+ if (roomType !== isaac_typescript_definitions_1.RoomType.BOSS) {
72
+ return;
73
+ }
74
+ if (roomCleared) {
75
+ return;
76
+ }
77
+ if (willVanillaVersusScreenPlay()) {
78
+ // Since we are on an invalid stage, the versus screen will have a completely black background.
79
+ // Revert to using the background from the default stage.
80
+ const level = cachedClasses_1.game.GetLevel();
81
+ level.SetStage(constants_1.DEFAULT_BASE_STAGE, constants_1.DEFAULT_BASE_STAGE_TYPE);
82
+ runInNFrames.runNextGameFrame(() => {
83
+ const futureLevel = cachedClasses_1.game.GetLevel();
84
+ futureLevel.SetStage(constants_1.CUSTOM_FLOOR_STAGE, constants_1.CUSTOM_FLOOR_STAGE_TYPE);
85
+ });
86
+ return;
87
+ }
88
+ v_1.v.run.showingBossVersusScreen = true;
89
+ pause.pause();
90
+ hud.SetVisible(false);
91
+ disableAllSound.disableAllSound(constants_1.CUSTOM_STAGE_FEATURE_NAME);
92
+ // In vanilla, the "overlay.png" file has a white background. We must convert it to a PNG that
93
+ // uses a transparent background in order for the background behind it to be visible. We use the
94
+ // same "overlay.png" file as StageAPI uses for this purpose.
95
+ if (!versusScreenSprite.IsLoaded()) {
96
+ versusScreenSprite.Load("gfx/ui/boss/versusscreen.anm2", false);
97
+ versusScreenSprite.ReplaceSpritesheet(VersusScreenLayer.OVERLAY, `${constants_1.ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH}/overlay.png`);
98
+ }
99
+ // Player
100
+ {
101
+ const { namePNGPath, portraitPNGPath } = getPlayerPNGPaths();
102
+ versusScreenSprite.ReplaceSpritesheet(VersusScreenLayer.PLAYER_NAME, namePNGPath);
103
+ versusScreenSprite.ReplaceSpritesheet(VersusScreenLayer.PLAYER_PORTRAIT, portraitPNGPath);
104
+ }
105
+ // Boss
106
+ {
107
+ const { namePNGPath, portraitPNGPath } = getBossPNGPaths(customStage);
108
+ const trimmedNamePNGPath = (0, string_1.removeCharactersBefore)(namePNGPath, "gfx/");
109
+ versusScreenSprite.ReplaceSpritesheet(VersusScreenLayer.BOSS_NAME, trimmedNamePNGPath);
110
+ const trimmedPortraitPNGPath = (0, string_1.removeCharactersBefore)(portraitPNGPath, "gfx/");
111
+ versusScreenSprite.ReplaceSpritesheet(VersusScreenLayer.BOSS_PORTRAIT, trimmedPortraitPNGPath);
112
+ }
113
+ versusScreenSprite.LoadGraphics();
114
+ if (!versusScreenBackgroundSprite.IsLoaded()) {
115
+ versusScreenBackgroundSprite.Load("gfx/ui/boss/versusscreen.anm2", true);
116
+ }
117
+ let backgroundColor = versusScreenBackgroundColors_1.VERSUS_SCREEN_BACKGROUND_COLORS[DEFAULT_STAGE_ID];
118
+ if (customStage.versusScreen?.backgroundColor !== undefined) {
119
+ const { r, g, b, a } = customStage.versusScreen.backgroundColor;
120
+ backgroundColor = Color(r, g, b, a);
121
+ }
122
+ versusScreenBackgroundSprite.Color = backgroundColor;
123
+ if (!versusScreenDirtSpotSprite.IsLoaded()) {
124
+ versusScreenDirtSpotSprite.Load("gfx/ui/boss/versusscreen.anm2", true);
125
+ }
126
+ let dirtSpotColor = versusScreenDirtSpotColors_1.VERSUS_SCREEN_DIRT_SPOT_COLORS[DEFAULT_STAGE_ID];
127
+ if (customStage.versusScreen?.dirtSpotColor !== undefined) {
128
+ const { r, g, b } = customStage.versusScreen.dirtSpotColor;
129
+ dirtSpotColor = Color(r, g, b);
130
+ }
131
+ versusScreenDirtSpotSprite.Color = dirtSpotColor;
132
+ for (const sprite of [
133
+ versusScreenBackgroundSprite,
134
+ versusScreenDirtSpotSprite,
135
+ versusScreenSprite,
136
+ ]) {
137
+ sprite.Play(VERSUS_SCREEN_ANIMATION_NAME, true);
138
+ sprite.PlaybackSpeed = VANILLA_VERSUS_PLAYBACK_SPEED;
139
+ }
140
+ }
141
+ exports.playVersusScreenAnimation = playVersusScreenAnimation;
142
+ function willVanillaVersusScreenPlay() {
143
+ const bosses = (0, bosses_1.getBosses)();
144
+ return bosses.some((boss) => boss.GetBossID() !== 0);
145
+ }
146
+ /** Use the character of the 0th player. */
147
+ function getPlayerPNGPaths() {
148
+ const player = Isaac.GetPlayer();
149
+ const character = player.GetPlayerType();
150
+ if (character === isaac_typescript_definitions_1.PlayerType.POSSESSOR) {
151
+ error("Failed to get the player PNG paths since they are a possessor.");
152
+ }
153
+ const namePNGPath = (0, versusScreen_1.getCharacterNamePNGFilePath)(character);
154
+ const portraitPNGPath = (0, versusScreen_1.getCharacterPortraitPNGFilePath)(character);
155
+ return { namePNGPath, portraitPNGPath };
156
+ }
157
+ /** Use the boss of the first boss found. */
158
+ function getBossPNGPaths(customStage) {
159
+ // Prefer the PNG paths specified by the end-user, if any.
160
+ const paths = getBossPNGPathsCustom(customStage);
161
+ if (paths !== undefined) {
162
+ return paths;
163
+ }
164
+ // If this is not a vanilla boss, default to showing question marks.
165
+ const bosses = (0, bosses_1.getBosses)();
166
+ const firstBoss = bosses[0];
167
+ const bossID = firstBoss === undefined ? 0 : firstBoss.GetBossID();
168
+ if (bossID === 0) {
169
+ const questionMarkPath = (0, versusScreen_1.getBossNamePNGFilePath)(isaac_typescript_definitions_1.BossID.BLUE_BABY);
170
+ const namePNGPath = questionMarkPath;
171
+ const portraitPNGPath = questionMarkPath;
172
+ return { namePNGPath, portraitPNGPath };
173
+ }
174
+ // If this is a vanilla boss, it will have a boss ID, and we can use the corresponding vanilla
175
+ // files.
176
+ const namePNGPath = (0, versusScreen_1.getBossNamePNGFilePath)(bossID);
177
+ const portraitPNGPath = (0, versusScreen_1.getBossPortraitPNGFilePath)(bossID);
178
+ return { namePNGPath, portraitPNGPath };
179
+ }
180
+ function getBossPNGPathsCustom(customStage) {
181
+ if (customStage.bossPool === undefined) {
182
+ return undefined;
183
+ }
184
+ const roomSubType = (0, roomData_1.getRoomSubType)();
185
+ const matchingBossEntry = customStage.bossPool.find((bossEntry) => bossEntry.subType === roomSubType);
186
+ if (matchingBossEntry === undefined) {
187
+ return undefined;
188
+ }
189
+ return matchingBossEntry.versusScreen;
190
+ }
191
+ function finishVersusScreenAnimation(pause, disableAllSound) {
192
+ const hud = cachedClasses_1.game.GetHUD();
193
+ v_1.v.run.showingBossVersusScreen = false;
194
+ pause.unpause();
195
+ hud.SetVisible(true);
196
+ disableAllSound.enableAllSound(constants_1.CUSTOM_STAGE_FEATURE_NAME);
197
+ // The sound effect only plays once the versus cutscene is over.
198
+ cachedClasses_1.sfxManager.Play(isaac_typescript_definitions_1.SoundEffect.CASTLE_PORTCULLIS);
199
+ }
200
+ // ModCallback.POST_RENDER (2)
201
+ function versusScreenPostRender(pause, disableAllSound) {
202
+ if (!v_1.v.run.showingBossVersusScreen) {
203
+ return;
204
+ }
205
+ // We do not want to early return when the game is paused because we need to start displaying the
206
+ // black screen as soon as the slide animation starts.
207
+ if (versusScreenSprite.IsFinished(VERSUS_SCREEN_ANIMATION_NAME)) {
208
+ finishVersusScreenAnimation(pause, disableAllSound);
209
+ return;
210
+ }
211
+ const position = (0, ui_1.getScreenCenterPos)();
212
+ // First, we render the background.
213
+ versusScreenBackgroundSprite.RenderLayer(VersusScreenLayer.BACKGROUND, position);
214
+ versusScreenBackgroundSprite.Update();
215
+ // Second, we render the overlay.
216
+ versusScreenSprite.RenderLayer(VersusScreenLayer.OVERLAY, position);
217
+ // Third, we render the dirt.
218
+ versusScreenDirtSpotSprite.RenderLayer(VersusScreenLayer.BOSS_SPOT, position);
219
+ versusScreenDirtSpotSprite.RenderLayer(VersusScreenLayer.PLAYER_SPOT, position);
220
+ versusScreenDirtSpotSprite.Update();
221
+ // Lastly, we render everything else.
222
+ for (const layerID of OTHER_ANM2_LAYERS) {
223
+ versusScreenSprite.RenderLayer(layerID, position);
224
+ }
225
+ versusScreenSprite.Update();
226
+ }
227
+ exports.versusScreenPostRender = versusScreenPostRender;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DebugDisplayBomb = void 0;
4
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
+ const render_1 = require("../../../../functions/render");
6
+ const Feature_1 = require("../../../private/Feature");
7
+ const utils_1 = require("./utils");
8
+ class DebugDisplayBomb extends Feature_1.Feature {
9
+ textCallback = utils_1.defaultEntityDisplayCallback;
10
+ constructor() {
11
+ super();
12
+ this.callbacksUsed = [
13
+ // 59
14
+ [isaac_typescript_definitions_1.ModCallback.POST_BOMB_RENDER, this.postBombRender],
15
+ ];
16
+ }
17
+ // ModCallback.POST_BOMB_RENDER (59)
18
+ postBombRender = (bomb) => {
19
+ const text = this.textCallback(bomb);
20
+ (0, render_1.renderTextOnEntity)(bomb, text);
21
+ };
22
+ }
23
+ exports.DebugDisplayBomb = DebugDisplayBomb;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DebugDisplayDoor = void 0;
4
+ const ModCallbackCustom_1 = require("../../../../enums/ModCallbackCustom");
5
+ const render_1 = require("../../../../functions/render");
6
+ const Feature_1 = require("../../../private/Feature");
7
+ const utils_1 = require("./utils");
8
+ class DebugDisplayDoor extends Feature_1.Feature {
9
+ textCallback = utils_1.defaultGridEntityDisplayCallback;
10
+ constructor() {
11
+ super();
12
+ this.customCallbacksUsed = [
13
+ [ModCallbackCustom_1.ModCallbackCustom.POST_DOOR_RENDER, this.postDoorRender],
14
+ ];
15
+ }
16
+ // ModCallbackCustom.POST_DOOR_RENDER
17
+ postDoorRender = (door) => {
18
+ const text = this.textCallback(door);
19
+ (0, render_1.renderTextOnEntity)(door, text);
20
+ };
21
+ }
22
+ exports.DebugDisplayDoor = DebugDisplayDoor;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DebugDisplayEffect = void 0;
4
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
+ const render_1 = require("../../../../functions/render");
6
+ const Feature_1 = require("../../../private/Feature");
7
+ const utils_1 = require("./utils");
8
+ class DebugDisplayEffect extends Feature_1.Feature {
9
+ textCallback = utils_1.defaultEntityDisplayCallback;
10
+ constructor() {
11
+ super();
12
+ this.callbacksUsed = [
13
+ // 56
14
+ [isaac_typescript_definitions_1.ModCallback.POST_EFFECT_RENDER, this.postEffectRender],
15
+ ];
16
+ }
17
+ // ModCallback.POST_EFFECT_RENDER (56)
18
+ postEffectRender = (effect) => {
19
+ const text = this.textCallback(effect);
20
+ (0, render_1.renderTextOnEntity)(effect, text);
21
+ };
22
+ }
23
+ exports.DebugDisplayEffect = DebugDisplayEffect;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DebugDisplayFamiliar = void 0;
4
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
+ const render_1 = require("../../../../functions/render");
6
+ const Feature_1 = require("../../../private/Feature");
7
+ const utils_1 = require("./utils");
8
+ class DebugDisplayFamiliar extends Feature_1.Feature {
9
+ textCallback = utils_1.defaultEntityDisplayCallback;
10
+ constructor() {
11
+ super();
12
+ this.callbacksUsed = [
13
+ // 25
14
+ [isaac_typescript_definitions_1.ModCallback.POST_FAMILIAR_RENDER, this.postFamiliarRender],
15
+ ];
16
+ }
17
+ // ModCallback.POST_FAMILIAR_RENDER (25)
18
+ postFamiliarRender = (familiar) => {
19
+ const text = this.textCallback(familiar);
20
+ (0, render_1.renderTextOnEntity)(familiar, text);
21
+ };
22
+ }
23
+ exports.DebugDisplayFamiliar = DebugDisplayFamiliar;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DebugDisplayKnife = void 0;
4
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
+ const render_1 = require("../../../../functions/render");
6
+ const Feature_1 = require("../../../private/Feature");
7
+ const utils_1 = require("./utils");
8
+ class DebugDisplayKnife extends Feature_1.Feature {
9
+ textCallback = utils_1.defaultEntityDisplayCallback;
10
+ constructor() {
11
+ super();
12
+ this.callbacksUsed = [
13
+ // 52
14
+ [isaac_typescript_definitions_1.ModCallback.POST_KNIFE_RENDER, this.postKnifeRender],
15
+ ];
16
+ }
17
+ // ModCallback.POST_KNIFE_RENDER (52)
18
+ postKnifeRender = (knife) => {
19
+ const text = this.textCallback(knife);
20
+ (0, render_1.renderTextOnEntity)(knife, text);
21
+ };
22
+ }
23
+ exports.DebugDisplayKnife = DebugDisplayKnife;