isaacscript-common 29.4.0 → 29.5.1

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 (57) hide show
  1. package/dist/index.rollup.d.ts +57 -117
  2. package/dist/isaacscript-common.lua +1555 -1581
  3. package/dist/src/callbackClasses.d.ts +1 -1
  4. package/dist/src/callbackClasses.d.ts.map +1 -1
  5. package/dist/src/callbackClasses.lua +5 -5
  6. package/dist/src/callbacks.d.ts +21 -21
  7. package/dist/src/callbacks.lua +1 -1
  8. package/dist/src/classes/callbacks/PostGameEndFilter.d.ts +9 -0
  9. package/dist/src/classes/callbacks/PostGameEndFilter.d.ts.map +1 -0
  10. package/dist/src/classes/callbacks/PostGameEndFilter.lua +23 -0
  11. package/dist/src/classes/features/other/PickupIndexCreation.d.ts +4 -0
  12. package/dist/src/classes/features/other/PickupIndexCreation.d.ts.map +1 -1
  13. package/dist/src/classes/features/other/PreventCollectibleRotation.d.ts +6 -2
  14. package/dist/src/classes/features/other/PreventCollectibleRotation.d.ts.map +1 -1
  15. package/dist/src/classes/features/other/PreventCollectibleRotation.lua +39 -28
  16. package/dist/src/enums/ModCallbackCustom.d.ts +33 -38
  17. package/dist/src/enums/ModCallbackCustom.d.ts.map +1 -1
  18. package/dist/src/enums/ModCallbackCustom.lua +22 -22
  19. package/dist/src/features.d.ts.map +1 -1
  20. package/dist/src/features.lua +2 -2
  21. package/dist/src/functions/collectibles.d.ts +0 -52
  22. package/dist/src/functions/collectibles.d.ts.map +1 -1
  23. package/dist/src/functions/collectibles.lua +0 -68
  24. package/dist/src/functions/playerIndex.d.ts +3 -3
  25. package/dist/src/functions/playerIndex.lua +3 -3
  26. package/dist/src/functions/rooms.d.ts +7 -0
  27. package/dist/src/functions/rooms.d.ts.map +1 -1
  28. package/dist/src/functions/rooms.lua +5 -0
  29. package/dist/src/index.d.ts +0 -1
  30. package/dist/src/index.d.ts.map +1 -1
  31. package/dist/src/interfaces/private/AddCallbackParametersCustom.d.ts +4 -4
  32. package/dist/src/interfaces/private/AddCallbackParametersCustom.d.ts.map +1 -1
  33. package/dist/src/shouldFire.d.ts +0 -1
  34. package/dist/src/shouldFire.d.ts.map +1 -1
  35. package/dist/src/shouldFire.lua +0 -5
  36. package/package.json +2 -2
  37. package/src/callbackClasses.ts +1 -1
  38. package/src/callbacks.ts +1 -1
  39. package/src/classes/callbacks/PostGameEndFilter.ts +22 -0
  40. package/src/classes/features/other/PickupIndexCreation.ts +4 -0
  41. package/src/classes/features/other/PreventCollectibleRotation.ts +58 -50
  42. package/src/enums/ModCallbackCustom.ts +14 -19
  43. package/src/features.ts +7 -5
  44. package/src/functions/collectibles.ts +0 -79
  45. package/src/functions/playerIndex.ts +3 -3
  46. package/src/functions/rooms.ts +7 -0
  47. package/src/index.ts +0 -1
  48. package/src/interfaces/private/AddCallbackParametersCustom.ts +5 -5
  49. package/src/shouldFire.ts +0 -13
  50. package/dist/src/classes/callbacks/PostCollectibleInitFirst.d.ts +0 -15
  51. package/dist/src/classes/callbacks/PostCollectibleInitFirst.d.ts.map +0 -1
  52. package/dist/src/classes/callbacks/PostCollectibleInitFirst.lua +0 -36
  53. package/dist/src/types/CollectibleIndex.d.ts +0 -18
  54. package/dist/src/types/CollectibleIndex.d.ts.map +0 -1
  55. package/dist/src/types/CollectibleIndex.lua +0 -2
  56. package/src/classes/callbacks/PostCollectibleInitFirst.ts +0 -44
  57. package/src/types/CollectibleIndex.ts +0 -17
