isaacscript-common 4.0.2 → 4.0.5

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 (370) hide show
  1. package/callbacks/postPlayerCollectible.lua +4 -2
  2. package/functions/collectibleSet.d.ts +37 -2
  3. package/functions/collectibleSet.lua +62 -15
  4. package/functions/player.lua +3 -4
  5. package/package.json +2 -2
  6. package/cachedClasses.ts +0 -39
  7. package/callbacks/customRevive.ts +0 -215
  8. package/callbacks/itemPickup.ts +0 -101
  9. package/callbacks/postAmbush.ts +0 -73
  10. package/callbacks/postBombExploded.ts +0 -26
  11. package/callbacks/postBombInitLate.ts +0 -36
  12. package/callbacks/postBoneSwing.ts +0 -64
  13. package/callbacks/postCollectibleInitFirst.ts +0 -40
  14. package/callbacks/postCursedTeleport.ts +0 -185
  15. package/callbacks/postCustomDoorEnter.ts +0 -292
  16. package/callbacks/postDiceRoomActivated.ts +0 -60
  17. package/callbacks/postDoorRender.ts +0 -26
  18. package/callbacks/postDoorUpdate.ts +0 -26
  19. package/callbacks/postEffectInitLate.ts +0 -36
  20. package/callbacks/postEffectStateChanged.ts +0 -43
  21. package/callbacks/postEsauJr.ts +0 -109
  22. package/callbacks/postFamiliarInitLate.ts +0 -36
  23. package/callbacks/postFamiliarStateChanged.ts +0 -43
  24. package/callbacks/postFlip.ts +0 -90
  25. package/callbacks/postGreedModeWave.ts +0 -41
  26. package/callbacks/postGridEntity.ts +0 -164
  27. package/callbacks/postGridEntityCollision.ts +0 -69
  28. package/callbacks/postGridEntityRender.ts +0 -26
  29. package/callbacks/postHolyMantleRemoved.ts +0 -55
  30. package/callbacks/postItemDischarged.ts +0 -154
  31. package/callbacks/postKnifeInitLate.ts +0 -36
  32. package/callbacks/postLaserInitLate.ts +0 -36
  33. package/callbacks/postNPCInitLate.ts +0 -36
  34. package/callbacks/postNPCStateChanged.ts +0 -42
  35. package/callbacks/postNewRoomEarly.ts +0 -96
  36. package/callbacks/postPickupCollect.ts +0 -48
  37. package/callbacks/postPickupInitFirst.ts +0 -70
  38. package/callbacks/postPickupInitLate.ts +0 -36
  39. package/callbacks/postPickupStateChanged.ts +0 -43
  40. package/callbacks/postPitRender.ts +0 -26
  41. package/callbacks/postPitUpdate.ts +0 -26
  42. package/callbacks/postPlayerChangeHealth.ts +0 -62
  43. package/callbacks/postPlayerChangeType.ts +0 -56
  44. package/callbacks/postPlayerCollectible.ts +0 -113
  45. package/callbacks/postPlayerFatalDamage.ts +0 -141
  46. package/callbacks/postPlayerInitLate.ts +0 -37
  47. package/callbacks/postPlayerReordered.ts +0 -142
  48. package/callbacks/postPoopRender.ts +0 -26
  49. package/callbacks/postPoopUpdate.ts +0 -26
  50. package/callbacks/postPressurePlateRender.ts +0 -26
  51. package/callbacks/postPressurePlateUpdate.ts +0 -26
  52. package/callbacks/postProjectileInitLate.ts +0 -36
  53. package/callbacks/postPurchase.ts +0 -64
  54. package/callbacks/postRockRender.ts +0 -26
  55. package/callbacks/postRockUpdate.ts +0 -26
  56. package/callbacks/postRoomClearChanged.ts +0 -57
  57. package/callbacks/postSacrifice.ts +0 -64
  58. package/callbacks/postSlotDestroyed.ts +0 -92
  59. package/callbacks/postSlotInitUpdate.ts +0 -68
  60. package/callbacks/postSlotRender.ts +0 -69
  61. package/callbacks/postSpikesRender.ts +0 -26
  62. package/callbacks/postSpikesUpdate.ts +0 -26
  63. package/callbacks/postTNTRender.ts +0 -26
  64. package/callbacks/postTNTUpdate.ts +0 -26
  65. package/callbacks/postTearInitLate.ts +0 -36
  66. package/callbacks/postTearInitVeryLate.ts +0 -41
  67. package/callbacks/postTransformation.ts +0 -59
  68. package/callbacks/postTrinketBreak.ts +0 -112
  69. package/callbacks/preBerserkDeath.ts +0 -49
  70. package/callbacks/preNewLevel.ts +0 -55
  71. package/callbacks/reorderedCallbacks.ts +0 -168
  72. package/callbacks/subscriptions/postAmbushFinished.ts +0 -32
  73. package/callbacks/subscriptions/postAmbushStarted.ts +0 -32
  74. package/callbacks/subscriptions/postBombInitLate.ts +0 -32
  75. package/callbacks/subscriptions/postBoneExploded.ts +0 -32
  76. package/callbacks/subscriptions/postBoneSwing.ts +0 -24
  77. package/callbacks/subscriptions/postCollectibleInitFirst.ts +0 -37
  78. package/callbacks/subscriptions/postCursedTeleport.ts +0 -24
  79. package/callbacks/subscriptions/postCustomDoorEnter.ts +0 -45
  80. package/callbacks/subscriptions/postCustomRevive.ts +0 -36
  81. package/callbacks/subscriptions/postDiceRoomActivated.ts +0 -38
  82. package/callbacks/subscriptions/postDoorRender.ts +0 -35
  83. package/callbacks/subscriptions/postDoorUpdate.ts +0 -35
  84. package/callbacks/subscriptions/postEffectInitLate.ts +0 -32
  85. package/callbacks/subscriptions/postEffectStateChanged.ts +0 -40
  86. package/callbacks/subscriptions/postEsauJr.ts +0 -24
  87. package/callbacks/subscriptions/postFamiliarInitLate.ts +0 -32
  88. package/callbacks/subscriptions/postFamiliarStateChanged.ts +0 -40
  89. package/callbacks/subscriptions/postFirstEsauJr.ts +0 -24
  90. package/callbacks/subscriptions/postFirstFlip.ts +0 -24
  91. package/callbacks/subscriptions/postFlip.ts +0 -22
  92. package/callbacks/subscriptions/postGameStartedReordered.ts +0 -24
  93. package/callbacks/subscriptions/postGreedModeWave.ts +0 -24
  94. package/callbacks/subscriptions/postGridEntityBroken.ts +0 -51
  95. package/callbacks/subscriptions/postGridEntityCollision.ts +0 -54
  96. package/callbacks/subscriptions/postGridEntityInit.ts +0 -51
  97. package/callbacks/subscriptions/postGridEntityRemove.ts +0 -52
  98. package/callbacks/subscriptions/postGridEntityRender.ts +0 -51
  99. package/callbacks/subscriptions/postGridEntityStateChanged.ts +0 -55
  100. package/callbacks/subscriptions/postGridEntityUpdate.ts +0 -51
  101. package/callbacks/subscriptions/postHolyMantleRemoved.ts +0 -48
  102. package/callbacks/subscriptions/postItemDischarged.ts +0 -43
  103. package/callbacks/subscriptions/postItemPickup.ts +0 -64
  104. package/callbacks/subscriptions/postKnifeInitLate.ts +0 -32
  105. package/callbacks/subscriptions/postLaserInitLate.ts +0 -32
  106. package/callbacks/subscriptions/postNPCInitLate.ts +0 -32
  107. package/callbacks/subscriptions/postNPCStateChanged.ts +0 -42
  108. package/callbacks/subscriptions/postNewLevelReordered.ts +0 -22
  109. package/callbacks/subscriptions/postNewRoomEarly.ts +0 -22
  110. package/callbacks/subscriptions/postNewRoomReordered.ts +0 -22
  111. package/callbacks/subscriptions/postPEffectUpdateReordered.ts +0 -40
  112. package/callbacks/subscriptions/postPickupCollect.ts +0 -35
  113. package/callbacks/subscriptions/postPickupInitFirst.ts +0 -32
  114. package/callbacks/subscriptions/postPickupInitLate.ts +0 -32
  115. package/callbacks/subscriptions/postPickupStateChanged.ts +0 -40
  116. package/callbacks/subscriptions/postPitRender.ts +0 -35
  117. package/callbacks/subscriptions/postPitUpdate.ts +0 -35
  118. package/callbacks/subscriptions/postPlayerChangeHealth.ts +0 -49
  119. package/callbacks/subscriptions/postPlayerChangeType.ts +0 -40
  120. package/callbacks/subscriptions/postPlayerCollectibleAdded.ts +0 -38
  121. package/callbacks/subscriptions/postPlayerCollectibleRemoved.ts +0 -38
  122. package/callbacks/subscriptions/postPlayerFatalDamage.ts +0 -68
  123. package/callbacks/subscriptions/postPlayerInitLate.ts +0 -40
  124. package/callbacks/subscriptions/postPlayerInitReordered.ts +0 -40
  125. package/callbacks/subscriptions/postPlayerRenderReordered.ts +0 -40
  126. package/callbacks/subscriptions/postPlayerUpdateReordered.ts +0 -40
  127. package/callbacks/subscriptions/postPoopRender.ts +0 -35
  128. package/callbacks/subscriptions/postPoopUpdate.ts +0 -35
  129. package/callbacks/subscriptions/postPressurePlateRender.ts +0 -37
  130. package/callbacks/subscriptions/postPressurePlateUpdate.ts +0 -37
  131. package/callbacks/subscriptions/postProjectileInitLate.ts +0 -35
  132. package/callbacks/subscriptions/postPurchase.ts +0 -31
  133. package/callbacks/subscriptions/postRockRender.ts +0 -35
  134. package/callbacks/subscriptions/postRockUpdate.ts +0 -35
  135. package/callbacks/subscriptions/postRoomClearChanged.ts +0 -30
  136. package/callbacks/subscriptions/postSacrifice.ts +0 -43
  137. package/callbacks/subscriptions/postSlotAnimationChanged.ts +0 -40
  138. package/callbacks/subscriptions/postSlotDestroyed.ts +0 -55
  139. package/callbacks/subscriptions/postSlotInit.ts +0 -32
  140. package/callbacks/subscriptions/postSlotRender.ts +0 -32
  141. package/callbacks/subscriptions/postSlotUpdate.ts +0 -32
  142. package/callbacks/subscriptions/postSpikesRender.ts +0 -35
  143. package/callbacks/subscriptions/postSpikesUpdate.ts +0 -35
  144. package/callbacks/subscriptions/postTNTRender.ts +0 -35
  145. package/callbacks/subscriptions/postTNTUpdate.ts +0 -35
  146. package/callbacks/subscriptions/postTearInitLate.ts +0 -32
  147. package/callbacks/subscriptions/postTearInitVeryLate.ts +0 -32
  148. package/callbacks/subscriptions/postTransformation.ts +0 -40
  149. package/callbacks/subscriptions/postTrinketBreak.ts +0 -38
  150. package/callbacks/subscriptions/preBerserkDeath.ts +0 -42
  151. package/callbacks/subscriptions/preCustomRevive.ts +0 -46
  152. package/callbacks/subscriptions/preItemPickup.ts +0 -64
  153. package/callbacks/subscriptions/preNewLevel.ts +0 -24
  154. package/classes/DefaultMap.ts +0 -174
  155. package/classes/ModUpgraded.ts +0 -84
  156. package/constants.ts +0 -162
  157. package/constantsFirstLast.ts +0 -217
  158. package/enums/AmbushType.ts +0 -4
  159. package/enums/HealthType.ts +0 -16
  160. package/enums/ModCallbackCustom.ts +0 -1278
  161. package/enums/PocketItemType.ts +0 -8
  162. package/enums/SerializationType.ts +0 -5
  163. package/enums/SlotDestructionType.ts +0 -4
  164. package/enums/private/CopyableIsaacAPIClassType.ts +0 -7
  165. package/enums/private/SaveDataKey.ts +0 -14
  166. package/enums/private/SerializationBrand.ts +0 -42
  167. package/features/characterHealthConversion.ts +0 -111
  168. package/features/characterStats.ts +0 -61
  169. package/features/debugDisplay/debugDisplay.ts +0 -221
  170. package/features/debugDisplay/exports.ts +0 -368
  171. package/features/debugDisplay/v.ts +0 -65
  172. package/features/deployJSONRoom.ts +0 -743
  173. package/features/disableInputs.ts +0 -193
  174. package/features/disableSound.ts +0 -77
  175. package/features/extraConsoleCommands/commandsDisplay.ts +0 -290
  176. package/features/extraConsoleCommands/commandsSubroutines.ts +0 -139
  177. package/features/extraConsoleCommands/init.ts +0 -334
  178. package/features/extraConsoleCommands/listCommands.ts +0 -1299
  179. package/features/extraConsoleCommands/v.ts +0 -14
  180. package/features/fadeInRemover.ts +0 -60
  181. package/features/fastReset.ts +0 -75
  182. package/features/forgottenSwitch.ts +0 -50
  183. package/features/getCollectibleItemPoolType.ts +0 -66
  184. package/features/persistentEntities.ts +0 -183
  185. package/features/playerInventory.ts +0 -135
  186. package/features/ponyDetection.ts +0 -74
  187. package/features/preventCollectibleRotation.ts +0 -115
  188. package/features/runInNFrames.ts +0 -148
  189. package/features/saveDataManager/constants.ts +0 -4
  190. package/features/saveDataManager/exports.ts +0 -229
  191. package/features/saveDataManager/load.ts +0 -99
  192. package/features/saveDataManager/main.ts +0 -195
  193. package/features/saveDataManager/maps.ts +0 -13
  194. package/features/saveDataManager/merge.ts +0 -194
  195. package/features/saveDataManager/save.ts +0 -74
  196. package/features/saveDataManager/serializationBrand.ts +0 -16
  197. package/features/sirenHelpers.ts +0 -129
  198. package/features/taintedLazarusPlayers.ts +0 -113
  199. package/featuresInitialized.ts +0 -20
  200. package/functions/ambush.ts +0 -47
  201. package/functions/array.ts +0 -410
  202. package/functions/benchmark.ts +0 -36
  203. package/functions/bitwise.ts +0 -24
  204. package/functions/bombs.ts +0 -12
  205. package/functions/boss.ts +0 -227
  206. package/functions/cacheFlag.ts +0 -12
  207. package/functions/cards.ts +0 -271
  208. package/functions/challenges.ts +0 -13
  209. package/functions/character.ts +0 -126
  210. package/functions/charge.ts +0 -237
  211. package/functions/chargeBar.ts +0 -67
  212. package/functions/collectibleCacheFlag.ts +0 -90
  213. package/functions/collectibleSet.ts +0 -56
  214. package/functions/collectibleTag.ts +0 -89
  215. package/functions/collectibles.ts +0 -659
  216. package/functions/color.ts +0 -128
  217. package/functions/debug.ts +0 -68
  218. package/functions/deepCopy.ts +0 -535
  219. package/functions/deepCopyTests.ts +0 -386
  220. package/functions/direction.ts +0 -49
  221. package/functions/doors.ts +0 -347
  222. package/functions/easing.ts +0 -182
  223. package/functions/eden.ts +0 -47
  224. package/functions/effects.ts +0 -20
  225. package/functions/entity.ts +0 -439
  226. package/functions/entitySpecific.ts +0 -889
  227. package/functions/entityTypes.ts +0 -6
  228. package/functions/enums.ts +0 -146
  229. package/functions/familiars.ts +0 -106
  230. package/functions/flag.ts +0 -165
  231. package/functions/flying.ts +0 -117
  232. package/functions/globals.ts +0 -242
  233. package/functions/gridEntity.ts +0 -511
  234. package/functions/gridEntitySpecific.ts +0 -112
  235. package/functions/input.ts +0 -139
  236. package/functions/isaacAPIClass.ts +0 -67
  237. package/functions/jsonHelpers.ts +0 -45
  238. package/functions/jsonRoom.ts +0 -100
  239. package/functions/kColor.ts +0 -129
  240. package/functions/language.ts +0 -13
  241. package/functions/level.ts +0 -31
  242. package/functions/log.ts +0 -720
  243. package/functions/map.ts +0 -56
  244. package/functions/math.ts +0 -149
  245. package/functions/mergeTests.ts +0 -288
  246. package/functions/npc.ts +0 -148
  247. package/functions/pickupVariants.ts +0 -60
  248. package/functions/pickups.ts +0 -499
  249. package/functions/pills.ts +0 -205
  250. package/functions/player.ts +0 -1056
  251. package/functions/playerDataStructures.ts +0 -150
  252. package/functions/playerHealth.ts +0 -382
  253. package/functions/playerIndex.ts +0 -195
  254. package/functions/pocketItems.ts +0 -149
  255. package/functions/positionVelocity.ts +0 -188
  256. package/functions/random.ts +0 -77
  257. package/functions/revive.ts +0 -201
  258. package/functions/rng.ts +0 -172
  259. package/functions/roomData.ts +0 -199
  260. package/functions/roomGrid.ts +0 -109
  261. package/functions/roomShape.ts +0 -80
  262. package/functions/rooms.ts +0 -648
  263. package/functions/run.ts +0 -36
  264. package/functions/saveFile.ts +0 -128
  265. package/functions/seeds.ts +0 -19
  266. package/functions/serialization.ts +0 -91
  267. package/functions/set.ts +0 -95
  268. package/functions/sound.ts +0 -9
  269. package/functions/spawnCollectible.ts +0 -104
  270. package/functions/sprite.ts +0 -107
  271. package/functions/stage.ts +0 -125
  272. package/functions/string.ts +0 -47
  273. package/functions/table.ts +0 -189
  274. package/functions/tears.ts +0 -32
  275. package/functions/transformations.ts +0 -131
  276. package/functions/trinketCacheFlag.ts +0 -60
  277. package/functions/trinketGive.ts +0 -157
  278. package/functions/trinkets.ts +0 -215
  279. package/functions/tstlClass.ts +0 -157
  280. package/functions/types.ts +0 -36
  281. package/functions/ui.ts +0 -138
  282. package/functions/utils.ts +0 -189
  283. package/functions/vector.ts +0 -126
  284. package/index.ts +0 -172
  285. package/initCustomCallbacks.ts +0 -132
  286. package/initFeatures.ts +0 -39
  287. package/interfaces/AddCallbackParameterCustom.ts +0 -188
  288. package/interfaces/ChargeBarSprites.ts +0 -12
  289. package/interfaces/JSONDoor.ts +0 -13
  290. package/interfaces/JSONEntity.ts +0 -16
  291. package/interfaces/JSONRoom.ts +0 -36
  292. package/interfaces/JSONRooms.ts +0 -12
  293. package/interfaces/JSONSpawn.ts +0 -14
  294. package/interfaces/PlayerHealth.ts +0 -16
  295. package/interfaces/PocketItemDescription.ts +0 -9
  296. package/interfaces/SaveData.ts +0 -29
  297. package/interfaces/TrinketSituation.ts +0 -9
  298. package/interfaces/private/TSTLClassMetatable.ts +0 -8
  299. package/maps/PHDPillConversions.ts +0 -21
  300. package/maps/cardMap.ts +0 -209
  301. package/maps/characterMap.ts +0 -87
  302. package/maps/collectibleDescriptionMap.ts +0 -732
  303. package/maps/collectibleNameMap.ts +0 -731
  304. package/maps/defaultPlayerStatMap.ts +0 -17
  305. package/maps/falsePHDPillConversions.ts +0 -35
  306. package/maps/gridEntityTypeToBrokenStateMap.ts +0 -50
  307. package/maps/gridEntityXMLMap.ts +0 -176
  308. package/maps/pillEffectMap.ts +0 -88
  309. package/maps/roomShapeToTopLeftWallGridIndexMap.ts +0 -18
  310. package/maps/roomTypeMap.ts +0 -40
  311. package/maps/trinketDescriptionMap.ts +0 -200
  312. package/maps/trinketNameMap.ts +0 -198
  313. package/objects/LRoomShapeToRectangles.ts +0 -44
  314. package/objects/callbackRegisterFunctions.ts +0 -187
  315. package/objects/cardDescriptions.ts +0 -105
  316. package/objects/cardNames.ts +0 -105
  317. package/objects/cardTypes.ts +0 -104
  318. package/objects/challengeNames.ts +0 -52
  319. package/objects/characterNames.ts +0 -48
  320. package/objects/coinSubTypeToValue.ts +0 -14
  321. package/objects/colors.ts +0 -16
  322. package/objects/directionNames.ts +0 -11
  323. package/objects/directionToDegrees.ts +0 -11
  324. package/objects/directionToVector.ts +0 -12
  325. package/objects/doorSlotFlagToDoorSlot.ts +0 -16
  326. package/objects/doorSlotToDirection.ts +0 -14
  327. package/objects/isaacAPIClassTypeToBrand.ts +0 -11
  328. package/objects/isaacAPIClassTypeToCopyFunction.ts +0 -18
  329. package/objects/languageNames.ts +0 -13
  330. package/objects/oppositeDoorSlots.ts +0 -15
  331. package/objects/pillEffectClasses.ts +0 -63
  332. package/objects/pillEffectNames.ts +0 -57
  333. package/objects/pillEffectTypes.ts +0 -62
  334. package/objects/roomShapeBounds.ts +0 -71
  335. package/objects/roomShapeLayoutSizes.ts +0 -45
  336. package/objects/roomShapeToBottomRightPosition.ts +0 -25
  337. package/objects/roomShapeToDoorSlots.ts +0 -83
  338. package/objects/roomShapeToDoorSlotsToGridIndexDelta.ts +0 -127
  339. package/objects/roomShapeToGridWidth.ts +0 -21
  340. package/objects/roomShapeToTopLeftPosition.ts +0 -26
  341. package/objects/roomShapeVolumes.ts +0 -38
  342. package/objects/roomTypeNames.ts +0 -36
  343. package/objects/serializedIsaacAPIClassTypeToIdentityFunction.ts +0 -14
  344. package/objects/stageTypeToLetter.ts +0 -15
  345. package/objects/transformationNames.ts +0 -18
  346. package/patchErrorFunctions.ts +0 -92
  347. package/sets/LRoomShapesSet.ts +0 -8
  348. package/sets/bossSets.ts +0 -470
  349. package/sets/charactersThatStartWithAnActiveItemSet.ts +0 -16
  350. package/sets/charactersWithBlackHeartFromEternalHeartSet.ts +0 -7
  351. package/sets/charactersWithFreeDevilDealsSet.ts +0 -4
  352. package/sets/charactersWithNoRedHeartsSet.ts +0 -17
  353. package/sets/charactersWithNoSoulHeartsSet.ts +0 -14
  354. package/sets/chestPickupVariantsSet.ts +0 -16
  355. package/sets/familiarsThatShootPlayerTearsSet.ts +0 -13
  356. package/sets/lostStyleCharactersSet.ts +0 -13
  357. package/sets/mineShaftRoomSubTypesSet.ts +0 -10
  358. package/sets/redHeartSubTypesSet.ts +0 -7
  359. package/sets/sinEntityTypesSet.ts +0 -11
  360. package/sets/singleUseActiveCollectibleTypesSet.ts +0 -13
  361. package/sets/storyBossesSet.ts +0 -17
  362. package/types/AnyEntity.ts +0 -12
  363. package/types/AwaitingTextInput.d.ts +0 -2
  364. package/types/CollectibleIndex.ts +0 -16
  365. package/types/PickingUpItem.ts +0 -89
  366. package/types/PlayerIndex.ts +0 -13
  367. package/types/private/IsaacAPIClass.ts +0 -3
  368. package/types/private/SerializedIsaacAPIClass.ts +0 -3
  369. package/types/private/TSTLClass.ts +0 -3
  370. package/upgradeMod.ts +0 -55
