isaacscript-common 15.4.5 → 15.4.6

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.
package/dist/index.d.ts CHANGED
@@ -11407,6 +11407,7 @@ declare class PlayerCollectibleDetection extends Feature {
11407
11407
  */
11408
11408
  private checkActiveItemsChanged;
11409
11409
  private entityTakeDmgPlayer;
11410
+ private postItemPickup;
11410
11411
  }
11411
11412
 
11412
11413
  export declare function playerConvertBlackHeartsToSoulHearts(player: EntityPlayer): void;
@@ -1,6 +1,6 @@
1
1
  --[[
2
2
 
3
- isaacscript-common 15.4.5
3
+ isaacscript-common 15.4.6
4
4
 
5
5
  This is the "isaacscript-common" library, which was created with the IsaacScript tool.
6
6
 
@@ -32111,6 +32111,8 @@ local PlayerForm = ____isaac_2Dtypescript_2Ddefinitions.PlayerForm
32111
32111
  local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
32112
32112
  local ____cachedClasses = require("src.core.cachedClasses")
32113
32113
  local itemConfig = ____cachedClasses.itemConfig
32114
+ local ____constants = require("src.core.constants")
32115
+ local FIRST_GLITCHED_COLLECTIBLE_TYPE = ____constants.FIRST_GLITCHED_COLLECTIBLE_TYPE
32114
32116
  local ____decorators = require("src.decorators")
32115
32117
  local Exported = ____decorators.Exported
32116
32118
  local ____ISCFeature = require("src.enums.ISCFeature")
@@ -32435,6 +32437,22 @@ function ModdedElementSets.prototype.getPlayerCollectibleMap(self, player)
32435
32437
  collectibleMap:set(collectibleType, numCollectibles)
32436
32438
  end
32437
32439
  end
32440
+ if player:HasCollectible(CollectibleType.TMTRAINER) then
32441
+ local collectibleType = FIRST_GLITCHED_COLLECTIBLE_TYPE
32442
+ local itemConfigItem
32443
+ repeat
32444
+ do
32445
+ itemConfigItem = itemConfig:GetCollectible(collectibleType)
32446
+ if itemConfigItem ~= nil then
32447
+ local hasCollectibles = player:HasCollectible(collectibleType, true)
32448
+ if hasCollectibles then
32449
+ collectibleMap:set(collectibleType, 1)
32450
+ end
32451
+ end
32452
+ collectibleType = collectibleType - 1
32453
+ end
32454
+ until not (itemConfigItem ~= nil)
32455
+ end
32438
32456
  return collectibleMap
32439
32457
  end
32440
32458
  function ModdedElementSets.prototype.getPlayerCollectiblesWithCacheFlag(self, player, cacheFlag)
@@ -32593,10 +32611,13 @@ local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot
32593
32611
  local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
32594
32612
  local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag
32595
32613
  local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
32614
+ local ItemType = ____isaac_2Dtypescript_2Ddefinitions.ItemType
32596
32615
  local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
32597
32616
  local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
32598
32617
  local ____ISCFeature = require("src.enums.ISCFeature")
32599
32618
  local ISCFeature = ____ISCFeature.ISCFeature
32619
+ local ____ModCallbackCustom = require("src.enums.ModCallbackCustom")
32620
+ local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
32600
32621
  local ____array = require("src.functions.array")
32601
32622
  local arrayEquals = ____array.arrayEquals
32602
32623
  local ____enums = require("src.functions.enums")
@@ -32669,8 +32690,17 @@ function PlayerCollectibleDetection.prototype.____constructor(self, postPlayerCo
32669
32690
  end)
32670
32691
  return nil
32671
32692
  end
32693
+ self.postItemPickup = function(____, player, pickingUpItem)
32694
+ if pickingUpItem.itemType == ItemType.TRINKET or pickingUpItem.itemType == ItemType.NULL then
32695
+ return
32696
+ end
32697
+ local newCollectibleCount = player:GetCollectibleCount()
32698
+ mapSetPlayer(nil, self.v.run.playersCollectibleCount, player, newCollectibleCount)
32699
+ self:updateCollectibleMapAndFire(player, 1)
32700
+ end
32672
32701
  self.featuresUsed = {ISCFeature.MODDED_ELEMENT_SETS, ISCFeature.RUN_IN_N_FRAMES}
32673
32702
  self.callbacksUsed = {{ModCallback.POST_USE_ITEM, {self.useItemD4, CollectibleType.D4}}, {ModCallback.POST_PEFFECT_UPDATE, {self.postPEffectUpdate}}, {ModCallback.ENTITY_TAKE_DMG, {self.entityTakeDmgPlayer, EntityType.PLAYER}}}
32703
+ self.customCallbacksUsed = {{ModCallbackCustom.POST_ITEM_PICKUP, {self.postItemPickup}}}
32674
32704
  self.postPlayerCollectibleAdded = postPlayerCollectibleAdded
32675
32705
  self.postPlayerCollectibleRemoved = postPlayerCollectibleRemoved
32676
32706
  self.moddedElementSets = moddedElementSets
@@ -45,5 +45,6 @@ export declare class PlayerCollectibleDetection extends Feature {
45
45
  */
46
46
  private checkActiveItemsChanged;
47
47
  private entityTakeDmgPlayer;
48
+ private postItemPickup;
48
49
  }
49
50
  //# sourceMappingURL=PlayerCollectibleDetection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlayerCollectibleDetection.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/callbackLogic/PlayerCollectibleDetection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,eAAe,EAKhB,MAAM,8BAA8B,CAAC;AAWtC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,EAAE,4BAA4B,EAAE,MAAM,8CAA8C,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,0BAA2B,SAAQ,OAAO;IACrC,CAAC;;;;;;MAYf;IAEF,OAAO,CAAC,0BAA0B,CAA6B;IAC/D,OAAO,CAAC,4BAA4B,CAA+B;IACnE,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,YAAY,CAAe;gBAGjC,0BAA0B,EAAE,0BAA0B,EACtD,4BAA4B,EAAE,4BAA4B,EAC1D,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,YAAY;IAwB5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,2BAA2B;IA0CnC,OAAO,CAAC,SAAS,CAqBf;IAGF,OAAO,CAAC,iBAAiB,CAqBvB;IAEF;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,mBAAmB,CAgCzB;CACH"}
1
+ {"version":3,"file":"PlayerCollectibleDetection.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/callbackLogic/PlayerCollectibleDetection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,eAAe,EAMhB,MAAM,8BAA8B,CAAC;AAatC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,EAAE,4BAA4B,EAAE,MAAM,8CAA8C,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,0BAA2B,SAAQ,OAAO;IACrC,CAAC;;;;;;MAYf;IAEF,OAAO,CAAC,0BAA0B,CAA6B;IAC/D,OAAO,CAAC,4BAA4B,CAA+B;IACnE,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,YAAY,CAAe;gBAGjC,0BAA0B,EAAE,0BAA0B,EACtD,4BAA4B,EAAE,4BAA4B,EAC1D,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,YAAY;IA4B5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,2BAA2B;IA0CnC,OAAO,CAAC,SAAS,CAqBf;IAGF,OAAO,CAAC,iBAAiB,CAqBvB;IAEF;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,mBAAmB,CAgCzB;IAKF,OAAO,CAAC,cAAc,CAmBpB;CACH"}
@@ -16,10 +16,13 @@ local ActiveSlot = ____isaac_2Dtypescript_2Ddefinitions.ActiveSlot
16
16
  local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
17
17
  local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag
18
18
  local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
19
+ local ItemType = ____isaac_2Dtypescript_2Ddefinitions.ItemType
19
20
  local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
20
21
  local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
21
22
  local ____ISCFeature = require("src.enums.ISCFeature")
22
23
  local ISCFeature = ____ISCFeature.ISCFeature
24
+ local ____ModCallbackCustom = require("src.enums.ModCallbackCustom")
25
+ local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
23
26
  local ____array = require("src.functions.array")
24
27
  local arrayEquals = ____array.arrayEquals
25
28
  local ____enums = require("src.functions.enums")
@@ -92,8 +95,17 @@ function PlayerCollectibleDetection.prototype.____constructor(self, postPlayerCo
92
95
  end)
93
96
  return nil
94
97
  end
98
+ self.postItemPickup = function(____, player, pickingUpItem)
99
+ if pickingUpItem.itemType == ItemType.TRINKET or pickingUpItem.itemType == ItemType.NULL then
100
+ return
101
+ end
102
+ local newCollectibleCount = player:GetCollectibleCount()
103
+ mapSetPlayer(nil, self.v.run.playersCollectibleCount, player, newCollectibleCount)
104
+ self:updateCollectibleMapAndFire(player, 1)
105
+ end
95
106
  self.featuresUsed = {ISCFeature.MODDED_ELEMENT_SETS, ISCFeature.RUN_IN_N_FRAMES}
96
107
  self.callbacksUsed = {{ModCallback.POST_USE_ITEM, {self.useItemD4, CollectibleType.D4}}, {ModCallback.POST_PEFFECT_UPDATE, {self.postPEffectUpdate}}, {ModCallback.ENTITY_TAKE_DMG, {self.entityTakeDmgPlayer, EntityType.PLAYER}}}
108
+ self.customCallbacksUsed = {{ModCallbackCustom.POST_ITEM_PICKUP, {self.postItemPickup}}}
97
109
  self.postPlayerCollectibleAdded = postPlayerCollectibleAdded
98
110
  self.postPlayerCollectibleRemoved = postPlayerCollectibleRemoved
99
111
  self.moddedElementSets = moddedElementSets
@@ -1 +1 @@
1
- {"version":3,"file":"ModdedElementSets.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/other/ModdedElementSets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModdedElementSets.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/other/ModdedElementSets.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,8 @@ local PlayerForm = ____isaac_2Dtypescript_2Ddefinitions.PlayerForm
15
15
  local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
16
16
  local ____cachedClasses = require("src.core.cachedClasses")
17
17
  local itemConfig = ____cachedClasses.itemConfig
18
+ local ____constants = require("src.core.constants")
19
+ local FIRST_GLITCHED_COLLECTIBLE_TYPE = ____constants.FIRST_GLITCHED_COLLECTIBLE_TYPE
18
20
  local ____decorators = require("src.decorators")
19
21
  local Exported = ____decorators.Exported
20
22
  local ____ISCFeature = require("src.enums.ISCFeature")
@@ -339,6 +341,22 @@ function ModdedElementSets.prototype.getPlayerCollectibleMap(self, player)
339
341
  collectibleMap:set(collectibleType, numCollectibles)
340
342
  end
341
343
  end
344
+ if player:HasCollectible(CollectibleType.TMTRAINER) then
345
+ local collectibleType = FIRST_GLITCHED_COLLECTIBLE_TYPE
346
+ local itemConfigItem
347
+ repeat
348
+ do
349
+ itemConfigItem = itemConfig:GetCollectible(collectibleType)
350
+ if itemConfigItem ~= nil then
351
+ local hasCollectibles = player:HasCollectible(collectibleType, true)
352
+ if hasCollectibles then
353
+ collectibleMap:set(collectibleType, 1)
354
+ end
355
+ end
356
+ collectibleType = collectibleType - 1
357
+ end
358
+ until not (itemConfigItem ~= nil)
359
+ end
342
360
  return collectibleMap
343
361
  end
344
362
  function ModdedElementSets.prototype.getPlayerCollectiblesWithCacheFlag(self, player, cacheFlag)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "15.4.5",
3
+ "version": "15.4.6",
4
4
  "description": "Helper functions and features for IsaacScript mods.",
5
5
  "keywords": [
6
6
  "isaac",
@@ -3,10 +3,12 @@ import {
3
3
  CollectibleType,
4
4
  DamageFlag,
5
5
  EntityType,
6
+ ItemType,
6
7
  ModCallback,
7
8
  PlayerType,
8
9
  } from "isaac-typescript-definitions";
9
10
  import { ISCFeature } from "../../../enums/ISCFeature";
11
+ import { ModCallbackCustom } from "../../../enums/ModCallbackCustom";
10
12
  import { arrayEquals } from "../../../functions/array";
11
13
  import { getEnumValues } from "../../../functions/enums";
12
14
  import { hasFlag } from "../../../functions/flag";
@@ -16,6 +18,7 @@ import {
16
18
  } from "../../../functions/playerDataStructures";
17
19
  import { getPlayerFromPtr } from "../../../functions/players";
18
20
  import { repeat } from "../../../functions/utils";
21
+ import { PickingUpItem } from "../../../types/PickingUpItem";
19
22
  import { PlayerIndex } from "../../../types/PlayerIndex";
20
23
  import { PostPlayerCollectibleAdded } from "../../callbacks/PostPlayerCollectibleAdded";
21
24
  import { PostPlayerCollectibleRemoved } from "../../callbacks/PostPlayerCollectibleRemoved";
@@ -66,6 +69,10 @@ export class PlayerCollectibleDetection extends Feature {
66
69
  ], // 11
67
70
  ];
68
71
 
72
+ this.customCallbacksUsed = [
73
+ [ModCallbackCustom.POST_ITEM_PICKUP, [this.postItemPickup]],
74
+ ];
75
+
69
76
  this.postPlayerCollectibleAdded = postPlayerCollectibleAdded;
70
77
  this.postPlayerCollectibleRemoved = postPlayerCollectibleRemoved;
71
78
  this.moddedElementSets = moddedElementSets;
@@ -250,4 +257,28 @@ export class PlayerCollectibleDetection extends Feature {
250
257
 
251
258
  return undefined;
252
259
  };
260
+
261
+ // ModCallbackCustom.POST_ITEM_PICKUP
262
+ // We need to handle TMTRAINER collectibles, since they do not cause the player's collectible
263
+ // count to change.
264
+ private postItemPickup = (
265
+ player: EntityPlayer,
266
+ pickingUpItem: PickingUpItem,
267
+ ) => {
268
+ if (
269
+ pickingUpItem.itemType === ItemType.TRINKET ||
270
+ pickingUpItem.itemType === ItemType.NULL
271
+ ) {
272
+ return;
273
+ }
274
+
275
+ const newCollectibleCount = player.GetCollectibleCount();
276
+ mapSetPlayer(
277
+ this.v.run.playersCollectibleCount,
278
+ player,
279
+ newCollectibleCount,
280
+ );
281
+
282
+ this.updateCollectibleMapAndFire(player, 1);
283
+ };
253
284
  }
@@ -6,6 +6,7 @@ import {
6
6
  TrinketType,
7
7
  } from "isaac-typescript-definitions";
8
8
  import { itemConfig } from "../../../core/cachedClasses";
9
+ import { FIRST_GLITCHED_COLLECTIBLE_TYPE } from "../../../core/constants";
9
10
  import { Exported } from "../../../decorators";
10
11
  import { ISCFeature } from "../../../enums/ISCFeature";
11
12
  import {
@@ -603,6 +604,27 @@ export class ModdedElementSets extends Feature {
603
604
  }
604
605
  }
605
606
 
607
+ // If the player has TMTRAINER, they might also have glitched items.
608
+ if (player.HasCollectible(CollectibleType.TMTRAINER)) {
609
+ let collectibleType = FIRST_GLITCHED_COLLECTIBLE_TYPE;
610
+ let itemConfigItem: Readonly<ItemConfigItem> | undefined;
611
+ do {
612
+ itemConfigItem = itemConfig.GetCollectible(collectibleType);
613
+
614
+ if (itemConfigItem !== undefined) {
615
+ // The `EntityPlayer.GetCollectibleNum` method is bugged with TMTrainer items and will
616
+ // always return 0. To work around this, we simply assume that if the player has the
617
+ // collectible, then they have one copy of the item.
618
+ const hasCollectibles = player.HasCollectible(collectibleType, true);
619
+ if (hasCollectibles) {
620
+ collectibleMap.set(collectibleType, 1);
621
+ }
622
+ }
623
+
624
+ collectibleType--; // eslint-disable-line isaacscript/strict-enums
625
+ } while (itemConfigItem !== undefined);
626
+ }
627
+
606
628
  return collectibleMap;
607
629
  }
608
630