@@ -144,10 +144,6 @@ declare interface AddCallbackParametersCustom {
144
144
  callback: (collectible: EntityPickupCollectible, oldCollectibleType: CollectibleType) => void,
145
145
  collectibleType?: CollectibleType
146
146
  ];
147
- [ModCallbackCustom.POST_COLLECTIBLE_INIT_FIRST]: [
148
- callback: (collectible: EntityPickupCollectible) => void,
149
- collectibleType?: CollectibleType
150
- ];
151
147
  [ModCallbackCustom.POST_CURSED_TELEPORT]: [
152
148
  callback: (player: EntityPlayer) => void,
153
149
  playerVariant?: PlayerVariant,
@@ -235,6 +231,10 @@ declare interface AddCallbackParametersCustom {
235
231
  [ModCallbackCustom.POST_FLIP]: [
236
232
  callback: (newLazarus: EntityPlayer, oldLazarus: EntityPlayer) => void
237
233
  ];
234
+ [ModCallbackCustom.POST_GAME_END_FILTER]: [
235
+ callback: (isGameOver: boolean) => void,
236
+ isGameOver?: boolean
237
+ ];
238
238
  [ModCallbackCustom.POST_GAME_STARTED_REORDERED]: [
239
239
  callback: (isContinued: boolean) => void,
240
240
  isContinued: boolean | undefined
@@ -1509,24 +1509,6 @@ export declare function collectibleHasCacheFlag(collectibleOrCollectibleType: En
1509
1509
 
1510
1510
  export declare function collectibleHasTag(collectibleType: CollectibleType, tag: ItemConfigTag): boolean;
1511
1511
 
1512
- /**
1513
- * `CollectibleIndex` is a specific type of string that represents a unique identifier for a
1514
- * collectible. Mods can signify that data structures handle collectibles by using this type.
1515
- *
1516
- * For more information, see the documentation for the `getCollectibleIndex` function.
1517
- *
1518
- * For example:
1519
- *
1520
- * ```ts
1521
- * const collectiblesNameMap = new Map<CollectibleIndex, string>();
1522
- * ```
1523
- *
1524
- * This type is branded for extra type safety.
1525
- */
1526
- export declare type CollectibleIndex = string & {
1527
- readonly __collectibleIndexBrand: symbol;
1528
- };
1529
-
1530
1512
  declare class CollectibleItemPoolType extends Feature {
1531
1513
  private pickupIndexCreation;
1532
1514
  private postPickupInitCollectible;
@@ -4677,58 +4659,6 @@ export declare function getCollectibleDevilHeartPrice(collectibleOrCollectibleTy
4677
4659
  */
4678
4660
  export declare function getCollectibleGfxFilename(collectibleOrCollectibleType: EntityPickup | CollectibleType | -1): string;
4679
4661
 
4680
- /**
4681
- * Mods may have to keep track of data relating to a collectible. Finding an index for these kinds
4682
- * of data structures is difficult, since collectibles are respawned every time a player re-enters a
4683
- * room (like all other pickups), so the `PtrHash` will change.
4684
- *
4685
- * Use this function to get a unique index for a collectible to use in these data structures.
4686
- *
4687
- * If your mod is upgraded, then you should use the `getPickupIndex` function instead, as it is more
4688
- * general purpose and less prone to error (but relies on stateful tracking of pickups as the run
4689
- * progresses).
4690
- *
4691
- * Collectibles are a special case of pickups: they cannot be pushed around. (They actually can be
4692
- * pushed, but usually will stay on the same grid index.) Thus, it is possible to generate a
4693
- * somewhat reliable non-stateful index for collectibles. We use a 4-tuple of the room list index,
4694
- * the grid index of the collectible in the room, the collectible's `SubType`, and the collectible's
4695
- * `InitSeed`.
4696
- *
4697
- * Collectibles that are shifted by Tainted Isaac's mechanic will have unique collectible indexes
4698
- * because the `SubType` is different. (The collectible entities share the same `InitSeed` and
4699
- * `PtrHash`.)
4700
- *
4701
- * Collectibles that are rolled (with e.g. a D6) will have unique collectible indexes because the
4702
- * `SubType` and `InitSeed` are different. If you want to track collectibles independently of any
4703
- * rerolls, then you can use the `PtrHash` as an index instead. (The `PtrHash` will not persist
4704
- * between rooms, however.)
4705
- *
4706
- * Note that:
4707
- * - The grid index is a necessary part of the collectible index because Diplopia and Crooked Penny
4708
- * can cause two or more collectibles with the same `SubType` and `InitSeed` to exist in the same
4709
- * room.
4710
- * - This index will fail in the case where the player uses Diplopia or a successful Crooked Penny
4711
- * seven or more times in the same room, since that will cause two or more collectibles with the
4712
- * same grid index, `SubType`, and `InitSeed` to exist. (More than seven is required in non-1x1
4713
- * rooms.)
4714
- * - The `SubType` is a necessary part of the collectible index because Tainted Isaac will
4715
- * continuously cause collectibles to morph into new sub-types with the same `InitSeed`.
4716
- * - Using a collectible's position as part of the index is problematic, since players can push a
4717
- * pedestal. (Even using the grid index does not solve this problem, since it is possible in
4718
- * certain cases for collectibles to be spawned at a position that is not aligned with the grid,
4719
- * and the pedestal pushed to an adjacent tile, but this case should be extremely rare.)
4720
- * - Mega Chests spawn two collectibles on the exact same position. However, both of them will have
4721
- * a different `InitSeed`, so this is not a problem for this indexing scheme.
4722
- * - The indexing scheme used is different for collectibles that are inside of a Treasure Room or
4723
- * Boss Room, in order to handle the case of the player seeing the same collectible again in a
4724
- * post-Ascent Treasure Room or Boss Room. A 5-tuple of stage, stage type, grid index, `SubType`,
4725
- * and `InitSeed` is used in this case. (Using the room list index or the room grid index is not
4726
- * suitable for this purpose, since both of these values can change in the post-Ascent rooms.)
4727
- * Even though Treasure Rooms and Boss Rooms are grouped together in this scheme, there probably
4728
- * will not be collectibles with the same grid index, SubType, and InitSeed.
4729
- */
4730
- export declare function getCollectibleIndex(collectible: EntityPickup): CollectibleIndex;
4731
-
4732
4662
  /**
4733
4663
  * Helper function to get the initial amount of charges that a collectible has. Returns 0 if the
4734
4664
  * provided collectible type was not valid.
@@ -5851,9 +5781,9 @@ export declare function getPlayerHearts(player: EntityPlayer): int;
5851
5781
  * (1). This works even if the player does not have any Sad Onions.
5852
5782
  *
5853
5783
  * Note that by default, this returns the same index for both The Forgotten and The Soul. (Even
5854
- * though they are technically different characters, they share the same inventory and InitSeed.) If
5855
- * this is not desired, pass true for the `differentiateForgottenAndSoul` argument, and the RNG of
5856
- * Spoon Bender (3) will be used for The Soul.
5784
+ * though they are technically different characters, they share the same inventory and `InitSeed`.)
5785
+ * If this is not desired, pass true for the `differentiateForgottenAndSoul` argument, and the RNG
5786
+ * of Spoon Bender (3) will be used for The Soul.
5857
5787
  *
5858
5788
  * Also note that this index does not work in the `POST_PLAYER_INIT` function for players 2 through
5859
5789
  * 4. With that said, in almost all cases, you should be lazy-initializing your data structures in
@@ -7360,6 +7290,13 @@ export declare function inDevilsCrownTreasureRoom(): boolean;
7360
7290
 
7361
7291
  export declare function inDimension(dimension: Dimension): boolean;
7362
7292
 
7293
+ /**
7294
+ * Helper function to detect if the current room is a Double Trouble Boss Room.
7295
+ *
7296
+ * This is performed by checking for the string "Double Trouble" inside of the room name. The
7297
+ * vanilla game uses this convention for every Double Trouble Boss Room. Note that this method might
7298
+ * fail for mods that add extra Double Trouble rooms but do not follow the convention.
7299
+ */
7363
7300
  export declare function inDoubleTrouble(): boolean;
7364
7301
 
7365
7302
  export declare function inGenesisRoom(): boolean;
@@ -9512,24 +9449,6 @@ export declare enum ModCallbackCustom {
9512
9449
  * ```
9513
9450
  */
9514
9451
  POST_COLLECTIBLE_EMPTY = 12,
9515
- /**
9516
- * Fires from the `POST_PICKUP_INIT` callback on the first time that a player has seen the
9517
- * respective collectible on the run. For more details on how this is calculated, see the
9518
- * documentation for the `getCollectibleIndex` helper function.
9519
- *
9520
- * This callback is useful because collectibles will despawn upon leaving the room and respawn
9521
- * upon re-entering the room. Additionally, when playing as Tainted Isaac, the `POST_PICKUP_INIT`
9522
- * callback will fire every time the item shifts.
9523
- *
9524
- * When registering the callback with the `ModUpgraded.AddCallbackCustom` method:
9525
- * - You can provide an optional third argument that will make the callback only fire if it
9526
- * matches the `CollectibleType` provided.
9527
- *
9528
- * ```ts
9529
- * function postCollectibleInitLate(collectible: EntityPickupCollectible): void {}
9530
- * ```
9531
- */
9532
- POST_COLLECTIBLE_INIT_FIRST = 13,
9533
9452
  /**
9534
9453
  * Fires from the `POST_PLAYER_RENDER` callback on the first frame that the "TeleportUp" animation
9535
9454
  * begins playing after a player triggers a Cursed Eye teleport or a Cursed Skull teleport. (Both
@@ -9545,7 +9464,7 @@ export declare enum ModCallbackCustom {
9545
9464
  * function postCursedTeleport(player: EntityPlayer): void {}
9546
9465
  * ```
9547
9466
  */
9548
- POST_CURSED_TELEPORT = 14,
9467
+ POST_CURSED_TELEPORT = 13,
9549
9468
  /**
9550
9469
  * Fires from the `POST_PLAYER_UPDATE` callback after the player has finished the death animation,
9551
9470
  * has teleported to the previous room, and is ready to play the animation for the modded revival
@@ -9563,7 +9482,7 @@ export declare enum ModCallbackCustom {
9563
9482
  * function postCustomRevive(player: EntityPlayer, revivalType: int): void {}
9564
9483
  * ```
9565
9484
  */
9566
- POST_CUSTOM_REVIVE = 15,
9485
+ POST_CUSTOM_REVIVE = 14,
9567
9486
  /**
9568
9487
  * Fires from the `EFFECT_POST_UPDATE` callback after a player has entered the range of a Dice
9569
9488
  * Room floor.
@@ -9579,7 +9498,7 @@ export declare enum ModCallbackCustom {
9579
9498
  * ): void {}
9580
9499
  * ```
9581
9500
  */
9582
- POST_DICE_ROOM_ACTIVATED = 16,
9501
+ POST_DICE_ROOM_ACTIVATED = 15,
9583
9502
  /**
9584
9503
  * Fires from the `POST_RENDER` callback on every frame that a door exists.
9585
9504
  *
@@ -9591,7 +9510,7 @@ export declare enum ModCallbackCustom {
9591
9510
  * function postDoorRender(door: GridEntityDoor): void {}
9592
9511
  * ```
9593
9512
  */
9594
- POST_DOOR_RENDER = 17,
9513
+ POST_DOOR_RENDER = 16,
9595
9514
  /**
9596
9515
  * Fires from the `POST_UPDATE` callback on every frame that a door exists.
9597
9516
  *
@@ -9603,7 +9522,7 @@ export declare enum ModCallbackCustom {
9603
9522
  * function postDoorUpdate(door: GridEntityDoor): void {}
9604
9523
  * ```
9605
9524
  */
9606
- POST_DOOR_UPDATE = 18,
9525
+ POST_DOOR_UPDATE = 17,
9607
9526
  /**
9608
9527
  * The exact same thing as the vanilla `POST_EFFECT_INIT` callback, except this callback allows
9609
9528
  * you to specify extra arguments for additional filtration.
@@ -9618,7 +9537,7 @@ export declare enum ModCallbackCustom {
9618
9537
  * function postEffectInitFilter(effect: EntityEffect): void {}
9619
9538
  * ```
9620
9539
  */
9621
- POST_EFFECT_INIT_FILTER = 19,
9540
+ POST_EFFECT_INIT_FILTER = 18,
9622
9541
  /**
9623
9542
  * Fires on the first `POST_EFFECT_UPDATE` frame for each effect.
9624
9543
  *
@@ -9635,7 +9554,7 @@ export declare enum ModCallbackCustom {
9635
9554
  * function postEffectInitLate(effect: EntityEffect): void {}
9636
9555
  * ```
9637
9556
  */
9638
- POST_EFFECT_INIT_LATE = 20,
9557
+ POST_EFFECT_INIT_LATE = 19,
9639
9558
  /**
9640
9559
  * The exact same thing as the vanilla `POST_EFFECT_RENDER` callback, except this callback allows
9641
9560
  * you to specify extra arguments for additional filtration.
@@ -9650,7 +9569,7 @@ export declare enum ModCallbackCustom {
9650
9569
  * function postEffectRenderFilter(effect: EntityEffect, renderOffset: Vector): void {}
9651
9570
  * ```
9652
9571
  */
9653
- POST_EFFECT_RENDER_FILTER = 21,
9572
+ POST_EFFECT_RENDER_FILTER = 20,
9654
9573
  /**
9655
9574
  * Fires from the `POST_EFFECT_UPDATE` callback when an effect's state has changed from what it
9656
9575
  * was on the previous frame. (In this context, "state" refers to the `EntityEffect.State` field.)
@@ -9669,7 +9588,7 @@ export declare enum ModCallbackCustom {
9669
9588
  * ): void {}
9670
9589
  * ```
9671
9590
  */
9672
- POST_EFFECT_STATE_CHANGED = 22,
9591
+ POST_EFFECT_STATE_CHANGED = 21,
9673
9592
  /**
9674
9593
  * The exact same thing as the vanilla `POST_EFFECT_UPDATE` callback, except this callback allows
9675
9594
  * you to specify extra arguments for additional filtration.
@@ -9684,7 +9603,7 @@ export declare enum ModCallbackCustom {
9684
9603
  * function postEffectUpdateFilter(effect: EntityEffect): void {}
9685
9604
  * ```
9686
9605
  */
9687
- POST_EFFECT_UPDATE_FILTER = 23,
9606
+ POST_EFFECT_UPDATE_FILTER = 22,
9688
9607
  /**
9689
9608
  * The exact same thing as the vanilla `POST_ENTITY_KILL` callback, except this callback allows
9690
9609
  * you to specify extra arguments for additional filtration.
@@ -9701,7 +9620,7 @@ export declare enum ModCallbackCustom {
9701
9620
  * function postEntityKillFilter(entity: Entity): void {}
9702
9621
  * ```
9703
9622
  */
9704
- POST_ENTITY_KILL_FILTER = 24,
9623
+ POST_ENTITY_KILL_FILTER = 23,
9705
9624
  /**
9706
9625
  * Fires one `POST_UPDATE` frame after the player has used the Esau Jr. item. (The player is not
9707
9626
  * updated to the new character until a game frame has passed.)
@@ -9710,7 +9629,7 @@ export declare enum ModCallbackCustom {
9710
9629
  * function postEsauJr(player: EntityPlayer): void {}
9711
9630
  * ```
9712
9631
  */
9713
- POST_ESAU_JR = 25,
9632
+ POST_ESAU_JR = 24,
9714
9633
  /**
9715
9634
  * The exact same thing as the vanilla `POST_FAMILIAR_INIT` callback, except this callback allows
9716
9635
  * you to specify extra arguments for additional filtration.
@@ -9725,7 +9644,7 @@ export declare enum ModCallbackCustom {
9725
9644
  * function postFamiliarInitFilter(familiar: EntityFamiliar): void {}
9726
9645
  * ```
9727
9646
  */
9728
- POST_FAMILIAR_INIT_FILTER = 26,
9647
+ POST_FAMILIAR_INIT_FILTER = 25,
9729
9648
  /**
9730
9649
  * Fires on the first `FAMILIAR_UPDATE` frame for each familiar.
9731
9650
  *
@@ -9742,7 +9661,7 @@ export declare enum ModCallbackCustom {
9742
9661
  * function postFamiliarInitLate(familiar: EntityFamiliar): void {}
9743
9662
  * ```
9744
9663
  */
9745
- POST_FAMILIAR_INIT_LATE = 27,
9664
+ POST_FAMILIAR_INIT_LATE = 26,
9746
9665
  /**
9747
9666
  * The exact same thing as the vanilla `POST_FAMILIAR_RENDER` callback, except this callback
9748
9667
  * allows you to specify extra arguments for additional filtration.
@@ -9757,7 +9676,7 @@ export declare enum ModCallbackCustom {
9757
9676
  * function postFamiliarRenderFilter(familiar: EntityFamiliar, renderOffset: Vector): void {}
9758
9677
  * ```
9759
9678
  */
9760
- POST_FAMILIAR_RENDER_FILTER = 28,
9679
+ POST_FAMILIAR_RENDER_FILTER = 27,
9761
9680
  /**
9762
9681
  * Fires from the `POST_FAMILIAR_UPDATE` callback when a familiar's state has changed from what it
9763
9682
  * was on the previous frame. (In this context, "state" refers to the `EntityFamiliar.State`
@@ -9777,7 +9696,7 @@ export declare enum ModCallbackCustom {
9777
9696
  * ): void {}
9778
9697
  * ```
9779
9698
  */
9780
- POST_FAMILIAR_STATE_CHANGED = 29,
9699
+ POST_FAMILIAR_STATE_CHANGED = 28,
9781
9700
  /**
9782
9701
  * The exact same thing as the vanilla `POST_FAMILIAR_UPDATE` callback, except this callback
9783
9702
  * allows you to specify extra arguments for additional filtration.
@@ -9792,7 +9711,7 @@ export declare enum ModCallbackCustom {
9792
9711
  * function postFamiliarUpdateFilter(familiar: EntityFamiliar): void {}
9793
9712
  * ```
9794
9713
  */
9795
- POST_FAMILIAR_UPDATE_FILTER = 30,
9714
+ POST_FAMILIAR_UPDATE_FILTER = 29,
9796
9715
  /**
9797
9716
  * Fires one `POST_UPDATE` frame after the player has first used the Esau Jr. item. (The player is
9798
9717
  * not updated to the new character until a game frame has passed.)
@@ -9804,7 +9723,7 @@ export declare enum ModCallbackCustom {
9804
9723
  * function postFirstEsauJr(player: EntityPlayer): void {}
9805
9724
  * ```
9806
9725
  */
9807
- POST_FIRST_ESAU_JR = 31,
9726
+ POST_FIRST_ESAU_JR = 30,
9808
9727
  /**
9809
9728
  * Fires after the player has used the Flip item for the first time. Unlike the vanilla `USE_ITEM`
9810
9729
  * callback, this callback will return the player object for the new Lazarus (not the one who used
@@ -9817,7 +9736,7 @@ export declare enum ModCallbackCustom {
9817
9736
  * function postFirstFlip(newLazarus: EntityPlayer, oldLazarus: EntityPlayer): void {}
9818
9737
  * ```
9819
9738
  */
9820
- POST_FIRST_FLIP = 32,
9739
+ POST_FIRST_FLIP = 31,
9821
9740
  /**
9822
9741
  * Fires after the player has used the Flip item. Unlike the vanilla `USE_ITEM` callback, this
9823
9742
  * callback will return the player object for the new Lazarus (not the one who used the Flip
@@ -9830,7 +9749,20 @@ export declare enum ModCallbackCustom {
9830
9749
  * function postFlip(newLazarus: EntityPlayer, oldLazarus: EntityPlayer): void {}
9831
9750
  * ```
9832
9751
  */
9833
- POST_FLIP = 33,
9752
+ POST_FLIP = 32,
9753
+ /**
9754
+ * The exact same thing as the vanilla `POST_GAME_END` callback, except this callback allows you
9755
+ * to specify extra arguments for additional filtration.
9756
+ *
9757
+ * When registering the callback with the `ModUpgraded.AddCallbackCustom` method:
9758
+ * - You can provide an optional third argument that will make the callback only fire if it
9759
+ * matches the `isGameOver` value provided.
9760
+ *
9761
+ * ```ts
9762
+ * function postGameEndFilter(isGameOver: boolean): void {}
9763
+ * ```
9764
+ */
9765
+ POST_GAME_END_FILTER = 33,
9834
9766
  /**
9835
9767
  * Similar to the vanilla callback of the same name, but fires in the correct order with respect
9836
9768
  * to the `POST_NEW_LEVEL` and the `POST_NEW_ROOM` callbacks:
@@ -13196,6 +13128,10 @@ declare class PickupIndexCreation extends Feature {
13196
13128
  *
13197
13129
  * Tracking pickups requires stateful tracking, so using pickup indexes requires an upgraded mod.
13198
13130
  *
13131
+ * Note that the pickup index will not change:
13132
+ * - When a pickup is rolled with e.g. D6 or D20.
13133
+ * - When an item is "rotated" via e.g. Tainted Isaac's mechanic.
13134
+ *
13199
13135
  * In order to use this function, you must upgrade your mod with
13200
13136
  * `ISCFeature.PICKUP_INDEX_CREATION`.
13201
13137
  */
@@ -13596,9 +13532,13 @@ declare class PreventChildEntities extends Feature {
13596
13532
  }
13597
13533
 
13598
13534
  declare class PreventCollectibleRotation extends Feature {
13535
+ private pickupIndexCreation;
13536
+ /**
13537
+ * Soul of Isaac causes items to flip. We assume that the player deliberately wants to roll a
13538
+ * quest item, so we delete all tracked items in the current room.
13539
+ */
13599
13540
  private useCardSoulOfIsaac;
13600
- private postPickupUpdateCollectible;
13601
- private checkCollectibleRotated;
13541
+ private postPickupChanged;
13602
13542
  /**
13603
13543
  * Helper function to prevent a collectible from being affected by Tainted Isaac's rotation
13604
13544
  * mechanic. (This mechanic also happens from Glitched Crown and Binge Eater.) This is useful