isaacscript-common 2.0.34 → 2.3.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 (1034) hide show
  1. package/.eslintrc.js +70 -0
  2. package/README.md +1 -1
  3. package/build.sh +27 -0
  4. package/docs.sh +21 -0
  5. package/lint.sh +34 -0
  6. package/package.json +5 -4
  7. package/project.json +37 -0
  8. package/release.sh +16 -0
  9. package/scripts/.eslintrc.js +21 -0
  10. package/scripts/docsEntryPointLint.ts +135 -0
  11. package/scripts/tsconfig.json +5 -0
  12. package/src/cachedClasses.ts +39 -0
  13. package/src/callbacks/customRevive.ts +206 -0
  14. package/src/callbacks/itemPickup.ts +101 -0
  15. package/src/callbacks/postBombInitLate.ts +36 -0
  16. package/src/callbacks/postBoneSwing.ts +64 -0
  17. package/src/callbacks/postCollectibleInitFirst.ts +39 -0
  18. package/src/callbacks/postCursedTeleport.ts +183 -0
  19. package/src/callbacks/postCustomDoorEnter.ts +297 -0
  20. package/src/callbacks/postDoorRender.ts +26 -0
  21. package/src/callbacks/postDoorUpdate.ts +26 -0
  22. package/src/callbacks/postEffectInitLate.ts +36 -0
  23. package/src/callbacks/postEffectStateChanged.ts +43 -0
  24. package/src/callbacks/postEsauJr.ts +107 -0
  25. package/src/callbacks/postFamiliarInitLate.ts +36 -0
  26. package/src/callbacks/postFamiliarStateChanged.ts +43 -0
  27. package/src/callbacks/postFlip.ts +88 -0
  28. package/src/callbacks/postGreedModeWave.ts +41 -0
  29. package/src/callbacks/postGridEntity.ts +159 -0
  30. package/src/callbacks/postGridEntityCollision.ts +69 -0
  31. package/src/callbacks/postGridEntityRender.ts +26 -0
  32. package/src/callbacks/postHolyMantleRemoved.ts +55 -0
  33. package/src/callbacks/postItemDischarged.ts +149 -0
  34. package/src/callbacks/postKnifeInitLate.ts +36 -0
  35. package/src/callbacks/postLaserInitLate.ts +36 -0
  36. package/src/callbacks/postNPCInitLate.ts +36 -0
  37. package/src/callbacks/postNPCStateChanged.ts +42 -0
  38. package/src/callbacks/postNewRoomEarly.ts +90 -0
  39. package/src/callbacks/postPickupCollect.ts +48 -0
  40. package/src/callbacks/postPickupInitLate.ts +36 -0
  41. package/src/callbacks/postPickupStateChanged.ts +43 -0
  42. package/src/callbacks/postPitRender.ts +26 -0
  43. package/src/callbacks/postPitUpdate.ts +26 -0
  44. package/src/callbacks/postPlayerChangeHealth.ts +62 -0
  45. package/src/callbacks/postPlayerChangeType.ts +56 -0
  46. package/src/callbacks/postPlayerFatalDamage.ts +98 -0
  47. package/src/callbacks/postPlayerInitLate.ts +37 -0
  48. package/src/callbacks/postPlayerReordered.ts +142 -0
  49. package/src/callbacks/postPoopRender.ts +26 -0
  50. package/src/callbacks/postPoopUpdate.ts +26 -0
  51. package/src/callbacks/postPressurePlateRender.ts +26 -0
  52. package/src/callbacks/postPressurePlateUpdate.ts +26 -0
  53. package/src/callbacks/postProjectileInitLate.ts +36 -0
  54. package/src/callbacks/postPurchase.ts +64 -0
  55. package/src/callbacks/postRockRender.ts +26 -0
  56. package/src/callbacks/postRockUpdate.ts +26 -0
  57. package/src/callbacks/postRoomClearChanged.ts +52 -0
  58. package/src/callbacks/postSacrifice.ts +62 -0
  59. package/src/callbacks/postSlotInitUpdate.ts +63 -0
  60. package/src/callbacks/postSlotRender.ts +96 -0
  61. package/src/callbacks/postSpikesRender.ts +26 -0
  62. package/src/callbacks/postSpikesUpdate.ts +26 -0
  63. package/src/callbacks/postTNTRender.ts +26 -0
  64. package/src/callbacks/postTNTUpdate.ts +26 -0
  65. package/src/callbacks/postTearInitLate.ts +36 -0
  66. package/src/callbacks/postTearInitVeryLate.ts +41 -0
  67. package/src/callbacks/postTransformation.ts +59 -0
  68. package/src/callbacks/postTrinketBreak.ts +110 -0
  69. package/src/callbacks/preBerserkDeath.ts +49 -0
  70. package/src/callbacks/preNewLevel.ts +55 -0
  71. package/src/callbacks/reorderedCallbacks.ts +166 -0
  72. package/src/callbacks/subscriptions/postBombInitLate.ts +32 -0
  73. package/src/callbacks/subscriptions/postBoneSwing.ts +24 -0
  74. package/src/callbacks/subscriptions/postCollectibleInitFirst.ts +37 -0
  75. package/src/callbacks/subscriptions/postCursedTeleport.ts +24 -0
  76. package/src/callbacks/subscriptions/postCustomDoorEnter.ts +45 -0
  77. package/src/callbacks/subscriptions/postCustomRevive.ts +36 -0
  78. package/src/callbacks/subscriptions/postDoorRender.ts +35 -0
  79. package/src/callbacks/subscriptions/postDoorUpdate.ts +35 -0
  80. package/src/callbacks/subscriptions/postEffectInitLate.ts +32 -0
  81. package/src/callbacks/subscriptions/postEffectStateChanged.ts +40 -0
  82. package/src/callbacks/subscriptions/postEsauJr.ts +24 -0
  83. package/src/callbacks/subscriptions/postFamiliarInitLate.ts +32 -0
  84. package/src/callbacks/subscriptions/postFamiliarStateChanged.ts +40 -0
  85. package/src/callbacks/subscriptions/postFirstEsauJr.ts +24 -0
  86. package/src/callbacks/subscriptions/postFirstFlip.ts +24 -0
  87. package/src/callbacks/subscriptions/postFlip.ts +22 -0
  88. package/src/callbacks/subscriptions/postGameStartedReordered.ts +24 -0
  89. package/src/callbacks/subscriptions/postGreedModeWave.ts +24 -0
  90. package/src/callbacks/subscriptions/postGridEntityBroken.ts +51 -0
  91. package/src/callbacks/subscriptions/postGridEntityCollision.ts +54 -0
  92. package/src/callbacks/subscriptions/postGridEntityInit.ts +51 -0
  93. package/src/callbacks/subscriptions/postGridEntityRemove.ts +52 -0
  94. package/src/callbacks/subscriptions/postGridEntityRender.ts +51 -0
  95. package/src/callbacks/subscriptions/postGridEntityStateChanged.ts +55 -0
  96. package/src/callbacks/subscriptions/postGridEntityUpdate.ts +51 -0
  97. package/src/callbacks/subscriptions/postHolyMantleRemoved.ts +48 -0
  98. package/src/callbacks/subscriptions/postItemDischarged.ts +43 -0
  99. package/src/callbacks/subscriptions/postItemPickup.ts +64 -0
  100. package/src/callbacks/subscriptions/postKnifeInitLate.ts +32 -0
  101. package/src/callbacks/subscriptions/postLaserInitLate.ts +32 -0
  102. package/src/callbacks/subscriptions/postNPCInitLate.ts +32 -0
  103. package/src/callbacks/subscriptions/postNPCStateChanged.ts +42 -0
  104. package/src/callbacks/subscriptions/postNewLevelReordered.ts +22 -0
  105. package/src/callbacks/subscriptions/postNewRoomEarly.ts +22 -0
  106. package/src/callbacks/subscriptions/postNewRoomReordered.ts +22 -0
  107. package/src/callbacks/subscriptions/postPEffectUpdateReordered.ts +40 -0
  108. package/src/callbacks/subscriptions/postPickupCollect.ts +34 -0
  109. package/src/callbacks/subscriptions/postPickupInitLate.ts +31 -0
  110. package/src/callbacks/subscriptions/postPickupStateChanged.ts +35 -0
  111. package/src/callbacks/subscriptions/postPitRender.ts +35 -0
  112. package/src/callbacks/subscriptions/postPitUpdate.ts +35 -0
  113. package/src/callbacks/subscriptions/postPlayerChangeHealth.ts +45 -0
  114. package/src/callbacks/subscriptions/postPlayerChangeType.ts +40 -0
  115. package/src/callbacks/subscriptions/postPlayerFatalDamage.ts +67 -0
  116. package/src/callbacks/subscriptions/postPlayerInitLate.ts +40 -0
  117. package/src/callbacks/subscriptions/postPlayerInitReordered.ts +40 -0
  118. package/src/callbacks/subscriptions/postPlayerRenderReordered.ts +40 -0
  119. package/src/callbacks/subscriptions/postPlayerUpdateReordered.ts +40 -0
  120. package/src/callbacks/subscriptions/postPoopRender.ts +35 -0
  121. package/src/callbacks/subscriptions/postPoopUpdate.ts +35 -0
  122. package/src/callbacks/subscriptions/postPressurePlateRender.ts +37 -0
  123. package/src/callbacks/subscriptions/postPressurePlateUpdate.ts +37 -0
  124. package/src/callbacks/subscriptions/postProjectileInitLate.ts +35 -0
  125. package/src/callbacks/subscriptions/postPurchase.ts +31 -0
  126. package/src/callbacks/subscriptions/postRockRender.ts +35 -0
  127. package/src/callbacks/subscriptions/postRockUpdate.ts +35 -0
  128. package/src/callbacks/subscriptions/postRoomClearChanged.ts +24 -0
  129. package/src/callbacks/subscriptions/postSacrifice.ts +43 -0
  130. package/src/callbacks/subscriptions/postSlotAnimationChanged.ts +40 -0
  131. package/src/callbacks/subscriptions/postSlotDestroyed.ts +32 -0
  132. package/src/callbacks/subscriptions/postSlotInit.ts +32 -0
  133. package/src/callbacks/subscriptions/postSlotRender.ts +32 -0
  134. package/src/callbacks/subscriptions/postSlotUpdate.ts +32 -0
  135. package/src/callbacks/subscriptions/postSpikesRender.ts +35 -0
  136. package/src/callbacks/subscriptions/postSpikesUpdate.ts +35 -0
  137. package/src/callbacks/subscriptions/postTNTRender.ts +35 -0
  138. package/src/callbacks/subscriptions/postTNTUpdate.ts +35 -0
  139. package/src/callbacks/subscriptions/postTearInitLate.ts +32 -0
  140. package/src/callbacks/subscriptions/postTearInitVeryLate.ts +32 -0
  141. package/src/callbacks/subscriptions/postTransformation.ts +40 -0
  142. package/src/callbacks/subscriptions/postTrinketBreak.ts +38 -0
  143. package/src/callbacks/subscriptions/preBerserkDeath.ts +42 -0
  144. package/src/callbacks/subscriptions/preCustomRevive.ts +45 -0
  145. package/src/callbacks/subscriptions/preItemPickup.ts +64 -0
  146. package/src/callbacks/subscriptions/preNewLevel.ts +24 -0
  147. package/src/classes/DefaultMap.ts +220 -0
  148. package/src/classes/ModUpgraded.ts +83 -0
  149. package/src/constants.ts +140 -0
  150. package/src/constantsFirstLast.ts +212 -0
  151. package/src/enums/HealthType.ts +16 -0
  152. package/src/enums/ModCallbackCustom.ts +943 -0
  153. package/src/enums/PocketItemType.ts +8 -0
  154. package/src/enums/SerializationType.ts +5 -0
  155. package/src/enums/private/CopyableIsaacAPIClassType.ts +7 -0
  156. package/src/enums/private/SaveDataKey.ts +14 -0
  157. package/src/enums/private/SerializationBrand.ts +42 -0
  158. package/src/features/characterHealthConversion.ts +116 -0
  159. package/src/features/characterStats.ts +61 -0
  160. package/src/features/debugDisplay/debugDisplay.ts +221 -0
  161. package/src/features/debugDisplay/exports.ts +368 -0
  162. package/src/features/debugDisplay/v.ts +65 -0
  163. package/src/features/deployJSONRoom.ts +672 -0
  164. package/src/features/disableInputs.ts +193 -0
  165. package/src/features/disableSound.ts +77 -0
  166. package/src/features/extraConsoleCommands/commandsDisplay.ts +290 -0
  167. package/src/features/extraConsoleCommands/commandsSubroutines.ts +139 -0
  168. package/src/features/extraConsoleCommands/init.ts +334 -0
  169. package/src/features/extraConsoleCommands/listCommands.ts +1298 -0
  170. package/src/features/extraConsoleCommands/v.ts +14 -0
  171. package/src/features/fadeInRemover.ts +60 -0
  172. package/src/features/fastReset.ts +75 -0
  173. package/src/features/forgottenSwitch.ts +50 -0
  174. package/src/features/getCollectibleItemPoolType.ts +66 -0
  175. package/src/features/playerInventory.ts +187 -0
  176. package/src/features/ponyDetection.ts +74 -0
  177. package/src/features/preventCollectibleRotation.ts +113 -0
  178. package/src/features/runInNFrames.ts +148 -0
  179. package/src/features/saveDataManager/constants.ts +4 -0
  180. package/src/features/saveDataManager/exports.ts +230 -0
  181. package/src/features/saveDataManager/load.ts +90 -0
  182. package/src/features/saveDataManager/main.ts +187 -0
  183. package/src/features/saveDataManager/maps.ts +13 -0
  184. package/src/features/saveDataManager/merge.ts +182 -0
  185. package/src/features/saveDataManager/save.ts +66 -0
  186. package/src/features/saveDataManager/serializationBrand.ts +15 -0
  187. package/src/features/sirenHelpers.ts +129 -0
  188. package/src/features/taintedLazarusPlayers.ts +113 -0
  189. package/src/featuresInitialized.ts +20 -0
  190. package/src/functions/array.ts +412 -0
  191. package/src/functions/benchmark.ts +36 -0
  192. package/src/functions/bitwise.ts +24 -0
  193. package/src/functions/boss.ts +227 -0
  194. package/src/functions/cacheFlag.ts +12 -0
  195. package/src/functions/cards.ts +267 -0
  196. package/src/functions/challenges.ts +11 -0
  197. package/src/functions/character.ts +124 -0
  198. package/src/functions/charge.ts +237 -0
  199. package/src/functions/chargeBar.ts +67 -0
  200. package/src/functions/collectibleCacheFlag.ts +90 -0
  201. package/src/functions/collectibleSet.ts +57 -0
  202. package/src/functions/collectibleTag.ts +89 -0
  203. package/src/functions/collectibles.ts +610 -0
  204. package/src/functions/color.ts +149 -0
  205. package/src/functions/debug.ts +65 -0
  206. package/src/functions/deepCopy.ts +508 -0
  207. package/src/functions/deepCopyTests.ts +390 -0
  208. package/src/functions/direction.ts +16 -0
  209. package/src/functions/doors.ts +343 -0
  210. package/src/functions/easing.ts +182 -0
  211. package/src/functions/eden.ts +47 -0
  212. package/src/functions/entity.ts +352 -0
  213. package/src/functions/entitySpecific.ts +889 -0
  214. package/src/functions/entityTypes.ts +6 -0
  215. package/src/functions/enums.ts +145 -0
  216. package/src/functions/familiars.ts +106 -0
  217. package/src/functions/flag.ts +165 -0
  218. package/src/functions/flying.ts +117 -0
  219. package/src/functions/globals.ts +249 -0
  220. package/src/functions/gridEntity.ts +511 -0
  221. package/src/functions/gridEntitySpecific.ts +112 -0
  222. package/src/functions/input.ts +139 -0
  223. package/src/functions/isaacAPIClass.ts +65 -0
  224. package/src/functions/jsonHelpers.ts +45 -0
  225. package/src/functions/jsonRoom.ts +100 -0
  226. package/src/functions/kColor.ts +130 -0
  227. package/src/functions/language.ts +13 -0
  228. package/src/functions/level.ts +31 -0
  229. package/src/functions/log.ts +660 -0
  230. package/src/functions/map.ts +56 -0
  231. package/src/functions/math.ts +149 -0
  232. package/src/functions/mergeTests.ts +288 -0
  233. package/src/functions/npc.ts +148 -0
  234. package/src/functions/pickupVariants.ts +60 -0
  235. package/src/functions/pickups.ts +449 -0
  236. package/src/functions/pills.ts +182 -0
  237. package/src/functions/player.ts +975 -0
  238. package/src/functions/playerDataStructures.ts +150 -0
  239. package/src/functions/playerHealth.ts +318 -0
  240. package/src/functions/playerIndex.ts +195 -0
  241. package/src/functions/pocketItems.ts +149 -0
  242. package/src/functions/positionVelocity.ts +188 -0
  243. package/src/functions/random.ts +77 -0
  244. package/src/functions/revive.ts +201 -0
  245. package/src/functions/rng.ts +177 -0
  246. package/src/functions/roomData.ts +199 -0
  247. package/src/functions/roomGrid.ts +109 -0
  248. package/src/functions/roomShape.ts +80 -0
  249. package/src/functions/rooms.ts +667 -0
  250. package/src/functions/run.ts +36 -0
  251. package/src/functions/seeds.ts +19 -0
  252. package/src/functions/serialization.ts +97 -0
  253. package/src/functions/set.ts +95 -0
  254. package/src/functions/sound.ts +9 -0
  255. package/src/functions/spawnCollectible.ts +104 -0
  256. package/src/functions/sprite.ts +107 -0
  257. package/src/functions/stage.ts +125 -0
  258. package/src/functions/string.ts +47 -0
  259. package/src/functions/table.ts +139 -0
  260. package/src/functions/tears.ts +32 -0
  261. package/src/functions/transformations.ts +137 -0
  262. package/src/functions/trinketCacheFlag.ts +60 -0
  263. package/src/functions/trinketGive.ts +157 -0
  264. package/src/functions/trinkets.ts +215 -0
  265. package/src/functions/tstlClass.ts +91 -0
  266. package/src/functions/ui.ts +138 -0
  267. package/src/functions/utils.ts +200 -0
  268. package/src/functions/vector.ts +145 -0
  269. package/src/index.ts +162 -0
  270. package/src/initCustomCallbacks.ts +120 -0
  271. package/src/initFeatures.ts +37 -0
  272. package/src/interfaces/AddCallbackParameterCustom.ts +174 -0
  273. package/src/interfaces/ChargeBarSprites.ts +12 -0
  274. package/src/interfaces/JSONDoor.ts +13 -0
  275. package/src/interfaces/JSONEntity.ts +16 -0
  276. package/src/interfaces/JSONRoom.ts +36 -0
  277. package/src/interfaces/JSONRooms.ts +12 -0
  278. package/src/interfaces/JSONSpawn.ts +14 -0
  279. package/src/interfaces/PlayerHealth.ts +16 -0
  280. package/src/interfaces/PocketItemDescription.ts +9 -0
  281. package/src/interfaces/SaveData.ts +29 -0
  282. package/src/interfaces/TrinketSituation.ts +9 -0
  283. package/src/interfaces/private/TSTLClassMetatable.ts +8 -0
  284. package/src/maps/cardMap.ts +209 -0
  285. package/src/maps/characterMap.ts +87 -0
  286. package/src/maps/collectibleDescriptionMap.ts +732 -0
  287. package/src/maps/collectibleNameMap.ts +731 -0
  288. package/src/maps/defaultPlayerStatMap.ts +17 -0
  289. package/src/maps/gridEntityTypeToBrokenStateMap.ts +50 -0
  290. package/src/maps/gridEntityXMLMap.ts +176 -0
  291. package/src/maps/pillEffectMap.ts +88 -0
  292. package/src/maps/roomShapeToTopLeftWallGridIndexMap.ts +18 -0
  293. package/src/maps/roomTypeMap.ts +40 -0
  294. package/src/maps/trinketDescriptionMap.ts +200 -0
  295. package/src/maps/trinketNameMap.ts +198 -0
  296. package/src/objects/LRoomShapeToRectangles.ts +44 -0
  297. package/src/objects/callbackRegisterFunctions.ts +171 -0
  298. package/src/objects/cardDescriptions.ts +105 -0
  299. package/src/objects/cardNames.ts +105 -0
  300. package/src/objects/cardTypes.ts +104 -0
  301. package/src/objects/challengeNames.ts +52 -0
  302. package/src/objects/characterNames.ts +48 -0
  303. package/src/objects/coinSubTypeToValue.ts +14 -0
  304. package/src/objects/colors.ts +16 -0
  305. package/src/objects/directionNames.ts +11 -0
  306. package/src/objects/directionToDegrees.ts +11 -0
  307. package/src/objects/directionToVector.ts +12 -0
  308. package/src/objects/doorSlotFlagToDoorSlot.ts +16 -0
  309. package/src/objects/doorSlotToDirection.ts +14 -0
  310. package/src/objects/isaacAPIClassTypeToBrand.ts +11 -0
  311. package/src/objects/isaacAPIClassTypeToCopyFunction.ts +18 -0
  312. package/src/objects/languageNames.ts +13 -0
  313. package/src/objects/pillEffectClasses.ts +63 -0
  314. package/src/objects/pillEffectNames.ts +57 -0
  315. package/src/objects/pillEffectTypes.ts +62 -0
  316. package/src/objects/roomShapeBounds.ts +71 -0
  317. package/src/objects/roomShapeLayoutSizes.ts +45 -0
  318. package/src/objects/roomShapeToBottomRightPosition.ts +25 -0
  319. package/src/objects/roomShapeToDoorSlots.ts +83 -0
  320. package/src/objects/roomShapeToDoorSlotsToGridIndexDelta.ts +127 -0
  321. package/src/objects/roomShapeToGridWidth.ts +21 -0
  322. package/src/objects/roomShapeToTopLeftPosition.ts +26 -0
  323. package/src/objects/roomShapeVolumes.ts +38 -0
  324. package/src/objects/roomTypeNames.ts +36 -0
  325. package/src/objects/serializedIsaacAPIClassTypeToIdentityFunction.ts +14 -0
  326. package/src/objects/stageTypeToLetter.ts +15 -0
  327. package/src/objects/transformationNames.ts +20 -0
  328. package/src/patchErrorFunctions.ts +92 -0
  329. package/src/sets/LRoomShapesSet.ts +8 -0
  330. package/src/sets/bossSets.ts +470 -0
  331. package/src/sets/charactersThatStartWithAnActiveItemSet.ts +16 -0
  332. package/src/sets/charactersWithBlackHeartFromEternalHeartSet.ts +7 -0
  333. package/src/sets/charactersWithFreeDevilDealsSet.ts +4 -0
  334. package/src/sets/charactersWithNoRedHeartsSet.ts +17 -0
  335. package/src/sets/charactersWithNoSoulHeartsSet.ts +14 -0
  336. package/src/sets/chestPickupVariantsSet.ts +16 -0
  337. package/src/sets/familiarsThatShootPlayerTearsSet.ts +13 -0
  338. package/src/sets/lostStyleCharactersSet.ts +13 -0
  339. package/src/sets/mineShaftRoomSubTypesSet.ts +10 -0
  340. package/src/sets/redHeartSubTypesSet.ts +7 -0
  341. package/src/sets/sinEntityTypesSet.ts +11 -0
  342. package/src/sets/singleUseActiveCollectibleTypesSet.ts +13 -0
  343. package/src/sets/storyBossesSet.ts +17 -0
  344. package/src/types/AnyEntity.ts +12 -0
  345. package/src/types/AwaitingTextInput.d.ts +2 -0
  346. package/src/types/CollectibleIndex.ts +14 -0
  347. package/src/types/PickingUpItem.ts +89 -0
  348. package/src/types/PlayerIndex.ts +13 -0
  349. package/src/types/private/IsaacAPIClass.ts +3 -0
  350. package/src/types/private/SerializedIsaacAPIClass.ts +3 -0
  351. package/src/types/private/TSTLClass.ts +3 -0
  352. package/src/upgradeMod.ts +55 -0
  353. package/tsconfig.json +42 -0
  354. package/typedoc.json +158 -0
  355. package/website-root.md +11 -0
  356. package/cachedClasses.d.ts +0 -37
  357. package/cachedClasses.lua +0 -6
  358. package/callbacks/customRevive.d.ts +0 -1
  359. package/callbacks/customRevive.lua +0 -145
  360. package/callbacks/itemPickup.d.ts +0 -1
  361. package/callbacks/itemPickup.lua +0 -64
  362. package/callbacks/postBombInitLate.d.ts +0 -1
  363. package/callbacks/postBombInitLate.lua +0 -31
  364. package/callbacks/postBoneSwing.d.ts +0 -1
  365. package/callbacks/postBoneSwing.lua +0 -48
  366. package/callbacks/postCollectibleInitFirst.d.ts +0 -1
  367. package/callbacks/postCollectibleInitFirst.lua +0 -32
  368. package/callbacks/postCursedTeleport.d.ts +0 -1
  369. package/callbacks/postCursedTeleport.lua +0 -119
  370. package/callbacks/postCustomDoorEnter.d.ts +0 -50
  371. package/callbacks/postCustomDoorEnter.lua +0 -203
  372. package/callbacks/postDoorRender.d.ts +0 -1
  373. package/callbacks/postDoorRender.lua +0 -24
  374. package/callbacks/postDoorUpdate.d.ts +0 -1
  375. package/callbacks/postDoorUpdate.lua +0 -24
  376. package/callbacks/postEffectInitLate.d.ts +0 -1
  377. package/callbacks/postEffectInitLate.lua +0 -31
  378. package/callbacks/postEffectStateChanged.d.ts +0 -1
  379. package/callbacks/postEffectStateChanged.lua +0 -37
  380. package/callbacks/postEsauJr.d.ts +0 -1
  381. package/callbacks/postEsauJr.lua +0 -67
  382. package/callbacks/postFamiliarInitLate.d.ts +0 -1
  383. package/callbacks/postFamiliarInitLate.lua +0 -31
  384. package/callbacks/postFamiliarStateChanged.d.ts +0 -1
  385. package/callbacks/postFamiliarStateChanged.lua +0 -37
  386. package/callbacks/postFlip.d.ts +0 -1
  387. package/callbacks/postFlip.lua +0 -61
  388. package/callbacks/postGreedModeWave.d.ts +0 -1
  389. package/callbacks/postGreedModeWave.lua +0 -32
  390. package/callbacks/postGridEntity.d.ts +0 -1
  391. package/callbacks/postGridEntity.lua +0 -105
  392. package/callbacks/postGridEntityCollision.d.ts +0 -1
  393. package/callbacks/postGridEntityCollision.lua +0 -65
  394. package/callbacks/postGridEntityRender.d.ts +0 -1
  395. package/callbacks/postGridEntityRender.lua +0 -24
  396. package/callbacks/postHolyMantleRemoved.d.ts +0 -1
  397. package/callbacks/postHolyMantleRemoved.lua +0 -39
  398. package/callbacks/postItemDischarged.d.ts +0 -2
  399. package/callbacks/postItemDischarged.lua +0 -104
  400. package/callbacks/postKnifeInitLate.d.ts +0 -1
  401. package/callbacks/postKnifeInitLate.lua +0 -31
  402. package/callbacks/postLaserInitLate.d.ts +0 -1
  403. package/callbacks/postLaserInitLate.lua +0 -31
  404. package/callbacks/postNPCInitLate.d.ts +0 -1
  405. package/callbacks/postNPCInitLate.lua +0 -31
  406. package/callbacks/postNPCStateChanged.d.ts +0 -1
  407. package/callbacks/postNPCStateChanged.lua +0 -37
  408. package/callbacks/postNewRoomEarly.d.ts +0 -1
  409. package/callbacks/postNewRoomEarly.lua +0 -65
  410. package/callbacks/postPickupCollect.d.ts +0 -1
  411. package/callbacks/postPickupCollect.lua +0 -39
  412. package/callbacks/postPickupInitLate.d.ts +0 -1
  413. package/callbacks/postPickupInitLate.lua +0 -31
  414. package/callbacks/postPickupStateChanged.d.ts +0 -1
  415. package/callbacks/postPickupStateChanged.lua +0 -37
  416. package/callbacks/postPitRender.d.ts +0 -1
  417. package/callbacks/postPitRender.lua +0 -24
  418. package/callbacks/postPitUpdate.d.ts +0 -1
  419. package/callbacks/postPitUpdate.lua +0 -24
  420. package/callbacks/postPlayerChangeHealth.d.ts +0 -1
  421. package/callbacks/postPlayerChangeHealth.lua +0 -50
  422. package/callbacks/postPlayerChangeType.d.ts +0 -1
  423. package/callbacks/postPlayerChangeType.lua +0 -39
  424. package/callbacks/postPlayerFatalDamage.d.ts +0 -1
  425. package/callbacks/postPlayerFatalDamage.lua +0 -71
  426. package/callbacks/postPlayerInitLate.d.ts +0 -1
  427. package/callbacks/postPlayerInitLate.lua +0 -33
  428. package/callbacks/postPlayerReordered.d.ts +0 -1
  429. package/callbacks/postPlayerReordered.lua +0 -112
  430. package/callbacks/postPoopRender.d.ts +0 -1
  431. package/callbacks/postPoopRender.lua +0 -24
  432. package/callbacks/postPoopUpdate.d.ts +0 -1
  433. package/callbacks/postPoopUpdate.lua +0 -24
  434. package/callbacks/postPressurePlateRender.d.ts +0 -1
  435. package/callbacks/postPressurePlateRender.lua +0 -24
  436. package/callbacks/postPressurePlateUpdate.d.ts +0 -1
  437. package/callbacks/postPressurePlateUpdate.lua +0 -24
  438. package/callbacks/postProjectileInitLate.d.ts +0 -1
  439. package/callbacks/postProjectileInitLate.lua +0 -31
  440. package/callbacks/postPurchase.d.ts +0 -1
  441. package/callbacks/postPurchase.lua +0 -49
  442. package/callbacks/postRockRender.d.ts +0 -1
  443. package/callbacks/postRockRender.lua +0 -24
  444. package/callbacks/postRockUpdate.d.ts +0 -1
  445. package/callbacks/postRockUpdate.lua +0 -24
  446. package/callbacks/postRoomClearChanged.d.ts +0 -1
  447. package/callbacks/postRoomClearChanged.lua +0 -40
  448. package/callbacks/postSacrifice.d.ts +0 -1
  449. package/callbacks/postSacrifice.lua +0 -42
  450. package/callbacks/postSlotInitUpdate.d.ts +0 -1
  451. package/callbacks/postSlotInitUpdate.lua +0 -51
  452. package/callbacks/postSlotRender.d.ts +0 -1
  453. package/callbacks/postSlotRender.lua +0 -74
  454. package/callbacks/postSpikesRender.d.ts +0 -1
  455. package/callbacks/postSpikesRender.lua +0 -24
  456. package/callbacks/postSpikesUpdate.d.ts +0 -1
  457. package/callbacks/postSpikesUpdate.lua +0 -24
  458. package/callbacks/postTNTRender.d.ts +0 -1
  459. package/callbacks/postTNTRender.lua +0 -24
  460. package/callbacks/postTNTUpdate.d.ts +0 -1
  461. package/callbacks/postTNTUpdate.lua +0 -24
  462. package/callbacks/postTearInitLate.d.ts +0 -1
  463. package/callbacks/postTearInitLate.lua +0 -31
  464. package/callbacks/postTearInitVeryLate.d.ts +0 -1
  465. package/callbacks/postTearInitVeryLate.lua +0 -34
  466. package/callbacks/postTransformation.d.ts +0 -1
  467. package/callbacks/postTransformation.lua +0 -46
  468. package/callbacks/postTrinketBreak.d.ts +0 -1
  469. package/callbacks/postTrinketBreak.lua +0 -70
  470. package/callbacks/preBerserkDeath.d.ts +0 -1
  471. package/callbacks/preBerserkDeath.lua +0 -36
  472. package/callbacks/preNewLevel.d.ts +0 -1
  473. package/callbacks/preNewLevel.lua +0 -43
  474. package/callbacks/reorderedCallbacks.d.ts +0 -20
  475. package/callbacks/reorderedCallbacks.lua +0 -92
  476. package/callbacks/subscriptions/postBombInitLate.d.ts +0 -5
  477. package/callbacks/subscriptions/postBombInitLate.lua +0 -23
  478. package/callbacks/subscriptions/postBoneSwing.d.ts +0 -4
  479. package/callbacks/subscriptions/postBoneSwing.lua +0 -16
  480. package/callbacks/subscriptions/postCollectibleInitFirst.d.ts +0 -5
  481. package/callbacks/subscriptions/postCollectibleInitFirst.lua +0 -23
  482. package/callbacks/subscriptions/postCursedTeleport.d.ts +0 -4
  483. package/callbacks/subscriptions/postCursedTeleport.lua +0 -16
  484. package/callbacks/subscriptions/postCustomDoorEnter.d.ts +0 -5
  485. package/callbacks/subscriptions/postCustomDoorEnter.lua +0 -29
  486. package/callbacks/subscriptions/postCustomRevive.d.ts +0 -5
  487. package/callbacks/subscriptions/postCustomRevive.lua +0 -23
  488. package/callbacks/subscriptions/postDoorRender.d.ts +0 -5
  489. package/callbacks/subscriptions/postDoorRender.lua +0 -24
  490. package/callbacks/subscriptions/postDoorUpdate.d.ts +0 -5
  491. package/callbacks/subscriptions/postDoorUpdate.lua +0 -24
  492. package/callbacks/subscriptions/postEffectInitLate.d.ts +0 -5
  493. package/callbacks/subscriptions/postEffectInitLate.lua +0 -23
  494. package/callbacks/subscriptions/postEffectStateChanged.d.ts +0 -5
  495. package/callbacks/subscriptions/postEffectStateChanged.lua +0 -23
  496. package/callbacks/subscriptions/postEsauJr.d.ts +0 -4
  497. package/callbacks/subscriptions/postEsauJr.lua +0 -16
  498. package/callbacks/subscriptions/postFamiliarInitLate.d.ts +0 -5
  499. package/callbacks/subscriptions/postFamiliarInitLate.lua +0 -23
  500. package/callbacks/subscriptions/postFamiliarStateChanged.d.ts +0 -5
  501. package/callbacks/subscriptions/postFamiliarStateChanged.lua +0 -23
  502. package/callbacks/subscriptions/postFirstEsauJr.d.ts +0 -4
  503. package/callbacks/subscriptions/postFirstEsauJr.lua +0 -16
  504. package/callbacks/subscriptions/postFirstFlip.d.ts +0 -4
  505. package/callbacks/subscriptions/postFirstFlip.lua +0 -16
  506. package/callbacks/subscriptions/postFlip.d.ts +0 -4
  507. package/callbacks/subscriptions/postFlip.lua +0 -16
  508. package/callbacks/subscriptions/postGameStartedReordered.d.ts +0 -3
  509. package/callbacks/subscriptions/postGameStartedReordered.lua +0 -16
  510. package/callbacks/subscriptions/postGreedModeWave.d.ts +0 -4
  511. package/callbacks/subscriptions/postGreedModeWave.lua +0 -16
  512. package/callbacks/subscriptions/postGridEntityBroken.d.ts +0 -6
  513. package/callbacks/subscriptions/postGridEntityBroken.lua +0 -29
  514. package/callbacks/subscriptions/postGridEntityCollision.d.ts +0 -6
  515. package/callbacks/subscriptions/postGridEntityCollision.lua +0 -29
  516. package/callbacks/subscriptions/postGridEntityInit.d.ts +0 -6
  517. package/callbacks/subscriptions/postGridEntityInit.lua +0 -29
  518. package/callbacks/subscriptions/postGridEntityRemove.d.ts +0 -6
  519. package/callbacks/subscriptions/postGridEntityRemove.lua +0 -27
  520. package/callbacks/subscriptions/postGridEntityRender.d.ts +0 -6
  521. package/callbacks/subscriptions/postGridEntityRender.lua +0 -29
  522. package/callbacks/subscriptions/postGridEntityStateChanged.d.ts +0 -6
  523. package/callbacks/subscriptions/postGridEntityStateChanged.lua +0 -29
  524. package/callbacks/subscriptions/postGridEntityUpdate.d.ts +0 -6
  525. package/callbacks/subscriptions/postGridEntityUpdate.lua +0 -29
  526. package/callbacks/subscriptions/postHolyMantleRemoved.d.ts +0 -6
  527. package/callbacks/subscriptions/postHolyMantleRemoved.lua +0 -28
  528. package/callbacks/subscriptions/postItemDischarged.d.ts +0 -5
  529. package/callbacks/subscriptions/postItemDischarged.lua +0 -23
  530. package/callbacks/subscriptions/postItemPickup.d.ts +0 -11
  531. package/callbacks/subscriptions/postItemPickup.lua +0 -27
  532. package/callbacks/subscriptions/postKnifeInitLate.d.ts +0 -5
  533. package/callbacks/subscriptions/postKnifeInitLate.lua +0 -23
  534. package/callbacks/subscriptions/postLaserInitLate.d.ts +0 -5
  535. package/callbacks/subscriptions/postLaserInitLate.lua +0 -23
  536. package/callbacks/subscriptions/postNPCInitLate.d.ts +0 -5
  537. package/callbacks/subscriptions/postNPCInitLate.lua +0 -23
  538. package/callbacks/subscriptions/postNPCStateChanged.d.ts +0 -6
  539. package/callbacks/subscriptions/postNPCStateChanged.lua +0 -27
  540. package/callbacks/subscriptions/postNewLevelReordered.d.ts +0 -1
  541. package/callbacks/subscriptions/postNewLevelReordered.lua +0 -16
  542. package/callbacks/subscriptions/postNewRoomEarly.d.ts +0 -1
  543. package/callbacks/subscriptions/postNewRoomEarly.lua +0 -16
  544. package/callbacks/subscriptions/postNewRoomReordered.d.ts +0 -1
  545. package/callbacks/subscriptions/postNewRoomReordered.lua +0 -16
  546. package/callbacks/subscriptions/postPEffectUpdateReordered.d.ts +0 -6
  547. package/callbacks/subscriptions/postPEffectUpdateReordered.lua +0 -28
  548. package/callbacks/subscriptions/postPickupCollect.d.ts +0 -4
  549. package/callbacks/subscriptions/postPickupCollect.lua +0 -23
  550. package/callbacks/subscriptions/postPickupInitLate.d.ts +0 -3
  551. package/callbacks/subscriptions/postPickupInitLate.lua +0 -23
  552. package/callbacks/subscriptions/postPickupStateChanged.d.ts +0 -5
  553. package/callbacks/subscriptions/postPickupStateChanged.lua +0 -23
  554. package/callbacks/subscriptions/postPitRender.d.ts +0 -5
  555. package/callbacks/subscriptions/postPitRender.lua +0 -24
  556. package/callbacks/subscriptions/postPitUpdate.d.ts +0 -5
  557. package/callbacks/subscriptions/postPitUpdate.lua +0 -24
  558. package/callbacks/subscriptions/postPlayerChangeHealth.d.ts +0 -7
  559. package/callbacks/subscriptions/postPlayerChangeHealth.lua +0 -28
  560. package/callbacks/subscriptions/postPlayerChangeType.d.ts +0 -5
  561. package/callbacks/subscriptions/postPlayerChangeType.lua +0 -23
  562. package/callbacks/subscriptions/postPlayerFatalDamage.d.ts +0 -6
  563. package/callbacks/subscriptions/postPlayerFatalDamage.lua +0 -39
  564. package/callbacks/subscriptions/postPlayerInitLate.d.ts +0 -6
  565. package/callbacks/subscriptions/postPlayerInitLate.lua +0 -28
  566. package/callbacks/subscriptions/postPlayerInitReordered.d.ts +0 -6
  567. package/callbacks/subscriptions/postPlayerInitReordered.lua +0 -28
  568. package/callbacks/subscriptions/postPlayerRenderReordered.d.ts +0 -6
  569. package/callbacks/subscriptions/postPlayerRenderReordered.lua +0 -28
  570. package/callbacks/subscriptions/postPlayerUpdateReordered.d.ts +0 -6
  571. package/callbacks/subscriptions/postPlayerUpdateReordered.lua +0 -28
  572. package/callbacks/subscriptions/postPoopRender.d.ts +0 -5
  573. package/callbacks/subscriptions/postPoopRender.lua +0 -24
  574. package/callbacks/subscriptions/postPoopUpdate.d.ts +0 -5
  575. package/callbacks/subscriptions/postPoopUpdate.lua +0 -24
  576. package/callbacks/subscriptions/postPressurePlateRender.d.ts +0 -5
  577. package/callbacks/subscriptions/postPressurePlateRender.lua +0 -24
  578. package/callbacks/subscriptions/postPressurePlateUpdate.d.ts +0 -5
  579. package/callbacks/subscriptions/postPressurePlateUpdate.lua +0 -24
  580. package/callbacks/subscriptions/postProjectileInitLate.d.ts +0 -5
  581. package/callbacks/subscriptions/postProjectileInitLate.lua +0 -23
  582. package/callbacks/subscriptions/postPurchase.d.ts +0 -6
  583. package/callbacks/subscriptions/postPurchase.lua +0 -16
  584. package/callbacks/subscriptions/postRockRender.d.ts +0 -5
  585. package/callbacks/subscriptions/postRockRender.lua +0 -24
  586. package/callbacks/subscriptions/postRockUpdate.d.ts +0 -5
  587. package/callbacks/subscriptions/postRockUpdate.lua +0 -24
  588. package/callbacks/subscriptions/postRoomClearChanged.d.ts +0 -3
  589. package/callbacks/subscriptions/postRoomClearChanged.lua +0 -16
  590. package/callbacks/subscriptions/postSacrifice.d.ts +0 -6
  591. package/callbacks/subscriptions/postSacrifice.lua +0 -28
  592. package/callbacks/subscriptions/postSlotAnimationChanged.d.ts +0 -5
  593. package/callbacks/subscriptions/postSlotAnimationChanged.lua +0 -23
  594. package/callbacks/subscriptions/postSlotDestroyed.d.ts +0 -5
  595. package/callbacks/subscriptions/postSlotDestroyed.lua +0 -23
  596. package/callbacks/subscriptions/postSlotInit.d.ts +0 -5
  597. package/callbacks/subscriptions/postSlotInit.lua +0 -23
  598. package/callbacks/subscriptions/postSlotRender.d.ts +0 -5
  599. package/callbacks/subscriptions/postSlotRender.lua +0 -23
  600. package/callbacks/subscriptions/postSlotUpdate.d.ts +0 -5
  601. package/callbacks/subscriptions/postSlotUpdate.lua +0 -23
  602. package/callbacks/subscriptions/postSpikesRender.d.ts +0 -5
  603. package/callbacks/subscriptions/postSpikesRender.lua +0 -24
  604. package/callbacks/subscriptions/postSpikesUpdate.d.ts +0 -5
  605. package/callbacks/subscriptions/postSpikesUpdate.lua +0 -24
  606. package/callbacks/subscriptions/postTNTRender.d.ts +0 -5
  607. package/callbacks/subscriptions/postTNTRender.lua +0 -24
  608. package/callbacks/subscriptions/postTNTUpdate.d.ts +0 -5
  609. package/callbacks/subscriptions/postTNTUpdate.lua +0 -24
  610. package/callbacks/subscriptions/postTearInitLate.d.ts +0 -5
  611. package/callbacks/subscriptions/postTearInitLate.lua +0 -23
  612. package/callbacks/subscriptions/postTearInitVeryLate.d.ts +0 -5
  613. package/callbacks/subscriptions/postTearInitVeryLate.lua +0 -23
  614. package/callbacks/subscriptions/postTransformation.d.ts +0 -5
  615. package/callbacks/subscriptions/postTransformation.lua +0 -23
  616. package/callbacks/subscriptions/postTrinketBreak.d.ts +0 -5
  617. package/callbacks/subscriptions/postTrinketBreak.lua +0 -23
  618. package/callbacks/subscriptions/preBerserkDeath.d.ts +0 -6
  619. package/callbacks/subscriptions/preBerserkDeath.lua +0 -29
  620. package/callbacks/subscriptions/preCustomRevive.d.ts +0 -6
  621. package/callbacks/subscriptions/preCustomRevive.lua +0 -32
  622. package/callbacks/subscriptions/preItemPickup.d.ts +0 -11
  623. package/callbacks/subscriptions/preItemPickup.lua +0 -27
  624. package/callbacks/subscriptions/preNewLevel.d.ts +0 -4
  625. package/callbacks/subscriptions/preNewLevel.lua +0 -16
  626. package/classes/DefaultMap.d.ts +0 -75
  627. package/classes/DefaultMap.lua +0 -84
  628. package/classes/ModUpgraded.d.ts +0 -17
  629. package/classes/ModUpgraded.lua +0 -38
  630. package/constants.d.ts +0 -104
  631. package/constants.lua +0 -45
  632. package/constantsMax.d.ts +0 -130
  633. package/constantsMax.lua +0 -50
  634. package/enums/HealthType.d.ts +0 -16
  635. package/enums/HealthType.lua +0 -21
  636. package/enums/ModCallbackCustom.d.ts +0 -109
  637. package/enums/ModCallbackCustom.lua +0 -153
  638. package/enums/PocketItemType.d.ts +0 -8
  639. package/enums/PocketItemType.lua +0 -15
  640. package/enums/SerializationType.d.ts +0 -5
  641. package/enums/SerializationType.lua +0 -9
  642. package/enums/private/CopyableIsaacAPIClassType.d.ts +0 -7
  643. package/enums/private/CopyableIsaacAPIClassType.lua +0 -7
  644. package/enums/private/SaveDataKey.d.ts +0 -7
  645. package/enums/private/SaveDataKey.lua +0 -11
  646. package/enums/private/SerializationBrand.d.ts +0 -37
  647. package/enums/private/SerializationBrand.lua +0 -12
  648. package/features/characterHealthConversion.d.ts +0 -10
  649. package/features/characterHealthConversion.lua +0 -85
  650. package/features/characterStats.d.ts +0 -19
  651. package/features/characterStats.lua +0 -37
  652. package/features/debugDisplay/debugDisplay.d.ts +0 -2
  653. package/features/debugDisplay/debugDisplay.lua +0 -181
  654. package/features/debugDisplay/exports.d.ts +0 -199
  655. package/features/debugDisplay/exports.lua +0 -133
  656. package/features/debugDisplay/v.d.ts +0 -44
  657. package/features/debugDisplay/v.lua +0 -54
  658. package/features/deployJSONRoom.d.ts +0 -65
  659. package/features/deployJSONRoom.lua +0 -463
  660. package/features/disableInputs.d.ts +0 -62
  661. package/features/disableInputs.lua +0 -89
  662. package/features/disableSound.d.ts +0 -18
  663. package/features/disableSound.lua +0 -48
  664. package/features/extraConsoleCommands/commands.d.ts +0 -349
  665. package/features/extraConsoleCommands/commands.lua +0 -922
  666. package/features/extraConsoleCommands/commandsDisplay.d.ts +0 -162
  667. package/features/extraConsoleCommands/commandsDisplay.lua +0 -129
  668. package/features/extraConsoleCommands/commandsSubroutines.d.ts +0 -9
  669. package/features/extraConsoleCommands/commandsSubroutines.lua +0 -129
  670. package/features/extraConsoleCommands/init.d.ts +0 -25
  671. package/features/extraConsoleCommands/init.lua +0 -249
  672. package/features/extraConsoleCommands/v.d.ts +0 -13
  673. package/features/extraConsoleCommands/v.lua +0 -10
  674. package/features/fadeInRemover.d.ts +0 -14
  675. package/features/fadeInRemover.lua +0 -45
  676. package/features/fastReset.d.ts +0 -14
  677. package/features/fastReset.lua +0 -49
  678. package/features/forgottenSwitch.d.ts +0 -5
  679. package/features/forgottenSwitch.lua +0 -28
  680. package/features/getCollectibleItemPoolType.d.ts +0 -7
  681. package/features/getCollectibleItemPoolType.lua +0 -43
  682. package/features/isPonyActive.d.ts +0 -6
  683. package/features/isPonyActive.lua +0 -49
  684. package/features/playerInventory.d.ts +0 -23
  685. package/features/playerInventory.lua +0 -129
  686. package/features/preventCollectibleRotate.d.ts +0 -11
  687. package/features/preventCollectibleRotate.lua +0 -58
  688. package/features/runInNFrames.d.ts +0 -61
  689. package/features/runInNFrames.lua +0 -78
  690. package/features/saveDataManager/constants.d.ts +0 -3
  691. package/features/saveDataManager/constants.lua +0 -4
  692. package/features/saveDataManager/exports.d.ts +0 -128
  693. package/features/saveDataManager/exports.lua +0 -66
  694. package/features/saveDataManager/load.d.ts +0 -4
  695. package/features/saveDataManager/load.lua +0 -66
  696. package/features/saveDataManager/main.d.ts +0 -3
  697. package/features/saveDataManager/main.lua +0 -119
  698. package/features/saveDataManager/maps.d.ts +0 -10
  699. package/features/saveDataManager/maps.lua +0 -8
  700. package/features/saveDataManager/merge.d.ts +0 -24
  701. package/features/saveDataManager/merge.lua +0 -124
  702. package/features/saveDataManager/save.d.ts +0 -4
  703. package/features/saveDataManager/save.lua +0 -44
  704. package/features/saveDataManager/serializationBrand.d.ts +0 -1
  705. package/features/saveDataManager/serializationBrand.lua +0 -17
  706. package/features/sirenHelpers.d.ts +0 -18
  707. package/features/sirenHelpers.lua +0 -69
  708. package/features/taintedLazarusPlayers.d.ts +0 -13
  709. package/features/taintedLazarusPlayers.lua +0 -74
  710. package/featuresInitialized.d.ts +0 -1
  711. package/featuresInitialized.lua +0 -14
  712. package/functions/array.d.ts +0 -141
  713. package/functions/array.lua +0 -269
  714. package/functions/benchmark.d.ts +0 -10
  715. package/functions/benchmark.lua +0 -32
  716. package/functions/bitwise.d.ts +0 -4
  717. package/functions/bitwise.lua +0 -21
  718. package/functions/boss.d.ts +0 -56
  719. package/functions/boss.lua +0 -183
  720. package/functions/cacheFlag.d.ts +0 -8
  721. package/functions/cacheFlag.lua +0 -7
  722. package/functions/cards.d.ts +0 -95
  723. package/functions/cards.lua +0 -174
  724. package/functions/challenges.d.ts +0 -3
  725. package/functions/challenges.lua +0 -9
  726. package/functions/character.d.ts +0 -48
  727. package/functions/character.lua +0 -73
  728. package/functions/charge.d.ts +0 -54
  729. package/functions/charge.lua +0 -123
  730. package/functions/chargeBar.d.ts +0 -19
  731. package/functions/chargeBar.lua +0 -43
  732. package/functions/collectibleCacheFlag.d.ts +0 -23
  733. package/functions/collectibleCacheFlag.lua +0 -65
  734. package/functions/collectibleSet.d.ts +0 -9
  735. package/functions/collectibleSet.lua +0 -51
  736. package/functions/collectibleTag.d.ts +0 -16
  737. package/functions/collectibleTag.lua +0 -74
  738. package/functions/collectibles.d.ts +0 -211
  739. package/functions/collectibles.lua +0 -281
  740. package/functions/color.d.ts +0 -31
  741. package/functions/color.lua +0 -122
  742. package/functions/debug.d.ts +0 -27
  743. package/functions/debug.lua +0 -31
  744. package/functions/deepCopy.d.ts +0 -29
  745. package/functions/deepCopy.lua +0 -357
  746. package/functions/deepCopyTests.d.ts +0 -1
  747. package/functions/deepCopyTests.lua +0 -316
  748. package/functions/direction.d.ts +0 -4
  749. package/functions/direction.lua +0 -17
  750. package/functions/doors.d.ts +0 -117
  751. package/functions/doors.lua +0 -231
  752. package/functions/easing.d.ts +0 -30
  753. package/functions/easing.lua +0 -115
  754. package/functions/eden.d.ts +0 -3
  755. package/functions/eden.lua +0 -47
  756. package/functions/entity.d.ts +0 -131
  757. package/functions/entity.lua +0 -233
  758. package/functions/entitySpecific.d.ts +0 -250
  759. package/functions/entitySpecific.lua +0 -642
  760. package/functions/entityTypes.d.ts +0 -3
  761. package/functions/entityTypes.lua +0 -7
  762. package/functions/enums.d.ts +0 -80
  763. package/functions/enums.lua +0 -85
  764. package/functions/familiars.d.ts +0 -60
  765. package/functions/familiars.lua +0 -33
  766. package/functions/flag.d.ts +0 -99
  767. package/functions/flag.lua +0 -47
  768. package/functions/flying.d.ts +0 -19
  769. package/functions/flying.lua +0 -67
  770. package/functions/globals.d.ts +0 -14
  771. package/functions/globals.lua +0 -230
  772. package/functions/gridEntity.d.ts +0 -155
  773. package/functions/gridEntity.lua +0 -263
  774. package/functions/gridEntitySpecific.d.ts +0 -18
  775. package/functions/gridEntitySpecific.lua +0 -88
  776. package/functions/input.d.ts +0 -32
  777. package/functions/input.lua +0 -106
  778. package/functions/isaacAPIClass.d.ts +0 -23
  779. package/functions/isaacAPIClass.lua +0 -35
  780. package/functions/jsonHelpers.d.ts +0 -18
  781. package/functions/jsonHelpers.lua +0 -26
  782. package/functions/jsonRoom.d.ts +0 -12
  783. package/functions/jsonRoom.lua +0 -86
  784. package/functions/kColor.d.ts +0 -31
  785. package/functions/kColor.lua +0 -101
  786. package/functions/language.d.ts +0 -2
  787. package/functions/language.lua +0 -17
  788. package/functions/level.d.ts +0 -1
  789. package/functions/level.lua +0 -29
  790. package/functions/log.d.ts +0 -78
  791. package/functions/log.lua +0 -519
  792. package/functions/map.d.ts +0 -22
  793. package/functions/map.lua +0 -43
  794. package/functions/math.d.ts +0 -50
  795. package/functions/math.lua +0 -92
  796. package/functions/mergeTests.d.ts +0 -1
  797. package/functions/mergeTests.lua +0 -182
  798. package/functions/npc.d.ts +0 -40
  799. package/functions/npc.lua +0 -104
  800. package/functions/pickupVariants.d.ts +0 -23
  801. package/functions/pickupVariants.lua +0 -37
  802. package/functions/pickups.d.ts +0 -132
  803. package/functions/pickups.lua +0 -407
  804. package/functions/pills.d.ts +0 -69
  805. package/functions/pills.lua +0 -83
  806. package/functions/player.d.ts +0 -296
  807. package/functions/player.lua +0 -611
  808. package/functions/playerDataStructures.d.ts +0 -41
  809. package/functions/playerDataStructures.lua +0 -34
  810. package/functions/playerHealth.d.ts +0 -22
  811. package/functions/playerHealth.lua +0 -286
  812. package/functions/playerIndex.d.ts +0 -68
  813. package/functions/playerIndex.lua +0 -127
  814. package/functions/pocketItems.d.ts +0 -33
  815. package/functions/pocketItems.lua +0 -86
  816. package/functions/positionVelocity.d.ts +0 -64
  817. package/functions/positionVelocity.lua +0 -108
  818. package/functions/random.d.ts +0 -42
  819. package/functions/random.lua +0 -38
  820. package/functions/revive.d.ts +0 -31
  821. package/functions/revive.lua +0 -102
  822. package/functions/rng.d.ts +0 -53
  823. package/functions/rng.lua +0 -129
  824. package/functions/roomData.d.ts +0 -108
  825. package/functions/roomData.lua +0 -92
  826. package/functions/roomGrid.d.ts +0 -40
  827. package/functions/roomGrid.lua +0 -59
  828. package/functions/roomShape.d.ts +0 -43
  829. package/functions/roomShape.lua +0 -45
  830. package/functions/rooms.d.ts +0 -194
  831. package/functions/rooms.lua +0 -382
  832. package/functions/run.d.ts +0 -12
  833. package/functions/run.lua +0 -28
  834. package/functions/seeds.d.ts +0 -9
  835. package/functions/seeds.lua +0 -15
  836. package/functions/serialization.d.ts +0 -11
  837. package/functions/serialization.lua +0 -65
  838. package/functions/set.d.ts +0 -39
  839. package/functions/set.lua +0 -61
  840. package/functions/sound.d.ts +0 -1
  841. package/functions/sound.lua +0 -13
  842. package/functions/spawnCollectible.d.ts +0 -31
  843. package/functions/spawnCollectible.lua +0 -70
  844. package/functions/sprite.d.ts +0 -36
  845. package/functions/sprite.lua +0 -64
  846. package/functions/stage.d.ts +0 -35
  847. package/functions/stage.lua +0 -70
  848. package/functions/string.d.ts +0 -13
  849. package/functions/string.lua +0 -36
  850. package/functions/table.d.ts +0 -36
  851. package/functions/table.lua +0 -79
  852. package/functions/tears.d.ts +0 -22
  853. package/functions/tears.lua +0 -14
  854. package/functions/transformations.d.ts +0 -30
  855. package/functions/transformations.lua +0 -96
  856. package/functions/trinketCacheFlag.d.ts +0 -10
  857. package/functions/trinketCacheFlag.lua +0 -50
  858. package/functions/trinketGive.d.ts +0 -38
  859. package/functions/trinketGive.lua +0 -90
  860. package/functions/trinkets.d.ts +0 -73
  861. package/functions/trinkets.lua +0 -115
  862. package/functions/tstlClass.d.ts +0 -20
  863. package/functions/tstlClass.lua +0 -56
  864. package/functions/ui.d.ts +0 -34
  865. package/functions/ui.lua +0 -95
  866. package/functions/utils.d.ts +0 -112
  867. package/functions/utils.lua +0 -94
  868. package/functions/vector.d.ts +0 -32
  869. package/functions/vector.lua +0 -118
  870. package/index.d.ts +0 -127
  871. package/index.lua +0 -900
  872. package/initCustomCallbacks.d.ts +0 -2
  873. package/initCustomCallbacks.lua +0 -178
  874. package/initFeatures.d.ts +0 -3
  875. package/initFeatures.lua +0 -51
  876. package/lualib_bundle.lua +0 -2488
  877. package/maps/cardMap.d.ts +0 -3
  878. package/maps/cardMap.lua +0 -211
  879. package/maps/characterMap.d.ts +0 -3
  880. package/maps/characterMap.lua +0 -89
  881. package/maps/collectibleDescriptionMap.d.ts +0 -3
  882. package/maps/collectibleDescriptionMap.lua +0 -728
  883. package/maps/collectibleNameMap.d.ts +0 -3
  884. package/maps/collectibleNameMap.lua +0 -728
  885. package/maps/defaultPlayerStatMap.d.ts +0 -3
  886. package/maps/defaultPlayerStatMap.lua +0 -24
  887. package/maps/gridEntityTypeToBrokenStateMap.d.ts +0 -2
  888. package/maps/gridEntityTypeToBrokenStateMap.lua +0 -26
  889. package/maps/gridEntityXMLMap.d.ts +0 -9
  890. package/maps/gridEntityXMLMap.lua +0 -51
  891. package/maps/pillEffectMap.d.ts +0 -3
  892. package/maps/pillEffectMap.lua +0 -89
  893. package/maps/roomShapeToTopLeftWallGridIndexMap.d.ts +0 -7
  894. package/maps/roomShapeToTopLeftWallGridIndexMap.lua +0 -15
  895. package/maps/roomTypeMap.d.ts +0 -3
  896. package/maps/roomTypeMap.lua +0 -44
  897. package/maps/trinketDescriptionMap.d.ts +0 -3
  898. package/maps/trinketDescriptionMap.lua +0 -196
  899. package/maps/trinketNameMap.d.ts +0 -3
  900. package/maps/trinketNameMap.lua +0 -196
  901. package/objects/LRoomShapeToRectangles.d.ts +0 -13
  902. package/objects/LRoomShapeToRectangles.lua +0 -33
  903. package/objects/callbackRegisterFunctions.d.ts +0 -5
  904. package/objects/callbackRegisterFunctions.lua +0 -231
  905. package/objects/cardDescriptions.d.ts +0 -5
  906. package/objects/cardDescriptions.lua +0 -105
  907. package/objects/cardNames.d.ts +0 -5
  908. package/objects/cardNames.lua +0 -105
  909. package/objects/cardTypes.d.ts +0 -5
  910. package/objects/cardTypes.lua +0 -106
  911. package/objects/challengeNames.d.ts +0 -5
  912. package/objects/challengeNames.lua +0 -53
  913. package/objects/characterNames.d.ts +0 -5
  914. package/objects/characterNames.lua +0 -49
  915. package/objects/coinSubTypeToValue.d.ts +0 -5
  916. package/objects/coinSubTypeToValue.lua +0 -15
  917. package/objects/colors.d.ts +0 -17
  918. package/objects/colors.lua +0 -12
  919. package/objects/directionNames.d.ts +0 -4
  920. package/objects/directionNames.lua +0 -11
  921. package/objects/directionToDegrees.d.ts +0 -4
  922. package/objects/directionToDegrees.lua +0 -11
  923. package/objects/directionToVector.d.ts +0 -4
  924. package/objects/directionToVector.lua +0 -13
  925. package/objects/doorSlotFlagToDoorSlot.d.ts +0 -5
  926. package/objects/doorSlotFlagToDoorSlot.lua +0 -16
  927. package/objects/doorSlotToDirection.d.ts +0 -4
  928. package/objects/doorSlotToDirection.lua +0 -16
  929. package/objects/isaacAPIClassTypeToBrand.d.ts +0 -5
  930. package/objects/isaacAPIClassTypeToBrand.lua +0 -7
  931. package/objects/isaacAPIClassTypeToCopyFunction.d.ts +0 -5
  932. package/objects/isaacAPIClassTypeToCopyFunction.lua +0 -13
  933. package/objects/pillEffectClasses.d.ts +0 -5
  934. package/objects/pillEffectClasses.lua +0 -59
  935. package/objects/pillEffectNames.d.ts +0 -5
  936. package/objects/pillEffectNames.lua +0 -57
  937. package/objects/pillEffectTypes.d.ts +0 -5
  938. package/objects/pillEffectTypes.lua +0 -58
  939. package/objects/roomShapeBounds.d.ts +0 -8
  940. package/objects/roomShapeBounds.lua +0 -24
  941. package/objects/roomShapeLayoutSizes.d.ts +0 -10
  942. package/objects/roomShapeLayoutSizes.lua +0 -25
  943. package/objects/roomShapeToBottomRightPosition.d.ts +0 -8
  944. package/objects/roomShapeToBottomRightPosition.lua +0 -20
  945. package/objects/roomShapeToDoorSlots.d.ts +0 -4
  946. package/objects/roomShapeToDoorSlots.lua +0 -46
  947. package/objects/roomShapeToDoorSlotsToGridIndexDelta.d.ts +0 -8
  948. package/objects/roomShapeToDoorSlotsToGridIndexDelta.lua +0 -87
  949. package/objects/roomShapeToGridWidth.d.ts +0 -4
  950. package/objects/roomShapeToGridWidth.lua +0 -20
  951. package/objects/roomShapeToTopLeftPosition.d.ts +0 -8
  952. package/objects/roomShapeToTopLeftPosition.lua +0 -22
  953. package/objects/roomShapeVolumes.d.ts +0 -13
  954. package/objects/roomShapeVolumes.lua +0 -27
  955. package/objects/roomTypeNames.d.ts +0 -5
  956. package/objects/roomTypeNames.lua +0 -37
  957. package/objects/serializedIsaacAPIClassTypeToIdentityFunction.d.ts +0 -4
  958. package/objects/serializedIsaacAPIClassTypeToIdentityFunction.lua +0 -13
  959. package/objects/stageTypeToLetter.d.ts +0 -4
  960. package/objects/stageTypeToLetter.lua +0 -12
  961. package/objects/transformationNames.d.ts +0 -5
  962. package/objects/transformationNames.lua +0 -21
  963. package/patchErrorFunctions.d.ts +0 -1
  964. package/patchErrorFunctions.lua +0 -50
  965. package/sets/LRoomShapesSet.d.ts +0 -2
  966. package/sets/LRoomShapesSet.lua +0 -8
  967. package/sets/bossSets.d.ts +0 -4
  968. package/sets/bossSets.lua +0 -531
  969. package/sets/charactersThatStartWithAnActiveItemSet.d.ts +0 -2
  970. package/sets/charactersThatStartWithAnActiveItemSet.lua +0 -20
  971. package/sets/charactersWithBlackHeartFromEternalHeartSet.d.ts +0 -2
  972. package/sets/charactersWithBlackHeartFromEternalHeartSet.lua +0 -8
  973. package/sets/charactersWithFreeDevilDealsSet.d.ts +0 -2
  974. package/sets/charactersWithFreeDevilDealsSet.lua +0 -8
  975. package/sets/charactersWithNoRedHeartsSet.d.ts +0 -6
  976. package/sets/charactersWithNoRedHeartsSet.lua +0 -17
  977. package/sets/charactersWithNoSoulHeartsSet.d.ts +0 -6
  978. package/sets/charactersWithNoSoulHeartsSet.lua +0 -14
  979. package/sets/chestPickupVariantsSet.d.ts +0 -2
  980. package/sets/chestPickupVariantsSet.lua +0 -21
  981. package/sets/familiarsThatShootPlayerTearsSet.d.ts +0 -2
  982. package/sets/familiarsThatShootPlayerTearsSet.lua +0 -17
  983. package/sets/lostStyleCharactersSet.d.ts +0 -6
  984. package/sets/lostStyleCharactersSet.lua +0 -14
  985. package/sets/mineShaftRoomSubTypesSet.d.ts +0 -2
  986. package/sets/mineShaftRoomSubTypesSet.lua +0 -14
  987. package/sets/redHeartSubTypesSet.d.ts +0 -2
  988. package/sets/redHeartSubTypesSet.lua +0 -8
  989. package/sets/sinEntityTypesSet.d.ts +0 -2
  990. package/sets/sinEntityTypesSet.lua +0 -16
  991. package/sets/singleUseActiveCollectibleTypesSet.d.ts +0 -2
  992. package/sets/singleUseActiveCollectibleTypesSet.lua +0 -17
  993. package/sets/storyBossesSet.d.ts +0 -2
  994. package/sets/storyBossesSet.lua +0 -22
  995. package/types/AddCallbackParameterCustom.d.ts +0 -153
  996. package/types/AddCallbackParameterCustom.lua +0 -4
  997. package/types/AnyEntity.d.ts +0 -2
  998. package/types/AnyEntity.lua +0 -2
  999. package/types/CollectibleIndex.d.ts +0 -16
  1000. package/types/CollectibleIndex.lua +0 -2
  1001. package/types/JSONDoor.d.ts +0 -10
  1002. package/types/JSONDoor.lua +0 -2
  1003. package/types/JSONEntity.d.ts +0 -12
  1004. package/types/JSONEntity.lua +0 -2
  1005. package/types/JSONRoom.d.ts +0 -30
  1006. package/types/JSONRoom.lua +0 -2
  1007. package/types/JSONRooms.d.ts +0 -11
  1008. package/types/JSONRooms.lua +0 -2
  1009. package/types/JSONSpawn.d.ts +0 -10
  1010. package/types/JSONSpawn.lua +0 -2
  1011. package/types/PickingUpItem.d.ts +0 -24
  1012. package/types/PickingUpItem.lua +0 -24
  1013. package/types/PlayerHealth.d.ts +0 -14
  1014. package/types/PlayerHealth.lua +0 -2
  1015. package/types/PlayerIndex.d.ts +0 -16
  1016. package/types/PlayerIndex.lua +0 -2
  1017. package/types/PocketItemDescription.d.ts +0 -7
  1018. package/types/PocketItemDescription.lua +0 -2
  1019. package/types/Primitive.d.ts +0 -1
  1020. package/types/Primitive.lua +0 -2
  1021. package/types/TrinketSituation.d.ts +0 -7
  1022. package/types/TrinketSituation.lua +0 -2
  1023. package/types/private/IsaacAPIClass.d.ts +0 -4
  1024. package/types/private/IsaacAPIClass.lua +0 -2
  1025. package/types/private/SaveData.d.ts +0 -22
  1026. package/types/private/SaveData.lua +0 -2
  1027. package/types/private/SerializedIsaacAPIClass.d.ts +0 -4
  1028. package/types/private/SerializedIsaacAPIClass.lua +0 -2
  1029. package/types/private/TSTLClass.d.ts +0 -4
  1030. package/types/private/TSTLClass.lua +0 -2
  1031. package/types/private/TSTLClassMetatable.d.ts +0 -10
  1032. package/types/private/TSTLClassMetatable.lua +0 -2
  1033. package/upgradeMod.d.ts +0 -22
  1034. package/upgradeMod.lua +0 -33
