isaacscript-common 84.0.1 → 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 +2 -0
  383. package/dist/functions/utils.d.ts.map +1 -1
  384. package/dist/functions/utils.js +195 -0
  385. package/dist/functions/utils.lua +4 -1
  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 +2 -0
  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 +5 -2
  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 +4 -1
@@ -0,0 +1,540 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setStage = exports.onStageWithStoryBoss = exports.onStageWithShovelTrapdoors = exports.onStageWithSecretExitToMines = exports.onStageWithSecretExitToMausoleum = exports.onStageWithSecretExitToDownpour = exports.onStageWithRandomBossCollectible = exports.onStageWithNaturalDevilRoom = exports.onStageType = exports.onStageOrLower = exports.onStageOrHigher = exports.onStage = exports.onSheol = exports.onRepentanceStage = exports.onFirstFloor = exports.onFinalFloor = exports.onEffectiveStage = exports.onDarkRoom = exports.onChest = exports.onCathedral = exports.onAscent = exports.isStageWithStoryBoss = exports.isStageWithShovelTrapdoors = exports.isStageWithSecretExitToMines = exports.isStageWithSecretExitToMausoleum = exports.isStageWithSecretExitToDownpour = exports.isStageWithRandomBossCollectible = exports.isStageWithNaturalDevilRoom = exports.isRepentanceStage = exports.isFinalFloor = exports.getStageTypeSuffix = exports.getStageType = exports.getStageIDName = exports.getStageID = exports.getStage = exports.getLevelName = exports.getGotoCommand = exports.getEffectiveStage = exports.calculateStageTypeRepentance = exports.calculateStageType = void 0;
4
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
+ const cachedClasses_1 = require("../core/cachedClasses");
6
+ const roomTypeSpecialGotoPrefixes_1 = require("../objects/roomTypeSpecialGotoPrefixes");
7
+ const stageIDNames_1 = require("../objects/stageIDNames");
8
+ const stageToStageID_1 = require("../objects/stageToStageID");
9
+ const stageTypeSuffixes_1 = require("../objects/stageTypeSuffixes");
10
+ const log_1 = require("./log");
11
+ const types_1 = require("./types");
12
+ const utils_1 = require("./utils");
13
+ /**
14
+ * Helper function that calculates what the stage type should be for the provided stage. This
15
+ * emulates what the game's internal code does.
16
+ */
17
+ function calculateStageType(stage) {
18
+ // The following is the game's internal code to determine the floor type. (This came directly from
19
+ // Spider.)
20
+ /*
21
+ u32 Seed = g_Game->GetSeeds().GetStageSeed(NextStage);
22
+ if (!g_Game->IsGreedMode()) {
23
+ StageType = ((Seed % 2) == 0 && (
24
+ ((NextStage == STAGE1_1 || NextStage == STAGE1_2) && gd.Unlocked(ACHIEVEMENT_CELLAR)) ||
25
+ ((NextStage == STAGE2_1 || NextStage == STAGE2_2) && gd.Unlocked(ACHIEVEMENT_CATACOMBS)) ||
26
+ ((NextStage == STAGE3_1 || NextStage == STAGE3_2) && gd.Unlocked(ACHIEVEMENT_NECROPOLIS)) ||
27
+ ((NextStage == STAGE4_1 || NextStage == STAGE4_2)))
28
+ ) ? STAGE_TYPE_WOTL : STAGE_TYPE_ORIGINAL;
29
+ if (Seed % 3 == 0 && NextStage < STAGE5)
30
+ StageType = STAGE_TYPE_AFTERBIRTH;
31
+ */
32
+ const seeds = cachedClasses_1.game.GetSeeds();
33
+ const stageSeed = seeds.GetStageSeed(stage);
34
+ if (stageSeed % 2 === 0) {
35
+ return isaac_typescript_definitions_1.StageType.WRATH_OF_THE_LAMB;
36
+ }
37
+ if (stageSeed % 3 === 0) {
38
+ return isaac_typescript_definitions_1.StageType.AFTERBIRTH;
39
+ }
40
+ return isaac_typescript_definitions_1.StageType.ORIGINAL;
41
+ }
42
+ exports.calculateStageType = calculateStageType;
43
+ /**
44
+ * Helper function that calculates what the Repentance stage type should be for the provided stage.
45
+ * This emulates what the game's internal code does.
46
+ */
47
+ function calculateStageTypeRepentance(stage) {
48
+ // There is no alternate floor for Corpse.
49
+ if (stage === isaac_typescript_definitions_1.LevelStage.WOMB_1 || stage === isaac_typescript_definitions_1.LevelStage.WOMB_2) {
50
+ return isaac_typescript_definitions_1.StageType.REPENTANCE;
51
+ }
52
+ // This algorithm is from Kilburn. We add one because the alt path is offset by 1 relative to the
53
+ // normal path.
54
+ const seeds = cachedClasses_1.game.GetSeeds();
55
+ const adjustedStage = (0, types_1.asLevelStage)(stage + 1);
56
+ const stageSeed = seeds.GetStageSeed(adjustedStage);
57
+ // Kilburn does not know why he divided the stage seed by 2 first.
58
+ const halfStageSeed = Math.floor(stageSeed / 2);
59
+ if (halfStageSeed % 2 === 0) {
60
+ return isaac_typescript_definitions_1.StageType.REPENTANCE_B;
61
+ }
62
+ return isaac_typescript_definitions_1.StageType.REPENTANCE;
63
+ }
64
+ exports.calculateStageTypeRepentance = calculateStageTypeRepentance;
65
+ /**
66
+ * Helper function to account for Repentance floors being offset by 1. For example, Downpour 2 is
67
+ * the third level of the run, but the game considers it to have a stage of 2. This function will
68
+ * consider Downpour 2 to have a stage of 3.
69
+ */
70
+ function getEffectiveStage() {
71
+ const level = cachedClasses_1.game.GetLevel();
72
+ const stage = level.GetStage();
73
+ if (onRepentanceStage()) {
74
+ return stage + 1;
75
+ }
76
+ return stage;
77
+ }
78
+ exports.getEffectiveStage = getEffectiveStage;
79
+ /**
80
+ * Helper function to get the corresponding "goto" console command that would correspond to the
81
+ * provided room type and room variant.
82
+ *
83
+ * @param roomType The `RoomType` of the destination room.
84
+ * @param roomVariant The variant of the destination room.
85
+ * @param useSpecialRoomsForRoomTypeDefault Optional. Whether to use `s.default` as the prefix for
86
+ * the `goto` command (instead of `d`) if the room type is
87
+ * `RoomType.DEFAULT` (1). False by default.
88
+ */
89
+ function getGotoCommand(roomType, roomVariant, useSpecialRoomsForRoomTypeDefault = false) {
90
+ const isNormalRoom = roomType === isaac_typescript_definitions_1.RoomType.DEFAULT && !useSpecialRoomsForRoomTypeDefault;
91
+ const roomTypeSpecialGotoPrefix = roomTypeSpecialGotoPrefixes_1.ROOM_TYPE_SPECIAL_GOTO_PREFIXES[roomType];
92
+ const prefix = isNormalRoom ? "d" : `s.${roomTypeSpecialGotoPrefix}`;
93
+ return `goto ${prefix}.${roomVariant}`;
94
+ }
95
+ exports.getGotoCommand = getGotoCommand;
96
+ /**
97
+ * Helper function to get the English name of the level. For example, "Caves 1".
98
+ *
99
+ * This is useful because the `Level.GetName` method returns a localized version of the level name,
100
+ * which will not display correctly on some fonts.
101
+ *
102
+ * Note that this returns "Blue Womb" instead of "???" for stage 9.
103
+ *
104
+ * @param stage Optional. If not specified, the current stage will be used.
105
+ * @param stageType Optional. If not specified, the current stage type will be used.
106
+ */
107
+ function getLevelName(stage, stageType) {
108
+ const level = cachedClasses_1.game.GetLevel();
109
+ if (stage === undefined) {
110
+ stage = level.GetStage();
111
+ }
112
+ if (stageType === undefined) {
113
+ stageType = level.GetStageType();
114
+ }
115
+ const stageID = getStageID(stage, stageType);
116
+ const stageIDName = getStageIDName(stageID);
117
+ let suffix;
118
+ switch (stage) {
119
+ case isaac_typescript_definitions_1.LevelStage.BASEMENT_1:
120
+ case isaac_typescript_definitions_1.LevelStage.CAVES_1:
121
+ case isaac_typescript_definitions_1.LevelStage.DEPTHS_1:
122
+ case isaac_typescript_definitions_1.LevelStage.WOMB_1: {
123
+ suffix = " 1";
124
+ break;
125
+ }
126
+ case isaac_typescript_definitions_1.LevelStage.BASEMENT_2:
127
+ case isaac_typescript_definitions_1.LevelStage.CAVES_2:
128
+ case isaac_typescript_definitions_1.LevelStage.DEPTHS_2:
129
+ case isaac_typescript_definitions_1.LevelStage.WOMB_2: {
130
+ suffix = " 2";
131
+ break;
132
+ }
133
+ default: {
134
+ suffix = "";
135
+ break;
136
+ }
137
+ }
138
+ return stageIDName + suffix;
139
+ }
140
+ exports.getLevelName = getLevelName;
141
+ /** Alias for the `Level.GetStage` method. */
142
+ function getStage() {
143
+ const level = cachedClasses_1.game.GetLevel();
144
+ return level.GetStage();
145
+ }
146
+ exports.getStage = getStage;
147
+ /**
148
+ * Helper function to get the stage ID that corresponds to a particular stage and stage type.
149
+ *
150
+ * This is useful because `getRoomStageID` will not correctly return the `StageID` if the player is
151
+ * in a special room.
152
+ *
153
+ * This correctly handles the case of Greed Mode. In Greed Mode, if an undefined stage and stage
154
+ * type combination are passed, `StageID.SPECIAL_ROOMS` (0) will be returned.
155
+ *
156
+ * @param stage Optional. If not specified, the stage corresponding to the current floor will be
157
+ * used.
158
+ * @param stageType Optional. If not specified, the stage type corresponding to the current floor
159
+ * will be used.
160
+ */
161
+ function getStageID(stage, stageType) {
162
+ const level = cachedClasses_1.game.GetLevel();
163
+ if (stage === undefined) {
164
+ stage = level.GetStage();
165
+ }
166
+ if (stageType === undefined) {
167
+ stageType = level.GetStageType();
168
+ }
169
+ if (cachedClasses_1.game.IsGreedMode()) {
170
+ const stageTypeToStageID = stageToStageID_1.STAGE_TO_STAGE_ID_GREED_MODE.get(stage);
171
+ if (stageTypeToStageID === undefined) {
172
+ return isaac_typescript_definitions_1.StageID.SPECIAL_ROOMS;
173
+ }
174
+ return stageTypeToStageID[stageType];
175
+ }
176
+ const stageTypeToStageID = stageToStageID_1.STAGE_TO_STAGE_ID[stage];
177
+ return stageTypeToStageID[stageType];
178
+ }
179
+ exports.getStageID = getStageID;
180
+ /**
181
+ * Helper function to get the English name corresponding to a stage ID. For example, "Caves".
182
+ *
183
+ * This is derived from the data in the "stages.xml" file.
184
+ *
185
+ * Note that unlike "stages.xml", Blue Womb is specified with a name of "Blue Womb" instead of
186
+ * "???".
187
+ */
188
+ function getStageIDName(stageID) {
189
+ return stageIDNames_1.STAGE_ID_NAMES[stageID];
190
+ }
191
+ exports.getStageIDName = getStageIDName;
192
+ /** Alias for the `Level.GetStageType` method. */
193
+ function getStageType() {
194
+ const level = cachedClasses_1.game.GetLevel();
195
+ return level.GetStageType();
196
+ }
197
+ exports.getStageType = getStageType;
198
+ /**
199
+ * Helper function to convert a numerical `StageType` into the letter suffix supplied to the "stage"
200
+ * console command. For example, `StageType.REPENTANCE` is the stage type for Downpour, and the
201
+ * console command to go to Downpour is "stage 1c", so this function converts `StageType.REPENTANCE`
202
+ * to "c".
203
+ */
204
+ function getStageTypeSuffix(stageType) {
205
+ return stageTypeSuffixes_1.STAGE_TYPE_SUFFIXES[stageType];
206
+ }
207
+ exports.getStageTypeSuffix = getStageTypeSuffix;
208
+ /**
209
+ * Returns whether the provided stage and stage type represent a "final floor". This is defined as a
210
+ * floor that prevents the player from entering the I AM ERROR room on.
211
+ *
212
+ * For example, when using Undefined on The Chest, it has a 50% chance of teleporting the player to
213
+ * the Secret Room and a 50% chance of teleporting the player to the Super Secret Room, because the
214
+ * I AM ERROR room is never entered into the list of possibilities.
215
+ */
216
+ function isFinalFloor(stage, stageType) {
217
+ return (stage === isaac_typescript_definitions_1.LevelStage.DARK_ROOM_CHEST ||
218
+ stage === isaac_typescript_definitions_1.LevelStage.VOID ||
219
+ stage === isaac_typescript_definitions_1.LevelStage.HOME ||
220
+ (stage === isaac_typescript_definitions_1.LevelStage.WOMB_2 && isRepentanceStage(stageType)) // Corpse 2
221
+ );
222
+ }
223
+ exports.isFinalFloor = isFinalFloor;
224
+ /**
225
+ * Helper function to check if the provided stage type is equal to `StageType.REPENTANCE` or
226
+ * `StageType.REPENTANCE_B`.
227
+ */
228
+ function isRepentanceStage(stageType) {
229
+ return (stageType === isaac_typescript_definitions_1.StageType.REPENTANCE || stageType === isaac_typescript_definitions_1.StageType.REPENTANCE_B);
230
+ }
231
+ exports.isRepentanceStage = isRepentanceStage;
232
+ /**
233
+ * Helper function to check if the provided effective stage is one that has the possibility to grant
234
+ * a natural Devil Room or Angel Room after killing the boss.
235
+ *
236
+ * Note that in order for this function to work properly, you must provide it with the effective
237
+ * stage (e.g. from the `getEffectiveStage` helper function) and not the absolute stage (e.g. from
238
+ * the `Level.GetStage` method).
239
+ */
240
+ function isStageWithNaturalDevilRoom(effectiveStage) {
241
+ return ((0, utils_1.inRange)(effectiveStage, isaac_typescript_definitions_1.LevelStage.BASEMENT_2, isaac_typescript_definitions_1.LevelStage.WOMB_2) &&
242
+ effectiveStage !== isaac_typescript_definitions_1.LevelStage.BLUE_WOMB);
243
+ }
244
+ exports.isStageWithNaturalDevilRoom = isStageWithNaturalDevilRoom;
245
+ /**
246
+ * Helper function to check if the provided stage is one that will have a random collectible drop
247
+ * upon defeating the boss of the floor.
248
+ *
249
+ * This happens on most stages but will not happen on Depths 2, Womb 2, Sheol, Cathedral, Dark Room,
250
+ * The Chest, and Home (due to the presence of a story boss).
251
+ *
252
+ * Note that even though Delirium does not drop a random boss collectible, The Void is still
253
+ * considered to be a stage that has a random boss collectible since all of the non-Delirium Boss
254
+ * Rooms will drop random boss collectibles.
255
+ */
256
+ function isStageWithRandomBossCollectible(stage) {
257
+ return !isStageWithStoryBoss(stage) || stage === isaac_typescript_definitions_1.LevelStage.VOID;
258
+ }
259
+ exports.isStageWithRandomBossCollectible = isStageWithRandomBossCollectible;
260
+ /**
261
+ * Helper function to check if the provided stage will spawn a locked door to Downpour/Dross after
262
+ * defeating the boss.
263
+ */
264
+ function isStageWithSecretExitToDownpour(stage) {
265
+ return stage === isaac_typescript_definitions_1.LevelStage.BASEMENT_1 || stage === isaac_typescript_definitions_1.LevelStage.BASEMENT_2;
266
+ }
267
+ exports.isStageWithSecretExitToDownpour = isStageWithSecretExitToDownpour;
268
+ /**
269
+ * Helper function to check if the provided stage and stage type will spawn a spiked door to
270
+ * Mausoleum/Gehenna after defeating the boss.
271
+ */
272
+ function isStageWithSecretExitToMausoleum(stage, stageType) {
273
+ const repentanceStage = isRepentanceStage(stageType);
274
+ return ((stage === isaac_typescript_definitions_1.LevelStage.DEPTHS_1 && !repentanceStage) ||
275
+ (stage === isaac_typescript_definitions_1.LevelStage.CAVES_2 && repentanceStage));
276
+ }
277
+ exports.isStageWithSecretExitToMausoleum = isStageWithSecretExitToMausoleum;
278
+ /**
279
+ * Helper function to check if the provided stage and stage type will spawn a wooden door to
280
+ * Mines/Ashpit after defeating the boss.
281
+ */
282
+ function isStageWithSecretExitToMines(stage, stageType) {
283
+ const repentanceStage = isRepentanceStage(stageType);
284
+ return ((stage === isaac_typescript_definitions_1.LevelStage.CAVES_1 && !repentanceStage) ||
285
+ (stage === isaac_typescript_definitions_1.LevelStage.BASEMENT_2 && repentanceStage));
286
+ }
287
+ exports.isStageWithSecretExitToMines = isStageWithSecretExitToMines;
288
+ /**
289
+ * Helper function to check if the current stage is one that would create a trapdoor if We Need to
290
+ * Go Deeper was used.
291
+ */
292
+ function isStageWithShovelTrapdoors(stage, stageType) {
293
+ const repentanceStage = isRepentanceStage(stageType);
294
+ return (stage < isaac_typescript_definitions_1.LevelStage.WOMB_2 ||
295
+ (stage === isaac_typescript_definitions_1.LevelStage.WOMB_2 && !repentanceStage));
296
+ }
297
+ exports.isStageWithShovelTrapdoors = isStageWithShovelTrapdoors;
298
+ /**
299
+ * Helper function to check if the provided stage is one with a story boss. Specifically, this is
300
+ * Depths 2 (Mom), Womb 2 (Mom's Heart / It Lives), Blue Womb (Hush), Sheol (Satan), Cathedral
301
+ * (Isaac), Dark Room (Lamb), The Chest (Blue Baby), The Void (Delirium), and Home (Dogma / The
302
+ * Beast).
303
+ */
304
+ function isStageWithStoryBoss(stage) {
305
+ return stage === isaac_typescript_definitions_1.LevelStage.DEPTHS_2 || stage >= isaac_typescript_definitions_1.LevelStage.WOMB_2;
306
+ }
307
+ exports.isStageWithStoryBoss = isStageWithStoryBoss;
308
+ /**
309
+ * Helper function to check if the player has taken Dad's Note. This sets the game state flag of
310
+ * `GameStateFlag.BACKWARDS_PATH` and causes floor generation to change.
311
+ */
312
+ function onAscent() {
313
+ return cachedClasses_1.game.GetStateFlag(isaac_typescript_definitions_1.GameStateFlag.BACKWARDS_PATH);
314
+ }
315
+ exports.onAscent = onAscent;
316
+ function onCathedral() {
317
+ const level = cachedClasses_1.game.GetLevel();
318
+ const stage = level.GetStage();
319
+ const stageType = level.GetStageType();
320
+ return (stage === isaac_typescript_definitions_1.LevelStage.SHEOL_CATHEDRAL &&
321
+ stageType === isaac_typescript_definitions_1.StageType.WRATH_OF_THE_LAMB);
322
+ }
323
+ exports.onCathedral = onCathedral;
324
+ function onChest() {
325
+ const level = cachedClasses_1.game.GetLevel();
326
+ const stage = level.GetStage();
327
+ const stageType = level.GetStageType();
328
+ return (stage === isaac_typescript_definitions_1.LevelStage.DARK_ROOM_CHEST &&
329
+ stageType === isaac_typescript_definitions_1.StageType.WRATH_OF_THE_LAMB);
330
+ }
331
+ exports.onChest = onChest;
332
+ function onDarkRoom() {
333
+ const level = cachedClasses_1.game.GetLevel();
334
+ const stage = level.GetStage();
335
+ const stageType = level.GetStageType();
336
+ return (stage === isaac_typescript_definitions_1.LevelStage.DARK_ROOM_CHEST && stageType === isaac_typescript_definitions_1.StageType.ORIGINAL);
337
+ }
338
+ exports.onDarkRoom = onDarkRoom;
339
+ /**
340
+ * Helper function to check if the current stage matches one of the given stages. This uses the
341
+ * `getEffectiveStage` helper function so that the Repentance floors are correctly adjusted.
342
+ *
343
+ * This function is variadic, which means you can pass as many stages as you want to match for.
344
+ */
345
+ function onEffectiveStage(...effectiveStages) {
346
+ const thisEffectiveStage = getEffectiveStage();
347
+ return effectiveStages.includes(thisEffectiveStage);
348
+ }
349
+ exports.onEffectiveStage = onEffectiveStage;
350
+ /**
351
+ * Returns whether the player is on the "final floor" of the particular run. The final floor is
352
+ * defined as one that prevents the player from entering the I AM ERROR room on.
353
+ *
354
+ * For example, when using Undefined on The Chest, it has a 50% chance of teleporting the player to
355
+ * the Secret Room and a 50% chance of teleporting the player to the Super Secret Room, because the
356
+ * I AM ERROR room is never entered into the list of possibilities.
357
+ */
358
+ function onFinalFloor() {
359
+ const level = cachedClasses_1.game.GetLevel();
360
+ const stage = level.GetStage();
361
+ const stageType = level.GetStageType();
362
+ return isFinalFloor(stage, stageType);
363
+ }
364
+ exports.onFinalFloor = onFinalFloor;
365
+ /**
366
+ * Returns whether the player is on the first floor of the particular run.
367
+ *
368
+ * This is tricky to determine because we have to handle the cases of Downpour/Dross 1 not being the
369
+ * first floor and The Ascent.
370
+ */
371
+ function onFirstFloor() {
372
+ const effectiveStage = getEffectiveStage();
373
+ const isOnAscent = onAscent();
374
+ return effectiveStage === isaac_typescript_definitions_1.LevelStage.BASEMENT_1 && !isOnAscent;
375
+ }
376
+ exports.onFirstFloor = onFirstFloor;
377
+ /**
378
+ * Helper function to check if the current stage type is equal to `StageType.REPENTANCE` or
379
+ * `StageType.REPENTANCE_B`.
380
+ */
381
+ function onRepentanceStage() {
382
+ const level = cachedClasses_1.game.GetLevel();
383
+ const stageType = level.GetStageType();
384
+ return isRepentanceStage(stageType);
385
+ }
386
+ exports.onRepentanceStage = onRepentanceStage;
387
+ function onSheol() {
388
+ const level = cachedClasses_1.game.GetLevel();
389
+ const stage = level.GetStage();
390
+ const stageType = level.GetStageType();
391
+ return (stage === isaac_typescript_definitions_1.LevelStage.SHEOL_CATHEDRAL && stageType === isaac_typescript_definitions_1.StageType.ORIGINAL);
392
+ }
393
+ exports.onSheol = onSheol;
394
+ /**
395
+ * Helper function to check if the current stage matches one of the given stages.
396
+ *
397
+ * This function is variadic, which means you can pass as many stages as you want to match for.
398
+ */
399
+ function onStage(...stages) {
400
+ const level = cachedClasses_1.game.GetLevel();
401
+ const thisStage = level.GetStage();
402
+ return stages.includes(thisStage);
403
+ }
404
+ exports.onStage = onStage;
405
+ /** Helper function to check if the current stage is equal to or higher than the given stage. */
406
+ function onStageOrHigher(stage) {
407
+ const level = cachedClasses_1.game.GetLevel();
408
+ const thisStage = level.GetStage();
409
+ return thisStage >= stage;
410
+ }
411
+ exports.onStageOrHigher = onStageOrHigher;
412
+ /** Helper function to check if the current stage is equal to or higher than the given stage. */
413
+ function onStageOrLower(stage) {
414
+ const level = cachedClasses_1.game.GetLevel();
415
+ const thisStage = level.GetStage();
416
+ return thisStage <= stage;
417
+ }
418
+ exports.onStageOrLower = onStageOrLower;
419
+ /**
420
+ * Helper function to check if the current stage matches one of the given stage types.
421
+ *
422
+ * This function is variadic, which means you can pass as many room types as you want to match for.
423
+ */
424
+ function onStageType(...stageTypes) {
425
+ const level = cachedClasses_1.game.GetLevel();
426
+ const thisStageType = level.GetStageType();
427
+ return stageTypes.includes(thisStageType);
428
+ }
429
+ exports.onStageType = onStageType;
430
+ /**
431
+ * Helper function to check if the current stage is one that has the possibility to grant a natural
432
+ * Devil Room or Angel Room after killing the boss.
433
+ */
434
+ function onStageWithNaturalDevilRoom() {
435
+ const effectiveStage = getEffectiveStage();
436
+ return isStageWithNaturalDevilRoom(effectiveStage);
437
+ }
438
+ exports.onStageWithNaturalDevilRoom = onStageWithNaturalDevilRoom;
439
+ /**
440
+ * Helper function to check if the current stage is one that will have a random collectible drop
441
+ * upon defeating the boss of the floor.
442
+ *
443
+ * This happens on most stages but will not happen on Depths 2, Womb 2, Sheol, Cathedral, Dark Room,
444
+ * The Chest, and Home (due to the presence of a story boss).
445
+ *
446
+ * Note that even though Delirium does not drop a random boss collectible, The Void is still
447
+ * considered to be a stage that has a random boss collectible since all of the non-Delirium Boss
448
+ * Rooms will drop random boss collectibles.
449
+ */
450
+ function onStageWithRandomBossCollectible() {
451
+ const level = cachedClasses_1.game.GetLevel();
452
+ const stage = level.GetStage();
453
+ return isStageWithRandomBossCollectible(stage);
454
+ }
455
+ exports.onStageWithRandomBossCollectible = onStageWithRandomBossCollectible;
456
+ /**
457
+ * Helper function to check if the current stage will spawn a locked door to Downpour/Dross after
458
+ * defeating the boss.
459
+ */
460
+ function onStageWithSecretExitToDownpour() {
461
+ const level = cachedClasses_1.game.GetLevel();
462
+ const stage = level.GetStage();
463
+ return isStageWithSecretExitToDownpour(stage);
464
+ }
465
+ exports.onStageWithSecretExitToDownpour = onStageWithSecretExitToDownpour;
466
+ /**
467
+ * Helper function to check if the current stage will spawn a spiked door to Mausoleum/Gehenna after
468
+ * defeating the boss.
469
+ */
470
+ function onStageWithSecretExitToMausoleum() {
471
+ const level = cachedClasses_1.game.GetLevel();
472
+ const stage = level.GetStage();
473
+ const stageType = level.GetStageType();
474
+ return isStageWithSecretExitToMausoleum(stage, stageType);
475
+ }
476
+ exports.onStageWithSecretExitToMausoleum = onStageWithSecretExitToMausoleum;
477
+ /**
478
+ * Helper function to check if the current stage will spawn a wooden door to Mines/Ashpit after
479
+ * defeating the boss.
480
+ */
481
+ function onStageWithSecretExitToMines() {
482
+ const level = cachedClasses_1.game.GetLevel();
483
+ const stage = level.GetStage();
484
+ const stageType = level.GetStageType();
485
+ return isStageWithSecretExitToMines(stage, stageType);
486
+ }
487
+ exports.onStageWithSecretExitToMines = onStageWithSecretExitToMines;
488
+ /**
489
+ * Helper function to check if the current stage is one that would create a trapdoor if We Need to
490
+ * Go Deeper was used.
491
+ */
492
+ function onStageWithShovelTrapdoors() {
493
+ const level = cachedClasses_1.game.GetLevel();
494
+ const stage = level.GetStage();
495
+ const stageType = level.GetStageType();
496
+ return isStageWithShovelTrapdoors(stage, stageType);
497
+ }
498
+ exports.onStageWithShovelTrapdoors = onStageWithShovelTrapdoors;
499
+ /**
500
+ * Helper function to check if the current stage is one with a story boss. Specifically, this is
501
+ * Depths 2 (Mom), Womb 2 (Mom's Heart / It Lives), Blue Womb (Hush), Sheol (Satan), Cathedral
502
+ * (Isaac), Dark Room (Lamb), The Chest (Blue Baby), The Void (Delirium), and Home (Dogma / The
503
+ * Beast).
504
+ */
505
+ function onStageWithStoryBoss() {
506
+ const level = cachedClasses_1.game.GetLevel();
507
+ const stage = level.GetStage();
508
+ return isStageWithStoryBoss(stage);
509
+ }
510
+ exports.onStageWithStoryBoss = onStageWithStoryBoss;
511
+ /**
512
+ * Helper function to directly warp to a specific stage using the "stage" console command.
513
+ *
514
+ * This is different from the vanilla `Level.SetStage` method, which will change the stage and/or
515
+ * stage type of the current floor without moving the player to a new floor.
516
+ *
517
+ * Note that if you use this function on game frame 0, it will confuse the
518
+ * `POST_GAME_STARTED_REORDERED`, `POST_NEW_LEVEL_REORDERED`, and `POST_NEW_ROOM_REORDERED` custom
519
+ * callbacks. If you are using the function in this situation, remember to call the
520
+ * `reorderedCallbacksSetStage` function.
521
+ *
522
+ * @param stage The stage number to warp to.
523
+ * @param stageType The stage type to warp to.
524
+ * @param reseed Optional. Whether to reseed the floor upon arrival. Default is false. Set this to
525
+ * true if you are warping to the same stage but a different stage type (or else the
526
+ * floor layout will be identical to the old floor).
527
+ */
528
+ function setStage(stage, stageType, reseed = false) {
529
+ // Build the command that will take us to the next floor.
530
+ const stageTypeSuffix = getStageTypeSuffix(stageType);
531
+ const command = `stage ${stage}${stageTypeSuffix}`;
532
+ (0, log_1.log)(`Warping to a stage with a console command of: ${command}`);
533
+ Isaac.ExecuteCommand(command);
534
+ if (reseed) {
535
+ // Doing a "reseed" immediately after a "stage" command won't mess anything up.
536
+ (0, log_1.log)("Reseeding the floor with a console command of: reseed");
537
+ Isaac.ExecuteCommand("reseed");
538
+ }
539
+ }
540
+ exports.setStage = setStage;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPlayerStats = exports.getPlayerStat = exports.getDefaultPlayerStat = exports.addPlayerStat = void 0;
4
+ const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
5
+ const PlayerStat_1 = require("../enums/PlayerStat");
6
+ const defaultPlayerStatMap_1 = require("../maps/defaultPlayerStatMap");
7
+ const ReadonlySet_1 = require("../types/ReadonlySet");
8
+ const tears_1 = require("./tears");
9
+ const STAT_CACHE_FLAGS_SET = new ReadonlySet_1.ReadonlySet([
10
+ isaac_typescript_definitions_1.CacheFlag.DAMAGE,
11
+ isaac_typescript_definitions_1.CacheFlag.FIRE_DELAY,
12
+ isaac_typescript_definitions_1.CacheFlag.SHOT_SPEED,
13
+ isaac_typescript_definitions_1.CacheFlag.RANGE,
14
+ isaac_typescript_definitions_1.CacheFlag.SPEED,
15
+ isaac_typescript_definitions_1.CacheFlag.LUCK, // 1 << 10
16
+ ]);
17
+ /**
18
+ * Helper function to add a stat to a player based on the `CacheFlag` provided. Call this function
19
+ * from the `EVALUATE_CACHE` callback.
20
+ *
21
+ * Note that for `CacheFlag.FIRE_DELAY`, the "amount" argument will be interpreted as the tear stat
22
+ * to add (and not the amount to mutate `EntityPlayer.MaxFireDelay` by).
23
+ *
24
+ * This function supports the following cache flags:
25
+ * - CacheFlag.DAMAGE (1 << 0)
26
+ * - CacheFlag.FIRE_DELAY (1 << 1)
27
+ * - CacheFlag.SHOT_SPEED (1 << 2)
28
+ * - CacheFlag.RANGE (1 << 3)
29
+ * - CacheFlag.SPEED (1 << 4)
30
+ * - CacheFlag.LUCK (1 << 10)
31
+ */
32
+ function addPlayerStat(player, cacheFlag, amount) {
33
+ if (!STAT_CACHE_FLAGS_SET.has(cacheFlag)) {
34
+ error(`You cannot add a stat to a player with the cache flag of: ${cacheFlag}`);
35
+ }
36
+ switch (cacheFlag) {
37
+ // 1 << 0
38
+ case isaac_typescript_definitions_1.CacheFlag.DAMAGE: {
39
+ player.Damage += amount;
40
+ break;
41
+ }
42
+ // 1 << 1
43
+ case isaac_typescript_definitions_1.CacheFlag.FIRE_DELAY: {
44
+ (0, tears_1.addTearsStat)(player, amount);
45
+ break;
46
+ }
47
+ // 1 << 2
48
+ case isaac_typescript_definitions_1.CacheFlag.SHOT_SPEED: {
49
+ player.ShotSpeed += amount;
50
+ break;
51
+ }
52
+ // 1 << 3
53
+ case isaac_typescript_definitions_1.CacheFlag.RANGE: {
54
+ player.TearHeight += amount;
55
+ break;
56
+ }
57
+ // 1 << 4
58
+ case isaac_typescript_definitions_1.CacheFlag.SPEED: {
59
+ player.MoveSpeed += amount;
60
+ break;
61
+ }
62
+ // 1 << 10
63
+ case isaac_typescript_definitions_1.CacheFlag.LUCK: {
64
+ player.Luck += amount;
65
+ break;
66
+ }
67
+ }
68
+ }
69
+ exports.addPlayerStat = addPlayerStat;
70
+ /**
71
+ * Returns the starting stat that Isaac (the default character) starts with. For example, if you
72
+ * pass this function `CacheFlag.DAMAGE`, it will return 3.5.
73
+ *
74
+ * Note that the default fire delay is represented in the tear stat, not the `MaxFireDelay` value.
75
+ */
76
+ function getDefaultPlayerStat(cacheFlag) {
77
+ return defaultPlayerStatMap_1.DEFAULT_PLAYER_STAT_MAP.get(cacheFlag);
78
+ }
79
+ exports.getDefaultPlayerStat = getDefaultPlayerStat;
80
+ /** Helper function to get the stat for a player corresponding to the `StatType`. */
81
+ function getPlayerStat(player, playerStat) {
82
+ const playerStats = getPlayerStats(player);
83
+ return playerStats[playerStat];
84
+ }
85
+ exports.getPlayerStat = getPlayerStat;
86
+ /** Helper function to get all of the stat for a player. */
87
+ function getPlayerStats(player) {
88
+ return {
89
+ [PlayerStat_1.PlayerStat.DAMAGE]: player.Damage,
90
+ [PlayerStat_1.PlayerStat.FIRE_DELAY]: player.MaxFireDelay,
91
+ [PlayerStat_1.PlayerStat.SHOT_SPEED]: player.ShotSpeed,
92
+ [PlayerStat_1.PlayerStat.TEAR_HEIGHT]: player.TearHeight,
93
+ [PlayerStat_1.PlayerStat.TEAR_RANGE]: player.TearRange,
94
+ [PlayerStat_1.PlayerStat.TEAR_FALLING_ACCELERATION]: player.TearFallingAcceleration,
95
+ [PlayerStat_1.PlayerStat.TEAR_FALLING_SPEED]: player.TearFallingSpeed,
96
+ [PlayerStat_1.PlayerStat.MOVE_SPEED]: player.MoveSpeed,
97
+ [PlayerStat_1.PlayerStat.TEAR_FLAG]: player.TearFlags,
98
+ [PlayerStat_1.PlayerStat.TEAR_COLOR]: player.TearColor,
99
+ [PlayerStat_1.PlayerStat.FLYING]: player.CanFly,
100
+ [PlayerStat_1.PlayerStat.LUCK]: player.Luck,
101
+ [PlayerStat_1.PlayerStat.SIZE]: player.SpriteScale, // 1 << 11
102
+ };
103
+ }
104
+ exports.getPlayerStats = getPlayerStats;