isaacscript-common 81.0.5 → 82.0.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/arrays/cachedEnumValues.d.ts +17 -5
- package/dist/arrays/cachedEnumValues.d.ts.map +1 -1
- package/dist/arrays/cachedEnumValues.lua +1 -1
- package/dist/classes/features/other/CustomStages.lua +2 -2
- package/dist/classes/features/other/Pause.lua +2 -2
- package/dist/classes/features/other/PreventGridEntityRespawn.lua +1 -1
- package/dist/functions/bosses.d.ts +4 -2
- package/dist/functions/bosses.d.ts.map +1 -1
- package/dist/functions/bosses.lua +8 -7
- package/dist/functions/gridEntities.lua +1 -1
- package/dist/index.rollup.d.ts +4 -1
- package/dist/isaacscript-common.lua +93 -85
- package/dist/sets/bossSets.d.ts +3 -2
- package/dist/sets/bossSets.d.ts.map +1 -1
- package/dist/sets/bossSets.lua +73 -69
- package/package.json +2 -2
- package/src/arrays/cachedEnumValues.ts +23 -39
- package/src/classes/features/other/CustomStages.ts +2 -2
- package/src/classes/features/other/Pause.ts +2 -2
- package/src/classes/features/other/PreventGridEntityRespawn.ts +1 -1
- package/src/functions/bosses.ts +9 -11
- package/src/functions/gridEntities.ts +1 -1
- package/src/sets/bossSets.ts +81 -117
package/src/sets/bossSets.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BossID, LevelStage,
|
|
2
|
-
import {
|
|
1
|
+
import { BossID, LevelStage, StageID } from "isaac-typescript-definitions";
|
|
2
|
+
import { BOSS_ID_VALUES } from "../arrays/cachedEnumValues";
|
|
3
3
|
import { combineSets } from "../functions/set";
|
|
4
4
|
import { isStoryBossID } from "../functions/storyBosses";
|
|
5
5
|
import { ReadonlyMap } from "../types/ReadonlyMap";
|
|
@@ -11,7 +11,7 @@ import { ReadonlySet } from "../types/ReadonlySet";
|
|
|
11
11
|
// We use sets of strings instead of tuples for these data structures because TypeScript/Lua does
|
|
12
12
|
// not have real tuples. If we store bosses as tuples, then we cannot do a set lookup in O(1).
|
|
13
13
|
|
|
14
|
-
/**
|
|
14
|
+
/** For `StageID.BASEMENT` (1). */
|
|
15
15
|
const BASEMENT_BOSSES_SET = new ReadonlySet<BossID>([
|
|
16
16
|
BossID.MONSTRO, // 1
|
|
17
17
|
BossID.LARRY_JR, // 2
|
|
@@ -30,7 +30,7 @@ const BASEMENT_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
30
30
|
BossID.BABY_PLUM, // 84 (added in Repentance)
|
|
31
31
|
]);
|
|
32
32
|
|
|
33
|
-
/**
|
|
33
|
+
/** For `StageID.CELLAR` (2). */
|
|
34
34
|
const CELLAR_BOSSES_SET = new ReadonlySet<BossID>([
|
|
35
35
|
BossID.FAMINE, // 9
|
|
36
36
|
BossID.DUKE_OF_FLIES, // 13
|
|
@@ -46,7 +46,7 @@ const CELLAR_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
46
46
|
BossID.BABY_PLUM, // 84 (added in Repentance)
|
|
47
47
|
]);
|
|
48
48
|
|
|
49
|
-
/**
|
|
49
|
+
/** For `StageID.BURNING_BASEMENT` (3). */
|
|
50
50
|
const BURNING_BASEMENT_BOSSES_SET = new ReadonlySet<BossID>([
|
|
51
51
|
BossID.MONSTRO, // 1
|
|
52
52
|
BossID.LARRY_JR, // 2
|
|
@@ -66,7 +66,7 @@ const BURNING_BASEMENT_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
66
66
|
BossID.BABY_PLUM, // 84 (added in Repentance)
|
|
67
67
|
]);
|
|
68
68
|
|
|
69
|
-
/**
|
|
69
|
+
/** For `StageID.DOWNPOUR` (27). */
|
|
70
70
|
const DOWNPOUR_BOSSES_SET = new ReadonlySet<BossID>([
|
|
71
71
|
BossID.LIL_BLUB, // 75
|
|
72
72
|
BossID.WORMWOOD, // 76
|
|
@@ -74,7 +74,7 @@ const DOWNPOUR_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
74
74
|
BossID.MIN_MIN, // 91
|
|
75
75
|
]);
|
|
76
76
|
|
|
77
|
-
/**
|
|
77
|
+
/** For `StageID.DROSS` (28). */
|
|
78
78
|
const DROSS_BOSSES_SET = new ReadonlySet<BossID>([
|
|
79
79
|
BossID.LIL_BLUB, // 75
|
|
80
80
|
BossID.WORMWOOD, // 76
|
|
@@ -83,7 +83,7 @@ const DROSS_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
83
83
|
BossID.TURDLET, // 97
|
|
84
84
|
]);
|
|
85
85
|
|
|
86
|
-
/** The set of unique bosses for Basement, Cellar, and
|
|
86
|
+
/** The set of unique bosses for Basement, Cellar, Burning Basement, Downpour, and Dross. */
|
|
87
87
|
const ALL_BASEMENT_BOSSES_SET: ReadonlySet<BossID> = combineSets(
|
|
88
88
|
BASEMENT_BOSSES_SET,
|
|
89
89
|
CELLAR_BOSSES_SET,
|
|
@@ -92,18 +92,7 @@ const ALL_BASEMENT_BOSSES_SET: ReadonlySet<BossID> = combineSets(
|
|
|
92
92
|
DROSS_BOSSES_SET,
|
|
93
93
|
);
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
StageType,
|
|
97
|
-
ReadonlySet<BossID>
|
|
98
|
-
>([
|
|
99
|
-
[StageType.ORIGINAL, BASEMENT_BOSSES_SET],
|
|
100
|
-
[StageType.WRATH_OF_THE_LAMB, CELLAR_BOSSES_SET],
|
|
101
|
-
[StageType.AFTERBIRTH, BURNING_BASEMENT_BOSSES_SET],
|
|
102
|
-
[StageType.REPENTANCE, DOWNPOUR_BOSSES_SET],
|
|
103
|
-
[StageType.REPENTANCE_B, DROSS_BOSSES_SET],
|
|
104
|
-
]);
|
|
105
|
-
|
|
106
|
-
/** Contains just the bosses in Caves (not e.g. Flooded Caves). */
|
|
95
|
+
/** For `StageID.CAVES` (4). */
|
|
107
96
|
const CAVES_BOSSES_SET = new ReadonlySet<BossID>([
|
|
108
97
|
BossID.CHUB, // 3
|
|
109
98
|
BossID.GURDY, // 4
|
|
@@ -125,7 +114,7 @@ const CAVES_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
125
114
|
BossID.BUMBINO, // 94 (added in Repentance)
|
|
126
115
|
]);
|
|
127
116
|
|
|
128
|
-
/**
|
|
117
|
+
/** For `StageID.CATACOMBS` (5). */
|
|
129
118
|
const CATACOMBS_BOSSES_SET = new ReadonlySet<BossID>([
|
|
130
119
|
BossID.PESTILENCE, // 10
|
|
131
120
|
BossID.PEEP, // 14
|
|
@@ -146,7 +135,7 @@ const CATACOMBS_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
146
135
|
BossID.BUMBINO, // 94 (added in Repentance)
|
|
147
136
|
]);
|
|
148
137
|
|
|
149
|
-
/**
|
|
138
|
+
/** For `StageID.FLOODED_CAVES` (6). */
|
|
150
139
|
const FLOODED_CAVES_BOSSES_SET = new ReadonlySet<BossID>([
|
|
151
140
|
BossID.CHUB, // 3
|
|
152
141
|
BossID.GURDY, // 4
|
|
@@ -169,7 +158,7 @@ const FLOODED_CAVES_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
169
158
|
BossID.BUMBINO, // 94 (added in Repentance)
|
|
170
159
|
]);
|
|
171
160
|
|
|
172
|
-
/**
|
|
161
|
+
/** For `StageID.MINES` (29). */
|
|
173
162
|
const MINES_BOSSES_SET = new ReadonlySet<BossID>([
|
|
174
163
|
BossID.REAP_CREEP, // 74
|
|
175
164
|
BossID.TUFF_TWINS, // 80
|
|
@@ -177,7 +166,7 @@ const MINES_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
177
166
|
BossID.GREAT_GIDEON, // 83
|
|
178
167
|
]);
|
|
179
168
|
|
|
180
|
-
/**
|
|
169
|
+
/** For `StageID.ASHPIT` (30). */
|
|
181
170
|
const ASHPIT_BOSSES_SET = new ReadonlySet<BossID>([
|
|
182
171
|
BossID.PILE, // 73
|
|
183
172
|
BossID.GREAT_GIDEON, // 83
|
|
@@ -186,7 +175,7 @@ const ASHPIT_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
186
175
|
BossID.CLUTCH, // 102
|
|
187
176
|
]);
|
|
188
177
|
|
|
189
|
-
/** The set of unique bosses for Caves, Catacombs, and
|
|
178
|
+
/** The set of unique bosses for Caves, Catacombs, Flooded Caves, Mines, and Ashpit. */
|
|
190
179
|
const ALL_CAVES_BOSSES_SET: ReadonlySet<BossID> = combineSets(
|
|
191
180
|
CAVES_BOSSES_SET,
|
|
192
181
|
CATACOMBS_BOSSES_SET,
|
|
@@ -195,19 +184,8 @@ const ALL_CAVES_BOSSES_SET: ReadonlySet<BossID> = combineSets(
|
|
|
195
184
|
ASHPIT_BOSSES_SET,
|
|
196
185
|
);
|
|
197
186
|
|
|
198
|
-
const CAVES_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
|
|
199
|
-
StageType,
|
|
200
|
-
ReadonlySet<BossID>
|
|
201
|
-
>([
|
|
202
|
-
[StageType.ORIGINAL, CAVES_BOSSES_SET],
|
|
203
|
-
[StageType.WRATH_OF_THE_LAMB, CATACOMBS_BOSSES_SET],
|
|
204
|
-
[StageType.AFTERBIRTH, FLOODED_CAVES_BOSSES_SET],
|
|
205
|
-
[StageType.REPENTANCE, MINES_BOSSES_SET],
|
|
206
|
-
[StageType.REPENTANCE_B, ASHPIT_BOSSES_SET],
|
|
207
|
-
]);
|
|
208
|
-
|
|
209
187
|
/**
|
|
210
|
-
*
|
|
188
|
+
* For `StageID.DEPTHS` (7).
|
|
211
189
|
*
|
|
212
190
|
* Note that this set includes Mom, even though they are not technically in the boss pool.
|
|
213
191
|
*/
|
|
@@ -228,7 +206,7 @@ const DEPTHS_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
228
206
|
]);
|
|
229
207
|
|
|
230
208
|
/**
|
|
231
|
-
*
|
|
209
|
+
* For `StageID.NECROPOLIS` (8).
|
|
232
210
|
*
|
|
233
211
|
* Note that this set includes Mom, even though they are not technically in the boss pool.
|
|
234
212
|
*/
|
|
@@ -248,7 +226,7 @@ const NECROPOLIS_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
248
226
|
]);
|
|
249
227
|
|
|
250
228
|
/**
|
|
251
|
-
*
|
|
229
|
+
* For `StageID.DANK_DEPTHS` (9).
|
|
252
230
|
*
|
|
253
231
|
* Note that this set includes Mom, even though they are not technically in the boss pool.
|
|
254
232
|
*/
|
|
@@ -269,7 +247,7 @@ const DANK_DEPTHS_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
269
247
|
]);
|
|
270
248
|
|
|
271
249
|
/**
|
|
272
|
-
*
|
|
250
|
+
* For `StageID.MAUSOLEUM` (31).
|
|
273
251
|
*
|
|
274
252
|
* Note that this set includes Mausoleum Mom, even though they are not technically in the boss pool.
|
|
275
253
|
*/
|
|
@@ -280,7 +258,7 @@ const MAUSOLEUM_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
280
258
|
]);
|
|
281
259
|
|
|
282
260
|
/**
|
|
283
|
-
*
|
|
261
|
+
* For `StageID.GEHENNA` (32).
|
|
284
262
|
*
|
|
285
263
|
* Note that this set includes Mausoleum Mom, even though they are not technically in the boss pool.
|
|
286
264
|
*/
|
|
@@ -290,7 +268,7 @@ const GEHENNA_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
290
268
|
BossID.HORNY_BOYS, // 101
|
|
291
269
|
]);
|
|
292
270
|
|
|
293
|
-
/** The set of unique bosses for Depths, Necropolis, and
|
|
271
|
+
/** The set of unique bosses for Depths, Necropolis, Dank Depths, Mausoleum, and Gehenna. */
|
|
294
272
|
const ALL_DEPTHS_BOSSES_SET: ReadonlySet<BossID> = combineSets(
|
|
295
273
|
DEPTHS_BOSSES_SET,
|
|
296
274
|
NECROPOLIS_BOSSES_SET,
|
|
@@ -299,19 +277,8 @@ const ALL_DEPTHS_BOSSES_SET: ReadonlySet<BossID> = combineSets(
|
|
|
299
277
|
GEHENNA_BOSSES_SET,
|
|
300
278
|
);
|
|
301
279
|
|
|
302
|
-
const DEPTHS_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
|
|
303
|
-
StageType,
|
|
304
|
-
ReadonlySet<BossID>
|
|
305
|
-
>([
|
|
306
|
-
[StageType.ORIGINAL, DEPTHS_BOSSES_SET],
|
|
307
|
-
[StageType.WRATH_OF_THE_LAMB, NECROPOLIS_BOSSES_SET],
|
|
308
|
-
[StageType.AFTERBIRTH, DANK_DEPTHS_BOSSES_SET],
|
|
309
|
-
[StageType.REPENTANCE, MAUSOLEUM_BOSSES_SET],
|
|
310
|
-
[StageType.REPENTANCE_B, GEHENNA_BOSSES_SET],
|
|
311
|
-
]);
|
|
312
|
-
|
|
313
280
|
/**
|
|
314
|
-
*
|
|
281
|
+
* For `StageID.WOMB` (10).
|
|
315
282
|
*
|
|
316
283
|
* Note that this set includes Mom's Heart & It Lives, even though they are not technically in the
|
|
317
284
|
* boss pool.
|
|
@@ -337,7 +304,7 @@ const WOMB_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
337
304
|
]);
|
|
338
305
|
|
|
339
306
|
/**
|
|
340
|
-
*
|
|
307
|
+
* For `StageID.UTERO` (11).
|
|
341
308
|
*
|
|
342
309
|
* Note that this set includes Mom's Heart & It Lives, even though they are not technically in the
|
|
343
310
|
* boss pool.
|
|
@@ -362,7 +329,7 @@ const UTERO_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
362
329
|
]);
|
|
363
330
|
|
|
364
331
|
/**
|
|
365
|
-
*
|
|
332
|
+
* For `StageID.SCARRED_WOMB` (12).
|
|
366
333
|
*
|
|
367
334
|
* Note that this set includes Mom's Heart & It Lives, even though they are not technically in the
|
|
368
335
|
* boss pool.
|
|
@@ -388,9 +355,9 @@ const SCARRED_WOMB_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
388
355
|
]);
|
|
389
356
|
|
|
390
357
|
/**
|
|
391
|
-
*
|
|
358
|
+
* For `StageID.CORPSE` (33).
|
|
392
359
|
*
|
|
393
|
-
* Note that this set includes Mother, even though
|
|
360
|
+
* Note that this set includes Mother, even though she is not technically in the boss pool.
|
|
394
361
|
*/
|
|
395
362
|
const CORPSE_BOSSES_SET = new ReadonlySet<BossID>([
|
|
396
363
|
BossID.SCOURGE, // 85
|
|
@@ -399,7 +366,7 @@ const CORPSE_BOSSES_SET = new ReadonlySet<BossID>([
|
|
|
399
366
|
BossID.MOTHER, // 88
|
|
400
367
|
]);
|
|
401
368
|
|
|
402
|
-
/** The set of unique bosses for Womb, Utero, and
|
|
369
|
+
/** The set of unique bosses for Womb, Utero, Scarred Womb, and Corpse. */
|
|
403
370
|
const ALL_WOMB_BOSSES_SET: ReadonlySet<BossID> = combineSets(
|
|
404
371
|
WOMB_BOSSES_SET,
|
|
405
372
|
UTERO_BOSSES_SET,
|
|
@@ -407,28 +374,14 @@ const ALL_WOMB_BOSSES_SET: ReadonlySet<BossID> = combineSets(
|
|
|
407
374
|
CORPSE_BOSSES_SET,
|
|
408
375
|
);
|
|
409
376
|
|
|
410
|
-
const WOMB_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
|
|
411
|
-
StageType,
|
|
412
|
-
ReadonlySet<BossID>
|
|
413
|
-
>([
|
|
414
|
-
[StageType.ORIGINAL, WOMB_BOSSES_SET],
|
|
415
|
-
[StageType.WRATH_OF_THE_LAMB, UTERO_BOSSES_SET],
|
|
416
|
-
[StageType.AFTERBIRTH, SCARRED_WOMB_BOSSES_SET],
|
|
417
|
-
[StageType.REPENTANCE, CORPSE_BOSSES_SET],
|
|
418
|
-
]);
|
|
419
|
-
|
|
420
377
|
const BLUE_WOMB_BOSSES_SET = new ReadonlySet<BossID>([
|
|
421
378
|
BossID.HUSH, // 63
|
|
422
379
|
]);
|
|
423
380
|
|
|
424
|
-
const BLUE_WOMB_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
|
|
425
|
-
StageType,
|
|
426
|
-
ReadonlySet<BossID>
|
|
427
|
-
>([[StageType.ORIGINAL, BLUE_WOMB_BOSSES_SET]]);
|
|
428
|
-
|
|
429
381
|
const SHEOL_BOSSES_SET = new ReadonlySet<BossID>([
|
|
430
382
|
BossID.SATAN, // 24
|
|
431
383
|
]);
|
|
384
|
+
|
|
432
385
|
const CATHEDRAL_BOSSES_SET = new ReadonlySet<BossID>([
|
|
433
386
|
BossID.ISAAC, // 39
|
|
434
387
|
]);
|
|
@@ -438,14 +391,6 @@ const ALL_STAGE_10_BOSSES_SET: ReadonlySet<BossID> = combineSets(
|
|
|
438
391
|
CATHEDRAL_BOSSES_SET,
|
|
439
392
|
);
|
|
440
393
|
|
|
441
|
-
const STAGE_10_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
|
|
442
|
-
StageType,
|
|
443
|
-
ReadonlySet<BossID>
|
|
444
|
-
>([
|
|
445
|
-
[StageType.ORIGINAL, SHEOL_BOSSES_SET],
|
|
446
|
-
[StageType.WRATH_OF_THE_LAMB, CATHEDRAL_BOSSES_SET],
|
|
447
|
-
]);
|
|
448
|
-
|
|
449
394
|
/**
|
|
450
395
|
* Note that this set includes Mega Satan, even though they are not technically in the boss pool.
|
|
451
396
|
*/
|
|
@@ -467,48 +412,50 @@ const ALL_STAGE_11_BOSSES_SET: ReadonlySet<BossID> = combineSets(
|
|
|
467
412
|
CHEST_BOSSES_SET,
|
|
468
413
|
);
|
|
469
414
|
|
|
470
|
-
const STAGE_11_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
|
|
471
|
-
StageType,
|
|
472
|
-
ReadonlySet<BossID>
|
|
473
|
-
>([
|
|
474
|
-
[StageType.ORIGINAL, DARK_ROOM_BOSSES_SET],
|
|
475
|
-
[StageType.WRATH_OF_THE_LAMB, CHEST_BOSSES_SET],
|
|
476
|
-
]);
|
|
477
|
-
|
|
478
415
|
const VOID_BOSSES_SET = new ReadonlySet<BossID>([
|
|
479
416
|
BossID.DELIRIUM, // 70
|
|
480
417
|
]);
|
|
481
418
|
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
/** Note that this does not include Ultra Famine, Ultra Pestilence, Ultra War, and Ultra Death. */
|
|
419
|
+
/**
|
|
420
|
+
* Includes Dogma and The Beast. Does not include Ultra Famine, Ultra Pestilence, Ultra War, and
|
|
421
|
+
* Ultra Death (since they do not have boss IDs).
|
|
422
|
+
*/
|
|
488
423
|
const HOME_BOSSES_SET = new ReadonlySet<BossID>([BossID.DOGMA, BossID.BEAST]);
|
|
489
424
|
|
|
490
|
-
const
|
|
491
|
-
|
|
425
|
+
export const STAGE_ID_TO_BOSS_SET_MAP = new ReadonlyMap<
|
|
426
|
+
StageID,
|
|
492
427
|
ReadonlySet<BossID>
|
|
493
|
-
>([[StageType.ORIGINAL, HOME_BOSSES_SET]]);
|
|
494
|
-
|
|
495
|
-
export const STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
|
|
496
|
-
LevelStage,
|
|
497
|
-
ReadonlyMap<int, ReadonlySet<BossID>>
|
|
498
428
|
>([
|
|
499
|
-
[
|
|
500
|
-
[
|
|
501
|
-
[
|
|
502
|
-
[
|
|
503
|
-
[
|
|
504
|
-
|
|
505
|
-
[
|
|
506
|
-
[
|
|
507
|
-
[
|
|
508
|
-
[
|
|
509
|
-
[
|
|
510
|
-
|
|
511
|
-
[
|
|
429
|
+
[StageID.BASEMENT, BASEMENT_BOSSES_SET], // 1
|
|
430
|
+
[StageID.CELLAR, CELLAR_BOSSES_SET], // 2
|
|
431
|
+
[StageID.BURNING_BASEMENT, BURNING_BASEMENT_BOSSES_SET], // 3
|
|
432
|
+
[StageID.DOWNPOUR, DOWNPOUR_BOSSES_SET], // 27
|
|
433
|
+
[StageID.DROSS, DROSS_BOSSES_SET], // 28
|
|
434
|
+
|
|
435
|
+
[StageID.CAVES, CAVES_BOSSES_SET], // 4
|
|
436
|
+
[StageID.CATACOMBS, CATACOMBS_BOSSES_SET], // 5
|
|
437
|
+
[StageID.FLOODED_CAVES, FLOODED_CAVES_BOSSES_SET], // 6
|
|
438
|
+
[StageID.MINES, MINES_BOSSES_SET], // 29
|
|
439
|
+
[StageID.ASHPIT, ASHPIT_BOSSES_SET], // 30
|
|
440
|
+
|
|
441
|
+
[StageID.DEPTHS, DEPTHS_BOSSES_SET], // 7
|
|
442
|
+
[StageID.NECROPOLIS, NECROPOLIS_BOSSES_SET], // 8
|
|
443
|
+
[StageID.DANK_DEPTHS, DANK_DEPTHS_BOSSES_SET], // 9
|
|
444
|
+
[StageID.MAUSOLEUM, MAUSOLEUM_BOSSES_SET], // 31
|
|
445
|
+
[StageID.GEHENNA, GEHENNA_BOSSES_SET], // 32
|
|
446
|
+
|
|
447
|
+
[StageID.WOMB, WOMB_BOSSES_SET], // 10
|
|
448
|
+
[StageID.UTERO, UTERO_BOSSES_SET], // 11
|
|
449
|
+
[StageID.SCARRED_WOMB, SCARRED_WOMB_BOSSES_SET], // 12
|
|
450
|
+
[StageID.CORPSE, CORPSE_BOSSES_SET], // 33
|
|
451
|
+
|
|
452
|
+
[StageID.BLUE_WOMB, BLUE_WOMB_BOSSES_SET], // 13
|
|
453
|
+
[StageID.SHEOL, SHEOL_BOSSES_SET], // 14
|
|
454
|
+
[StageID.CATHEDRAL, CATHEDRAL_BOSSES_SET], // 15
|
|
455
|
+
[StageID.DARK_ROOM, DARK_ROOM_BOSSES_SET], // 16
|
|
456
|
+
[StageID.CHEST, CHEST_BOSSES_SET], // 17
|
|
457
|
+
[StageID.VOID, VOID_BOSSES_SET], // 26
|
|
458
|
+
[StageID.HOME, HOME_BOSSES_SET], // 35
|
|
512
459
|
]);
|
|
513
460
|
|
|
514
461
|
export const STAGE_TO_COMBINED_BOSS_SET_MAP = new ReadonlyMap<
|
|
@@ -531,9 +478,26 @@ export const STAGE_TO_COMBINED_BOSS_SET_MAP = new ReadonlyMap<
|
|
|
531
478
|
]);
|
|
532
479
|
|
|
533
480
|
export const ALL_BOSSES_SET = new ReadonlySet<BossID>(
|
|
534
|
-
|
|
481
|
+
BOSS_ID_VALUES.filter((bossID) => bossID !== BossID.RAGLICH),
|
|
535
482
|
);
|
|
536
483
|
|
|
537
484
|
export const ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET = new ReadonlySet(
|
|
538
485
|
[...ALL_BOSSES_SET].filter((bossID) => !isStoryBossID(bossID)),
|
|
539
486
|
);
|
|
487
|
+
|
|
488
|
+
export const BOSS_ID_TO_STAGE_IDS = (() => {
|
|
489
|
+
const bossIDsToStageIDs: Partial<Record<BossID, Set<StageID>>> = {};
|
|
490
|
+
|
|
491
|
+
for (const bossID of BOSS_ID_VALUES) {
|
|
492
|
+
const stageIDs = new Set<StageID>();
|
|
493
|
+
for (const [stageID, bossSet] of STAGE_ID_TO_BOSS_SET_MAP) {
|
|
494
|
+
if (bossSet.has(bossID)) {
|
|
495
|
+
stageIDs.add(stageID);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
bossIDsToStageIDs[bossID] = stageIDs;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
return bossIDsToStageIDs as Readonly<Record<BossID, ReadonlySet<StageID>>>;
|
|
503
|
+
})();
|