isaacscript-common 21.5.3 → 21.6.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 +12 -0
- package/dist/isaacscript-common.lua +117 -3
- package/dist/src/classes/callbacks/InputActionFilter.d.ts.map +1 -1
- package/dist/src/classes/callbacks/InputActionPlayer.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostCollectibleEmpty.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostCustomRevive.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostDiceRoomActivated.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCollision.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCustomCollision.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCustomRemove.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostGridEntityRemove.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostItemDischarge.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostKeyboardChanged.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostPurchase.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostRoomClearChanged.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostTransformation.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PreEntitySpawnFilter.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PreRoomEntitySpawnFilter.d.ts.map +1 -1
- package/dist/src/classes/features/other/CustomItemPools.d.ts.map +1 -1
- package/dist/src/classes/features/other/CustomItemPools.lua +3 -0
- package/dist/src/classes/features/other/RunInNFrames.d.ts.map +1 -1
- package/dist/src/classes/features/other/RunNextRoom.d.ts.map +1 -1
- package/dist/src/classes/features/other/TaintedLazarusPlayers.d.ts.map +1 -1
- package/dist/src/classes/private/CustomCallback.d.ts.map +1 -1
- package/dist/src/functions/stage.d.ts +12 -1
- package/dist/src/functions/stage.d.ts.map +1 -1
- package/dist/src/functions/stage.lua +21 -0
- package/dist/src/functions/weighted.d.ts.map +1 -1
- package/dist/src/functions/weighted.lua +3 -0
- package/dist/src/interfaces/CustomStageTSConfig.d.ts.map +1 -1
- package/dist/src/objects/englishLevelNames.d.ts.map +1 -1
- package/dist/src/objects/stageToMusic.lua +2 -2
- package/dist/src/objects/stageToStageID.d.ts +108 -0
- package/dist/src/objects/stageToStageID.d.ts.map +1 -0
- package/dist/src/objects/stageToStageID.lua +93 -0
- package/package.json +1 -1
- package/src/classes/callbacks/InputActionFilter.ts +0 -1
- package/src/classes/callbacks/InputActionPlayer.ts +0 -1
- package/src/classes/callbacks/PostCollectibleEmpty.ts +0 -1
- package/src/classes/callbacks/PostCustomRevive.ts +0 -1
- package/src/classes/callbacks/PostDiceRoomActivated.ts +0 -1
- package/src/classes/callbacks/PostGridEntityCollision.ts +0 -1
- package/src/classes/callbacks/PostGridEntityCustomCollision.ts +0 -1
- package/src/classes/callbacks/PostGridEntityCustomRemove.ts +0 -1
- package/src/classes/callbacks/PostGridEntityRemove.ts +0 -1
- package/src/classes/callbacks/PostItemDischarge.ts +0 -1
- package/src/classes/callbacks/PostKeyboardChanged.ts +0 -1
- package/src/classes/callbacks/PostPurchase.ts +0 -1
- package/src/classes/callbacks/PostRoomClearChanged.ts +0 -1
- package/src/classes/callbacks/PostTransformation.ts +0 -1
- package/src/classes/callbacks/PreEntitySpawnFilter.ts +0 -1
- package/src/classes/callbacks/PreRoomEntitySpawnFilter.ts +0 -1
- package/src/classes/features/other/CustomItemPools.ts +6 -2
- package/src/classes/features/other/RunInNFrames.ts +0 -1
- package/src/classes/features/other/RunNextRoom.ts +0 -1
- package/src/classes/features/other/TaintedLazarusPlayers.ts +0 -1
- package/src/classes/features/other/customStages/backdrop.ts +2 -4
- package/src/classes/private/CustomCallback.ts +0 -1
- package/src/functions/stage.ts +27 -1
- package/src/functions/weighted.ts +8 -2
- package/src/interfaces/CustomStageTSConfig.ts +0 -2
- package/src/objects/englishLevelNames.ts +0 -1
- package/src/objects/stageToMusic.ts +68 -68
- package/src/objects/stageToStageID.ts +98 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
|
|
3
|
+
local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
|
|
4
|
+
local StageID = ____isaac_2Dtypescript_2Ddefinitions.StageID
|
|
5
|
+
local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
|
|
6
|
+
local BASEMENT_TO_STAGE_ID = {
|
|
7
|
+
[StageType.ORIGINAL] = StageID.BASEMENT,
|
|
8
|
+
[StageType.WRATH_OF_THE_LAMB] = StageID.CELLAR,
|
|
9
|
+
[StageType.AFTERBIRTH] = StageID.BURNING_BASEMENT,
|
|
10
|
+
[StageType.GREED_MODE] = StageID.BASEMENT,
|
|
11
|
+
[StageType.REPENTANCE] = StageID.DOWNPOUR,
|
|
12
|
+
[StageType.REPENTANCE_B] = StageID.DROSS
|
|
13
|
+
}
|
|
14
|
+
local CAVES_TO_STAGE_ID = {
|
|
15
|
+
[StageType.ORIGINAL] = StageID.CAVES,
|
|
16
|
+
[StageType.WRATH_OF_THE_LAMB] = StageID.CATACOMBS,
|
|
17
|
+
[StageType.AFTERBIRTH] = StageID.FLOODED_CAVES,
|
|
18
|
+
[StageType.GREED_MODE] = StageID.CAVES,
|
|
19
|
+
[StageType.REPENTANCE] = StageID.MINES,
|
|
20
|
+
[StageType.REPENTANCE_B] = StageID.ASHPIT
|
|
21
|
+
}
|
|
22
|
+
local DEPTHS_TO_STAGE_ID = {
|
|
23
|
+
[StageType.ORIGINAL] = StageID.DEPTHS,
|
|
24
|
+
[StageType.WRATH_OF_THE_LAMB] = StageID.NECROPOLIS,
|
|
25
|
+
[StageType.AFTERBIRTH] = StageID.DANK_DEPTHS,
|
|
26
|
+
[StageType.GREED_MODE] = StageID.DEPTHS,
|
|
27
|
+
[StageType.REPENTANCE] = StageID.MAUSOLEUM,
|
|
28
|
+
[StageType.REPENTANCE_B] = StageID.GEHENNA
|
|
29
|
+
}
|
|
30
|
+
local WOMB_TO_STAGE_ID = {
|
|
31
|
+
[StageType.ORIGINAL] = StageID.WOMB,
|
|
32
|
+
[StageType.WRATH_OF_THE_LAMB] = StageID.UTERO,
|
|
33
|
+
[StageType.AFTERBIRTH] = StageID.SCARRED_WOMB,
|
|
34
|
+
[StageType.GREED_MODE] = StageID.WOMB,
|
|
35
|
+
[StageType.REPENTANCE] = StageID.CORPSE,
|
|
36
|
+
[StageType.REPENTANCE_B] = StageID.MORTIS
|
|
37
|
+
}
|
|
38
|
+
local BLUE_WOMB_TO_STAGE_ID = {
|
|
39
|
+
[StageType.ORIGINAL] = StageID.BLUE_WOMB,
|
|
40
|
+
[StageType.WRATH_OF_THE_LAMB] = StageID.BLUE_WOMB,
|
|
41
|
+
[StageType.AFTERBIRTH] = StageID.BLUE_WOMB,
|
|
42
|
+
[StageType.GREED_MODE] = StageID.BLUE_WOMB,
|
|
43
|
+
[StageType.REPENTANCE] = StageID.BLUE_WOMB,
|
|
44
|
+
[StageType.REPENTANCE_B] = StageID.BLUE_WOMB
|
|
45
|
+
}
|
|
46
|
+
local SHEOL_CATHEDRAL_TO_STAGE_ID = {
|
|
47
|
+
[StageType.ORIGINAL] = StageID.SHEOL,
|
|
48
|
+
[StageType.WRATH_OF_THE_LAMB] = StageID.CATHEDRAL,
|
|
49
|
+
[StageType.AFTERBIRTH] = StageID.SHEOL,
|
|
50
|
+
[StageType.GREED_MODE] = StageID.SHEOL,
|
|
51
|
+
[StageType.REPENTANCE] = StageID.SHEOL,
|
|
52
|
+
[StageType.REPENTANCE_B] = StageID.SHEOL
|
|
53
|
+
}
|
|
54
|
+
local DARK_ROOM_CHEST_TO_STAGE_ID = {
|
|
55
|
+
[StageType.ORIGINAL] = StageID.DARK_ROOM,
|
|
56
|
+
[StageType.WRATH_OF_THE_LAMB] = StageID.CHEST,
|
|
57
|
+
[StageType.AFTERBIRTH] = StageID.DARK_ROOM,
|
|
58
|
+
[StageType.GREED_MODE] = StageID.DARK_ROOM,
|
|
59
|
+
[StageType.REPENTANCE] = StageID.DARK_ROOM,
|
|
60
|
+
[StageType.REPENTANCE_B] = StageID.DARK_ROOM
|
|
61
|
+
}
|
|
62
|
+
local VOID_TO_STAGE_ID = {
|
|
63
|
+
[StageType.ORIGINAL] = StageID.VOID,
|
|
64
|
+
[StageType.WRATH_OF_THE_LAMB] = StageID.VOID,
|
|
65
|
+
[StageType.AFTERBIRTH] = StageID.VOID,
|
|
66
|
+
[StageType.GREED_MODE] = StageID.VOID,
|
|
67
|
+
[StageType.REPENTANCE] = StageID.VOID,
|
|
68
|
+
[StageType.REPENTANCE_B] = StageID.VOID
|
|
69
|
+
}
|
|
70
|
+
local HOME_TO_STAGE_ID = {
|
|
71
|
+
[StageType.ORIGINAL] = StageID.HOME,
|
|
72
|
+
[StageType.WRATH_OF_THE_LAMB] = StageID.HOME,
|
|
73
|
+
[StageType.AFTERBIRTH] = StageID.HOME,
|
|
74
|
+
[StageType.GREED_MODE] = StageID.HOME,
|
|
75
|
+
[StageType.REPENTANCE] = StageID.HOME,
|
|
76
|
+
[StageType.REPENTANCE_B] = StageID.HOME
|
|
77
|
+
}
|
|
78
|
+
____exports.STAGE_TO_STAGE_ID = {
|
|
79
|
+
[LevelStage.BASEMENT_1] = BASEMENT_TO_STAGE_ID,
|
|
80
|
+
[LevelStage.BASEMENT_2] = BASEMENT_TO_STAGE_ID,
|
|
81
|
+
[LevelStage.CAVES_1] = CAVES_TO_STAGE_ID,
|
|
82
|
+
[LevelStage.CAVES_2] = CAVES_TO_STAGE_ID,
|
|
83
|
+
[LevelStage.DEPTHS_1] = DEPTHS_TO_STAGE_ID,
|
|
84
|
+
[LevelStage.DEPTHS_2] = DEPTHS_TO_STAGE_ID,
|
|
85
|
+
[LevelStage.WOMB_1] = WOMB_TO_STAGE_ID,
|
|
86
|
+
[LevelStage.WOMB_2] = WOMB_TO_STAGE_ID,
|
|
87
|
+
[LevelStage.BLUE_WOMB] = BLUE_WOMB_TO_STAGE_ID,
|
|
88
|
+
[LevelStage.SHEOL_CATHEDRAL] = SHEOL_CATHEDRAL_TO_STAGE_ID,
|
|
89
|
+
[LevelStage.DARK_ROOM_CHEST] = DARK_ROOM_CHEST_TO_STAGE_ID,
|
|
90
|
+
[LevelStage.THE_VOID] = VOID_TO_STAGE_ID,
|
|
91
|
+
[LevelStage.HOME] = HOME_TO_STAGE_ID
|
|
92
|
+
}
|
|
93
|
+
return ____exports
|
package/package.json
CHANGED
|
@@ -15,7 +15,6 @@ export class PostCustomRevive extends CustomCallback<ModCallbackCustom.POST_CUST
|
|
|
15
15
|
this.featuresUsed = [ISCFeature.CUSTOM_REVIVE];
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
// eslint-disable-next-line class-methods-use-this
|
|
19
18
|
protected override shouldFire = (
|
|
20
19
|
fireArgs: FireArgs<T>,
|
|
21
20
|
optionalArgs: OptionalArgs<T>,
|
|
@@ -15,7 +15,6 @@ export class PostGridEntityCollision extends CustomCallback<T> {
|
|
|
15
15
|
this.featuresUsed = [ISCFeature.GRID_ENTITY_COLLISION_DETECTION];
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
// eslint-disable-next-line class-methods-use-this
|
|
19
18
|
protected override shouldFire = (
|
|
20
19
|
fireArgs: FireArgs<T>,
|
|
21
20
|
optionalArgs: OptionalArgs<T>,
|
|
@@ -15,7 +15,6 @@ export class PostGridEntityCustomCollision extends CustomCallback<T> {
|
|
|
15
15
|
this.featuresUsed = [ISCFeature.GRID_ENTITY_COLLISION_DETECTION];
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
// eslint-disable-next-line class-methods-use-this
|
|
19
18
|
protected override shouldFire = (
|
|
20
19
|
fireArgs: FireArgs<T>,
|
|
21
20
|
optionalArgs: OptionalArgs<T>,
|
|
@@ -15,7 +15,6 @@ export class PostGridEntityCustomRemove extends CustomCallback<T> {
|
|
|
15
15
|
this.featuresUsed = [ISCFeature.GRID_ENTITY_UPDATE_DETECTION];
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
// eslint-disable-next-line class-methods-use-this
|
|
19
18
|
protected override shouldFire = (
|
|
20
19
|
fireArgs: FireArgs<T>,
|
|
21
20
|
optionalArgs: OptionalArgs<T>,
|
|
@@ -15,7 +15,6 @@ export class PostGridEntityRemove extends CustomCallback<T> {
|
|
|
15
15
|
this.featuresUsed = [ISCFeature.GRID_ENTITY_UPDATE_DETECTION];
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
// eslint-disable-next-line class-methods-use-this
|
|
19
18
|
protected override shouldFire = (
|
|
20
19
|
fireArgs: FireArgs<T>,
|
|
21
20
|
optionalArgs: OptionalArgs<T>,
|
|
@@ -127,8 +127,12 @@ export class CustomItemPools extends Feature {
|
|
|
127
127
|
customItemPool,
|
|
128
128
|
seedOrRNG,
|
|
129
129
|
);
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
const tuple = customItemPool[randomIndex];
|
|
131
|
+
if (tuple === undefined) {
|
|
132
|
+
error(
|
|
133
|
+
`Failed to get an element from a custom item pool using a random index of: ${randomIndex}`,
|
|
134
|
+
);
|
|
135
|
+
}
|
|
132
136
|
|
|
133
137
|
if (decrease) {
|
|
134
138
|
arrayRemoveIndexInPlace(customItemPool, randomIndex);
|
|
@@ -179,8 +179,7 @@ function spawnWallEntity(
|
|
|
179
179
|
wallEffect.SpriteOffset = modifiedOffset;
|
|
180
180
|
|
|
181
181
|
sprite.LoadGraphics();
|
|
182
|
-
|
|
183
|
-
const roomShapeName = RoomShape[roomShape]!;
|
|
182
|
+
const roomShapeName = RoomShape[roomShape];
|
|
184
183
|
const animation = trimPrefix(roomShapeName, "SHAPE_");
|
|
185
184
|
const modifiedAnimation = isExtraWall ? `${animation}X` : animation;
|
|
186
185
|
sprite.Play(modifiedAnimation, true);
|
|
@@ -254,8 +253,7 @@ function spawnFloorEntity(customStage: CustomStage, rng: RNG) {
|
|
|
254
253
|
floorEffect.SpriteOffset = modifiedOffset;
|
|
255
254
|
|
|
256
255
|
sprite.LoadGraphics();
|
|
257
|
-
|
|
258
|
-
const roomShapeName = RoomShape[roomShape]!;
|
|
256
|
+
const roomShapeName = RoomShape[roomShape];
|
|
259
257
|
const animation = trimPrefix(roomShapeName, "SHAPE_");
|
|
260
258
|
sprite.Play(animation, true);
|
|
261
259
|
}
|
|
@@ -81,7 +81,6 @@ export abstract class CustomCallback<
|
|
|
81
81
|
* This method needs to be overwritten for any callback that has optional filtration arguments.
|
|
82
82
|
* See "shouldFire.ts" for methods tailored to specific kinds of callbacks.
|
|
83
83
|
*/
|
|
84
|
-
// eslint-disable-next-line class-methods-use-this
|
|
85
84
|
protected shouldFire: (
|
|
86
85
|
fireArgs: FireArgs<T>,
|
|
87
86
|
optionalArgs: OptionalArgs<T>,
|
package/src/functions/stage.ts
CHANGED
|
@@ -2,11 +2,13 @@ import {
|
|
|
2
2
|
GameStateFlag,
|
|
3
3
|
LevelStage,
|
|
4
4
|
RoomType,
|
|
5
|
+
StageID,
|
|
5
6
|
StageType,
|
|
6
7
|
} from "isaac-typescript-definitions";
|
|
7
8
|
import { game } from "../core/cachedClasses";
|
|
8
9
|
import { ENGLISH_LEVEL_NAMES } from "../objects/englishLevelNames";
|
|
9
10
|
import { ROOM_TYPE_GOTO_PREFIXES } from "../objects/roomTypeGotoPrefixes";
|
|
11
|
+
import { STAGE_TO_STAGE_ID } from "../objects/stageToStageID";
|
|
10
12
|
import { STAGE_TYPE_SUFFIXES } from "../objects/stageTypeSuffixes";
|
|
11
13
|
import { STAGE_TYPE_TO_LETTER } from "../objects/stageTypeToLetter";
|
|
12
14
|
import { asLevelStage, asNumber } from "./types";
|
|
@@ -88,7 +90,6 @@ export function getEffectiveStage(): LevelStage {
|
|
|
88
90
|
return stage;
|
|
89
91
|
}
|
|
90
92
|
|
|
91
|
-
// eslint-disable-next-line isaacscript/complete-sentences-jsdoc
|
|
92
93
|
/**
|
|
93
94
|
* Helper function to get the English name of the level. For example, "Caves 1".
|
|
94
95
|
*
|
|
@@ -134,6 +135,31 @@ export function getStage(): LevelStage {
|
|
|
134
135
|
return level.GetStage();
|
|
135
136
|
}
|
|
136
137
|
|
|
138
|
+
/**
|
|
139
|
+
* Helper function to get the stage ID that corresponds to a particular floor. It does this by
|
|
140
|
+
* manually converting `LevelStage` and `StageType` into `StageID`. This is useful because
|
|
141
|
+
* `getRoomStageID` will not correctly return the `StageID` if the player is in a special room.
|
|
142
|
+
*
|
|
143
|
+
* @param stage Optional. If not specified, the stage corresponding to the current floor will be
|
|
144
|
+
* used.
|
|
145
|
+
* @param stageType Optional. If not specified, the stage type corresponding to the current floor
|
|
146
|
+
* will be used.
|
|
147
|
+
*/
|
|
148
|
+
export function getStageID(stage?: LevelStage, stageType?: StageType): StageID {
|
|
149
|
+
const level = game.GetLevel();
|
|
150
|
+
|
|
151
|
+
if (stage === undefined) {
|
|
152
|
+
stage = level.GetStage();
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (stageType === undefined) {
|
|
156
|
+
stageType = level.GetStageType();
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const stageTypeToStageID = STAGE_TO_STAGE_ID[stage];
|
|
160
|
+
return stageTypeToStageID[stageType];
|
|
161
|
+
}
|
|
162
|
+
|
|
137
163
|
/** Alias for the `Level.GetStageType` method. */
|
|
138
164
|
export function getStageType(): StageType {
|
|
139
165
|
const level = game.GetLevel();
|
|
@@ -13,8 +13,14 @@ export function getRandomFromWeightedArray<T>(
|
|
|
13
13
|
seedOrRNG: Seed | RNG = getRandomSeed(),
|
|
14
14
|
): T {
|
|
15
15
|
const randomIndex = getRandomIndexFromWeightedArray(weightedArray, seedOrRNG);
|
|
16
|
-
|
|
17
|
-
const randomElement = weightedArray[randomIndex]
|
|
16
|
+
|
|
17
|
+
const randomElement = weightedArray[randomIndex];
|
|
18
|
+
if (randomElement === undefined) {
|
|
19
|
+
error(
|
|
20
|
+
`Failed to get an element from a weighted array using a random index of: ${randomIndex}`,
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
|
|
18
24
|
return randomElement[0];
|
|
19
25
|
}
|
|
20
26
|
|
|
@@ -548,7 +548,6 @@ export interface CustomStageBossPoolEntry {
|
|
|
548
548
|
|
|
549
549
|
/** Optional. A collection of sprites used for the boss on the "versus" screen. */
|
|
550
550
|
versusScreen?: {
|
|
551
|
-
// eslint-disable-next-line isaacscript/complete-sentences-jsdoc
|
|
552
551
|
/**
|
|
553
552
|
* Mandatory. The full path to the spritesheet that contains the graphics of the name of the
|
|
554
553
|
* boss that will be displayed on the top of the boss "versus" screen.
|
|
@@ -557,7 +556,6 @@ export interface CustomStageBossPoolEntry {
|
|
|
557
556
|
*/
|
|
558
557
|
namePNGPath: string;
|
|
559
558
|
|
|
560
|
-
// eslint-disable-next-line isaacscript/complete-sentences-jsdoc
|
|
561
559
|
/**
|
|
562
560
|
* Mandatory. The full path to the spritesheet that contains the portrait of the boss that will
|
|
563
561
|
* be displayed on the right side of the boss "versus" screen.
|
|
@@ -1,98 +1,98 @@
|
|
|
1
1
|
import { LevelStage, Music, StageType } from "isaac-typescript-definitions";
|
|
2
2
|
|
|
3
3
|
const BASEMENT_TO_MUSIC = {
|
|
4
|
-
[StageType.ORIGINAL]: Music.BASEMENT,
|
|
5
|
-
[StageType.WRATH_OF_THE_LAMB]: Music.CELLAR,
|
|
6
|
-
[StageType.AFTERBIRTH]: Music.BURNING_BASEMENT,
|
|
7
|
-
[StageType.GREED_MODE]: Music.BASEMENT,
|
|
8
|
-
[StageType.REPENTANCE]: Music.DOWNPOUR,
|
|
9
|
-
[StageType.REPENTANCE_B]: Music.DROSS,
|
|
4
|
+
[StageType.ORIGINAL]: Music.BASEMENT, // 0
|
|
5
|
+
[StageType.WRATH_OF_THE_LAMB]: Music.CELLAR, // 1
|
|
6
|
+
[StageType.AFTERBIRTH]: Music.BURNING_BASEMENT, // 2
|
|
7
|
+
[StageType.GREED_MODE]: Music.BASEMENT, // 3
|
|
8
|
+
[StageType.REPENTANCE]: Music.DOWNPOUR, // 4
|
|
9
|
+
[StageType.REPENTANCE_B]: Music.DROSS, // 5
|
|
10
10
|
} as const satisfies Record<StageType, Music>;
|
|
11
11
|
|
|
12
12
|
const CAVES_TO_MUSIC = {
|
|
13
|
-
[StageType.ORIGINAL]: Music.CAVES,
|
|
14
|
-
[StageType.WRATH_OF_THE_LAMB]: Music.CATACOMBS,
|
|
15
|
-
[StageType.AFTERBIRTH]: Music.FLOODED_CAVES,
|
|
16
|
-
[StageType.GREED_MODE]: Music.CAVES,
|
|
17
|
-
[StageType.REPENTANCE]: Music.MINES,
|
|
18
|
-
[StageType.REPENTANCE_B]: Music.ASHPIT,
|
|
13
|
+
[StageType.ORIGINAL]: Music.CAVES, // 0
|
|
14
|
+
[StageType.WRATH_OF_THE_LAMB]: Music.CATACOMBS, // 1
|
|
15
|
+
[StageType.AFTERBIRTH]: Music.FLOODED_CAVES, // 2
|
|
16
|
+
[StageType.GREED_MODE]: Music.CAVES, // 3
|
|
17
|
+
[StageType.REPENTANCE]: Music.MINES, // 4
|
|
18
|
+
[StageType.REPENTANCE_B]: Music.ASHPIT, // 5
|
|
19
19
|
} as const satisfies Record<StageType, Music>;
|
|
20
20
|
|
|
21
21
|
const DEPTHS_TO_MUSIC = {
|
|
22
|
-
[StageType.ORIGINAL]: Music.DEPTHS,
|
|
23
|
-
[StageType.WRATH_OF_THE_LAMB]: Music.NECROPOLIS,
|
|
24
|
-
[StageType.AFTERBIRTH]: Music.DANK_DEPTHS,
|
|
25
|
-
[StageType.GREED_MODE]: Music.DEPTHS,
|
|
26
|
-
[StageType.REPENTANCE]: Music.MAUSOLEUM,
|
|
27
|
-
[StageType.REPENTANCE_B]: Music.GEHENNA,
|
|
22
|
+
[StageType.ORIGINAL]: Music.DEPTHS, // 0
|
|
23
|
+
[StageType.WRATH_OF_THE_LAMB]: Music.NECROPOLIS, // 1
|
|
24
|
+
[StageType.AFTERBIRTH]: Music.DANK_DEPTHS, // 2
|
|
25
|
+
[StageType.GREED_MODE]: Music.DEPTHS, // 3
|
|
26
|
+
[StageType.REPENTANCE]: Music.MAUSOLEUM, // 4
|
|
27
|
+
[StageType.REPENTANCE_B]: Music.GEHENNA, // 5
|
|
28
28
|
} as const satisfies Record<StageType, Music>;
|
|
29
29
|
|
|
30
30
|
const WOMB_TO_MUSIC = {
|
|
31
|
-
[StageType.ORIGINAL]: Music.WOMB,
|
|
32
|
-
[StageType.WRATH_OF_THE_LAMB]: Music.UTERO,
|
|
33
|
-
[StageType.AFTERBIRTH]: Music.SCARRED_WOMB,
|
|
34
|
-
[StageType.GREED_MODE]: Music.WOMB,
|
|
35
|
-
[StageType.REPENTANCE]: Music.CORPSE,
|
|
36
|
-
[StageType.REPENTANCE_B]: Music.MORTIS,
|
|
31
|
+
[StageType.ORIGINAL]: Music.WOMB, // 0
|
|
32
|
+
[StageType.WRATH_OF_THE_LAMB]: Music.UTERO, // 1
|
|
33
|
+
[StageType.AFTERBIRTH]: Music.SCARRED_WOMB, // 2
|
|
34
|
+
[StageType.GREED_MODE]: Music.WOMB, // 3
|
|
35
|
+
[StageType.REPENTANCE]: Music.CORPSE, // 4
|
|
36
|
+
[StageType.REPENTANCE_B]: Music.MORTIS, // 5
|
|
37
37
|
} as const satisfies Record<StageType, Music>;
|
|
38
38
|
|
|
39
39
|
const BLUE_WOMB_TO_MUSIC = {
|
|
40
|
-
[StageType.ORIGINAL]: Music.BLUE_WOMB,
|
|
41
|
-
[StageType.WRATH_OF_THE_LAMB]: Music.BLUE_WOMB,
|
|
42
|
-
[StageType.AFTERBIRTH]: Music.BLUE_WOMB,
|
|
43
|
-
[StageType.GREED_MODE]: Music.BLUE_WOMB,
|
|
44
|
-
[StageType.REPENTANCE]: Music.BLUE_WOMB,
|
|
45
|
-
[StageType.REPENTANCE_B]: Music.BLUE_WOMB,
|
|
40
|
+
[StageType.ORIGINAL]: Music.BLUE_WOMB, // 0
|
|
41
|
+
[StageType.WRATH_OF_THE_LAMB]: Music.BLUE_WOMB, // 1
|
|
42
|
+
[StageType.AFTERBIRTH]: Music.BLUE_WOMB, // 2
|
|
43
|
+
[StageType.GREED_MODE]: Music.BLUE_WOMB, // 3
|
|
44
|
+
[StageType.REPENTANCE]: Music.BLUE_WOMB, // 4
|
|
45
|
+
[StageType.REPENTANCE_B]: Music.BLUE_WOMB, // 5
|
|
46
46
|
} as const satisfies Record<StageType, Music>;
|
|
47
47
|
|
|
48
48
|
const SHEOL_CATHEDRAL_TO_MUSIC = {
|
|
49
|
-
[StageType.ORIGINAL]: Music.SHEOL,
|
|
50
|
-
[StageType.WRATH_OF_THE_LAMB]: Music.CATHEDRAL,
|
|
51
|
-
[StageType.AFTERBIRTH]: Music.SHEOL,
|
|
52
|
-
[StageType.GREED_MODE]: Music.SHEOL,
|
|
53
|
-
[StageType.REPENTANCE]: Music.SHEOL,
|
|
54
|
-
[StageType.REPENTANCE_B]: Music.SHEOL,
|
|
49
|
+
[StageType.ORIGINAL]: Music.SHEOL, // 0
|
|
50
|
+
[StageType.WRATH_OF_THE_LAMB]: Music.CATHEDRAL, // 1
|
|
51
|
+
[StageType.AFTERBIRTH]: Music.SHEOL, // 2
|
|
52
|
+
[StageType.GREED_MODE]: Music.SHEOL, // 3
|
|
53
|
+
[StageType.REPENTANCE]: Music.SHEOL, // 4
|
|
54
|
+
[StageType.REPENTANCE_B]: Music.SHEOL, // 5
|
|
55
55
|
} as const satisfies Record<StageType, Music>;
|
|
56
56
|
|
|
57
57
|
const DARK_ROOM_CHEST_TO_MUSIC = {
|
|
58
|
-
[StageType.ORIGINAL]: Music.DARK_ROOM,
|
|
59
|
-
[StageType.WRATH_OF_THE_LAMB]: Music.CHEST,
|
|
60
|
-
[StageType.AFTERBIRTH]: Music.DARK_ROOM,
|
|
61
|
-
[StageType.GREED_MODE]: Music.DARK_ROOM,
|
|
62
|
-
[StageType.REPENTANCE]: Music.DARK_ROOM,
|
|
63
|
-
[StageType.REPENTANCE_B]: Music.DARK_ROOM,
|
|
58
|
+
[StageType.ORIGINAL]: Music.DARK_ROOM, // 0
|
|
59
|
+
[StageType.WRATH_OF_THE_LAMB]: Music.CHEST, // 1
|
|
60
|
+
[StageType.AFTERBIRTH]: Music.DARK_ROOM, // 2
|
|
61
|
+
[StageType.GREED_MODE]: Music.DARK_ROOM, // 3
|
|
62
|
+
[StageType.REPENTANCE]: Music.DARK_ROOM, // 4
|
|
63
|
+
[StageType.REPENTANCE_B]: Music.DARK_ROOM, // 5
|
|
64
64
|
} as const satisfies Record<StageType, Music>;
|
|
65
65
|
|
|
66
|
-
const
|
|
67
|
-
[StageType.ORIGINAL]: Music.VOID,
|
|
68
|
-
[StageType.WRATH_OF_THE_LAMB]: Music.VOID,
|
|
69
|
-
[StageType.AFTERBIRTH]: Music.VOID,
|
|
70
|
-
[StageType.GREED_MODE]: Music.VOID,
|
|
71
|
-
[StageType.REPENTANCE]: Music.VOID,
|
|
72
|
-
[StageType.REPENTANCE_B]: Music.VOID,
|
|
66
|
+
const VOID_TO_MUSIC = {
|
|
67
|
+
[StageType.ORIGINAL]: Music.VOID, // 0
|
|
68
|
+
[StageType.WRATH_OF_THE_LAMB]: Music.VOID, // 1
|
|
69
|
+
[StageType.AFTERBIRTH]: Music.VOID, // 2
|
|
70
|
+
[StageType.GREED_MODE]: Music.VOID, // 3
|
|
71
|
+
[StageType.REPENTANCE]: Music.VOID, // 4
|
|
72
|
+
[StageType.REPENTANCE_B]: Music.VOID, // 5
|
|
73
73
|
} as const satisfies Record<StageType, Music>;
|
|
74
74
|
|
|
75
75
|
const HOME_TO_MUSIC = {
|
|
76
|
-
[StageType.ORIGINAL]: Music.ISAACS_HOUSE,
|
|
77
|
-
[StageType.WRATH_OF_THE_LAMB]: Music.ISAACS_HOUSE,
|
|
78
|
-
[StageType.AFTERBIRTH]: Music.ISAACS_HOUSE,
|
|
79
|
-
[StageType.GREED_MODE]: Music.ISAACS_HOUSE,
|
|
80
|
-
[StageType.REPENTANCE]: Music.ISAACS_HOUSE,
|
|
81
|
-
[StageType.REPENTANCE_B]: Music.ISAACS_HOUSE,
|
|
76
|
+
[StageType.ORIGINAL]: Music.ISAACS_HOUSE, // 0
|
|
77
|
+
[StageType.WRATH_OF_THE_LAMB]: Music.ISAACS_HOUSE, // 1
|
|
78
|
+
[StageType.AFTERBIRTH]: Music.ISAACS_HOUSE, // 2
|
|
79
|
+
[StageType.GREED_MODE]: Music.ISAACS_HOUSE, // 3
|
|
80
|
+
[StageType.REPENTANCE]: Music.ISAACS_HOUSE, // 4
|
|
81
|
+
[StageType.REPENTANCE_B]: Music.ISAACS_HOUSE, // 5
|
|
82
82
|
} as const satisfies Record<StageType, Music>;
|
|
83
83
|
|
|
84
84
|
export const STAGE_TO_MUSIC = {
|
|
85
|
-
[LevelStage.BASEMENT_1]: BASEMENT_TO_MUSIC,
|
|
86
|
-
[LevelStage.BASEMENT_2]: BASEMENT_TO_MUSIC,
|
|
87
|
-
[LevelStage.CAVES_1]: CAVES_TO_MUSIC,
|
|
88
|
-
[LevelStage.CAVES_2]: CAVES_TO_MUSIC,
|
|
89
|
-
[LevelStage.DEPTHS_1]: DEPTHS_TO_MUSIC,
|
|
90
|
-
[LevelStage.DEPTHS_2]: DEPTHS_TO_MUSIC,
|
|
91
|
-
[LevelStage.WOMB_1]: WOMB_TO_MUSIC,
|
|
92
|
-
[LevelStage.WOMB_2]: WOMB_TO_MUSIC,
|
|
93
|
-
[LevelStage.BLUE_WOMB]: BLUE_WOMB_TO_MUSIC,
|
|
94
|
-
[LevelStage.SHEOL_CATHEDRAL]: SHEOL_CATHEDRAL_TO_MUSIC,
|
|
95
|
-
[LevelStage.DARK_ROOM_CHEST]: DARK_ROOM_CHEST_TO_MUSIC,
|
|
96
|
-
[LevelStage.THE_VOID]:
|
|
97
|
-
[LevelStage.HOME]: HOME_TO_MUSIC,
|
|
85
|
+
[LevelStage.BASEMENT_1]: BASEMENT_TO_MUSIC, // 1
|
|
86
|
+
[LevelStage.BASEMENT_2]: BASEMENT_TO_MUSIC, // 2
|
|
87
|
+
[LevelStage.CAVES_1]: CAVES_TO_MUSIC, // 3
|
|
88
|
+
[LevelStage.CAVES_2]: CAVES_TO_MUSIC, // 4
|
|
89
|
+
[LevelStage.DEPTHS_1]: DEPTHS_TO_MUSIC, // 5
|
|
90
|
+
[LevelStage.DEPTHS_2]: DEPTHS_TO_MUSIC, // 6
|
|
91
|
+
[LevelStage.WOMB_1]: WOMB_TO_MUSIC, // 7
|
|
92
|
+
[LevelStage.WOMB_2]: WOMB_TO_MUSIC, // 8
|
|
93
|
+
[LevelStage.BLUE_WOMB]: BLUE_WOMB_TO_MUSIC, // 9
|
|
94
|
+
[LevelStage.SHEOL_CATHEDRAL]: SHEOL_CATHEDRAL_TO_MUSIC, // 10
|
|
95
|
+
[LevelStage.DARK_ROOM_CHEST]: DARK_ROOM_CHEST_TO_MUSIC, // 11
|
|
96
|
+
[LevelStage.THE_VOID]: VOID_TO_MUSIC, // 12
|
|
97
|
+
[LevelStage.HOME]: HOME_TO_MUSIC, // 13
|
|
98
98
|
} as const satisfies Record<LevelStage, Record<StageType, Music>>;
|