isaacscript-common 6.14.0 → 6.15.0
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/functions/collectibles.d.ts +6 -2
- package/dist/functions/collectibles.d.ts.map +1 -1
- package/dist/functions/collectibles.lua +4 -2
- package/dist/functions/itemPool.d.ts +10 -0
- package/dist/functions/itemPool.d.ts.map +1 -0
- package/dist/functions/itemPool.lua +116 -0
- package/dist/functions/rockAlt.d.ts +0 -4
- package/dist/functions/rockAlt.d.ts.map +1 -1
- package/dist/functions/rockAlt.lua +210 -65
- package/dist/functions/saveFile.d.ts +8 -7
- package/dist/functions/saveFile.d.ts.map +1 -1
- package/dist/functions/saveFile.lua +10 -96
- package/dist/functions/trinketGive.d.ts +13 -0
- package/dist/functions/trinketGive.d.ts.map +1 -1
- package/dist/functions/trinketGive.lua +16 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.lua +8 -0
- package/package.json +1 -1
- package/src/functions/collectibles.ts +6 -2
- package/src/functions/itemPool.ts +153 -0
- package/src/functions/rockAlt.ts +251 -59
- package/src/functions/saveFile.ts +13 -119
- package/src/functions/trinketGive.ts +21 -0
- package/src/index.ts +1 -0
|
@@ -1,108 +1,22 @@
|
|
|
1
|
-
local ____lualib = require("lualib_bundle")
|
|
2
|
-
local Map = ____lualib.Map
|
|
3
|
-
local __TS__New = ____lualib.__TS__New
|
|
4
|
-
local __TS__Iterator = ____lualib.__TS__Iterator
|
|
5
1
|
local ____exports = {}
|
|
6
|
-
local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
|
|
7
|
-
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
|
|
8
|
-
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
|
|
9
|
-
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
|
|
10
|
-
local ____cachedClasses = require("cachedClasses")
|
|
11
|
-
local game = ____cachedClasses.game
|
|
12
|
-
local ____collectibleSet = require("functions.collectibleSet")
|
|
13
|
-
local getCollectibleSet = ____collectibleSet.getCollectibleSet
|
|
14
|
-
local ____playerDataStructures = require("functions.playerDataStructures")
|
|
15
|
-
local mapGetPlayer = ____playerDataStructures.mapGetPlayer
|
|
16
|
-
local mapSetPlayer = ____playerDataStructures.mapSetPlayer
|
|
17
|
-
local ____playerIndex = require("functions.playerIndex")
|
|
18
|
-
local getPlayers = ____playerIndex.getPlayers
|
|
19
2
|
local ____players = require("functions.players")
|
|
20
3
|
local anyPlayerHasCollectible = ____players.anyPlayerHasCollectible
|
|
21
|
-
|
|
22
|
-
local ____utils = require("functions.utils")
|
|
23
|
-
local ____repeat = ____utils["repeat"]
|
|
24
|
-
local COLLECTIBLES_THAT_AFFECT_ITEM_POOLS = {CollectibleType.CHAOS, CollectibleType.SACRED_ORB, CollectibleType.TMTRAINER}
|
|
25
|
-
local TRINKETS_THAT_AFFECT_ITEM_POOLS = {TrinketType.NO}
|
|
26
|
-
--- Helper function to see if the given collectible is unlocked on the player's save file. This
|
|
4
|
+
--- Helper function to see if the given collectible is unlocked on the current save file. This
|
|
27
5
|
-- requires providing the corresponding item pool that the collectible is located in.
|
|
28
6
|
--
|
|
29
|
-
-- - If any player currently has the
|
|
30
|
-
--
|
|
31
|
-
-- from all pools.)
|
|
7
|
+
-- - If any player currently has the collectible, then it is assumed to be unlocked. (This is
|
|
8
|
+
-- because in almost all cases, when a collectible is added to a player's inventory, it is
|
|
9
|
+
-- subsequently removed from all pools.)
|
|
32
10
|
-- - If the collectible is located in more than one item pool, then any item pool can be provided.
|
|
33
11
|
-- - If the collectible is not located in any item pools, then this function will always return
|
|
34
12
|
-- false.
|
|
35
|
-
-- - If
|
|
36
|
-
-- changed back (because Tainted Lost is not able to retrieve
|
|
37
|
-
|
|
38
|
-
|
|
13
|
+
-- - If the collectible is non-offensive, any Tainted Losts will be temporarily changed to Isaac and
|
|
14
|
+
-- then changed back. (This is because Tainted Lost is not able to retrieve non-offensive
|
|
15
|
+
-- collectibles from item pools).
|
|
16
|
+
function ____exports.isCollectibleUnlocked(self, collectibleType, itemPoolType)
|
|
17
|
+
if anyPlayerHasCollectible(nil, collectibleType) then
|
|
39
18
|
return true
|
|
40
19
|
end
|
|
41
|
-
|
|
42
|
-
for ____, player in ipairs(taintedLosts) do
|
|
43
|
-
player:ChangePlayerType(PlayerType.ISAAC)
|
|
44
|
-
end
|
|
45
|
-
local removedItemsMap = __TS__New(Map)
|
|
46
|
-
local removedTrinketsMap = __TS__New(Map)
|
|
47
|
-
for ____, player in ipairs(getPlayers(nil)) do
|
|
48
|
-
local removedItems = {}
|
|
49
|
-
for ____, itemToRemove in ipairs(COLLECTIBLES_THAT_AFFECT_ITEM_POOLS) do
|
|
50
|
-
if player:HasCollectible(itemToRemove) then
|
|
51
|
-
local numCollectibles = player:GetCollectibleNum(itemToRemove)
|
|
52
|
-
____repeat(
|
|
53
|
-
nil,
|
|
54
|
-
numCollectibles,
|
|
55
|
-
function()
|
|
56
|
-
player:RemoveCollectible(itemToRemove)
|
|
57
|
-
removedItems[#removedItems + 1] = itemToRemove
|
|
58
|
-
end
|
|
59
|
-
)
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
mapSetPlayer(nil, removedItemsMap, player, removedItems)
|
|
63
|
-
local removedTrinkets = {}
|
|
64
|
-
for ____, trinketToRemove in ipairs(TRINKETS_THAT_AFFECT_ITEM_POOLS) do
|
|
65
|
-
if player:HasTrinket(trinketToRemove) then
|
|
66
|
-
local numTrinkets = player:GetTrinketMultiplier(trinketToRemove)
|
|
67
|
-
____repeat(
|
|
68
|
-
nil,
|
|
69
|
-
numTrinkets,
|
|
70
|
-
function()
|
|
71
|
-
player:TryRemoveTrinket(trinketToRemove)
|
|
72
|
-
removedTrinkets[#removedTrinkets + 1] = trinketToRemove
|
|
73
|
-
end
|
|
74
|
-
)
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
mapSetPlayer(nil, removedTrinketsMap, player, removedTrinkets)
|
|
78
|
-
end
|
|
79
|
-
local itemPool = game:GetItemPool()
|
|
80
|
-
local collectibleSet = getCollectibleSet(nil)
|
|
81
|
-
for ____, collectibleType in __TS__Iterator(collectibleSet:values()) do
|
|
82
|
-
if collectibleType ~= collectibleTypeToCheckFor then
|
|
83
|
-
itemPool:AddRoomBlacklist(collectibleType)
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
local retrievedCollectibleType = itemPool:GetCollectible(itemPoolToCheckFor, false, 1)
|
|
87
|
-
local collectibleUnlocked = retrievedCollectibleType == collectibleTypeToCheckFor
|
|
88
|
-
itemPool:ResetRoomBlacklist()
|
|
89
|
-
for ____, player in ipairs(getPlayers(nil)) do
|
|
90
|
-
local removedItems = mapGetPlayer(nil, removedItemsMap, player)
|
|
91
|
-
if removedItems ~= nil then
|
|
92
|
-
for ____, collectibleType in ipairs(removedItems) do
|
|
93
|
-
player:AddCollectible(collectibleType, 0, false)
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
local removedTrinkets = mapGetPlayer(nil, removedTrinketsMap, player)
|
|
97
|
-
if removedTrinkets ~= nil then
|
|
98
|
-
for ____, trinketType in ipairs(removedTrinkets) do
|
|
99
|
-
player:AddTrinket(trinketType, false)
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
for ____, player in ipairs(taintedLosts) do
|
|
104
|
-
player:ChangePlayerType(PlayerType.THE_LOST_B)
|
|
105
|
-
end
|
|
106
|
-
return collectibleUnlocked
|
|
20
|
+
return ____exports.isCollectibleUnlocked(nil, collectibleType, itemPoolType)
|
|
107
21
|
end
|
|
108
22
|
return ____exports
|
|
@@ -17,6 +17,19 @@ export declare function giveTrinketsBack(player: EntityPlayer, trinketSituation:
|
|
|
17
17
|
* avoid calling this function multiple times. Default is 1.
|
|
18
18
|
*/
|
|
19
19
|
export declare function smeltTrinket(player: EntityPlayer, trinketType: TrinketType, numTrinkets?: number): void;
|
|
20
|
+
/**
|
|
21
|
+
* Helper function to smelt two or more different trinkets. If you want to smelt one trinket (or
|
|
22
|
+
* multiple copies of one trinket), then use the `smeltTrinket` helper function instead.
|
|
23
|
+
*
|
|
24
|
+
* This function is variadic, meaning that you can pass as many trinket types as you want to smelt.
|
|
25
|
+
*
|
|
26
|
+
* Before smelting, this function will automatically remove the trinkets that the player is holding,
|
|
27
|
+
* if any, and then give them back after the new trinket is smelted.
|
|
28
|
+
*
|
|
29
|
+
* @param player The player to smelt the trinkets to.
|
|
30
|
+
* @param trinketTypes The trinket types to smelt.
|
|
31
|
+
*/
|
|
32
|
+
export declare function smeltTrinkets(player: EntityPlayer, ...trinketTypes: TrinketType[]): void;
|
|
20
33
|
/**
|
|
21
34
|
* Helper function to temporarily remove a specific kind of trinket from the player. Use this in
|
|
22
35
|
* combination with the `giveTrinketsBack` function to take away and give back a trinket on the same
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trinketGive.d.ts","sourceRoot":"","sources":["../../src/functions/trinketGive.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAKlE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,EACpB,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,GAC7C,IAAI,CA+BN;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,WAAW,EACxB,WAAW,SAAI,GACd,IAAI,CASN;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,WAAW,GACvB,gBAAgB,GAAG,SAAS,CAkC9B;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,YAAY,GACnB,gBAAgB,GAAG,SAAS,CAsB9B"}
|
|
1
|
+
{"version":3,"file":"trinketGive.d.ts","sourceRoot":"","sources":["../../src/functions/trinketGive.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAKlE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,EACpB,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,GAC7C,IAAI,CA+BN;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,WAAW,EACxB,WAAW,SAAI,GACd,IAAI,CASN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,YAAY,EACpB,GAAG,YAAY,EAAE,WAAW,EAAE,GAC7B,IAAI,CAIN;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,WAAW,GACvB,gBAAgB,GAAG,SAAS,CAkC9B;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,YAAY,GACnB,gBAAgB,GAAG,SAAS,CAsB9B"}
|
|
@@ -81,6 +81,22 @@ function ____exports.smeltTrinket(self, player, trinketType, numTrinkets)
|
|
|
81
81
|
)
|
|
82
82
|
____exports.giveTrinketsBack(nil, player, trinketSituation)
|
|
83
83
|
end
|
|
84
|
+
--- Helper function to smelt two or more different trinkets. If you want to smelt one trinket (or
|
|
85
|
+
-- multiple copies of one trinket), then use the `smeltTrinket` helper function instead.
|
|
86
|
+
--
|
|
87
|
+
-- This function is variadic, meaning that you can pass as many trinket types as you want to smelt.
|
|
88
|
+
--
|
|
89
|
+
-- Before smelting, this function will automatically remove the trinkets that the player is holding,
|
|
90
|
+
-- if any, and then give them back after the new trinket is smelted.
|
|
91
|
+
--
|
|
92
|
+
-- @param player The player to smelt the trinkets to.
|
|
93
|
+
-- @param trinketTypes The trinket types to smelt.
|
|
94
|
+
function ____exports.smeltTrinkets(self, player, ...)
|
|
95
|
+
local trinketTypes = {...}
|
|
96
|
+
for ____, trinketType in ipairs(trinketTypes) do
|
|
97
|
+
____exports.smeltTrinket(nil, player, trinketType)
|
|
98
|
+
end
|
|
99
|
+
end
|
|
84
100
|
--- Helper function to temporarily remove a specific kind of trinket from the player. Use this in
|
|
85
101
|
-- combination with the `giveTrinketsBack` function to take away and give back a trinket on the same
|
|
86
102
|
-- frame. This function correctly handles multiple trinket slots and ensures that all copies of the
|
package/dist/index.d.ts
CHANGED
|
@@ -74,6 +74,7 @@ export * from "./functions/gridEntities";
|
|
|
74
74
|
export * from "./functions/gridEntitiesSpecific";
|
|
75
75
|
export * from "./functions/input";
|
|
76
76
|
export * from "./functions/isaacAPIClass";
|
|
77
|
+
export * from "./functions/itemPool";
|
|
77
78
|
export * from "./functions/jsonHelpers";
|
|
78
79
|
export * from "./functions/jsonRoom";
|
|
79
80
|
export * from "./functions/kColor";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.lua
CHANGED
|
@@ -590,6 +590,14 @@ do
|
|
|
590
590
|
end
|
|
591
591
|
end
|
|
592
592
|
end
|
|
593
|
+
do
|
|
594
|
+
local ____export = require("functions.itemPool")
|
|
595
|
+
for ____exportKey, ____exportValue in pairs(____export) do
|
|
596
|
+
if ____exportKey ~= "default" then
|
|
597
|
+
____exports[____exportKey] = ____exportValue
|
|
598
|
+
end
|
|
599
|
+
end
|
|
600
|
+
end
|
|
593
601
|
do
|
|
594
602
|
local ____export = require("functions.jsonHelpers")
|
|
595
603
|
for ____exportKey, ____exportValue in pairs(____export) do
|
package/package.json
CHANGED
|
@@ -323,6 +323,10 @@ export function getCollectibleName(collectibleType: CollectibleType): string {
|
|
|
323
323
|
return DEFAULT_COLLECTIBLE_NAME;
|
|
324
324
|
}
|
|
325
325
|
|
|
326
|
+
/**
|
|
327
|
+
* Helper function to get the "pedestal type" of a collectible. For example, it might be sitting on
|
|
328
|
+
* top of a broken Blood Donation Machine, or it might be sitting on top of an opened Spiked Chest.
|
|
329
|
+
*/
|
|
326
330
|
export function getCollectiblePedestalType(
|
|
327
331
|
collectible: EntityPickup,
|
|
328
332
|
): CollectiblePedestalType {
|
|
@@ -338,8 +342,8 @@ export function getCollectiblePedestalType(
|
|
|
338
342
|
}
|
|
339
343
|
|
|
340
344
|
/**
|
|
341
|
-
* Helper function to get
|
|
342
|
-
* type was not valid.
|
|
345
|
+
* Helper function to get a collectible's quality. For example, Mom's Knife has a quality of 4.
|
|
346
|
+
* Returns 0 if the provided collectible type was not valid.
|
|
343
347
|
*/
|
|
344
348
|
export function getCollectibleQuality(collectibleType: CollectibleType): int {
|
|
345
349
|
const itemConfigItem = itemConfig.GetCollectible(collectibleType);
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CollectibleType,
|
|
3
|
+
ItemConfigTag,
|
|
4
|
+
ItemPoolType,
|
|
5
|
+
PlayerType,
|
|
6
|
+
TrinketType,
|
|
7
|
+
} from "isaac-typescript-definitions";
|
|
8
|
+
import { game } from "../cachedClasses";
|
|
9
|
+
import { PlayerIndex } from "../types/PlayerIndex";
|
|
10
|
+
import { getCollectibleSet } from "./collectibleSet";
|
|
11
|
+
import { collectibleHasTag } from "./collectibleTag";
|
|
12
|
+
import { mapGetPlayer, mapSetPlayer } from "./playerDataStructures";
|
|
13
|
+
import { getPlayers } from "./playerIndex";
|
|
14
|
+
import { getPlayersOfType } from "./players";
|
|
15
|
+
import { repeat } from "./utils";
|
|
16
|
+
|
|
17
|
+
const COLLECTIBLES_THAT_AFFECT_ITEM_POOLS: readonly CollectibleType[] = [
|
|
18
|
+
CollectibleType.CHAOS, // 402
|
|
19
|
+
CollectibleType.SACRED_ORB, // 691
|
|
20
|
+
CollectibleType.TMTRAINER, // 721
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const TRINKETS_THAT_AFFECT_ITEM_POOLS: readonly TrinketType[] = [
|
|
24
|
+
TrinketType.NO,
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Helper function to see if the given collectible is still present in the given item pool.
|
|
29
|
+
*
|
|
30
|
+
* If the collectible is non-offensive, any Tainted Losts will be temporarily changed to Isaac and
|
|
31
|
+
* then changed back. (This is because Tainted Lost is not able to retrieve non-offensive
|
|
32
|
+
* collectibles from item pools).
|
|
33
|
+
*/
|
|
34
|
+
export function isCollectibleInItemPool(
|
|
35
|
+
collectibleType: CollectibleType,
|
|
36
|
+
itemPoolType: ItemPoolType,
|
|
37
|
+
): boolean {
|
|
38
|
+
// On Tainted Lost, it is impossible to retrieve non-offensive collectibles from pools, so we
|
|
39
|
+
// temporarily change the character to Isaac.
|
|
40
|
+
const taintedLosts = getPlayersOfType(PlayerType.THE_LOST_B);
|
|
41
|
+
const isOffensive = collectibleHasTag(
|
|
42
|
+
collectibleType,
|
|
43
|
+
ItemConfigTag.OFFENSIVE,
|
|
44
|
+
);
|
|
45
|
+
let changedPlayerTypes = false;
|
|
46
|
+
if (!isOffensive) {
|
|
47
|
+
changedPlayerTypes = true;
|
|
48
|
+
for (const player of taintedLosts) {
|
|
49
|
+
player.ChangePlayerType(PlayerType.ISAAC);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const [removedItemsMap, removedTrinketsMap] =
|
|
54
|
+
removeItemsAndTrinketsThatAffectItemPools();
|
|
55
|
+
|
|
56
|
+
// Blacklist every collectible in the game except for the provided collectible.
|
|
57
|
+
const itemPool = game.GetItemPool();
|
|
58
|
+
const collectibleSet = getCollectibleSet();
|
|
59
|
+
for (const collectibleTypeInSet of collectibleSet.values()) {
|
|
60
|
+
if (collectibleTypeInSet !== collectibleType) {
|
|
61
|
+
itemPool.AddRoomBlacklist(collectibleTypeInSet);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Get a collectible from the pool and see if it is the intended collectible. (We can use any
|
|
66
|
+
// arbitrary value as the seed since it should not influence the result.)
|
|
67
|
+
const retrievedCollectibleType = itemPool.GetCollectible(
|
|
68
|
+
itemPoolType,
|
|
69
|
+
false,
|
|
70
|
+
1 as Seed,
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
const collectibleUnlocked = retrievedCollectibleType === collectibleType;
|
|
74
|
+
|
|
75
|
+
// Reset the blacklist
|
|
76
|
+
itemPool.ResetRoomBlacklist();
|
|
77
|
+
|
|
78
|
+
restoreItemsAndTrinketsThatAffectItemPools(
|
|
79
|
+
removedItemsMap,
|
|
80
|
+
removedTrinketsMap,
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
// Change any players back to Tainted Lost, if necessary.
|
|
84
|
+
if (changedPlayerTypes) {
|
|
85
|
+
for (const player of taintedLosts) {
|
|
86
|
+
player.ChangePlayerType(PlayerType.THE_LOST_B);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return collectibleUnlocked;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Before checking the item pools, remove any collectibles or trinkets that would affect the
|
|
95
|
+
* retrieved collectible types.
|
|
96
|
+
*/
|
|
97
|
+
function removeItemsAndTrinketsThatAffectItemPools(): [
|
|
98
|
+
removedItemsMap: Map<PlayerIndex, CollectibleType[]>,
|
|
99
|
+
removedTrinketsMap: Map<PlayerIndex, TrinketType[]>,
|
|
100
|
+
] {
|
|
101
|
+
const removedItemsMap = new Map<PlayerIndex, CollectibleType[]>();
|
|
102
|
+
const removedTrinketsMap = new Map<PlayerIndex, TrinketType[]>();
|
|
103
|
+
for (const player of getPlayers()) {
|
|
104
|
+
const removedItems: CollectibleType[] = [];
|
|
105
|
+
for (const itemToRemove of COLLECTIBLES_THAT_AFFECT_ITEM_POOLS) {
|
|
106
|
+
if (player.HasCollectible(itemToRemove)) {
|
|
107
|
+
const numCollectibles = player.GetCollectibleNum(itemToRemove);
|
|
108
|
+
repeat(numCollectibles, () => {
|
|
109
|
+
player.RemoveCollectible(itemToRemove);
|
|
110
|
+
removedItems.push(itemToRemove);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
mapSetPlayer(removedItemsMap, player, removedItems);
|
|
116
|
+
|
|
117
|
+
const removedTrinkets: TrinketType[] = [];
|
|
118
|
+
for (const trinketToRemove of TRINKETS_THAT_AFFECT_ITEM_POOLS) {
|
|
119
|
+
if (player.HasTrinket(trinketToRemove)) {
|
|
120
|
+
const numTrinkets = player.GetTrinketMultiplier(trinketToRemove);
|
|
121
|
+
repeat(numTrinkets, () => {
|
|
122
|
+
player.TryRemoveTrinket(trinketToRemove);
|
|
123
|
+
removedTrinkets.push(trinketToRemove);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
mapSetPlayer(removedTrinketsMap, player, removedTrinkets);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return [removedItemsMap, removedTrinketsMap];
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function restoreItemsAndTrinketsThatAffectItemPools(
|
|
135
|
+
removedItemsMap: Map<PlayerIndex, CollectibleType[]>,
|
|
136
|
+
removedTrinketsMap: Map<PlayerIndex, TrinketType[]>,
|
|
137
|
+
) {
|
|
138
|
+
for (const player of getPlayers()) {
|
|
139
|
+
const removedItems = mapGetPlayer(removedItemsMap, player);
|
|
140
|
+
if (removedItems !== undefined) {
|
|
141
|
+
for (const collectibleType of removedItems) {
|
|
142
|
+
player.AddCollectible(collectibleType, 0, false); // Prevent Chaos from spawning pickups
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const removedTrinkets = mapGetPlayer(removedTrinketsMap, player);
|
|
147
|
+
if (removedTrinkets !== undefined) {
|
|
148
|
+
for (const trinketType of removedTrinkets) {
|
|
149
|
+
player.AddTrinket(trinketType, false);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|