@@ -0,0 +1,975 @@
1
+ import {
2
+ ActiveSlot,
3
+ CacheFlag,
4
+ Challenge,
5
+ CollectibleType,
6
+ NullItemID,
7
+ PlayerForm,
8
+ PlayerType,
9
+ TrinketType,
10
+ } from "isaac-typescript-definitions";
11
+ import { game, itemConfig } from "../cachedClasses";
12
+ import { HealthType } from "../enums/HealthType";
13
+ import { getLastElement, sumArray } from "./array";
14
+ import { countSetBits, getKBitOfN, getNumBitsOfN } from "./bitwise";
15
+ import {
16
+ getCharacterMaxHeartContainers,
17
+ getCharacterName,
18
+ isVanillaCharacter,
19
+ } from "./character";
20
+ import { getCollectibleMaxCharges } from "./collectibles";
21
+ import { getCollectibleSet } from "./collectibleSet";
22
+ import { getEnumValues } from "./enums";
23
+ import { getPlayerIndexVanilla, getPlayers } from "./playerIndex";
24
+ import { addTearsStat } from "./tears";
25
+ import { ensureAllCases, repeat } from "./utils";
26
+
27
+ const STAT_CACHE_FLAGS_SET: ReadonlySet<CacheFlag> = new Set([
28
+ CacheFlag.DAMAGE, // 1 << 0
29
+ CacheFlag.FIRE_DELAY, // 1 << 1
30
+ CacheFlag.SHOT_SPEED, // 1 << 2
31
+ CacheFlag.RANGE, // 1 << 3
32
+ CacheFlag.SPEED, // 1 << 4
33
+ CacheFlag.LUCK, // 1 << 10
34
+ ]);
35
+
36
+ export function addCollectibleCostume(
37
+ player: EntityPlayer,
38
+ collectibleType: CollectibleType,
39
+ ): void {
40
+ const itemConfigItem = itemConfig.GetCollectible(collectibleType);
41
+ if (itemConfigItem === undefined) {
42
+ return;
43
+ }
44
+
45
+ player.AddCostume(itemConfigItem, false);
46
+ }
47
+
48
+ /**
49
+ * Helper function to add a stat to a player based on the `CacheFlag` provided. Call this function
50
+ * from the EvaluateCache callback.
51
+ *
52
+ * Note that for `CacheFlag.FIRE_DELAY`, the "amount" argument will be interpreted as the tear stat
53
+ * to add (and not the amount to mutate `EntityPlayer.MaxFireDelay` by).
54
+ *
55
+ * This function supports the following cache flags:
56
+ * - CacheFlag.DAMAGE (1 << 0)
57
+ * - CacheFlag.FIRE_DELAY (1 << 1)
58
+ * - CacheFlag.SHOT_SPEED (1 << 2)
59
+ * - CacheFlag.RANGE (1 << 3)
60
+ * - CacheFlag.SPEED (1 << 4)
61
+ * - CacheFlag.LUCK (1 << 10)
62
+ */
63
+ export function addStat(
64
+ player: EntityPlayer,
65
+ cacheFlag: CacheFlag,
66
+ amount: number,
67
+ ): void {
68
+ if (!STAT_CACHE_FLAGS_SET.has(cacheFlag)) {
69
+ error(
70
+ `You cannot add a stat to a player with the cache flag of: ${cacheFlag}`,
71
+ );
72
+ }
73
+
74
+ switch (cacheFlag) {
75
+ // 1 << 0
76
+ case CacheFlag.DAMAGE: {
77
+ player.Damage += amount;
78
+ break;
79
+ }
80
+
81
+ // 1 << 1
82
+ case CacheFlag.FIRE_DELAY: {
83
+ addTearsStat(player, amount);
84
+ break;
85
+ }
86
+
87
+ // 1 << 2
88
+ case CacheFlag.SHOT_SPEED: {
89
+ player.ShotSpeed += amount;
90
+ break;
91
+ }
92
+
93
+ // 1 << 3
94
+ case CacheFlag.RANGE: {
95
+ player.TearHeight += amount;
96
+ break;
97
+ }
98
+
99
+ // 1 << 4
100
+ case CacheFlag.SPEED: {
101
+ player.MoveSpeed += amount;
102
+ break;
103
+ }
104
+
105
+ // 1 << 10
106
+ case CacheFlag.LUCK: {
107
+ player.Luck += amount;
108
+ break;
109
+ }
110
+
111
+ default: {
112
+ break;
113
+ }
114
+ }
115
+ }
116
+
117
+ export function addTrinketCostume(
118
+ player: EntityPlayer,
119
+ trinketType: TrinketType,
120
+ ): void {
121
+ const itemConfigTrinket = itemConfig.GetTrinket(trinketType);
122
+ if (itemConfigTrinket === undefined) {
123
+ return;
124
+ }
125
+
126
+ player.AddCostume(itemConfigTrinket, false);
127
+ }
128
+
129
+ export function anyPlayerHasCollectible(
130
+ collectibleType: CollectibleType,
131
+ ): boolean {
132
+ const players = getPlayers();
133
+ return players.some((player) => player.HasCollectible(collectibleType));
134
+ }
135
+
136
+ export function anyPlayerHasTrinket(trinketType: TrinketType): boolean {
137
+ const players = getPlayers();
138
+ return players.some((player) => player.HasTrinket(trinketType));
139
+ }
140
+
141
+ /**
142
+ * Helper function to determine if the given character is present.
143
+ *
144
+ * This function is variadic, meaning that you can supply as many characters as you want to check
145
+ * for. Returns true if any of the characters supplied are present.
146
+ */
147
+ export function anyPlayerIs(...matchingCharacters: PlayerType[]): boolean {
148
+ const matchingCharacterSet = new Set(matchingCharacters);
149
+ const characters = getCharacters();
150
+ return characters.some((character) => matchingCharacterSet.has(character));
151
+ }
152
+
153
+ /**
154
+ * Helper function to determine if a player will destroy a rock/pot/skull if they walk over it.
155
+ *
156
+ * The following situations allow for this to be true:
157
+ * - the player has Leo (collectible 302)
158
+ * - the player has Thunder Thighs (collectible 314)
159
+ * - the player is under the effects of Mega Mush (collectible 625)
160
+ * - the player has Stompy (transformation 13)
161
+ */
162
+ export function canPlayerCrushRocks(player: EntityPlayer): boolean {
163
+ const effects = player.GetEffects();
164
+
165
+ return (
166
+ player.HasCollectible(CollectibleType.LEO) ||
167
+ player.HasCollectible(CollectibleType.THUNDER_THIGHS) ||
168
+ effects.HasCollectibleEffect(CollectibleType.MEGA_MUSH) ||
169
+ player.HasPlayerForm(PlayerForm.STOMPY)
170
+ );
171
+ }
172
+
173
+ /**
174
+ * Helper function to find the active slot that the player has the corresponding collectible type
175
+ * in. Returns undefined if the player does not have the collectible in any active slot.
176
+ */
177
+ export function getActiveItemSlot(
178
+ player: EntityPlayer,
179
+ collectibleType: CollectibleType,
180
+ ): ActiveSlot | undefined {
181
+ const activeSlots = getEnumValues(ActiveSlot);
182
+ return activeSlots.find((activeSlot) => {
183
+ const activeItem = player.GetActiveItem(activeSlot);
184
+ return activeItem === collectibleType;
185
+ });
186
+ }
187
+
188
+ /**
189
+ * Helper function to get how long Azazel's Brimstone laser should be. You can pass either an
190
+ * `EntityPlayer` object or a tear height stat.
191
+ *
192
+ * The formula for calculating it is: 32 - 2.5 * player.TearHeight
193
+ */
194
+ export function getAzazelBrimstoneDistance(
195
+ playerOrTearHeight: EntityPlayer | float,
196
+ ): float {
197
+ let tearHeight = tonumber(playerOrTearHeight);
198
+ if (tearHeight === undefined) {
199
+ const player = playerOrTearHeight as EntityPlayer;
200
+ tearHeight = player.TearHeight;
201
+ }
202
+
203
+ return 32 - 2.5 * tearHeight;
204
+ }
205
+
206
+ /** Helper function to get an array containing the characters of all of the current players. */
207
+ export function getCharacters(): PlayerType[] {
208
+ const players = getPlayers();
209
+ return players.map((player) => player.GetPlayerType());
210
+ }
211
+
212
+ export function getClosestPlayer(position: Vector): EntityPlayer {
213
+ let closestPlayer: EntityPlayer | null = null;
214
+ let closestDistance = math.huge;
215
+ for (const player of getPlayers()) {
216
+ const distance = position.Distance(player.Position);
217
+
218
+ if (distance < closestDistance) {
219
+ closestPlayer = player;
220
+ closestDistance = distance;
221
+ }
222
+ }
223
+
224
+ if (closestPlayer === null) {
225
+ error("Failed to find the closest player.");
226
+ }
227
+
228
+ return closestPlayer;
229
+ }
230
+
231
+ /**
232
+ * Helper function to get an array of temporary effects for a player. This is helpful so that you
233
+ * don't have to manually create an array from an `EffectsList` object.
234
+ */
235
+ export function getEffectsList(player: EntityPlayer): TemporaryEffect[] {
236
+ const effects = player.GetEffects();
237
+ const effectsList = effects.GetEffectsList();
238
+
239
+ const effectArray: TemporaryEffect[] = [];
240
+ for (let i = 0; i < effectsList.Size; i++) {
241
+ const effect = effectsList.Get(i);
242
+ if (effect !== undefined) {
243
+ effectArray.push(effect);
244
+ }
245
+ }
246
+
247
+ return effectArray;
248
+ }
249
+
250
+ /**
251
+ * Helper function to return the player with the highest ID, according to the `Isaac.GetPlayer`
252
+ * method.
253
+ */
254
+ export function getFinalPlayer(): EntityPlayer {
255
+ const players = getPlayers();
256
+
257
+ const lastPlayer = getLastElement(players);
258
+ if (lastPlayer === undefined) {
259
+ error("Failed to get the final player since there were 0 players.");
260
+ }
261
+
262
+ return lastPlayer;
263
+ }
264
+
265
+ /**
266
+ * Helper function to get the first player with the lowest frame count. Useful to find a freshly
267
+ * spawned player after using items like Esau Jr. Don't use this function if two or more players
268
+ * will be spawned on the same frame.
269
+ */
270
+ export function getNewestPlayer(): EntityPlayer {
271
+ let newestPlayer: EntityPlayer | null = null;
272
+ let lowestFrame = math.huge;
273
+ for (const player of getPlayers()) {
274
+ if (player.FrameCount < lowestFrame) {
275
+ newestPlayer = player;
276
+ lowestFrame = player.FrameCount;
277
+ }
278
+ }
279
+
280
+ if (newestPlayer === null) {
281
+ error("Failed to find the newest player.");
282
+ }
283
+
284
+ return newestPlayer;
285
+ }
286
+
287
+ /**
288
+ * Returns the number of slots that the player has remaining for new heart containers, accounting
289
+ * for broken hearts. For example, if the player is Judas and has 1 red heart containers and 2 full
290
+ * soul hearts and 3 broken hearts, then this function would return 6 (i.e. 12 - 1 - 2 - 3).
291
+ */
292
+ export function getPlayerAvailableHeartSlots(player: EntityPlayer): int {
293
+ const maxHeartContainers = getPlayerMaxHeartContainers(player);
294
+ const effectiveMaxHearts = player.GetEffectiveMaxHearts();
295
+ const normalAndBoneHeartContainers = effectiveMaxHearts / 2;
296
+ const soulHearts = player.GetSoulHearts();
297
+ const soulHeartContainers = math.ceil(soulHearts / 2);
298
+ const totalHeartContainers =
299
+ normalAndBoneHeartContainers + soulHeartContainers;
300
+ const brokenHearts = player.GetBrokenHearts();
301
+ const totalOccupiedHeartSlots = totalHeartContainers + brokenHearts;
302
+
303
+ return maxHeartContainers - totalOccupiedHeartSlots;
304
+ }
305
+
306
+ /**
307
+ * Returns the number of black hearts that the player has, excluding any soul hearts. For example,
308
+ * if the player has one full black heart, one full soul heart, and one half black heart, this
309
+ * function returns 3.
310
+ *
311
+ * This is different from the `EntityPlayer.GetBlackHearts` method, since that returns a bitmask.
312
+ */
313
+ export function getPlayerBlackHearts(player: EntityPlayer): int {
314
+ const blackHeartsBitmask = player.GetBlackHearts();
315
+ const blackHeartBits = countSetBits(blackHeartsBitmask);
316
+
317
+ return blackHeartBits * 2;
318
+ }
319
+
320
+ /**
321
+ * Iterates over all players and checks if any are close enough to the specified position.
322
+ *
323
+ * @returns The first player found when iterating upwards from index 0.
324
+ */
325
+ export function getPlayerCloserThan(
326
+ position: Vector,
327
+ distance: float,
328
+ ): EntityPlayer | undefined {
329
+ const players = getPlayers();
330
+ return players.find(
331
+ (player) => player.Position.Distance(position) <= distance,
332
+ );
333
+ }
334
+
335
+ /**
336
+ * Helper function to return the total amount of collectibles that a player has that match the
337
+ * collectible type(s) provided.
338
+ *
339
+ * This function is variadic, meaning that you can specify N collectible types.
340
+ */
341
+ export function getPlayerCollectibleCount(
342
+ player: EntityPlayer,
343
+ ...collectibleTypes: CollectibleType[]
344
+ ): int {
345
+ let numCollectibles = 0;
346
+ for (const collectibleType of collectibleTypes) {
347
+ numCollectibles += player.GetCollectibleNum(collectibleType, true);
348
+ }
349
+
350
+ return numCollectibles;
351
+ }
352
+
353
+ /**
354
+ * Iterates over every item in the game and returns a map containing the number of each item that
355
+ * the player has.
356
+ */
357
+ export function getPlayerCollectibleMap(
358
+ player: EntityPlayer,
359
+ ): Map<CollectibleType, int> {
360
+ const collectibleSet = getCollectibleSet();
361
+ const collectibleMap = new Map<CollectibleType, int>();
362
+ for (const collectibleType of collectibleSet.values()) {
363
+ const collectibleNum = player.GetCollectibleNum(collectibleType, true);
364
+ if (collectibleNum > 0) {
365
+ collectibleMap.set(collectibleType, collectibleNum);
366
+ }
367
+ }
368
+
369
+ return collectibleMap;
370
+ }
371
+
372
+ /**
373
+ * Returns the number of red hearts that the player has, excluding any rotten hearts. For example,
374
+ * if the player has one full black heart, one full soul heart, and one half black heart, this
375
+ * function returns 3.
376
+ *
377
+ * This is different from the `EntityPlayer.GetHearts` method, since that returns a value that
378
+ * includes rotten hearts.
379
+ */
380
+ export function getPlayerHearts(player: EntityPlayer): int {
381
+ const rottenHearts = player.GetRottenHearts();
382
+ const hearts = player.GetHearts();
383
+
384
+ return hearts - rottenHearts * 2;
385
+ }
386
+
387
+ /**
388
+ * Helper function that returns the type of the rightmost heart. This does not including golden
389
+ * hearts or broken hearts, since they cannot be damaged directly.
390
+ */
391
+ export function getPlayerLastHeart(player: EntityPlayer): HealthType {
392
+ const hearts = player.GetHearts();
393
+ const effectiveMaxHearts = player.GetEffectiveMaxHearts();
394
+ const soulHearts = player.GetSoulHearts();
395
+ const blackHearts = player.GetBlackHearts();
396
+ const eternalHearts = player.GetEternalHearts();
397
+ const boneHearts = player.GetBoneHearts();
398
+ const rottenHearts = player.GetRottenHearts();
399
+
400
+ const soulHeartSlots = soulHearts / 2;
401
+ const lastHeartIndex = boneHearts + soulHeartSlots - 1;
402
+ const isLastHeartBone = player.IsBoneHeart(lastHeartIndex);
403
+
404
+ if (isLastHeartBone) {
405
+ const isLastContainerEmpty = hearts <= effectiveMaxHearts - 2;
406
+ if (isLastContainerEmpty) {
407
+ return HealthType.BONE;
408
+ }
409
+
410
+ if (rottenHearts > 0) {
411
+ return HealthType.ROTTEN;
412
+ }
413
+
414
+ if (eternalHearts > 0) {
415
+ return HealthType.ETERNAL;
416
+ }
417
+
418
+ return HealthType.RED;
419
+ }
420
+
421
+ if (soulHearts > 0) {
422
+ const numBits = getNumBitsOfN(blackHearts);
423
+ const finalBit = getKBitOfN(numBits - 1, blackHearts);
424
+ const isBlack = finalBit === 1;
425
+
426
+ if (isBlack) {
427
+ return HealthType.BLACK;
428
+ }
429
+
430
+ // If it is not a black heart, it must be a soul heart.
431
+ return HealthType.SOUL;
432
+ }
433
+
434
+ if (eternalHearts > 0) {
435
+ return HealthType.ETERNAL;
436
+ }
437
+
438
+ if (rottenHearts > 0) {
439
+ return HealthType.ROTTEN;
440
+ }
441
+
442
+ return HealthType.RED;
443
+ }
444
+
445
+ /**
446
+ * Returns the maximum heart containers that the provided player can have. Normally, this is 12, but
447
+ * it can change depending on the character (e.g. Keeper) and other things (e.g. Mother's Kiss).
448
+ * This function does not account for Broken Hearts; use the `getPlayerAvailableHeartSlots` helper
449
+ * function for that.
450
+ */
451
+ export function getPlayerMaxHeartContainers(player: EntityPlayer): int {
452
+ const character = player.GetPlayerType();
453
+ const characterMaxHeartContainers = getCharacterMaxHeartContainers(character);
454
+
455
+ // 1
456
+ // Magdalene can increase her maximum heart containers with Birthright.
457
+ if (
458
+ character === PlayerType.MAGDALENE &&
459
+ player.HasCollectible(CollectibleType.BIRTHRIGHT)
460
+ ) {
461
+ const extraMaxHeartContainersFromBirthright = 6;
462
+ return characterMaxHeartContainers + extraMaxHeartContainersFromBirthright;
463
+ }
464
+
465
+ // 14, 33
466
+ // Keeper and Tainted Keeper can increase their coin containers with Mother's Kiss and Greed's
467
+ // Gullet.
468
+ if (isKeeper(player)) {
469
+ const numMothersKisses = player.GetTrinketMultiplier(
470
+ TrinketType.MOTHERS_KISS,
471
+ );
472
+ const hasGreedsGullet = player.HasCollectible(
473
+ CollectibleType.GREEDS_GULLET,
474
+ );
475
+ const coins = player.GetNumCoins();
476
+ const greedsGulletCoinContainers = hasGreedsGullet
477
+ ? Math.floor(coins / 25)
478
+ : 0;
479
+
480
+ return (
481
+ characterMaxHeartContainers +
482
+ numMothersKisses +
483
+ greedsGulletCoinContainers
484
+ );
485
+ }
486
+
487
+ return characterMaxHeartContainers;
488
+ }
489
+
490
+ /**
491
+ * Helper function to get the proper name of the player. Use this instead of the
492
+ * `EntityPlayer.GetName` method because it accounts for Blue Baby, Lazarus II, and Tainted
493
+ * characters.
494
+ */
495
+ export function getPlayerName(player: EntityPlayer): string {
496
+ const character = player.GetPlayerType();
497
+
498
+ // Account for modded characters.
499
+ return isModdedPlayer(player)
500
+ ? player.GetName()
501
+ : getCharacterName(character);
502
+ }
503
+
504
+ /**
505
+ * Returns the combined value of all of the player's red hearts, soul/black hearts, and bone hearts,
506
+ * minus the value of the player's rotten hearts.
507
+ *
508
+ * This is equivalent to the number of hits that the player can currently take, but does not take
509
+ * into account double damage from champion enemies and/or being on later floors. (For example, on
510
+ * Womb 1, players who have 1 soul heart remaining would die in 1 hit to anything, even though this
511
+ * function would report that they have 2 hits remaining.)
512
+ */
513
+ export function getPlayerNumHitsRemaining(player: EntityPlayer): int {
514
+ const hearts = player.GetHearts();
515
+ const soulHearts = player.GetSoulHearts();
516
+ const boneHearts = player.GetBoneHearts();
517
+ const eternalHearts = player.GetEternalHearts();
518
+ const rottenHearts = player.GetRottenHearts();
519
+
520
+ return hearts + soulHearts + boneHearts + eternalHearts - rottenHearts;
521
+ }
522
+
523
+ /**
524
+ * Returns the number of soul hearts that the player has, excluding any black hearts. For example,
525
+ * if the player has one full black heart, one full soul heart, and one half black heart, this
526
+ * function returns 2.
527
+ *
528
+ * This is different from the `EntityPlayer.GetSoulHearts` method, since that returns the combined
529
+ * number of soul hearts and black hearts.
530
+ */
531
+ export function getPlayerSoulHearts(player: EntityPlayer): int {
532
+ const soulHearts = player.GetSoulHearts();
533
+ const blackHearts = getPlayerBlackHearts(player);
534
+
535
+ return soulHearts - blackHearts;
536
+ }
537
+
538
+ /**
539
+ * Helper function to get all of the players that are a certain character.
540
+ *
541
+ * This function is variadic, meaning that you can supply as many characters as you want to check
542
+ * for. Returns true if any of the characters supplied are present.
543
+ */
544
+ export function getPlayersOfType(...characters: PlayerType[]): EntityPlayer[] {
545
+ const charactersSet = new Set(characters);
546
+ const players = getPlayers();
547
+ return players.filter((player) => {
548
+ const character = player.GetPlayerType();
549
+ return charactersSet.has(character);
550
+ });
551
+ }
552
+
553
+ /**
554
+ * Helper function to get only the players that have a certain collectible.
555
+ *
556
+ * This function is variadic, meaning that you can supply as many collectible types as you want to
557
+ * check for. It only returns the players that have all of the collectibles.
558
+ */
559
+ export function getPlayersWithCollectible(
560
+ ...collectibleTypes: CollectibleType[]
561
+ ): EntityPlayer[] {
562
+ const players = getPlayers();
563
+ return players.filter((player) =>
564
+ collectibleTypes.every((collectibleType) =>
565
+ player.HasCollectible(collectibleType),
566
+ ),
567
+ );
568
+ }
569
+
570
+ /**
571
+ * Helper function to get only the players that have a certain trinket.
572
+ *
573
+ * This function is variadic, meaning that you can supply as many trinket types as you want to check
574
+ * for. It only returns the players that have all of the trinkets.
575
+ */
576
+ export function getPlayersWithTrinket(
577
+ ...trinketTypes: TrinketType[]
578
+ ): EntityPlayer[] {
579
+ const players = getPlayers();
580
+ return players.filter((player) =>
581
+ trinketTypes.every((trinketType) => player.HasTrinket(trinketType)),
582
+ );
583
+ }
584
+
585
+ /**
586
+ * Helper function to determine how many heart containers that Tainted Magdalene has that will not
587
+ * be automatically depleted over time. By default, this is 2, but this function will return 4 so
588
+ * that it is consistent with the `player.GetHearts` and `player.GetMaxHearts` methods.
589
+ *
590
+ * If Tainted Magdalene has Birthright, she will gained an additional non-temporary heart container.
591
+ *
592
+ * This function does not validate whether or not the provided player is Tainted Magdalene; that
593
+ * should be accomplished before invoking this function.
594
+ */
595
+ export function getTaintedMagdaleneNonTemporaryMaxHearts(
596
+ player: EntityPlayer,
597
+ ): int {
598
+ const maxHearts = player.GetMaxHearts();
599
+ const hasBirthright = player.HasCollectible(CollectibleType.BIRTHRIGHT);
600
+ const maxNonTemporaryMaxHearts = hasBirthright ? 6 : 4;
601
+
602
+ return Math.min(maxHearts, maxNonTemporaryMaxHearts);
603
+ }
604
+
605
+ /**
606
+ * Returns the total number of collectibles amongst all players. For example, if player 1 has 1 Sad
607
+ * Onion and player 2 has 2 Sad Onions, then this function would return 3.
608
+ */
609
+ export function getTotalPlayerCollectibles(
610
+ collectibleType: CollectibleType,
611
+ ): int {
612
+ const players = getPlayers();
613
+ const numCollectiblesArray = players.map((player) =>
614
+ player.GetCollectibleNum(collectibleType),
615
+ );
616
+ return sumArray(numCollectiblesArray);
617
+ }
618
+
619
+ /** After touching a white fire, a player will turn into The Lost until they clear a room. */
620
+ export function hasLostCurse(player: EntityPlayer): boolean {
621
+ const effects = player.GetEffects();
622
+ return effects.HasNullEffect(NullItemID.LOST_CURSE);
623
+ }
624
+
625
+ /**
626
+ * Returns whether or not the player can hold an additional active item, beyond what they are
627
+ * currently carrying. This takes the Schoolbag into account.
628
+ *
629
+ * If the player is the Tainted Soul, this always returns false, since that character cannot pick up
630
+ * items. (Only Tainted Forgotten can pick up items.)
631
+ */
632
+ export function hasOpenActiveItemSlot(player: EntityPlayer): boolean {
633
+ if (isCharacter(player, PlayerType.THE_SOUL_B)) {
634
+ return false;
635
+ }
636
+
637
+ const activeItemPrimary = player.GetActiveItem(ActiveSlot.PRIMARY);
638
+ const activeItemSecondary = player.GetActiveItem(ActiveSlot.SECONDARY);
639
+ const hasSchoolbag = player.HasCollectible(CollectibleType.SCHOOLBAG);
640
+
641
+ if (hasSchoolbag) {
642
+ return (
643
+ activeItemPrimary === CollectibleType.NULL ||
644
+ activeItemSecondary === CollectibleType.NULL
645
+ );
646
+ }
647
+
648
+ return activeItemPrimary === CollectibleType.NULL;
649
+ }
650
+
651
+ export function isActiveSlotEmpty(
652
+ player: EntityPlayer,
653
+ activeSlot: ActiveSlot,
654
+ ): boolean {
655
+ const activeCollectibleType = player.GetActiveItem(activeSlot);
656
+ return activeCollectibleType === CollectibleType.NULL;
657
+ }
658
+
659
+ /**
660
+ * Helper function for detecting when a player is Bethany or Tainted Bethany. This is useful if you
661
+ * need to adjust UI elements to account for Bethany's soul charges or Tainted Bethany's blood
662
+ * charges.
663
+ */
664
+ export function isBethany(player: EntityPlayer): boolean {
665
+ const character = player.GetPlayerType();
666
+
667
+ return character === PlayerType.BETHANY || character === PlayerType.BETHANY_B;
668
+ }
669
+
670
+ /**
671
+ * Helper function to check if a player is a specific character (i.e. `PlayerType`).
672
+ *
673
+ * This function is variadic, meaning that you can supply as many characters as you want to check
674
+ * for. Returns true if the player is any of the supplied characters.
675
+ */
676
+ export function isCharacter(
677
+ player: EntityPlayer,
678
+ ...characters: PlayerType[]
679
+ ): boolean {
680
+ const characterSet = new Set(characters);
681
+ const character = player.GetPlayerType();
682
+ return characterSet.has(character);
683
+ }
684
+
685
+ /**
686
+ * Helper function for detecting when a player is Eden or Tainted Eden. Useful for situations where
687
+ * you want to know if the starting stats were randomized, for example.
688
+ */
689
+ export function isEden(player: EntityPlayer): boolean {
690
+ const character = player.GetPlayerType();
691
+
692
+ return character === PlayerType.EDEN || character === PlayerType.EDEN_B;
693
+ }
694
+
695
+ export function isFirstPlayer(player: EntityPlayer): boolean {
696
+ return getPlayerIndexVanilla(player) === 0;
697
+ }
698
+
699
+ /**
700
+ * Helper function for detecting when a player is Jacob or Esau. This will only match the
701
+ * non-tainted versions of these characters.
702
+ */
703
+ export function isJacobOrEsau(player: EntityPlayer): boolean {
704
+ const character = player.GetPlayerType();
705
+
706
+ return character === PlayerType.JACOB || character === PlayerType.ESAU;
707
+ }
708
+
709
+ /**
710
+ * Helper function for detecting when a player is Keeper or Tainted Keeper. Useful for situations
711
+ * where you want to know if the health is coin hearts, for example.
712
+ */
713
+ export function isKeeper(player: EntityPlayer): boolean {
714
+ const character = player.GetPlayerType();
715
+
716
+ return character === PlayerType.KEEPER || character === PlayerType.KEEPER_B;
717
+ }
718
+
719
+ /** Helper function for detecting when a player is The Lost or Tainted Lost. */
720
+ export function isLost(player: EntityPlayer): boolean {
721
+ const character = player.GetPlayerType();
722
+
723
+ return (
724
+ character === PlayerType.THE_LOST || character === PlayerType.THE_LOST_B
725
+ );
726
+ }
727
+
728
+ export function isModdedPlayer(player: EntityPlayer): boolean {
729
+ return !isVanillaPlayer(player);
730
+ }
731
+
732
+ /** Helper function for detecting if a player is one of the Tainted characters. */
733
+ export function isTainted(player: EntityPlayer): boolean {
734
+ const character = player.GetPlayerType();
735
+
736
+ return isVanillaPlayer(player)
737
+ ? character >= PlayerType.ISAAC_B
738
+ : isTaintedModded(player);
739
+ }
740
+
741
+ function isTaintedModded(player: EntityPlayer) {
742
+ // This algorithm only works for modded characters because the `Isaac.GetPlayerTypeByName` method
743
+ // is bugged.
744
+ // https://github.com/Meowlala/RepentanceAPIIssueTracker/issues/117
745
+ const character = player.GetPlayerType();
746
+ const name = player.GetName();
747
+ const taintedCharacter = Isaac.GetPlayerTypeByName(name, true);
748
+
749
+ return character === taintedCharacter;
750
+ }
751
+
752
+ /** Helper function for detecting when a player is Tainted Lazarus or Dead Tainted Lazarus. */
753
+ export function isTaintedLazarus(player: EntityPlayer): boolean {
754
+ const character = player.GetPlayerType();
755
+
756
+ return (
757
+ character === PlayerType.LAZARUS_B || character === PlayerType.LAZARUS_2_B
758
+ );
759
+ }
760
+
761
+ export function isVanillaPlayer(player: EntityPlayer): boolean {
762
+ const character = player.GetPlayerType();
763
+ return isVanillaCharacter(character);
764
+ }
765
+
766
+ /**
767
+ * Helper function to add one or more collectibles to a player.
768
+ *
769
+ * This function is variadic, meaning that you can supply as many collectible types as you want to
770
+ * add.
771
+ */
772
+ export function playerAddCollectible(
773
+ player: EntityPlayer,
774
+ ...collectibleTypes: CollectibleType[]
775
+ ): void {
776
+ for (const collectibleType of collectibleTypes) {
777
+ player.AddCollectible(collectibleType);
778
+ }
779
+ }
780
+
781
+ /**
782
+ * Helper function to check to see if a player has one or more collectibles.
783
+ *
784
+ * This function is variadic, meaning that you can supply as many collectible types as you want to
785
+ * check for. Returns true if the player has any of the supplied collectible types.
786
+ */
787
+ export function playerHasCollectible(
788
+ player: EntityPlayer,
789
+ ...collectibleTypes: CollectibleType[]
790
+ ): boolean {
791
+ return collectibleTypes.some((collectibleType) =>
792
+ player.HasCollectible(collectibleType),
793
+ );
794
+ }
795
+
796
+ /**
797
+ * Helper function to remove a collectible costume from a player. Use this helper function to avoid
798
+ * having to request the collectible from the item config.
799
+ */
800
+ export function removeCollectibleCostume(
801
+ player: EntityPlayer,
802
+ collectibleType: CollectibleType,
803
+ ): void {
804
+ const itemConfigItem = itemConfig.GetCollectible(collectibleType);
805
+ if (itemConfigItem === undefined) {
806
+ return;
807
+ }
808
+
809
+ player.RemoveCostume(itemConfigItem);
810
+ }
811
+
812
+ /**
813
+ * Helper function to remove the Dead Eye multiplier from a player.
814
+ *
815
+ * Note that each time the `EntityPlayer.ClearDeadEyeCharge` method is called, it only has a chance
816
+ * of working, so this function calls it 100 times to be safe.
817
+ */
818
+ export function removeDeadEyeMultiplier(player: EntityPlayer): void {
819
+ repeat(100, () => {
820
+ player.ClearDeadEyeCharge();
821
+ });
822
+ }
823
+
824
+ /**
825
+ * Helper function to remove a trinket costume from a player. Use this helper function to avoid
826
+ * having to request the trinket from the item config.
827
+ */
828
+ export function removeTrinketCostume(
829
+ player: EntityPlayer,
830
+ trinketType: TrinketType,
831
+ ): void {
832
+ const itemConfigTrinket = itemConfig.GetTrinket(trinketType);
833
+ if (itemConfigTrinket === undefined) {
834
+ return;
835
+ }
836
+
837
+ player.RemoveCostume(itemConfigTrinket);
838
+ }
839
+
840
+ /**
841
+ * Helper function to set an active collectible to a particular slot. This has different behavior
842
+ * than calling the `player.AddCollectible` method with the `activeSlot` argument, because this
843
+ * function will not shift existing items into the Schoolbag and it handles
844
+ * `ActiveSlot.SLOT_POCKET2`.
845
+ *
846
+ * Note that if an item is set to `ActiveSlot.SLOT_POCKET2`, it will disappear after being used and
847
+ * will be automatically removed upon entering a new room.
848
+ *
849
+ * @param player The player to give the item to.
850
+ * @param collectibleType The collectible type of the item to give.
851
+ * @param activeSlot The slot to set.
852
+ * @param charge Optional. The argument of charges to set. If not specified, the item will be set
853
+ * with maximum charges.
854
+ * @param keepInPools Optional. Whether or not to remove the item from pools. Default is false.
855
+ */
856
+ export function setActiveItem(
857
+ player: EntityPlayer,
858
+ collectibleType: CollectibleType,
859
+ activeSlot: ActiveSlot,
860
+ charge?: int,
861
+ keepInPools = false,
862
+ ): void {
863
+ const itemPool = game.GetItemPool();
864
+ const primaryCollectibleType = player.GetActiveItem(ActiveSlot.PRIMARY);
865
+ const primaryCharge = player.GetActiveCharge(ActiveSlot.PRIMARY);
866
+ const secondaryCollectibleType = player.GetActiveItem(ActiveSlot.SECONDARY);
867
+
868
+ if (charge === undefined) {
869
+ charge = getCollectibleMaxCharges(collectibleType);
870
+ }
871
+
872
+ if (!keepInPools) {
873
+ itemPool.RemoveCollectible(collectibleType);
874
+ }
875
+
876
+ switch (activeSlot) {
877
+ case ActiveSlot.PRIMARY: {
878
+ // If there is a Schoolbag item, removing the primary item will shift the Schoolbag item to
879
+ // the primary slot.
880
+ if (primaryCollectibleType !== CollectibleType.NULL) {
881
+ player.RemoveCollectible(primaryCollectibleType);
882
+ }
883
+
884
+ // If there was a Schoolbag item, adding a new primary item will shift it back into the
885
+ // secondary slot.
886
+ player.AddCollectible(collectibleType, charge, false);
887
+
888
+ break;
889
+ }
890
+
891
+ case ActiveSlot.SECONDARY: {
892
+ if (primaryCollectibleType !== CollectibleType.NULL) {
893
+ player.RemoveCollectible(primaryCollectibleType);
894
+ }
895
+
896
+ if (secondaryCollectibleType !== CollectibleType.NULL) {
897
+ player.RemoveCollectible(secondaryCollectibleType);
898
+ }
899
+
900
+ // Add the new item, which will go to the primary slot.
901
+ player.AddCollectible(secondaryCollectibleType, charge, false);
902
+
903
+ // Add back the original primary item, if any.
904
+ if (primaryCollectibleType !== CollectibleType.NULL) {
905
+ player.AddCollectible(primaryCollectibleType, primaryCharge, false);
906
+ }
907
+
908
+ break;
909
+ }
910
+
911
+ case ActiveSlot.POCKET: {
912
+ player.SetPocketActiveItem(collectibleType, activeSlot, keepInPools);
913
+ player.SetActiveCharge(charge, activeSlot);
914
+
915
+ break;
916
+ }
917
+
918
+ case ActiveSlot.POCKET_SINGLE_USE: {
919
+ player.SetPocketActiveItem(collectibleType, activeSlot, keepInPools);
920
+ break;
921
+ }
922
+
923
+ default: {
924
+ ensureAllCases(activeSlot);
925
+ }
926
+ }
927
+ }
928
+
929
+ /**
930
+ * Helper function to blindfold the player by using a hack with the challenge variable.
931
+ *
932
+ * The method used in this function was discovered by im_tem.
933
+ *
934
+ * @param player The player to apply or remove the blindfold state from.
935
+ * @param enabled Whether or not to apply or remove the blindfold.
936
+ * @param modifyCostume Optional. Whether to add or remove the blindfold costume. Default is true.
937
+ */
938
+ export function setBlindfold(
939
+ player: EntityPlayer,
940
+ enabled: boolean,
941
+ modifyCostume = true,
942
+ ): void {
943
+ const character = player.GetPlayerType();
944
+ const challenge = Isaac.GetChallenge();
945
+
946
+ if (enabled) {
947
+ game.Challenge = Challenge.SOLAR_SYSTEM; // This challenge has a blindfold
948
+ player.ChangePlayerType(character);
949
+ game.Challenge = challenge;
950
+
951
+ // The costume is applied automatically.
952
+ if (!modifyCostume) {
953
+ player.TryRemoveNullCostume(NullItemID.BLINDFOLD);
954
+ }
955
+ } else {
956
+ game.Challenge = Challenge.NULL;
957
+ player.ChangePlayerType(character);
958
+ game.Challenge = challenge;
959
+
960
+ if (modifyCostume) {
961
+ player.TryRemoveNullCostume(NullItemID.BLINDFOLD);
962
+ }
963
+ }
964
+ }
965
+
966
+ /**
967
+ * Helper function to use an active item without showing an animation, keeping the item, or adding
968
+ * any costumes.
969
+ */
970
+ export function useActiveItemTemp(
971
+ player: EntityPlayer,
972
+ collectibleType: CollectibleType,
973
+ ): void {
974
+ player.UseActiveItem(collectibleType, false, false, true, false, -1);
975
+ }