isaacscript-common 48.0.0 → 49.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/index.rollup.d.ts +36 -14
- package/dist/isaacscript-common.lua +171 -157
- package/dist/src/functions/doors.lua +1 -1
- package/dist/src/functions/enums.d.ts +35 -14
- package/dist/src/functions/enums.d.ts.map +1 -1
- package/dist/src/functions/enums.lua +42 -14
- package/dist/src/functions/nextStage.lua +5 -5
- package/dist/src/functions/stage.lua +2 -2
- package/dist/src/objects/bossNamePNGFileNames.lua +24 -24
- package/dist/src/objects/bossPortraitPNGFileNames.lua +24 -24
- package/dist/src/objects/levelNames.lua +1 -1
- package/dist/src/objects/stageToMusic.lua +1 -1
- package/dist/src/objects/stageToStageID.lua +1 -1
- package/dist/src/sets/bossSets.lua +8 -8
- package/dist/src/sets/storyBossesSet.lua +1 -1
- package/package.json +2 -2
- package/src/functions/doors.ts +1 -1
- package/src/functions/enums.ts +51 -14
- package/src/functions/nextStage.ts +5 -5
- package/src/functions/stage.ts +2 -2
- package/src/objects/bossNamePNGFileNames.ts +24 -24
- package/src/objects/bossPortraitPNGFileNames.ts +24 -24
- package/src/objects/levelNames.ts +1 -1
- package/src/objects/stageToMusic.ts +1 -1
- package/src/objects/stageToStageID.ts +1 -1
- package/src/sets/bossSets.ts +8 -8
- package/src/sets/storyBossesSet.ts +1 -1
package/src/functions/enums.ts
CHANGED
|
@@ -5,13 +5,14 @@ import { isNumber, isString } from "./types";
|
|
|
5
5
|
import { assertDefined, iRange } from "./utils";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* TypeScriptToLua will transpile TypeScript enums to Lua tables that have a double mapping.
|
|
9
|
-
* when you iterate over them, you will get both the names of the enums and the values of the
|
|
10
|
-
* in a random order. Use this helper function to get the entries of the enum with the
|
|
11
|
-
* mappings filtered out.
|
|
8
|
+
* TypeScriptToLua will transpile TypeScript number enums to Lua tables that have a double mapping.
|
|
9
|
+
* Thus, when you iterate over them, you will get both the names of the enums and the values of the
|
|
10
|
+
* enums, in a random order. Use this helper function to get the entries of the enum with the
|
|
11
|
+
* reverse mappings filtered out.
|
|
12
12
|
*
|
|
13
13
|
* This function will return the enum values in a sorted order, which may not necessarily be the
|
|
14
|
-
* same order as which they were declared in.
|
|
14
|
+
* same order as which they were declared in. (It is impossible to get the declaration order at
|
|
15
|
+
* run-time.)
|
|
15
16
|
*
|
|
16
17
|
* This function will work properly for both number enums and string enums. (Reverse mappings are
|
|
17
18
|
* not created for string enums.)
|
|
@@ -45,12 +46,13 @@ export function getEnumEntries<T>(
|
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
/**
|
|
48
|
-
* TypeScriptToLua will transpile TypeScript enums to Lua tables that have a double mapping.
|
|
49
|
-
* when you iterate over them, you will get both the names of the enums and the values of the
|
|
50
|
-
* in a random order. If all you need are the keys of an enum, use this helper function.
|
|
49
|
+
* TypeScriptToLua will transpile TypeScript number enums to Lua tables that have a double mapping.
|
|
50
|
+
* Thus, when you iterate over them, you will get both the names of the enums and the values of the
|
|
51
|
+
* enums, in a random order. If all you need are the keys of an enum, use this helper function.
|
|
51
52
|
*
|
|
52
53
|
* This function will return the enum keys in a sorted order, which may not necessarily be the same
|
|
53
|
-
* order as which they were declared in.
|
|
54
|
+
* order as which they were declared in. (It is impossible to get the declaration order at
|
|
55
|
+
* run-time.)
|
|
54
56
|
*
|
|
55
57
|
* This function will work properly for both number enums and string enums. (Reverse mappings are
|
|
56
58
|
* not created for string enums.)
|
|
@@ -76,12 +78,47 @@ export function getEnumLength(
|
|
|
76
78
|
}
|
|
77
79
|
|
|
78
80
|
/**
|
|
79
|
-
* TypeScriptToLua will transpile TypeScript enums to Lua tables that have a double mapping.
|
|
80
|
-
* when you iterate over them, you will get both the names of the enums and the values of the
|
|
81
|
-
* in a random order. If all you need are the
|
|
81
|
+
* TypeScriptToLua will transpile TypeScript number enums to Lua tables that have a double mapping.
|
|
82
|
+
* Thus, when you iterate over them, you will get both the names of the enums and the values of the
|
|
83
|
+
* enums, in a random order. If all you need are the names of an enum from the reverse mapping, use
|
|
84
|
+
* this helper function.
|
|
85
|
+
*
|
|
86
|
+
* This function will return the enum names in a sorted order, which may not necessarily be the same
|
|
87
|
+
* order as which they were declared in. (It is impossible to get the declaration order at
|
|
88
|
+
* run-time.)
|
|
89
|
+
*
|
|
90
|
+
* This function will work properly for both number enums and string enums. (Reverse mappings are
|
|
91
|
+
* not created for string enums, so their names would be equivalent to what would be returned by the
|
|
92
|
+
* `getEnumKeys` function.)
|
|
93
|
+
*
|
|
94
|
+
* For a more in depth explanation, see:
|
|
95
|
+
* https://isaacscript.github.io/main/gotchas#iterating-over-enums
|
|
96
|
+
*/
|
|
97
|
+
export function getEnumNames(
|
|
98
|
+
transpiledEnum: Record<string | number, string | number>,
|
|
99
|
+
): string[] {
|
|
100
|
+
const enumNames: string[] = [];
|
|
101
|
+
|
|
102
|
+
for (const [key, _value] of pairs(transpiledEnum)) {
|
|
103
|
+
if (isString(key)) {
|
|
104
|
+
enumNames.push(key);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// The enum names will be in a random order (because of "pairs"), so sort them.
|
|
109
|
+
enumNames.sort();
|
|
110
|
+
|
|
111
|
+
return enumNames;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* TypeScriptToLua will transpile TypeScript number enums to Lua tables that have a double mapping.
|
|
116
|
+
* Thus, when you iterate over them, you will get both the names of the enums and the values of the
|
|
117
|
+
* enums, in a random order. If all you need are the values of an enum, use this helper function.
|
|
82
118
|
*
|
|
83
119
|
* This function will return the enum values in a sorted order, which may not necessarily be the
|
|
84
|
-
* same order as which they were declared in.
|
|
120
|
+
* same order as which they were declared in. (It is impossible to get the declaration order at
|
|
121
|
+
* run-time.)
|
|
85
122
|
*
|
|
86
123
|
* This function will work properly for both number enums and string enums. (Reverse mappings are
|
|
87
124
|
* not created for string enums.)
|
|
@@ -191,7 +228,7 @@ export function validateCustomEnum(
|
|
|
191
228
|
}
|
|
192
229
|
|
|
193
230
|
/**
|
|
194
|
-
* Helper function to validate if every value in
|
|
231
|
+
* Helper function to validate if every value in a number enum is contiguous, starting at 0.
|
|
195
232
|
*
|
|
196
233
|
* This is useful to automate checking large enums for typos.
|
|
197
234
|
*/
|
|
@@ -45,8 +45,8 @@ export function getNextStage(): LevelStage {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
// -9
|
|
48
|
-
case GridRoom.
|
|
49
|
-
return LevelStage.
|
|
48
|
+
case GridRoom.VOID: {
|
|
49
|
+
return LevelStage.VOID;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
// -10
|
|
@@ -103,9 +103,9 @@ export function getNextStage(): LevelStage {
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
// 12
|
|
106
|
-
if (stage === LevelStage.
|
|
106
|
+
if (stage === LevelStage.VOID) {
|
|
107
107
|
// The Void goes to The Void.
|
|
108
|
-
return LevelStage.
|
|
108
|
+
return LevelStage.VOID;
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
// By default, go to the next floor.
|
|
@@ -192,7 +192,7 @@ export function getNextStageType(upwards = false): StageType {
|
|
|
192
192
|
}
|
|
193
193
|
|
|
194
194
|
// 12
|
|
195
|
-
if (nextStage === LevelStage.
|
|
195
|
+
if (nextStage === LevelStage.VOID) {
|
|
196
196
|
// The Void does not have any alternate floors.
|
|
197
197
|
return StageType.ORIGINAL;
|
|
198
198
|
}
|
package/src/functions/stage.ts
CHANGED
|
@@ -199,7 +199,7 @@ export function goToStage(stage: LevelStage, stageType: StageType): void {
|
|
|
199
199
|
export function isFinalFloor(stage: LevelStage, stageType: StageType): boolean {
|
|
200
200
|
return (
|
|
201
201
|
stage === LevelStage.DARK_ROOM_CHEST ||
|
|
202
|
-
stage === LevelStage.
|
|
202
|
+
stage === LevelStage.VOID ||
|
|
203
203
|
stage === LevelStage.HOME ||
|
|
204
204
|
(stage === LevelStage.WOMB_2 && isRepentanceStage(stageType)) // Corpse 2
|
|
205
205
|
);
|
|
@@ -244,7 +244,7 @@ export function isStageWithNaturalDevilRoom(
|
|
|
244
244
|
* Rooms will drop random boss collectibles.
|
|
245
245
|
*/
|
|
246
246
|
export function isStageWithRandomBossCollectible(stage: LevelStage): boolean {
|
|
247
|
-
return !isStageWithStoryBoss(stage) || stage === LevelStage.
|
|
247
|
+
return !isStageWithStoryBoss(stage) || stage === LevelStage.VOID;
|
|
248
248
|
}
|
|
249
249
|
|
|
250
250
|
/**
|
|
@@ -26,20 +26,20 @@ export const BOSS_NAME_PNG_FILE_NAMES = {
|
|
|
26
26
|
[BossID.STEVEN]: "bossname_79.1_steven.png", // 20
|
|
27
27
|
[BossID.CHAD]: "bossname_28.1_chad.png", // 21
|
|
28
28
|
[BossID.HEADLESS_HORSEMAN]: "bossname_82.0_headlesshorseman.png", // 22
|
|
29
|
-
[BossID.
|
|
29
|
+
[BossID.FALLEN]: "bossname_81.0_thefallen.png", // 23
|
|
30
30
|
[BossID.SATAN]: "bossname_84.0_satan.png", // 24
|
|
31
31
|
[BossID.IT_LIVES]: "bossname_78.1_itlives.png", // 25
|
|
32
|
-
[BossID.
|
|
33
|
-
[BossID.
|
|
32
|
+
[BossID.HOLLOW]: "bossname_19.1_thehollow.png", // 26
|
|
33
|
+
[BossID.CARRION_QUEEN]: "bossname_28.2_carrionqueen.png", // 27
|
|
34
34
|
[BossID.GURDY_JR]: "bossname_99.0_gurdyjr.png", // 28
|
|
35
|
-
[BossID.
|
|
36
|
-
[BossID.
|
|
35
|
+
[BossID.HUSK]: "bossname_67.1_thehusk.png", // 29
|
|
36
|
+
[BossID.BLOAT]: "bossname_68.1_bloat.png", // 30
|
|
37
37
|
[BossID.LOKII]: "bossname_69.1_lokii.png", // 31
|
|
38
|
-
[BossID.
|
|
38
|
+
[BossID.BLIGHTED_OVUM]: "bossname_79.2_blightedovum.png", // 32
|
|
39
39
|
[BossID.TERATOMA]: "bossname_71.1_teratoma.png", // 33
|
|
40
|
-
[BossID.
|
|
40
|
+
[BossID.WIDOW]: "bossname_100.0_widow.png", // 34
|
|
41
41
|
[BossID.MASK_OF_INFAMY]: "bossname_97.0_maskofinfamy.png", // 35
|
|
42
|
-
[BossID.
|
|
42
|
+
[BossID.WRETCHED]: "bossname_100.1_thewretched.png", // 36
|
|
43
43
|
[BossID.PIN]: "bossname_62.0_pin.png", // 37
|
|
44
44
|
[BossID.CONQUEST]: "bossname_65.1_conquest.png", // 38
|
|
45
45
|
// There is no dedicated "bossname_" PNG file for Isaac.
|
|
@@ -47,49 +47,49 @@ export const BOSS_NAME_PNG_FILE_NAMES = {
|
|
|
47
47
|
[BossID.BLUE_BABY]: "bossname_102.1_bluebaby.png", // 40
|
|
48
48
|
[BossID.DADDY_LONG_LEGS]: "bossname_101.0_daddylonglegs.png", // 41
|
|
49
49
|
[BossID.TRIACHNID]: "bossname_101.1_triachnid.png", // 42
|
|
50
|
-
[BossID.
|
|
50
|
+
[BossID.HAUNT]: "bossname_260.0_thehaunt.png", // 43
|
|
51
51
|
[BossID.DINGLE]: "bossname_261.0_dingle.png", // 44
|
|
52
52
|
[BossID.MEGA_MAW]: "bossname_262.0_megamaw.png", // 45
|
|
53
|
-
[BossID.
|
|
53
|
+
[BossID.GATE]: "bossname_263.0_megamaw2.png", // 46
|
|
54
54
|
[BossID.MEGA_FATTY]: "bossname_264.0_megafatty.png", // 47
|
|
55
|
-
[BossID.
|
|
55
|
+
[BossID.CAGE]: "bossname_265.0_fatty2.png", // 48
|
|
56
56
|
[BossID.MAMA_GURDY]: "bossname_266.0_mamagurdy.png", // 49
|
|
57
57
|
[BossID.DARK_ONE]: "bossname_267.0_darkone.png", // 50
|
|
58
|
-
[BossID.
|
|
58
|
+
[BossID.ADVERSARY]: "bossname_268.0_darkone2.png", // 51
|
|
59
59
|
[BossID.POLYCEPHALUS]: "bossname_269.0_polycephalus.png", // 52
|
|
60
60
|
[BossID.MR_FRED]: "bossname_270.0_megafred.png", // 53
|
|
61
|
-
[BossID.
|
|
61
|
+
[BossID.LAMB]: "bossname_273.0_thelamb.png", // 54
|
|
62
62
|
[BossID.MEGA_SATAN]: "bossname_274.0_megasatan.png", // 55
|
|
63
63
|
[BossID.GURGLINGS]: "bossname_276.0_gurglings.png", // 56
|
|
64
|
-
[BossID.
|
|
64
|
+
[BossID.STAIN]: "bossname_401.0_thestain.png", // 57
|
|
65
65
|
[BossID.BROWNIE]: "bossname_402.0_brownie.png", // 58
|
|
66
|
-
[BossID.
|
|
66
|
+
[BossID.FORSAKEN]: "bossname_403.0_theforsaken.png", // 59
|
|
67
67
|
[BossID.LITTLE_HORN]: "bossname_404.0_littlehorn.png", // 60
|
|
68
68
|
[BossID.RAG_MAN]: "bossname_405.0_ragman.png", // 61
|
|
69
69
|
[BossID.ULTRA_GREED]: "bossname_406.0_ultragreed.png", // 62
|
|
70
70
|
[BossID.HUSH]: "bossname_407.0_hush.png", // 63
|
|
71
71
|
[BossID.DANGLE]: "bossname_dangle.png", // 64
|
|
72
72
|
[BossID.TURDLING]: "bossname_turdlings.png", // 65
|
|
73
|
-
[BossID.
|
|
73
|
+
[BossID.FRAIL]: "bossname_thefrail.png", // 66
|
|
74
74
|
[BossID.RAG_MEGA]: "bossname_ragmega.png", // 67
|
|
75
75
|
[BossID.SISTERS_VIS]: "bossname_sisterssvis.png", // 68
|
|
76
76
|
[BossID.BIG_HORN]: "bossname_bighorn.png", // 69
|
|
77
77
|
[BossID.DELIRIUM]: "bossname_delirium.png", // 70
|
|
78
78
|
// There is no `BossID` with a value of 71.
|
|
79
|
-
[BossID.
|
|
80
|
-
[BossID.
|
|
79
|
+
[BossID.MATRIARCH]: "bossname_matriarch.png", // 72
|
|
80
|
+
[BossID.PILE]: "bossname_polycephalus2.png", // 73
|
|
81
81
|
[BossID.REAP_CREEP]: "bossname_reapcreep.png", // 74
|
|
82
82
|
[BossID.LIL_BLUB]: "bossname_beelzeblub.png", // 75
|
|
83
83
|
[BossID.WORMWOOD]: "bossname_wormwood.png", // 76
|
|
84
84
|
[BossID.RAINMAKER]: "bossname_rainmaker.png", // 77
|
|
85
|
-
[BossID.
|
|
86
|
-
[BossID.
|
|
85
|
+
[BossID.VISAGE]: "bossname_visage.png", // 78
|
|
86
|
+
[BossID.SIREN]: "bossname_siren.png", // 79
|
|
87
87
|
[BossID.TUFF_TWINS]: "bossname_tufftwins.png", // 80
|
|
88
|
-
[BossID.
|
|
88
|
+
[BossID.HERETIC]: "bossname_heretic.png", // 81
|
|
89
89
|
[BossID.HORNFEL]: "bossname_hornfel.png", // 82
|
|
90
90
|
[BossID.GREAT_GIDEON]: "bossname_gideon.png", // 83
|
|
91
91
|
[BossID.BABY_PLUM]: "bossname_babyplum.png", // 84
|
|
92
|
-
[BossID.
|
|
92
|
+
[BossID.SCOURGE]: "bossname_scourge.png", // 85
|
|
93
93
|
[BossID.CHIMERA]: "bossname_chimera.png", // 86
|
|
94
94
|
[BossID.ROTGUT]: "bossname_rotgut.png", // 87
|
|
95
95
|
[BossID.MOTHER]: "bossname_mother.png", // 88
|
|
@@ -102,12 +102,12 @@ export const BOSS_NAME_PNG_FILE_NAMES = {
|
|
|
102
102
|
[BossID.SINGE]: "bossname_singe.png", // 93
|
|
103
103
|
[BossID.BUMBINO]: "bossname_bumbino.png", // 94
|
|
104
104
|
[BossID.COLOSTOMIA]: "bossname_colostomia.png", // 95
|
|
105
|
-
[BossID.
|
|
105
|
+
[BossID.SHELL]: "bossname_shell.png", // 96
|
|
106
106
|
[BossID.TURDLET]: "bossname_turdlet.png", // 97
|
|
107
107
|
[BossID.RAGLICH]: "bossname_raglich.png", // 98
|
|
108
108
|
[BossID.DOGMA]: "bossname_dogma.png", // 99
|
|
109
109
|
// There is no versus-screen for The Beast, so use Dogma instead.
|
|
110
|
-
[BossID.
|
|
110
|
+
[BossID.BEAST]: "bossname_dogma.png", // 100
|
|
111
111
|
[BossID.HORNY_BOYS]: "bossname_hornyboys.png", // 101
|
|
112
112
|
[BossID.CLUTCH]: "bossname_clutch.png", // 102
|
|
113
113
|
} as const satisfies Record<BossID, string>;
|
|
@@ -26,71 +26,71 @@ export const BOSS_PORTRAIT_PNG_FILE_NAMES = {
|
|
|
26
26
|
[BossID.STEVEN]: "portrait_79.1_steven.png", // 20
|
|
27
27
|
[BossID.CHAD]: "portrait_28.1_chad.png", // 21
|
|
28
28
|
[BossID.HEADLESS_HORSEMAN]: "portrait_82.0_headlesshorseman.png", // 22
|
|
29
|
-
[BossID.
|
|
29
|
+
[BossID.FALLEN]: "portrait_81.0_thefallen.png", // 23
|
|
30
30
|
[BossID.SATAN]: "portrait_84.0_satan.png", // 24
|
|
31
31
|
[BossID.IT_LIVES]: "portrait_78.1_itlives.png", // 25
|
|
32
|
-
[BossID.
|
|
33
|
-
[BossID.
|
|
32
|
+
[BossID.HOLLOW]: "portrait_19.1_thehollow.png", // 26
|
|
33
|
+
[BossID.CARRION_QUEEN]: "portrait_28.2_carrionqueen.png", // 27
|
|
34
34
|
[BossID.GURDY_JR]: "portrait_99.0_gurdyjr.png", // 28
|
|
35
|
-
[BossID.
|
|
36
|
-
[BossID.
|
|
35
|
+
[BossID.HUSK]: "portrait_67.1_thehusk.png", // 29
|
|
36
|
+
[BossID.BLOAT]: "portrait_68.1_bloat.png", // 30
|
|
37
37
|
[BossID.LOKII]: "portrait_69.1_lokii.png", // 31
|
|
38
|
-
[BossID.
|
|
38
|
+
[BossID.BLIGHTED_OVUM]: "portrait_79.2_blightedovum.png", // 32
|
|
39
39
|
[BossID.TERATOMA]: "portrait_71.1_teratoma.png", // 33
|
|
40
|
-
[BossID.
|
|
40
|
+
[BossID.WIDOW]: "portrait_100.0_widow.png", // 34
|
|
41
41
|
[BossID.MASK_OF_INFAMY]: "portrait_97.0_maskofinfamy.png", // 35
|
|
42
|
-
[BossID.
|
|
42
|
+
[BossID.WRETCHED]: "portrait_100.1_thewretched.png", // 36
|
|
43
43
|
[BossID.PIN]: "portrait_62.0_pin.png", // 37
|
|
44
44
|
[BossID.CONQUEST]: "portrait_65.1_conquest.png", // 38
|
|
45
45
|
[BossID.ISAAC]: "portrait_102.0_isaac.png", // 39
|
|
46
46
|
[BossID.BLUE_BABY]: "portrait_102.1_bluebaby.png", // 40
|
|
47
47
|
[BossID.DADDY_LONG_LEGS]: "portrait_101.0_daddylonglegs.png", // 41
|
|
48
48
|
[BossID.TRIACHNID]: "portrait_101.1_triachnid.png", // 42
|
|
49
|
-
[BossID.
|
|
49
|
+
[BossID.HAUNT]: "portrait_260.0_thehaunt.png", // 43
|
|
50
50
|
[BossID.DINGLE]: "portrait_261.0_dingle.png", // 44
|
|
51
51
|
[BossID.MEGA_MAW]: "portrait_262.0_megamaw.png", // 45
|
|
52
|
-
[BossID.
|
|
52
|
+
[BossID.GATE]: "portrait_263.0_megamaw2.png", // 46
|
|
53
53
|
[BossID.MEGA_FATTY]: "portrait_264.0_megafatty.png", // 47
|
|
54
|
-
[BossID.
|
|
54
|
+
[BossID.CAGE]: "portrait_265.0_fatty2.png", // 48
|
|
55
55
|
[BossID.MAMA_GURDY]: "portrait_266.0_mamagurdy.png", // 49
|
|
56
56
|
[BossID.DARK_ONE]: "portrait_267.0_darkone.png", // 50
|
|
57
|
-
[BossID.
|
|
57
|
+
[BossID.ADVERSARY]: "portrait_268.0_darkone2.png", // 51
|
|
58
58
|
[BossID.POLYCEPHALUS]: "portrait_269.0_polycephalus.png", // 52
|
|
59
59
|
[BossID.MR_FRED]: "portrait_270.0_megafred.png", // 53
|
|
60
|
-
[BossID.
|
|
60
|
+
[BossID.LAMB]: "portrait_273.0_thelamb.png", // 54
|
|
61
61
|
[BossID.MEGA_SATAN]: "portrait_274.0_megasatan.png", // 55
|
|
62
62
|
[BossID.GURGLINGS]: "portrait_276.0_gurglings.png", // 56
|
|
63
|
-
[BossID.
|
|
63
|
+
[BossID.STAIN]: "portrait_401.0_thestain.png", // 57
|
|
64
64
|
[BossID.BROWNIE]: "portrait_402.0_brownie.png", // 58
|
|
65
|
-
[BossID.
|
|
65
|
+
[BossID.FORSAKEN]: "portrait_403.0_theforsaken.png", // 59
|
|
66
66
|
[BossID.LITTLE_HORN]: "portrait_404.0_littlehorn.png", // 60
|
|
67
67
|
[BossID.RAG_MAN]: "portrait_405.0_ragman.png", // 61
|
|
68
68
|
[BossID.ULTRA_GREED]: "portrait_406.0_ultragreed.png", // 62
|
|
69
69
|
[BossID.HUSH]: "portrait_407.0_hush.png", // 63
|
|
70
70
|
[BossID.DANGLE]: "portrait_dangle.png", // 64
|
|
71
71
|
[BossID.TURDLING]: "portrait_turdlings.png", // 65
|
|
72
|
-
[BossID.
|
|
72
|
+
[BossID.FRAIL]: "portrait_thefrail.png", // 66
|
|
73
73
|
[BossID.RAG_MEGA]: "portrait_ragmega.png", // 67
|
|
74
74
|
[BossID.SISTERS_VIS]: "portrait_sistersvis.png", // 68
|
|
75
75
|
[BossID.BIG_HORN]: "portrait_bighorn.png", // 69
|
|
76
76
|
[BossID.DELIRIUM]: "portrait_delirium.png", // 70
|
|
77
77
|
// There is no `BossID` with a value of 71.
|
|
78
|
-
[BossID.
|
|
79
|
-
[BossID.
|
|
78
|
+
[BossID.MATRIARCH]: "portrait_matriarch.png", // 72
|
|
79
|
+
[BossID.PILE]: "portrait_269.1_polycephalus2.png", // 73
|
|
80
80
|
[BossID.REAP_CREEP]: "portrait_900.0_reapcreep.png", // 74
|
|
81
81
|
[BossID.LIL_BLUB]: "portrait_901.0_beelzeblub.png", // 75
|
|
82
82
|
// There is also a "portrait_901.0_beelzeblub_dross.png" file.
|
|
83
83
|
[BossID.WORMWOOD]: "portrait_902.0_wormwood.png", // 76
|
|
84
84
|
// There is also a "portrait_902.0_wormwood_dross.png" file.
|
|
85
85
|
[BossID.RAINMAKER]: "portrait_902.0_rainmaker.png", // 77
|
|
86
|
-
[BossID.
|
|
87
|
-
[BossID.
|
|
86
|
+
[BossID.VISAGE]: "portrait_903.0_visage.png", // 78
|
|
87
|
+
[BossID.SIREN]: "portrait_904.0_siren.png", // 79
|
|
88
88
|
[BossID.TUFF_TWINS]: "portrait_19.100_tufftwins.png", // 80
|
|
89
|
-
[BossID.
|
|
89
|
+
[BossID.HERETIC]: "portrait_905.0_heretic.png", // 81
|
|
90
90
|
[BossID.HORNFEL]: "portrait_906.0_hornfel.png", // 82
|
|
91
91
|
[BossID.GREAT_GIDEON]: "portrait_907.0_gideon.png", // 83
|
|
92
92
|
[BossID.BABY_PLUM]: "portrait_908.0_babyplum.png", // 84
|
|
93
|
-
[BossID.
|
|
93
|
+
[BossID.SCOURGE]: "portrait_909.0_scourge.png", // 85
|
|
94
94
|
[BossID.CHIMERA]: "portrait_910.0_chimera.png", // 86
|
|
95
95
|
[BossID.ROTGUT]: "portrait_911.0_rotgut.png", // 87
|
|
96
96
|
[BossID.MOTHER]: "portrait_mother.png", // 88
|
|
@@ -105,12 +105,12 @@ export const BOSS_PORTRAIT_PNG_FILE_NAMES = {
|
|
|
105
105
|
[BossID.SINGE]: "portrait_singe.png", // 93
|
|
106
106
|
[BossID.BUMBINO]: "portrait_bumbino.png", // 94
|
|
107
107
|
[BossID.COLOSTOMIA]: "portrait_colostomia.png", // 95
|
|
108
|
-
[BossID.
|
|
108
|
+
[BossID.SHELL]: "portrait_shell.png", // 96
|
|
109
109
|
[BossID.TURDLET]: "portrait_turdlet.png", // 97
|
|
110
110
|
[BossID.RAGLICH]: "portrait_raglich.png", // 98
|
|
111
111
|
[BossID.DOGMA]: "portrait_dogma.png", // 99
|
|
112
112
|
// There is no versus-screen for The Beast, so use Dogma instead.
|
|
113
|
-
[BossID.
|
|
113
|
+
[BossID.BEAST]: "portrait_dogma.png", // 100
|
|
114
114
|
[BossID.HORNY_BOYS]: "portrait_hornyboys.png", // 101
|
|
115
115
|
[BossID.CLUTCH]: "portrait_clutch.png", // 102
|
|
116
116
|
} as const satisfies Record<BossID, string>;
|
|
@@ -93,6 +93,6 @@ export const STAGE_TO_MUSIC = {
|
|
|
93
93
|
[LevelStage.BLUE_WOMB]: BLUE_WOMB_TO_MUSIC, // 9
|
|
94
94
|
[LevelStage.SHEOL_CATHEDRAL]: SHEOL_CATHEDRAL_TO_MUSIC, // 10
|
|
95
95
|
[LevelStage.DARK_ROOM_CHEST]: DARK_ROOM_CHEST_TO_MUSIC, // 11
|
|
96
|
-
[LevelStage.
|
|
96
|
+
[LevelStage.VOID]: VOID_TO_MUSIC, // 12
|
|
97
97
|
[LevelStage.HOME]: HOME_TO_MUSIC, // 13
|
|
98
98
|
} as const satisfies Record<LevelStage, Record<StageType, Music>>;
|
|
@@ -93,6 +93,6 @@ export const STAGE_TO_STAGE_ID = {
|
|
|
93
93
|
[LevelStage.BLUE_WOMB]: BLUE_WOMB_TO_STAGE_ID, // 9
|
|
94
94
|
[LevelStage.SHEOL_CATHEDRAL]: SHEOL_CATHEDRAL_TO_STAGE_ID, // 10
|
|
95
95
|
[LevelStage.DARK_ROOM_CHEST]: DARK_ROOM_CHEST_TO_STAGE_ID, // 11
|
|
96
|
-
[LevelStage.
|
|
96
|
+
[LevelStage.VOID]: VOID_TO_STAGE_ID, // 12
|
|
97
97
|
[LevelStage.HOME]: HOME_TO_STAGE_ID, // 13
|
|
98
98
|
} as const satisfies Record<LevelStage, unknown>;
|
package/src/sets/bossSets.ts
CHANGED
|
@@ -70,7 +70,7 @@ const CELLAR_BOSSES_SET = new ReadonlySet<string>([
|
|
|
70
70
|
`${EntityType.FALLEN}.${FallenVariant.FALLEN}`, // 81.0
|
|
71
71
|
`${EntityType.HEADLESS_HORSEMAN}.0`, // 82.0
|
|
72
72
|
`${EntityType.WIDOW}.${WidowVariant.WIDOW}`, // 100.0
|
|
73
|
-
`${EntityType.
|
|
73
|
+
`${EntityType.HAUNT}.${HauntVariant.HAUNT}`, // 260.0
|
|
74
74
|
`${EntityType.LITTLE_HORN}.0`, // 404.0
|
|
75
75
|
`${EntityType.RAG_MAN}.${RagManVariant.RAG_MAN}`, // 405.0
|
|
76
76
|
`${EntityType.BABY_PLUM}.0`, // 908.0
|
|
@@ -153,16 +153,16 @@ const CAVES_BOSSES_SET = new ReadonlySet<string>([
|
|
|
153
153
|
|
|
154
154
|
/** Contains just the bosses in Catacombs (not e.g. Flooded Caves). */
|
|
155
155
|
const CATACOMBS_BOSSES_SET = new ReadonlySet<string>([
|
|
156
|
-
`${EntityType.LARRY_JR}.${LarryJrVariant.
|
|
156
|
+
`${EntityType.LARRY_JR}.${LarryJrVariant.HOLLOW}`, // 19.1
|
|
157
157
|
`${EntityType.CHUB}.${ChubVariant.CARRION_QUEEN}`, // 28.2
|
|
158
158
|
`${EntityType.PIN}.${PinVariant.FRAIL}`, // 62.2
|
|
159
159
|
`${EntityType.PESTILENCE}.0`, // 64.0
|
|
160
|
-
`${EntityType.DUKE_OF_FLIES}.${DukeOfFliesVariant.
|
|
160
|
+
`${EntityType.DUKE_OF_FLIES}.${DukeOfFliesVariant.HUSK}`, // 67.1
|
|
161
161
|
`${EntityType.PEEP}.${PeepVariant.PEEP}`, // 68.0
|
|
162
162
|
`${EntityType.FALLEN}.${FallenVariant.FALLEN}`, // 81.0
|
|
163
163
|
`${EntityType.HEADLESS_HORSEMAN}.0`, // 82.0
|
|
164
164
|
`${EntityType.GURDY_JR}.0`, // 99.0
|
|
165
|
-
`${EntityType.WIDOW}.${WidowVariant.
|
|
165
|
+
`${EntityType.WIDOW}.${WidowVariant.WRETCHED}`, // 100.1
|
|
166
166
|
`${EntityType.DARK_ONE}.0`, // 267.0
|
|
167
167
|
`${EntityType.POLYCEPHALUS}.${PolycephalusVariant.POLYCEPHALUS}`, // 269.0
|
|
168
168
|
`${EntityType.FORSAKEN}.0`, // 403.0
|
|
@@ -202,8 +202,8 @@ const MINES_BOSSES_SET = new ReadonlySet<string>([
|
|
|
202
202
|
|
|
203
203
|
/** Contains just the bosses in Ashpit (not e.g. Flooded Caves). */
|
|
204
204
|
const ASHPIT_BOSSES_SET = new ReadonlySet<string>([
|
|
205
|
-
`${EntityType.LARRY_JR}.${LarryJrVariant.
|
|
206
|
-
`${EntityType.POLYCEPHALUS}.${PolycephalusVariant.
|
|
205
|
+
`${EntityType.LARRY_JR}.${LarryJrVariant.SHELL}`, // 19.3
|
|
206
|
+
`${EntityType.POLYCEPHALUS}.${PolycephalusVariant.PILE}`, // 269.1
|
|
207
207
|
`${EntityType.GREAT_GIDEON}.0`, // 907.0
|
|
208
208
|
`${EntityType.SINGE}.0`, // 915.0
|
|
209
209
|
`${EntityType.CLUTCH}.0`, // 921.0
|
|
@@ -255,7 +255,7 @@ const NECROPOLIS_BOSSES_SET = new ReadonlySet<string>([
|
|
|
255
255
|
`${EntityType.HEADLESS_HORSEMAN}.0`, // 82.0
|
|
256
256
|
`${EntityType.MASK_OF_INFAMY}.0`, // 97.0
|
|
257
257
|
`${EntityType.ADVERSARY}.0`, // 268.0
|
|
258
|
-
`${EntityType.POLYCEPHALUS}.${PolycephalusVariant.
|
|
258
|
+
`${EntityType.POLYCEPHALUS}.${PolycephalusVariant.PILE}`, // 269.1
|
|
259
259
|
`${EntityType.BROWNIE}.0`, // 402.0
|
|
260
260
|
`${EntityType.SISTERS_VIS}.0`, // 410.0
|
|
261
261
|
]);
|
|
@@ -415,7 +415,7 @@ const STAGE_10_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
|
|
|
415
415
|
]);
|
|
416
416
|
|
|
417
417
|
const DARK_ROOM_BOSSES_SET = new ReadonlySet<string>([
|
|
418
|
-
`${EntityType.
|
|
418
|
+
`${EntityType.LAMB}.${LambVariant.LAMB}`, // 273.0
|
|
419
419
|
`${EntityType.MEGA_SATAN}.0`, // 274.0
|
|
420
420
|
]);
|
|
421
421
|
|
|
@@ -6,7 +6,7 @@ export const STORY_BOSSES_SET = new ReadonlySet<EntityType>([
|
|
|
6
6
|
EntityType.MOMS_HEART, // 78
|
|
7
7
|
EntityType.SATAN, // 84
|
|
8
8
|
EntityType.ISAAC, // 102
|
|
9
|
-
EntityType.
|
|
9
|
+
EntityType.LAMB, // 273
|
|
10
10
|
EntityType.MEGA_SATAN, // 274
|
|
11
11
|
EntityType.MEGA_SATAN_2, // 275
|
|
12
12
|
EntityType.ULTRA_GREED, // 406
|