@@ -1,237 +0,0 @@
1
- import {
2
- ActiveSlot,
3
- CollectibleType,
4
- RoomShape,
5
- SoundEffect,
6
- TrinketType,
7
- } from "isaac-typescript-definitions";
8
- import { game, sfxManager } from "../cachedClasses";
9
- import { getCollectibleMaxCharges } from "./collectibles";
10
- import { getPlayers } from "./playerIndex";
11
-
12
- /**
13
- * Helper function to add a charge to a player's active item, emulating what happens when a room is
14
- * cleared.
15
- *
16
- * This function will take the following things into account:
17
- * - L rooms and 2x2 rooms granting a double charge
18
- * - The Battery
19
- * - AAA Battery
20
- *
21
- * @param player The player to grant the charges to.
22
- * @param ignoreBigRoomDoubleCharge Optional. If set to true, it will treat the current room as a
23
- * 1x1 room for the purposes of calculating how much charge to
24
- * grant. Default is false.
25
- */
26
- export function addRoomClearCharge(
27
- player: EntityPlayer,
28
- ignoreBigRoomDoubleCharge = false,
29
- ): void {
30
- for (const activeSlot of [
31
- ActiveSlot.PRIMARY,
32
- ActiveSlot.SECONDARY,
33
- ActiveSlot.POCKET,
34
- ]) {
35
- addRoomClearChargeToSlot(player, activeSlot, ignoreBigRoomDoubleCharge);
36
- }
37
- }
38
-
39
- /**
40
- * Helper function to add a charge to one of a player's active items, emulating what happens when a
41
- * room is cleared.
42
- *
43
- * This function will take the following things into account:
44
- * - L rooms and 2x2 rooms granting a double charge
45
- * - The Battery
46
- * - AAA Battery
47
- *
48
- * @param player The player to grant the charges to.
49
- * @param activeSlot The active item slot to grant the charges to.
50
- * @param ignoreBigRoomDoubleCharge Optional. If set to true, it will treat the current room as a
51
- * 1x1 room for the purposes of calculating how much charge to
52
- * grant. Default is false.
53
- */
54
- export function addRoomClearChargeToSlot(
55
- player: EntityPlayer,
56
- activeSlot: ActiveSlot,
57
- ignoreBigRoomDoubleCharge = false,
58
- ): void {
59
- if (!player.NeedsCharge(activeSlot)) {
60
- return;
61
- }
62
-
63
- const hud = game.GetHUD();
64
-
65
- // Find out the new charge to set on the item.
66
- const totalCharge = getTotalCharge(player, activeSlot);
67
- const chargesToAdd = getNumChargesToAdd(
68
- player,
69
- activeSlot,
70
- ignoreBigRoomDoubleCharge,
71
- );
72
- const modifiedChargesToAdd = getNumChargesWithAAAModifier(
73
- player,
74
- activeSlot,
75
- chargesToAdd,
76
- );
77
- const newCharge = totalCharge + modifiedChargesToAdd;
78
-
79
- player.SetActiveCharge(newCharge, activeSlot);
80
- hud.FlashChargeBar(player, activeSlot);
81
-
82
- playChargeSoundEffect(player, activeSlot);
83
- }
84
-
85
- function getNumChargesToAdd(
86
- player: EntityPlayer,
87
- activeSlot: ActiveSlot,
88
- ignoreBigRoomDoubleCharge = false,
89
- ) {
90
- const room = game.GetRoom();
91
- const roomShape = room.GetRoomShape();
92
- const activeItem = player.GetActiveItem(activeSlot);
93
- const activeCharge = player.GetActiveCharge(activeSlot);
94
- const batteryCharge = player.GetBatteryCharge(activeSlot);
95
- const hasBattery = player.HasCollectible(CollectibleType.BATTERY);
96
- const maxCharges = getCollectibleMaxCharges(activeItem);
97
-
98
- if (!hasBattery && activeCharge === maxCharges) {
99
- return 0;
100
- }
101
-
102
- if (hasBattery && batteryCharge === maxCharges) {
103
- return 0;
104
- }
105
-
106
- if (!hasBattery && activeCharge + 1 === maxCharges) {
107
- // We are only 1 charge away from a full charge, so only add one charge to avoid an overcharge.
108
- // (It is possible to set orange charges without the player actually having The Battery.)
109
- return 1;
110
- }
111
-
112
- if (hasBattery && batteryCharge + 1 === maxCharges) {
113
- // We are only 1 charge away from a full double-charge, so only add one charge to avoid an
114
- // overcharge.
115
- return 1;
116
- }
117
-
118
- if (roomShape >= RoomShape.SHAPE_2x2 && !ignoreBigRoomDoubleCharge) {
119
- // 2x2 rooms and L rooms should grant 2 charges.
120
- return 2;
121
- }
122
-
123
- // Clearing a room grants 1 charge by default.
124
- return 1;
125
- }
126
-
127
- /**
128
- * The AAA Battery should grant an extra charge when the active item is one away from being fully
129
- * charged.
130
- */
131
- function getNumChargesWithAAAModifier(
132
- player: EntityPlayer,
133
- activeSlot: ActiveSlot,
134
- chargesToAdd: int,
135
- ) {
136
- const activeItem = player.GetActiveItem(activeSlot);
137
- const activeCharge = player.GetActiveCharge(activeSlot);
138
- const batteryCharge = player.GetBatteryCharge(activeSlot);
139
- const hasBattery = player.HasCollectible(CollectibleType.BATTERY);
140
- const hasAAABattery = player.HasTrinket(TrinketType.AAA_BATTERY);
141
- const maxCharges = getCollectibleMaxCharges(activeItem);
142
-
143
- if (!hasAAABattery) {
144
- return chargesToAdd;
145
- }
146
-
147
- if (!hasBattery && activeCharge + chargesToAdd === maxCharges - 1) {
148
- return maxCharges + 1;
149
- }
150
-
151
- if (hasBattery && batteryCharge + chargesToAdd === maxCharges - 1) {
152
- return maxCharges + 1;
153
- }
154
-
155
- return chargesToAdd;
156
- }
157
-
158
- /**
159
- * Helper function to add a charge to every player's active item, emulating what happens when a room
160
- * is cleared.
161
- *
162
- * This function will take the following things into account:
163
- * - L rooms and 2x2 rooms granting a double charge
164
- * - The Battery
165
- * - AAA Battery
166
- *
167
- * @param ignoreBigRoomDoubleCharge Optional. If set to true, it will treat the current room as a
168
- * 1x1 room for the purposes of calculating how much charge to
169
- * grant. Default is false.
170
- */
171
- export function addRoomClearCharges(ignoreBigRoomDoubleCharge = false): void {
172
- for (const player of getPlayers()) {
173
- addRoomClearCharge(player, ignoreBigRoomDoubleCharge);
174
- }
175
- }
176
-
177
- /**
178
- * Helper function to get the combined normal charge and the battery charge for the player's active
179
- * item. This is useful because you have to add these two values together when setting the active
180
- * charge.
181
- */
182
- export function getTotalCharge(
183
- player: EntityPlayer,
184
- activeSlot: ActiveSlot,
185
- ): int {
186
- const activeCharge = player.GetActiveCharge(activeSlot);
187
- const batteryCharge = player.GetBatteryCharge(activeSlot);
188
-
189
- return activeCharge + batteryCharge;
190
- }
191
-
192
- export function isActiveSlotDoubleCharged(
193
- player: EntityPlayer,
194
- activeSlot: ActiveSlot,
195
- ): boolean {
196
- const collectibleType = player.GetActiveItem(activeSlot);
197
- const batteryCharge = player.GetBatteryCharge(activeSlot);
198
- const maxCharges = getCollectibleMaxCharges(collectibleType);
199
-
200
- return batteryCharge >= maxCharges;
201
- }
202
-
203
- export function playChargeSoundEffect(
204
- player: EntityPlayer,
205
- activeSlot: ActiveSlot,
206
- ): void {
207
- for (const soundEffect of [SoundEffect.BATTERY_CHARGE, SoundEffect.BEEP]) {
208
- sfxManager.Stop(soundEffect);
209
- }
210
-
211
- const chargeSoundEffect = shouldPlayFullRechargeSound(player, activeSlot)
212
- ? SoundEffect.BATTERY_CHARGE
213
- : SoundEffect.BEEP;
214
- sfxManager.Play(chargeSoundEffect);
215
- }
216
-
217
- function shouldPlayFullRechargeSound(
218
- player: EntityPlayer,
219
- activeSlot: ActiveSlot,
220
- ) {
221
- const activeItem = player.GetActiveItem(activeSlot);
222
- const activeCharge = player.GetActiveCharge(activeSlot);
223
- const batteryCharge = player.GetBatteryCharge(activeSlot);
224
- const hasBattery = player.HasCollectible(CollectibleType.BATTERY);
225
- const maxCharges = getCollectibleMaxCharges(activeItem);
226
-
227
- if (!hasBattery) {
228
- // Play the full recharge sound if we are now fully charged.
229
- return !player.NeedsCharge(activeSlot);
230
- }
231
-
232
- // Play the full recharge sound if we are now fully charged or we are exactly half-way charged.
233
- return (
234
- !player.NeedsCharge(activeSlot) ||
235
- (activeCharge === maxCharges && batteryCharge === 0)
236
- );
237
- }
@@ -1,67 +0,0 @@
1
- import { VectorZero } from "../constants";
2
- import { ChargeBarSprites } from "../interfaces/ChargeBarSprites";
3
-
4
- const CHARGE_BAR_ANM2 = "gfx/ui/ui_chargebar.anm2";
5
-
6
- /**
7
- * Constructor for a `ChargeBarSprites` object. For more information, see the `renderChargeBar`
8
- * helper function.
9
- */
10
- export function newChargeBarSprites(maxCharges: int): ChargeBarSprites {
11
- const back = Sprite();
12
- back.Load(CHARGE_BAR_ANM2, true);
13
- back.Play("BarEmpty", true);
14
-
15
- const meter = Sprite();
16
- meter.Load(CHARGE_BAR_ANM2, true);
17
- meter.Play("BarFull", true);
18
-
19
- const meterBattery = Sprite();
20
- meterBattery.Load(CHARGE_BAR_ANM2, true);
21
- meterBattery.Play("BarFull", true);
22
-
23
- const lines = Sprite();
24
- lines.Load(CHARGE_BAR_ANM2, true);
25
- lines.Play(`BarOverlay${maxCharges}`, true);
26
-
27
- return {
28
- back,
29
- meter,
30
- meterBattery,
31
- lines,
32
- maxCharges,
33
- };
34
- }
35
-
36
- /**
37
- * Helper function to render a charge bar on the screen. First, call the `newChargeBarSprites`
38
- * function to initialize the sprites, and then call this function on every render frame.
39
- */
40
- export function renderChargeBar(
41
- sprites: ChargeBarSprites,
42
- position: Vector,
43
- normalCharges: int,
44
- batteryCharges: int,
45
- ): void {
46
- sprites.back.Render(position, VectorZero, VectorZero);
47
-
48
- const normalChargesClamp = getChargeBarClamp(
49
- normalCharges,
50
- sprites.maxCharges,
51
- );
52
- sprites.meter.Render(position, normalChargesClamp, VectorZero);
53
-
54
- const batteryChargesClamp = getChargeBarClamp(
55
- batteryCharges,
56
- sprites.maxCharges,
57
- );
58
- sprites.meterBattery.Render(position, batteryChargesClamp, VectorZero);
59
-
60
- sprites.lines.Render(position, VectorZero, VectorZero);
61
- }
62
-
63
- function getChargeBarClamp(charges: int, maxCharges: int) {
64
- const meterMultiplier = 24 / maxCharges;
65
- const meterClip = 26 - charges * meterMultiplier;
66
- return Vector(0, meterClip);
67
- }
@@ -1,90 +0,0 @@
1
- import { CacheFlag, CollectibleType } from "isaac-typescript-definitions";
2
- import { itemConfig } from "../cachedClasses";
3
- import { getCollectibleTypeRange } from "./collectibles";
4
- import { getEnumValues } from "./enums";
5
- import { hasFlag } from "./flag";
6
- import { copySet, getSortedSetValues } from "./set";
7
- import { repeat } from "./utils";
8
-
9
- const CACHE_FLAG_TO_COLLECTIBLES_MAP = new Map<
10
- CacheFlag,
11
- Set<CollectibleType>
12
- >();
13
-
14
- function initCacheFlagMap() {
15
- for (const cacheFlag of getEnumValues(CacheFlag)) {
16
- const collectiblesSet = new Set<CollectibleType>();
17
-
18
- for (const collectibleType of getCollectibleTypeRange()) {
19
- if (collectibleHasCacheFlag(collectibleType, cacheFlag)) {
20
- collectiblesSet.add(collectibleType);
21
- }
22
- }
23
-
24
- CACHE_FLAG_TO_COLLECTIBLES_MAP.set(cacheFlag, collectiblesSet);
25
- }
26
- }
27
-
28
- export function collectibleHasCacheFlag(
29
- collectibleType: CollectibleType,
30
- cacheFlag: CacheFlag,
31
- ): boolean {
32
- const itemConfigItem = itemConfig.GetCollectible(collectibleType);
33
- if (itemConfigItem === undefined) {
34
- return false;
35
- }
36
-
37
- return hasFlag(itemConfigItem.CacheFlags, cacheFlag);
38
- }
39
-
40
- /**
41
- * Returns a set containing every collectible type with the given cache flag, including modded
42
- * collectibles.
43
- */
44
- export function getCollectiblesForCacheFlag(
45
- cacheFlag: CacheFlag,
46
- ): Set<CollectibleType> {
47
- // Lazy initialize the map.
48
- if (CACHE_FLAG_TO_COLLECTIBLES_MAP.size === 0) {
49
- initCacheFlagMap();
50
- }
51
-
52
- const collectiblesSet = CACHE_FLAG_TO_COLLECTIBLES_MAP.get(cacheFlag);
53
- if (collectiblesSet === undefined) {
54
- return new Set();
55
- }
56
-
57
- return copySet(collectiblesSet);
58
- }
59
-
60
- /**
61
- * Returns an array containing every collectible type that the player has that matches the provided
62
- * CacheFlag.
63
- *
64
- * For example, if the cache flag is `CacheFlag.FLYING`, and the player has one Lord of the Pit and
65
- * two Dead Doves, then this function would return:
66
- *
67
- * ```ts
68
- * [
69
- * CollectibleType.LORD_OF_THE_PIT,
70
- * CollectibleType.DEAD_DOVE,
71
- * CollectibleType.DEAD_DOVE,
72
- * ]
73
- * ```
74
- */
75
- export function getPlayerCollectiblesForCacheFlag(
76
- player: EntityPlayer,
77
- cacheFlag: CacheFlag,
78
- ): CollectibleType[] {
79
- const collectiblesForCacheFlag = getCollectiblesForCacheFlag(cacheFlag);
80
-
81
- const playerCollectibles: CollectibleType[] = [];
82
- for (const collectibleType of getSortedSetValues(collectiblesForCacheFlag)) {
83
- const numCollectibles = player.GetCollectibleNum(collectibleType);
84
- repeat(numCollectibles, () => {
85
- playerCollectibles.push(collectibleType);
86
- });
87
- }
88
-
89
- return playerCollectibles;
90
- }
@@ -1,56 +0,0 @@
1
- import { CollectibleType } from "isaac-typescript-definitions";
2
- import { itemConfig } from "../cachedClasses";
3
- import { LAST_VANILLA_COLLECTIBLE_TYPE } from "../constantsFirstLast";
4
- import { getCollectibleTypeRange } from "./collectibles";
5
-
6
- const ALL_COLLECTIBLES_SET = new Set<CollectibleType>();
7
- const VANILLA_COLLECTIBLES_SET = new Set<CollectibleType>();
8
- const MODDED_COLLECTIBLES_SET = new Set<CollectibleType>();
9
-
10
- function initCollectibleSets() {
11
- for (const collectibleType of getCollectibleTypeRange()) {
12
- const itemConfigItem = itemConfig.GetCollectible(collectibleType);
13
- if (itemConfigItem === undefined) {
14
- continue;
15
- }
16
-
17
- ALL_COLLECTIBLES_SET.add(collectibleType);
18
- if (collectibleType <= LAST_VANILLA_COLLECTIBLE_TYPE) {
19
- VANILLA_COLLECTIBLES_SET.add(collectibleType);
20
- } else {
21
- MODDED_COLLECTIBLES_SET.add(collectibleType);
22
- }
23
- }
24
- }
25
-
26
- /**
27
- * Returns a set containing every valid collectible type in the game, including modded collectibles.
28
- */
29
- export function getCollectibleSet(): ReadonlySet<CollectibleType> {
30
- // Lazy initialize the sets.
31
- if (ALL_COLLECTIBLES_SET.size === 0) {
32
- initCollectibleSets();
33
- }
34
-
35
- return ALL_COLLECTIBLES_SET;
36
- }
37
-
38
- /** Returns a set containing every modded collectible type in the game. */
39
- export function getModdedCollectibleSet(): ReadonlySet<CollectibleType> {
40
- // Lazy initialize the sets.
41
- if (ALL_COLLECTIBLES_SET.size === 0) {
42
- initCollectibleSets();
43
- }
44
-
45
- return MODDED_COLLECTIBLES_SET;
46
- }
47
-
48
- /** Returns a set containing every valid vanilla collectible type in the game. */
49
- export function getVanillaCollectibleSet(): ReadonlySet<CollectibleType> {
50
- // Lazy initialize the sets.
51
- if (ALL_COLLECTIBLES_SET.size === 0) {
52
- initCollectibleSets();
53
- }
54
-
55
- return VANILLA_COLLECTIBLES_SET;
56
- }
@@ -1,89 +0,0 @@
1
- import { CollectibleType, ItemConfigTag } from "isaac-typescript-definitions";
2
- import { itemConfig } from "../cachedClasses";
3
- import { getCollectibleTypeRange } from "./collectibles";
4
- import { getEnumValues } from "./enums";
5
- import { getFlagName } from "./flag";
6
- import { getPlayerCollectibleCount } from "./player";
7
- import { copySet } from "./set";
8
-
9
- const TAG_TO_COLLECTIBLE_TYPES_MAP = new Map<
10
- ItemConfigTag,
11
- Set<CollectibleType>
12
- >();
13
-
14
- function initTagMap() {
15
- // The tag to collectible types map should be valid for every tag, so we initialize it with empty
16
- // sets.
17
- for (const itemConfigTag of getEnumValues(ItemConfigTag)) {
18
- TAG_TO_COLLECTIBLE_TYPES_MAP.set(itemConfigTag, new Set());
19
- }
20
-
21
- for (const collectibleType of getCollectibleTypeRange()) {
22
- for (const itemConfigTag of getEnumValues(ItemConfigTag)) {
23
- if (!collectibleHasTag(collectibleType, itemConfigTag)) {
24
- continue;
25
- }
26
-
27
- const collectibleTypesSet =
28
- TAG_TO_COLLECTIBLE_TYPES_MAP.get(itemConfigTag);
29
- if (collectibleTypesSet === undefined) {
30
- const flagName = getFlagName(itemConfigTag, ItemConfigTag);
31
- error(`Failed to get the collectible types for item tag: ${flagName}`);
32
- }
33
- collectibleTypesSet.add(collectibleType);
34
- }
35
- }
36
- }
37
-
38
- export function collectibleHasTag(
39
- collectibleType: CollectibleType,
40
- tag: ItemConfigTag,
41
- ): boolean {
42
- const itemConfigItem = itemConfig.GetCollectible(collectibleType);
43
- if (itemConfigItem === undefined) {
44
- return false;
45
- }
46
-
47
- return itemConfigItem.HasTags(tag);
48
- }
49
-
50
- /**
51
- * Helper function to get all of the collectible types in the game that have a certain tag.
52
- *
53
- * For example, to get all of the collectible types that count as offensive for the purposes of
54
- * Tainted Lost:
55
- *
56
- * ```ts
57
- * const offensiveCollectibleTypes = getCollectibleTypesWithTag(ItemConfigTag.OFFENSIVE);
58
- * ```
59
- */
60
- export function getCollectibleTypesWithTag(
61
- itemConfigTag: ItemConfigTag,
62
- ): Set<CollectibleType> {
63
- // Lazy initialize the map.
64
- if (TAG_TO_COLLECTIBLE_TYPES_MAP.size === 0) {
65
- initTagMap();
66
- }
67
-
68
- const collectibleTypes = TAG_TO_COLLECTIBLE_TYPES_MAP.get(itemConfigTag);
69
- if (collectibleTypes === undefined) {
70
- error(
71
- `The item config tag of ${itemConfigTag} is not a valid value of the ItemConfigTag enum.`,
72
- );
73
- }
74
-
75
- return copySet(collectibleTypes);
76
- }
77
-
78
- /** Returns the number of items that a player has towards a particular transformation. */
79
- export function getPlayerNumCollectiblesWithTag(
80
- player: EntityPlayer,
81
- itemConfigTag: ItemConfigTag,
82
- ): int {
83
- const collectibleTypesSet = getCollectibleTypesWithTag(itemConfigTag);
84
- return getPlayerCollectibleCount(player, ...collectibleTypesSet.values());
85
- }
86
-
87
- export function isQuestCollectible(collectibleType: CollectibleType): boolean {
88
- return collectibleHasTag(collectibleType, ItemConfigTag.QUEST);
89
- }