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
@@ -5,6 +5,7 @@ local __TS__Spread = ____lualib.__TS__Spread
5
5
  local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
6
6
  local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
7
7
  local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
8
+ local __TS__ArraySort = ____lualib.__TS__ArraySort
8
9
  local ____exports = {}
9
10
  local hasSubscriptions, postPEffectUpdate, collectibleCountChanged, v
10
11
  local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
@@ -48,7 +49,7 @@ function postPEffectUpdate(self, player)
48
49
  end
49
50
  end
50
51
  function collectibleCountChanged(self, player, numCollectiblesChanged, increased)
51
- local oldCollectibleMap = defaultMapGetPlayer(nil, v.run.playersCollectibleMap, player, player)
52
+ local oldCollectibleMap = defaultMapGetPlayer(nil, v.run.playersCollectibleMap, player)
52
53
  local newCollectibleMap = getPlayerCollectibleMap(nil, player)
53
54
  mapSetPlayer(nil, v.run.playersCollectibleMap, player, newCollectibleMap)
54
55
  local ____array_0 = __TS__SparseArrayNew(__TS__Spread(oldCollectibleMap:keys()))
@@ -57,6 +58,7 @@ function collectibleCountChanged(self, player, numCollectiblesChanged, increased
57
58
  __TS__Spread(newCollectibleMap:keys())
58
59
  )
59
60
  local collectibleTypes = {__TS__SparseArraySpread(____array_0)}
61
+ __TS__ArraySort(collectibleTypes)
60
62
  local numFired = 0
61
63
  for ____, collectibleType in ipairs(collectibleTypes) do
62
64
  local oldNum = oldCollectibleMap:get(collectibleType) or 0
@@ -83,7 +85,7 @@ v = {run = {
83
85
  playersCollectibleCount = __TS__New(Map),
84
86
  playersCollectibleMap = __TS__New(
85
87
  DefaultMap,
86
- function(____, player) return getPlayerCollectibleMap(nil, player) end
88
+ function() return __TS__New(Map) end
87
89
  )
88
90
  }}
89
91
  ---
@@ -1,9 +1,44 @@
1
1
  import { CollectibleType } from "isaac-typescript-definitions";
2
+ /**
3
+ * Returns an array containing every valid collectible type in the game, including modded
4
+ * collectibles.
5
+ *
6
+ * Use this if you need to iterate over the collectibles in order. If you need to do O(1) lookups,
7
+ * then use the `getCollectibleArray` helper function instead.
8
+ */
9
+ export declare function getCollectibleArray(): readonly CollectibleType[];
2
10
  /**
3
11
  * Returns a set containing every valid collectible type in the game, including modded collectibles.
12
+ *
13
+ * Use this if you need to do O(1) lookups. If you need to iterate over the collectibles in order,
14
+ * then use the `getCollectibleArray` helper function instead.
4
15
  */
5
16
  export declare function getCollectibleSet(): ReadonlySet<CollectibleType>;
6
- /** Returns a set containing every modded collectible type in the game. */
17
+ /**
18
+ * Returns an array containing every modded collectible type in the game.
19
+ *
20
+ * Use this if you need to iterate over the collectibles in order. If you need to do O(1) lookups,
21
+ * then use the `getModdedCollectibleSet` helper function instead.
22
+ */
23
+ export declare function getModdedCollectibleArray(): readonly CollectibleType[];
24
+ /**
25
+ * Returns a set containing every modded collectible type in the game.
26
+ *
27
+ * Use this if you need to do O(1) lookups. If you need to iterate over the collectibles in order,
28
+ * then use the `getModdedCollectibleArray` helper function instead.
29
+ */
7
30
  export declare function getModdedCollectibleSet(): ReadonlySet<CollectibleType>;
8
- /** Returns a set containing every valid vanilla collectible type in the game. */
31
+ /**
32
+ * Returns an array containing every valid vanilla collectible type in the game.
33
+ *
34
+ * Use this if you need to iterate over the collectibles in order. If you need to do O(1) lookups,
35
+ * then use the `getVanillaCollectibleSet` helper function instead.
36
+ */
37
+ export declare function getVanillaCollectibleArray(): readonly CollectibleType[];
38
+ /**
39
+ * Returns a set containing every valid vanilla collectible type in the game.
40
+ *
41
+ * Use this if you need to do O(1) lookups. If you need to iterate over the collectibles in order,
42
+ * then use the `getVanillaCollectibleArray` helper function instead.
43
+ */
9
44
  export declare function getVanillaCollectibleSet(): ReadonlySet<CollectibleType>;
