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 +1 -0
- package/dist/isaacscript-common.lua +31 -1
- package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.d.ts +1 -0
- package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.d.ts.map +1 -1
- package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.lua +12 -0
- package/dist/src/classes/features/other/ModdedElementSets.d.ts.map +1 -1
- package/dist/src/classes/features/other/ModdedElementSets.lua +18 -0
- package/package.json +1 -1
- package/src/classes/features/callbackLogic/PlayerCollectibleDetection.ts +31 -0
- package/src/classes/features/other/ModdedElementSets.ts +22 -0
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.
|
|
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
|
|
@@ -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,
|
|
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":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EACb,UAAU,EACV,WAAW,EACZ,MAAM,8BAA8B,CAAC;
|
|
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
|
@@ -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
|
|