@@ -1,6 +1,7 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local Set = ____lualib.Set
3
3
  local __TS__New = ____lualib.__TS__New
4
+ local __TS__ArraySort = ____lualib.__TS__ArraySort
4
5
  local ____exports = {}
5
6
  local ____cachedClasses = require("cachedClasses")
6
7
  local itemConfig = ____cachedClasses.itemConfig
@@ -8,45 +9,91 @@ local ____constantsFirstLast = require("constantsFirstLast")
8
9
  local LAST_VANILLA_COLLECTIBLE_TYPE = ____constantsFirstLast.LAST_VANILLA_COLLECTIBLE_TYPE
9
10
  local ____collectibles = require("functions.collectibles")
10
11
  local getCollectibleTypeRange = ____collectibles.getCollectibleTypeRange
12
+ local ALL_COLLECTIBLES_ARRAY = {}
13
+ local VANILLA_COLLECTIBLES_ARRAY = {}
14
+ local MODDED_COLLECTIBLES_ARRAY = {}
11
15
  local ALL_COLLECTIBLES_SET = __TS__New(Set)
12
16
  local VANILLA_COLLECTIBLES_SET = __TS__New(Set)
13
17
  local MODDED_COLLECTIBLES_SET = __TS__New(Set)
14
- local function initCollectibleSets(self)
18
+ local function initCollectibleArraysAndSets(self)
19
+ if #ALL_COLLECTIBLES_ARRAY ~= 0 then
20
+ return
21
+ end
15
22
  for ____, collectibleType in ipairs(getCollectibleTypeRange(nil)) do
16
23
  do
17
24
  local itemConfigItem = itemConfig:GetCollectible(collectibleType)
18
25
  if itemConfigItem == nil then
19
- goto __continue3
26
+ goto __continue4
20
27
  end
21
- ALL_COLLECTIBLES_SET:add(collectibleType)
28
+ ALL_COLLECTIBLES_ARRAY[#ALL_COLLECTIBLES_ARRAY + 1] = collectibleType
22
29
  if collectibleType <= LAST_VANILLA_COLLECTIBLE_TYPE then
23
- VANILLA_COLLECTIBLES_SET:add(collectibleType)
30
+ VANILLA_COLLECTIBLES_ARRAY[#VANILLA_COLLECTIBLES_ARRAY + 1] = collectibleType
24
31
  else
25
- MODDED_COLLECTIBLES_SET:add(collectibleType)
32
+ MODDED_COLLECTIBLES_ARRAY[#MODDED_COLLECTIBLES_ARRAY + 1] = collectibleType
26
33
  end
27
34
  end
28
- ::__continue3::
35
+ ::__continue4::
36
+ end
37
+ __TS__ArraySort(ALL_COLLECTIBLES_ARRAY)
38
+ __TS__ArraySort(VANILLA_COLLECTIBLES_ARRAY)
39
+ __TS__ArraySort(MODDED_COLLECTIBLES_ARRAY)
40
+ for ____, collectibleType in ipairs(ALL_COLLECTIBLES_ARRAY) do
41
+ ALL_COLLECTIBLES_SET:add(collectibleType)
42
+ end
43
+ for ____, collectibleType in ipairs(VANILLA_COLLECTIBLES_ARRAY) do
44
+ VANILLA_COLLECTIBLES_SET:add(collectibleType)
29
45
  end
46
+ for ____, collectibleType in ipairs(MODDED_COLLECTIBLES_ARRAY) do
47
+ MODDED_COLLECTIBLES_SET:add(collectibleType)
48
+ end
49
+ end
50
+ --- Returns an array containing every valid collectible type in the game, including modded
51
+ -- collectibles.
52
+ --
53
+ -- Use this if you need to iterate over the collectibles in order. If you need to do O(1) lookups,
54
+ -- then use the `getCollectibleArray` helper function instead.
55
+ function ____exports.getCollectibleArray(self)
56
+ initCollectibleArraysAndSets(nil)
57
+ return ALL_COLLECTIBLES_ARRAY
30
58
  end
31
59
  --- Returns a set containing every valid collectible type in the game, including modded collectibles.
60
+ --
61
+ -- Use this if you need to do O(1) lookups. If you need to iterate over the collectibles in order,
62
+ -- then use the `getCollectibleArray` helper function instead.
32
63
  function ____exports.getCollectibleSet(self)
33
- if ALL_COLLECTIBLES_SET.size == 0 then
34
- initCollectibleSets(nil)
35
- end
64
+ initCollectibleArraysAndSets(nil)
36
65
  return ALL_COLLECTIBLES_SET
37
66
  end
67
+ --- Returns an array containing every modded collectible type in the game.
68
+ --
69
+ -- Use this if you need to iterate over the collectibles in order. If you need to do O(1) lookups,
70
+ -- then use the `getModdedCollectibleSet` helper function instead.
71
+ function ____exports.getModdedCollectibleArray(self)
72
+ initCollectibleArraysAndSets(nil)
73
+ return MODDED_COLLECTIBLES_ARRAY
74
+ end
38
75
  --- Returns a set containing every modded collectible type in the game.
76
+ --
77
+ -- Use this if you need to do O(1) lookups. If you need to iterate over the collectibles in order,
78
+ -- then use the `getModdedCollectibleArray` helper function instead.
39
79
  function ____exports.getModdedCollectibleSet(self)
40
- if ALL_COLLECTIBLES_SET.size == 0 then
41
- initCollectibleSets(nil)
42
- end
80
+ initCollectibleArraysAndSets(nil)
43
81
  return MODDED_COLLECTIBLES_SET
44
82
  end
83
+ --- Returns an array containing every valid vanilla collectible type in the game.
84
+ --
85
+ -- Use this if you need to iterate over the collectibles in order. If you need to do O(1) lookups,
86
+ -- then use the `getVanillaCollectibleSet` helper function instead.
87
+ function ____exports.getVanillaCollectibleArray(self)
88
+ initCollectibleArraysAndSets(nil)
89
+ return VANILLA_COLLECTIBLES_ARRAY
90
+ end
45
91
  --- Returns a set containing every valid vanilla collectible type in the game.
92
+ --
93
+ -- Use this if you need to do O(1) lookups. If you need to iterate over the collectibles in order,
94
+ -- then use the `getVanillaCollectibleArray` helper function instead.
46
95
  function ____exports.getVanillaCollectibleSet(self)
47
- if ALL_COLLECTIBLES_SET.size == 0 then
48
- initCollectibleSets(nil)
49
- end
96
+ initCollectibleArraysAndSets(nil)
50
97
  return VANILLA_COLLECTIBLES_SET
51
98
  end
52
99
  return ____exports
@@ -5,7 +5,6 @@ local __TS__ArraySome = ____lualib.__TS__ArraySome
5
5
  local __TS__ArrayFind = ____lualib.__TS__ArrayFind
6
6
  local __TS__ArrayMap = ____lualib.__TS__ArrayMap
7
7
  local Map = ____lualib.Map
8
- local __TS__Iterator = ____lualib.__TS__Iterator
9
8
  local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
10
9
  local __TS__ArrayEvery = ____lualib.__TS__ArrayEvery
11
10
  local ____exports = {}
@@ -39,7 +38,7 @@ local isVanillaCharacter = ____character.isVanillaCharacter
39
38
  local ____collectibles = require("functions.collectibles")
40
39
  local getCollectibleMaxCharges = ____collectibles.getCollectibleMaxCharges
41
40
  local ____collectibleSet = require("functions.collectibleSet")
42
- local getCollectibleSet = ____collectibleSet.getCollectibleSet
41
+ local getCollectibleArray = ____collectibleSet.getCollectibleArray
43
42
  local ____enums = require("functions.enums")
44
43
  local getEnumValues = ____enums.getEnumValues
45
44
  local ____playerIndex = require("functions.playerIndex")
@@ -404,9 +403,9 @@ end
404
403
  --- Iterates over every item in the game and returns a map containing the number of each item that
405
404
  -- the player has.
406
405
  function ____exports.getPlayerCollectibleMap(self, player)
407
- local collectibleSet = getCollectibleSet(nil)
406
+ local collectibleArray = getCollectibleArray(nil)
408
407
  local collectibleMap = __TS__New(Map)
409
- for ____, collectibleType in __TS__Iterator(collectibleSet:values()) do
408
+ for ____, collectibleType in ipairs(collectibleArray) do
410
409
  local collectibleNum = player:GetCollectibleNum(collectibleType, true)
411
410
  if collectibleNum > 0 then
412
411
  collectibleMap:set(collectibleType, collectibleNum)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "4.0.2",
3
+ "version": "4.0.5",
4
4
  "description": "Helper functions and features for IsaacScript mods.",
5
5
  "keywords": [
6
6
  "isaac",
@@ -22,6 +22,6 @@
22
22
  "main": "index",
23
23
  "types": "index.d.ts",
24
24
  "dependencies": {
25
- "isaac-typescript-definitions": "^3.0.5"
25
+ "isaac-typescript-definitions": "^3.0.6"
26
26
  }
27
27
  }
package/cachedClasses.ts DELETED
@@ -1,39 +0,0 @@
1
- /**
2
- * A cached version of the class returned from the `Game()` constructor.
3
- *
4
- * Use this instead of invoking the constructor again for a miniscule performance increase.
5
- *
6
- * Caching the results of this constructor is safe, but caching other classes (like `Level` or
7
- * `Room`) is not safe and can lead to the game crashing in certain situations.
8
- */
9
- export const game = Game();
10
-
11
- /**
12
- * A cached version of the class returned from the `Isaac.GetItemConfig()` constructor.
13
- *
14
- * Use this instead of invoking the constructor again for a miniscule performance increase.
15
- *
16
- * Caching the results of this constructor is safe, but caching other classes (like `Level` or
17
- * `Room`) is not safe and can lead to the game crashing in certain situations.
18
- */
19
- export const itemConfig = Isaac.GetItemConfig();
20
-
21
- /**
22
- * A cached version of the class returned from the `MusicManager()` constructor.
23
- *
24
- * Use this instead of invoking the constructor again for a miniscule performance increase.
25
- *
26
- * Caching the results of this constructor is safe, but caching other classes (like `Level` or
27
- * `Room`) is not safe and can lead to the game crashing in certain situations.
28
- */
29
- export const musicManager = MusicManager();
30
-
31
- /**
32
- * A cached version of the class returned from the `SFXManager()` constructor.
33
- *
34
- * Use this instead of invoking the constructor again for a miniscule performance increase.
35
- *
36
- * Caching the results of this constructor is safe, but caching other classes (like `Level` or
37
- * `Room`) is not safe and can lead to the game crashing in certain situations.
38
- */
39
- export const sfxManager = SFXManager();
@@ -1,215 +0,0 @@
1
- // This provides the logic for:
2
- // - PRE_CUSTOM_REVIVE
3
- // - POST_CUSTOM_REVIVE
4
-
5
- import {
6
- CollectibleType,
7
- FamiliarVariant,
8
- ModCallback,
9
- PlayerType,
10
- SoundEffect,
11
- } from "isaac-typescript-definitions";
12
- import { sfxManager } from "../cachedClasses";
13
- import { ModUpgraded } from "../classes/ModUpgraded";
14
- import { ModCallbackCustom } from "../enums/ModCallbackCustom";
15
- import { runNextGameFrame } from "../features/runInNFrames";
16
- import { saveDataManager } from "../features/saveDataManager/exports";
17
- import { removeCollectibleFromItemTracker } from "../functions/collectibles";
18
- import { removeAllFamiliars } from "../functions/entitySpecific";
19
- import { log, logError } from "../functions/log";
20
- import { isCharacter } from "../functions/player";
21
- import { getPlayerFromIndex, getPlayerIndex } from "../functions/playerIndex";
22
- import { PlayerIndex } from "../types/PlayerIndex";
23
- import {
24
- postCustomReviveFire,
25
- postCustomReviveHasSubscriptions,
26
- } from "./subscriptions/postCustomRevive";
27
- import {
28
- preCustomReviveFire,
29
- preCustomReviveHasSubscriptions,
30
- } from "./subscriptions/preCustomRevive";
31
-
32
- const DEBUG = false;
33
-
34
- enum CustomReviveState {
35
- DISABLED,
36
-
37
- /**
38
- * We can't immediately jump to waiting for an item animation because it is possible for a player
39
- * to be holding an item above their head as they are dying (e.g. with Razor Blade).
40
- */
41
- WAITING_FOR_ROOM_TRANSITION,
42
-
43
- WAITING_FOR_ITEM_ANIMATION,
44
- }
45
-
46
- const v = {
47
- run: {
48
- state: CustomReviveState.DISABLED,
49
- revivalType: null as int | null,
50
- dyingPlayerIndex: null as PlayerIndex | null,
51
- },
52
- };
53
-
54
- /** @internal */
55
- export function customReviveCallbacksInit(mod: ModUpgraded): void {
56
- saveDataManager("customRevive", v, hasSubscriptions);
57
-
58
- mod.AddCallback(ModCallback.POST_RENDER, postRender); // 2
59
- mod.AddCallbackCustom(
60
- ModCallbackCustom.POST_NEW_ROOM_REORDERED,
61
- postNewRoomReordered,
62
- );
63
- mod.AddCallbackCustom(
64
- ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED,
65
- postPEffectUpdateReordered,
66
- );
67
- mod.AddCallbackCustom(
68
- ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE,
69
- postPlayerFatalDamage,
70
- );
71
- mod.AddCallbackCustom(ModCallbackCustom.PRE_BERSERK_DEATH, preBerserkDeath);
72
- }
73
-
74
- function hasSubscriptions() {
75
- return (
76
- preCustomReviveHasSubscriptions() || postCustomReviveHasSubscriptions()
77
- );
78
- }
79
-
80
- // ModCallback.POST_RENDER (2)
81
- function postRender() {
82
- if (v.run.state !== CustomReviveState.WAITING_FOR_ITEM_ANIMATION) {
83
- return;
84
- }
85
-
86
- // The 1-up sound will fire before the item holding animation begins, so we mute it on every
87
- // render frame.
88
- sfxManager.Stop(SoundEffect.ONE_UP);
89
- }
90
-
91
- // ModCallbackCustom.POST_NEW_ROOM_REORDERED
92
- function postNewRoomReordered() {
93
- if (v.run.state !== CustomReviveState.WAITING_FOR_ROOM_TRANSITION) {
94
- return;
95
- }
96
-
97
- v.run.state = CustomReviveState.WAITING_FOR_ITEM_ANIMATION;
98
- logStateChanged();
99
- }
100
-
101
- // ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED
102
- function postPEffectUpdateReordered(player: EntityPlayer) {
103
- checkWaitingForItemAnimation(player);
104
- }
105
-
106
- function checkWaitingForItemAnimation(player: EntityPlayer) {
107
- if (v.run.state !== CustomReviveState.WAITING_FOR_ITEM_ANIMATION) {
108
- return;
109
- }
110
-
111
- if (v.run.dyingPlayerIndex === null) {
112
- return;
113
- }
114
-
115
- const playerIndex = getPlayerIndex(player);
116
- if (playerIndex !== v.run.dyingPlayerIndex) {
117
- return;
118
- }
119
-
120
- let playerToCheckHoldingItem = player;
121
- if (isCharacter(player, PlayerType.THE_SOUL_B)) {
122
- const forgottenBody = player.GetOtherTwin();
123
- if (forgottenBody !== undefined) {
124
- playerToCheckHoldingItem = forgottenBody;
125
- }
126
- }
127
-
128
- if (!playerToCheckHoldingItem.IsHoldingItem()) {
129
- return;
130
- }
131
-
132
- // The player is now playing the animation where they hold the 1-Up item overhead. The
133
- // `EntityPlayer.StopExtraAnimation` method will not work to stop this animation. End-users are
134
- // expected to play a new animation in the PostCustomRevive callback, which will overwrite the
135
- // 1-Up animation.
136
-
137
- if (v.run.revivalType !== null) {
138
- postCustomReviveFire(playerToCheckHoldingItem, v.run.revivalType);
139
- }
140
-
141
- v.run.state = CustomReviveState.DISABLED;
142
- v.run.revivalType = null;
143
- v.run.dyingPlayerIndex = null;
144
- logStateChanged();
145
- }
146
-
147
- // ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE
148
- function postPlayerFatalDamage(player: EntityPlayer): boolean | undefined {
149
- if (!hasSubscriptions()) {
150
- return undefined;
151
- }
152
-
153
- playerIsAboutToDie(player);
154
- return undefined;
155
- }
156
-
157
- // ModCallbackCustom.PRE_BERSERK_DEATH
158
- function preBerserkDeath(player: EntityPlayer) {
159
- if (!hasSubscriptions()) {
160
- return;
161
- }
162
-
163
- playerIsAboutToDie(player);
164
- }
165
-
166
- /**
167
- * The player is about to die, which will immediately delete the save data for the run. To prevent
168
- * this from happening, we grant the 1-Up item.
169
- */
170
- function playerIsAboutToDie(player: EntityPlayer) {
171
- const revivalType = preCustomReviveFire(player);
172
- if (revivalType === undefined) {
173
- return;
174
- }
175
-
176
- v.run.state = CustomReviveState.WAITING_FOR_ROOM_TRANSITION;
177
- v.run.revivalType = revivalType;
178
- v.run.dyingPlayerIndex = getPlayerIndex(player);
179
- logStateChanged();
180
-
181
- player.AddCollectible(CollectibleType.ONE_UP, 0, false);
182
- removeAllFamiliars(FamiliarVariant.ONE_UP);
183
- removeCollectibleFromItemTracker(CollectibleType.ONE_UP);
184
-
185
- // The player should always be dead one frame from now. If they are not, then something has gone
186
- // wrong, probably with the `isDamageToPlayerFatal` function. Since end-user code is already
187
- // assuming that a custom revive is occurring, explicitly kill the player.
188
- const playerIndex = getPlayerIndex(player);
189
- runNextGameFrame(() => {
190
- const futurePlayer = getPlayerFromIndex(playerIndex);
191
- if (futurePlayer === undefined) {
192
- return;
193
- }
194
-
195
- if (futurePlayer.IsDead()) {
196
- return;
197
- }
198
-
199
- logError(
200
- "The player is still alive after initializing a custom revive. Explicitly killing the player.",
201
- );
202
- futurePlayer.Kill();
203
- });
204
- }
205
-
206
- function logStateChanged() {
207
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
208
- if (DEBUG) {
209
- log(
210
- `Custom revive state changed: ${CustomReviveState[v.run.state]} (${
211
- v.run.state
212
- })`,
213
- );
214
- }
215
- }
@@ -1,101 +0,0 @@
1
- // This provides the logic for:
2
- // - PRE_ITEM_PICKUP
3
- // - POST_ITEM_PICKUP
4
-
5
- import {
6
- CollectibleType,
7
- ItemType,
8
- TrinketType,
9
- } from "isaac-typescript-definitions";
10
- import { DefaultMap } from "../classes/DefaultMap";
11
- import { ModUpgraded } from "../classes/ModUpgraded";
12
- import { ModCallbackCustom } from "../enums/ModCallbackCustom";
13
- import { saveDataManager } from "../features/saveDataManager/exports";
14
- import { defaultMapGetPlayer } from "../functions/playerDataStructures";
15
- import {
16
- newPickingUpItem,
17
- PickingUpItem,
18
- resetPickingUpItem,
19
- } from "../types/PickingUpItem";
20
- import { PlayerIndex } from "../types/PlayerIndex";
21
- import {
22
- postItemPickupFire,
23
- postItemPickupHasSubscriptions,
24
- } from "./subscriptions/postItemPickup";
25
- import {
26
- preItemPickupFire,
27
- preItemPickupHasSubscriptions,
28
- } from "./subscriptions/preItemPickup";
29
-
30
- const v = {
31
- run: {
32
- playersPickingUpItemMap: new DefaultMap<PlayerIndex, PickingUpItem>(() =>
33
- newPickingUpItem(),
34
- ),
35
- },
36
- };
37
-
38
- /** @internal */
39
- export function itemPickupCallbacksInit(mod: ModUpgraded): void {
40
- saveDataManager("itemPickup", v, hasSubscriptions);
41
-
42
- mod.AddCallbackCustom(
43
- ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED,
44
- postPEffectUpdateReordered,
45
- );
46
- }
47
-
48
- function hasSubscriptions() {
49
- return preItemPickupHasSubscriptions() || postItemPickupHasSubscriptions();
50
- }
51
-
52
- // ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED
53
- function postPEffectUpdateReordered(player: EntityPlayer) {
54
- if (!hasSubscriptions()) {
55
- return;
56
- }
57
-
58
- const pickingUpItem = defaultMapGetPlayer(
59
- v.run.playersPickingUpItemMap,
60
- player,
61
- );
62
-
63
- if (player.IsItemQueueEmpty()) {
64
- queueEmpty(player, pickingUpItem);
65
- // If a player enters a room with a trinket next to the entrance, the player will pick up the
66
- // trinket, but it will not become queued (it will be deposited into their inventory
67
- // immediately). Since we don't know what type of item the player is holding, don't account for
68
- // this bug.
69
- } else {
70
- queueNotEmpty(player, pickingUpItem);
71
- }
72
- }
73
-
74
- function queueEmpty(player: EntityPlayer, pickingUpItem: PickingUpItem) {
75
- // eslint-disable-next-line isaacscript/strict-enums
76
- if (pickingUpItem.itemType === ItemType.NULL || pickingUpItem.subType === 0) {
77
- return;
78
- }
79
-
80
- postItemPickupFire(player, pickingUpItem);
81
- resetPickingUpItem(pickingUpItem);
82
- }
83
-
84
- function queueNotEmpty(player: EntityPlayer, pickingUpItem: PickingUpItem) {
85
- const queuedItem = player.QueuedItem.Item;
86
- if (queuedItem === undefined || queuedItem.Type === ItemType.NULL) {
87
- // This should never happen, since the `EntityPlayer.IsItemQueueEmpty` method returned true.
88
- return;
89
- }
90
-
91
- if (
92
- queuedItem.Type !== pickingUpItem.itemType ||
93
- queuedItem.ID !== pickingUpItem.subType
94
- ) {
95
- // Record which item we are picking up.
96
- pickingUpItem.itemType = queuedItem.Type;
97
- pickingUpItem.subType = queuedItem.ID as CollectibleType | TrinketType;
98
-
99
- preItemPickupFire(player, pickingUpItem);
100
- }
101
- }
@@ -1,73 +0,0 @@
1
- // This provides the logic for:
2
- // - POST_AMBUSH_STARTED
3
- // - POST_AMBUSH_FINISHED
4
-
5
- import { ModCallback, RoomType } from "isaac-typescript-definitions";
6
- import { game } from "../cachedClasses";
7
- import { AmbushType } from "../enums/AmbushType";
8
- import { saveDataManager } from "../features/saveDataManager/exports";
9
- import { getRoomType } from "../functions/roomData";
10
- import {
11
- postAmbushFinishedFire,
12
- postAmbushFinishedHasSubscriptions,
13
- } from "./subscriptions/postAmbushFinished";
14
- import {
15
- postAmbushStartedFire,
16
- postAmbushStartedHasSubscriptions,
17
- } from "./subscriptions/postAmbushStarted";
18
-
19
- const v = {
20
- room: {
21
- ambushActive: false,
22
- ambushDone: false,
23
- },
24
- };
25
-
26
- /** @internal */
27
- export function postAmbushCallbacksInit(mod: Mod): void {
28
- saveDataManager("postAmbushCallbacks", v, hasSubscriptions);
29
-
30
- mod.AddCallback(ModCallback.POST_UPDATE, postUpdate); // 1
31
- }
32
-
33
- function hasSubscriptions() {
34
- return (
35
- postAmbushStartedHasSubscriptions() || postAmbushFinishedHasSubscriptions()
36
- );
37
- }
38
-
39
- // ModCallback.POST_UPDATE (1)
40
- function postUpdate() {
41
- if (!hasSubscriptions()) {
42
- return;
43
- }
44
-
45
- const room = game.GetRoom();
46
-
47
- if (!v.room.ambushActive) {
48
- const ambushActive = room.IsAmbushActive();
49
- if (ambushActive) {
50
- v.room.ambushActive = true;
51
-
52
- const ambushType = getAmbushType();
53
- postAmbushStartedFire(ambushType);
54
- }
55
- }
56
-
57
- if (!v.room.ambushDone) {
58
- const ambushDone = room.IsAmbushDone();
59
- if (ambushDone) {
60
- v.room.ambushDone = true;
61
-
62
- const ambushType = getAmbushType();
63
- postAmbushFinishedFire(ambushType);
64
- }
65
- }
66
- }
67
-
68
- function getAmbushType(): AmbushType {
69
- const roomType = getRoomType();
70
- return roomType === RoomType.BOSS_RUSH
71
- ? AmbushType.BOSS_RUSH
72
- : AmbushType.CHALLENGE_ROOM;
73
- }