isaacscript-common 6.5.0 → 6.5.1
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/features/customStage/backdrop.lua +6 -24
- package/features/customStage/init.lua +17 -1
- package/features/customStage/shadows.d.ts +3 -0
- package/features/customStage/shadows.lua +58 -0
- package/features/customStage/streakText.d.ts +1 -0
- package/features/customStage/streakText.lua +7 -0
- package/features/customStage/v.d.ts +3 -0
- package/features/customStage/v.lua +1 -1
- package/functions/doors.lua +12 -12
- package/interfaces/CustomStageLua.d.ts +95 -56
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@ local ____lualib = require("lualib_bundle")
|
|
|
2
2
|
local Set = ____lualib.Set
|
|
3
3
|
local __TS__New = ____lualib.__TS__New
|
|
4
4
|
local ____exports = {}
|
|
5
|
-
local getBackdropPNGPath, spawnWallEntity, spawnSecondWallEntity, spawnFloorEntity, getNumFloorLayers, BackdropKind,
|
|
5
|
+
local getBackdropPNGPath, spawnWallEntity, spawnSecondWallEntity, spawnFloorEntity, getNumFloorLayers, BackdropKind, DEFAULT_BACKDROP, ROOM_SHAPE_WALL_ANM2_LAYERS, ROOM_SHAPE_WALL_EXTRA_ANM2_LAYERS, WALL_OFFSET, BACKDROP_EFFECT_VARIANT
|
|
6
6
|
local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
|
|
7
7
|
local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant
|
|
8
8
|
local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag
|
|
@@ -29,19 +29,17 @@ local irange = ____utils.irange
|
|
|
29
29
|
local ____customStageConstants = require("features.customStage.customStageConstants")
|
|
30
30
|
local ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH = ____customStageConstants.ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH
|
|
31
31
|
function getBackdropPNGPath(self, customStage, backdropKind, rng)
|
|
32
|
-
local backdrop = customStage.
|
|
32
|
+
local backdrop = customStage.backdropPNGPaths == nil and DEFAULT_BACKDROP or customStage.backdropPNGPaths
|
|
33
33
|
local pathArray = backdrop[backdropKind]
|
|
34
|
-
|
|
35
|
-
return (backdrop.prefix .. path) .. backdrop.suffix
|
|
34
|
+
return getRandomArrayElement(nil, pathArray, rng)
|
|
36
35
|
end
|
|
37
36
|
function spawnWallEntity(self, customStage, rng, isExtraWall)
|
|
38
37
|
local room = game:GetRoom()
|
|
39
38
|
local roomShape = room:GetRoomShape()
|
|
40
|
-
local subType = isExtraWall and BackdropEntitySubType.WALL_EXTRA or BackdropEntitySubType.WALL
|
|
41
39
|
local wallEffect = spawnEffectWithSeed(
|
|
42
40
|
nil,
|
|
43
41
|
BACKDROP_EFFECT_VARIANT,
|
|
44
|
-
|
|
42
|
+
0,
|
|
45
43
|
VectorZero,
|
|
46
44
|
1
|
|
47
45
|
)
|
|
@@ -86,7 +84,7 @@ function spawnFloorEntity(self, customStage, rng)
|
|
|
86
84
|
local floorEffect = spawnEffectWithSeed(
|
|
87
85
|
nil,
|
|
88
86
|
BACKDROP_EFFECT_VARIANT,
|
|
89
|
-
|
|
87
|
+
0,
|
|
90
88
|
VectorZero,
|
|
91
89
|
1
|
|
92
90
|
)
|
|
@@ -154,23 +152,7 @@ BackdropKind.N_FLOOR = "nFloors"
|
|
|
154
152
|
BackdropKind.L_FLOOR = "lFloors"
|
|
155
153
|
BackdropKind.WALL = "walls"
|
|
156
154
|
BackdropKind.CORNER = "corners"
|
|
157
|
-
|
|
158
|
-
BackdropEntitySubType.VANILLA_LADDER = 0
|
|
159
|
-
BackdropEntitySubType[BackdropEntitySubType.VANILLA_LADDER] = "VANILLA_LADDER"
|
|
160
|
-
BackdropEntitySubType.WALL = 1
|
|
161
|
-
BackdropEntitySubType[BackdropEntitySubType.WALL] = "WALL"
|
|
162
|
-
BackdropEntitySubType.WALL_EXTRA = 2
|
|
163
|
-
BackdropEntitySubType[BackdropEntitySubType.WALL_EXTRA] = "WALL_EXTRA"
|
|
164
|
-
BackdropEntitySubType.FLOOR = 3
|
|
165
|
-
BackdropEntitySubType[BackdropEntitySubType.FLOOR] = "FLOOR"
|
|
166
|
-
DEFAULT_BACKDROP = {
|
|
167
|
-
prefix = ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/backdrop",
|
|
168
|
-
suffix = ".png",
|
|
169
|
-
nFloors = {"nfloor"},
|
|
170
|
-
lFloors = {"lfloor"},
|
|
171
|
-
walls = {"wall"},
|
|
172
|
-
corners = {"corner"}
|
|
173
|
-
}
|
|
155
|
+
DEFAULT_BACKDROP = {nFloors = {ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/backdrop/nfloor.png"}, lFloors = {ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/backdrop/lfloor.png"}, walls = {ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/backdrop/wall.png"}, corners = {ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/backdrop/corner.png"}}
|
|
174
156
|
ROOM_SHAPE_WALL_ANM2_LAYERS = {
|
|
175
157
|
[RoomShape.SHAPE_1x1] = 44,
|
|
176
158
|
[RoomShape.IH] = 36,
|
|
@@ -3,10 +3,12 @@ local Map = ____lualib.Map
|
|
|
3
3
|
local __TS__ObjectAssign = ____lualib.__TS__ObjectAssign
|
|
4
4
|
local __TS__New = ____lualib.__TS__New
|
|
5
5
|
local ____exports = {}
|
|
6
|
-
local initRoomTypeMaps, getRoomTypeMap, postRender, postGridEntityBrokenRockAlt, postGridEntityBrokenInit, postNewRoomReordered
|
|
6
|
+
local initRoomTypeMaps, getRoomTypeMap, postRender, getShaderParams, postGridEntityBrokenRockAlt, postGridEntityBrokenInit, postNewRoomReordered
|
|
7
7
|
local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
|
|
8
8
|
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
|
|
9
9
|
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
|
|
10
|
+
local ____cachedClasses = require("cachedClasses")
|
|
11
|
+
local game = ____cachedClasses.game
|
|
10
12
|
local ____ModCallbackCustom = require("enums.ModCallbackCustom")
|
|
11
13
|
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
|
|
12
14
|
local ____array = require("functions.array")
|
|
@@ -22,7 +24,11 @@ local setCustomDoorGraphics = ____gridEntities.setCustomDoorGraphics
|
|
|
22
24
|
local setCustomPitGraphics = ____gridEntities.setCustomPitGraphics
|
|
23
25
|
local setCustomRockGraphics = ____gridEntities.setCustomRockGraphics
|
|
24
26
|
local metadataJSON = require("features.customStage.metadata")
|
|
27
|
+
local ____shadows = require("features.customStage.shadows")
|
|
28
|
+
local setShadows = ____shadows.setShadows
|
|
29
|
+
local shadowsPostRender = ____shadows.shadowsPostRender
|
|
25
30
|
local ____streakText = require("features.customStage.streakText")
|
|
31
|
+
local streakTextGetShaderParams = ____streakText.streakTextGetShaderParams
|
|
26
32
|
local streakTextPostRender = ____streakText.streakTextPostRender
|
|
27
33
|
local ____v = require("features.customStage.v")
|
|
28
34
|
local v = ____v.default
|
|
@@ -71,9 +77,17 @@ function postRender(self)
|
|
|
71
77
|
if customStage == nil then
|
|
72
78
|
return
|
|
73
79
|
end
|
|
80
|
+
local isPaused = game:IsPaused()
|
|
81
|
+
if isPaused then
|
|
82
|
+
return
|
|
83
|
+
end
|
|
74
84
|
streakTextPostRender(nil, customStage)
|
|
85
|
+
shadowsPostRender(nil, customStage)
|
|
75
86
|
versusScreenPostRender(nil)
|
|
76
87
|
end
|
|
88
|
+
function getShaderParams(self, shaderName)
|
|
89
|
+
return streakTextGetShaderParams(nil, shaderName)
|
|
90
|
+
end
|
|
77
91
|
function postGridEntityBrokenRockAlt(self, gridEntity)
|
|
78
92
|
local customStage = v.run.currentCustomStage
|
|
79
93
|
if customStage == nil then
|
|
@@ -97,12 +111,14 @@ function postNewRoomReordered(self)
|
|
|
97
111
|
return
|
|
98
112
|
end
|
|
99
113
|
setBackdrop(nil, customStage)
|
|
114
|
+
setShadows(nil, customStage)
|
|
100
115
|
playVersusScreenAnimation(nil, customStage)
|
|
101
116
|
end
|
|
102
117
|
function ____exports.customStageInit(self, mod)
|
|
103
118
|
saveDataManager(nil, "customStage", v)
|
|
104
119
|
initRoomTypeMaps(nil)
|
|
105
120
|
mod:AddCallback(ModCallback.POST_RENDER, postRender)
|
|
121
|
+
mod:AddCallback(ModCallback.GET_SHADER_PARAMS, getShaderParams)
|
|
106
122
|
mod:AddCallbackCustom(ModCallbackCustom.POST_GRID_ENTITY_BROKEN, postGridEntityBrokenRockAlt, GridEntityType.ROCK_ALT)
|
|
107
123
|
mod:AddCallbackCustom(ModCallbackCustom.POST_GRID_ENTITY_INIT, postGridEntityBrokenInit)
|
|
108
124
|
mod:AddCallbackCustom(ModCallbackCustom.POST_NEW_ROOM_REORDERED, postNewRoomReordered)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
|
|
3
|
+
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
|
|
4
|
+
local ____cachedClasses = require("cachedClasses")
|
|
5
|
+
local game = ____cachedClasses.game
|
|
6
|
+
local ____constants = require("constants")
|
|
7
|
+
local VectorZero = ____constants.VectorZero
|
|
8
|
+
local ____array = require("functions.array")
|
|
9
|
+
local getRandomArrayElement = ____array.getRandomArrayElement
|
|
10
|
+
local ____customStageConstants = require("features.customStage.customStageConstants")
|
|
11
|
+
local ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH = ____customStageConstants.ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH
|
|
12
|
+
local ____v = require("features.customStage.v")
|
|
13
|
+
local v = ____v.default
|
|
14
|
+
--- The animation comes from StageAPI.
|
|
15
|
+
local ROOM_SHAPE_TO_SHADOW_ANIMATION = {
|
|
16
|
+
[RoomShape.SHAPE_1x1] = "1x1",
|
|
17
|
+
[RoomShape.IH] = "1x1",
|
|
18
|
+
[RoomShape.IV] = "1x1",
|
|
19
|
+
[RoomShape.SHAPE_1x2] = "1x2",
|
|
20
|
+
[RoomShape.IIV] = "1x2",
|
|
21
|
+
[RoomShape.SHAPE_2x1] = "2x1",
|
|
22
|
+
[RoomShape.IIH] = "2x1",
|
|
23
|
+
[RoomShape.SHAPE_2x2] = "2x2",
|
|
24
|
+
[RoomShape.LTL] = "2x2",
|
|
25
|
+
[RoomShape.LTR] = "2x2",
|
|
26
|
+
[RoomShape.LBL] = "2x2",
|
|
27
|
+
[RoomShape.LBR] = "2x2"
|
|
28
|
+
}
|
|
29
|
+
local shadowSprite = Sprite()
|
|
30
|
+
shadowSprite:Load(ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/stage-shadow.anm2", true)
|
|
31
|
+
function ____exports.setShadows(self, customStage)
|
|
32
|
+
if customStage.shadowPNGPaths == nil then
|
|
33
|
+
return
|
|
34
|
+
end
|
|
35
|
+
local room = game:GetRoom()
|
|
36
|
+
local roomShape = room:GetRoomShape()
|
|
37
|
+
local animation = ROOM_SHAPE_TO_SHADOW_ANIMATION[roomShape]
|
|
38
|
+
local shadowPNGPaths = customStage.shadowPNGPaths[animation]
|
|
39
|
+
if shadowPNGPaths == nil then
|
|
40
|
+
return
|
|
41
|
+
end
|
|
42
|
+
local decorationSeed = room:GetDecorationSeed()
|
|
43
|
+
local shadowPNGPath = getRandomArrayElement(nil, shadowPNGPaths, decorationSeed)
|
|
44
|
+
shadowSprite:ReplaceSpritesheet(0, shadowPNGPath)
|
|
45
|
+
shadowSprite:SetFrame(animation, 0)
|
|
46
|
+
v.room.showingShadows = true
|
|
47
|
+
end
|
|
48
|
+
function ____exports.shadowsPostRender(self, _customStage)
|
|
49
|
+
if not v.room.showingShadows then
|
|
50
|
+
return
|
|
51
|
+
end
|
|
52
|
+
local room = game:GetRoom()
|
|
53
|
+
local renderPosition = Isaac.WorldToRenderPosition(VectorZero)
|
|
54
|
+
local renderScrollOffset = room:GetRenderScrollOffset()
|
|
55
|
+
local position = renderPosition + renderScrollOffset
|
|
56
|
+
shadowSprite:Render(position)
|
|
57
|
+
end
|
|
58
|
+
return ____exports
|
|
@@ -7,6 +7,7 @@ local ____ui = require("functions.ui")
|
|
|
7
7
|
local getScreenBottomCenterPos = ____ui.getScreenBottomCenterPos
|
|
8
8
|
local ____v = require("features.customStage.v")
|
|
9
9
|
local v = ____v.default
|
|
10
|
+
local EMPTY_SHADER_NAME = "IsaacScriptEmptyShader"
|
|
10
11
|
local STREAK_TEXT_BOTTOM_OFFSET = Vector(0, -60)
|
|
11
12
|
function ____exports.streakTextPostRender(self, customStage)
|
|
12
13
|
if not v.run.showingStreakText then
|
|
@@ -19,4 +20,10 @@ function ____exports.streakTextPostRender(self, customStage)
|
|
|
19
20
|
local adjustedX = position.X - length / 2
|
|
20
21
|
font:DrawString(customStage.name, adjustedX, position.Y, KColorDefault)
|
|
21
22
|
end
|
|
23
|
+
function ____exports.streakTextGetShaderParams(self, shaderName)
|
|
24
|
+
if shaderName ~= EMPTY_SHADER_NAME then
|
|
25
|
+
return nil
|
|
26
|
+
end
|
|
27
|
+
return {}
|
|
28
|
+
end
|
|
22
29
|
return ____exports
|
|
@@ -2,7 +2,7 @@ local ____lualib = require("lualib_bundle")
|
|
|
2
2
|
local Map = ____lualib.Map
|
|
3
3
|
local __TS__New = ____lualib.__TS__New
|
|
4
4
|
local ____exports = {}
|
|
5
|
-
local v = {run = {currentCustomStage = nil, showingStreakText = false, showingBossVersusScreen = false}}
|
|
5
|
+
local v = {run = {currentCustomStage = nil, showingStreakText = false, showingBossVersusScreen = false}, room = {showingShadows = false}}
|
|
6
6
|
____exports.default = v
|
|
7
7
|
--- Indexed by custom stage name.
|
|
8
8
|
____exports.customStagesMap = __TS__New(Map)
|
package/functions/doors.lua
CHANGED
|
@@ -82,8 +82,8 @@ end
|
|
|
82
82
|
-- "gfx/grid/door_08_holeinwall.anm2".
|
|
83
83
|
function ____exports.isSecretRoomDoor(self, door)
|
|
84
84
|
local sprite = door:GetSprite()
|
|
85
|
-
local
|
|
86
|
-
return
|
|
85
|
+
local fileName = sprite:GetFilename()
|
|
86
|
+
return string.lower(fileName) == "gfx/grid/door_08_holeinwall.anm2"
|
|
87
87
|
end
|
|
88
88
|
--- Helper function to remove a single door.
|
|
89
89
|
function ____exports.removeDoor(self, door)
|
|
@@ -243,8 +243,8 @@ function ____exports.isDoorToDownpour(self, door)
|
|
|
243
243
|
return false
|
|
244
244
|
end
|
|
245
245
|
local sprite = door:GetSprite()
|
|
246
|
-
local
|
|
247
|
-
return string.lower(
|
|
246
|
+
local fileName = sprite:GetFilename()
|
|
247
|
+
return string.lower(fileName) == "gfx/grid/door_downpour.anm2"
|
|
248
248
|
end
|
|
249
249
|
--- This refers to the Repentance door that spawns in a boss room after defeating the boss. You have
|
|
250
250
|
-- to spend two hearts to open it. It has a sprite filename of "gfx/grid/door_mausoleum.anm2".
|
|
@@ -253,8 +253,8 @@ function ____exports.isDoorToMausoleum(self, door)
|
|
|
253
253
|
return false
|
|
254
254
|
end
|
|
255
255
|
local sprite = door:GetSprite()
|
|
256
|
-
local
|
|
257
|
-
return string.lower(
|
|
256
|
+
local fileName = sprite:GetFilename()
|
|
257
|
+
return string.lower(fileName) == "gfx/grid/door_mausoleum.anm2"
|
|
258
258
|
end
|
|
259
259
|
--- This refers to the "strange door" located on the first room of Depths 2. You open it with either
|
|
260
260
|
-- a Polaroid or a Negative. It has a sprite filename of "gfx/grid/door_mausoleum_alt.anm2".
|
|
@@ -263,8 +263,8 @@ function ____exports.isDoorToMausoleumAscent(self, door)
|
|
|
263
263
|
return false
|
|
264
264
|
end
|
|
265
265
|
local sprite = door:GetSprite()
|
|
266
|
-
local
|
|
267
|
-
return string.lower(
|
|
266
|
+
local fileName = sprite:GetFilename()
|
|
267
|
+
return string.lower(fileName) == "gfx/grid/door_mausoleum_alt.anm2"
|
|
268
268
|
end
|
|
269
269
|
--- This refers to the Repentance door that spawns in a boss room after defeating the boss. You have
|
|
270
270
|
-- to spend two bombs to open it. It has a sprite filename of "gfx/grid/door_mines.anm2".
|
|
@@ -273,8 +273,8 @@ function ____exports.isDoorToMines(self, door)
|
|
|
273
273
|
return false
|
|
274
274
|
end
|
|
275
275
|
local sprite = door:GetSprite()
|
|
276
|
-
local
|
|
277
|
-
return string.lower(
|
|
276
|
+
local fileName = sprite:GetFilename()
|
|
277
|
+
return string.lower(fileName) == "gfx/grid/door_mines.anm2"
|
|
278
278
|
end
|
|
279
279
|
--- This refers to the Repentance door that spawns after defeating Mom. You open it with the
|
|
280
280
|
-- completed knife. It has a sprite filename of "gfx/grid/door_momsheart.anm2".
|
|
@@ -283,8 +283,8 @@ function ____exports.isDoorToMomsHeart(self, door)
|
|
|
283
283
|
return false
|
|
284
284
|
end
|
|
285
285
|
local sprite = door:GetSprite()
|
|
286
|
-
local
|
|
287
|
-
return
|
|
286
|
+
local fileName = sprite:GetFilename()
|
|
287
|
+
return string.lower(fileName) == "gfx/grid/door_momsheart.anm2"
|
|
288
288
|
end
|
|
289
289
|
function ____exports.isHiddenSecretRoomDoor(self, door)
|
|
290
290
|
local sprite = door:GetSprite()
|
|
@@ -39,43 +39,33 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
39
39
|
* the graphics for the walls and floor.) If not specified, the graphics for Basement will be
|
|
40
40
|
* used.
|
|
41
41
|
*/
|
|
42
|
-
|
|
42
|
+
backdropPNGPaths?: Readonly<{
|
|
43
43
|
/**
|
|
44
|
-
*
|
|
44
|
+
* An array that contains the full paths to the graphic files that are used for the floor in
|
|
45
|
+
* narrow rooms. (The "n" stands for "narrow").
|
|
45
46
|
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* ```
|
|
49
|
-
*/
|
|
50
|
-
prefix: string;
|
|
51
|
-
/**
|
|
52
|
-
* The end of the path that leads to the backdrop graphics. In most cases, this will be ".png".
|
|
53
|
-
*/
|
|
54
|
-
suffix: string;
|
|
55
|
-
/**
|
|
56
|
-
* An array of strings that represent the graphic files that are used for the floors in narrow
|
|
57
|
-
* rooms. (The "n" stands for "narrow").
|
|
58
|
-
*
|
|
59
|
-
* You must have at least one string in this array, but you can specify more than one to
|
|
60
|
-
* randomly add extra variety (like the vanilla stages do).
|
|
47
|
+
* You must have at least one path in this array, but you can specify more than one to randomly
|
|
48
|
+
* add extra variety (like the vanilla stages do).
|
|
61
49
|
*
|
|
62
50
|
* For an example of this, see the vanilla file "resources/gfx/backdrop/01_basement_nfloor.png".
|
|
63
51
|
*/
|
|
64
52
|
nFloors: readonly string[];
|
|
65
53
|
/**
|
|
66
|
-
* An array
|
|
54
|
+
* An array that contains the full paths to the graphic files that are used for the floor in L
|
|
55
|
+
* rooms.
|
|
67
56
|
*
|
|
68
|
-
* You must have at least one
|
|
69
|
-
*
|
|
57
|
+
* You must have at least one path in this array, but you can specify more than one to randomly
|
|
58
|
+
* add extra variety (like the vanilla stages do).
|
|
70
59
|
*
|
|
71
60
|
* For an example of this, see the vanilla file "resources/gfx/backdrop/01_lbasementfloor.png".
|
|
72
61
|
*/
|
|
73
62
|
lFloors: readonly string[];
|
|
74
63
|
/**
|
|
75
|
-
* An array
|
|
64
|
+
* An array that contains the full paths to the graphic files that are used for the walls of the
|
|
65
|
+
* floor.
|
|
76
66
|
*
|
|
77
|
-
* You must have at least one
|
|
78
|
-
*
|
|
67
|
+
* You must have at least one path in this array, but you can specify more than one to randomly
|
|
68
|
+
* add extra variety (like the vanilla stages do).
|
|
79
69
|
*
|
|
80
70
|
* For an example of this, see the vanilla file "resources/gfx/backdrop/01_basement.png". (In
|
|
81
71
|
* the vanilla file, they concatenate all four variations together into one PNG file. However,
|
|
@@ -83,9 +73,10 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
83
73
|
*/
|
|
84
74
|
walls: readonly string[];
|
|
85
75
|
/**
|
|
86
|
-
* An array
|
|
87
|
-
*
|
|
88
|
-
*
|
|
76
|
+
* An array that contains the full paths to the graphic files for the stage's corners.
|
|
77
|
+
*
|
|
78
|
+
* You must have at least one path in this array, but you can specify more than one to randomly
|
|
79
|
+
* add extra variety (like the vanilla stages do).
|
|
89
80
|
*
|
|
90
81
|
* For an example of this, see the vanilla file "resources/gfx/backdrop/01_basement.png". (In
|
|
91
82
|
* the vanilla file, they concatenate both variations together into one PNG file and put it in
|
|
@@ -97,8 +88,8 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
97
88
|
corners: readonly string[];
|
|
98
89
|
}>;
|
|
99
90
|
/**
|
|
100
|
-
* Optional. The path to the spritesheet that contains the graphics of the decorations for
|
|
101
|
-
* floor.
|
|
91
|
+
* Optional. The full path to the spritesheet that contains the graphics of the decorations for
|
|
92
|
+
* the floor.
|
|
102
93
|
*
|
|
103
94
|
* If not specified, the vanilla Basement decorations spritesheet will be used. For reference,
|
|
104
95
|
* this is located at: `C:\Program Files (x86)\Steam\steamapps\common\The Binding of Isaac
|
|
@@ -106,8 +97,8 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
106
97
|
*/
|
|
107
98
|
decorationsPNGPath?: string;
|
|
108
99
|
/**
|
|
109
|
-
* Optional. The path to the spritesheet that contains the graphics of the rocks/blocks/urns
|
|
110
|
-
* the floor.
|
|
100
|
+
* Optional. The full path to the spritesheet that contains the graphics of the rocks/blocks/urns
|
|
101
|
+
* for the floor.
|
|
111
102
|
*
|
|
112
103
|
* If specified, it is assumed that you have your own custom rock alt type, and all vanilla
|
|
113
104
|
* rewards/enemies that spawn from urns will be automatically removed. Use the
|
|
@@ -120,18 +111,22 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
120
111
|
*/
|
|
121
112
|
rocksPNGPath?: string;
|
|
122
113
|
/**
|
|
123
|
-
* Optional. The path to the spritesheet that contains the graphics of the pits for the
|
|
114
|
+
* Optional. The full path to the spritesheet that contains the graphics of the pits for the
|
|
115
|
+
* floor.
|
|
124
116
|
*
|
|
125
117
|
* If not specified, the vanilla Basement pits spritesheet will be used. For reference, this is
|
|
126
118
|
* located at: `C:\Program Files (x86)\Steam\steamapps\common\The Binding of Isaac
|
|
127
119
|
* Rebirth\resources\gfx\grid\grid_pit.png`
|
|
128
120
|
*/
|
|
129
121
|
pitsPNGPath?: string;
|
|
130
|
-
/**
|
|
122
|
+
/**
|
|
123
|
+
* Optional. A collection of paths that contain graphics for the doors of the floor. If not
|
|
124
|
+
* specified, the doors for Basement will be used.
|
|
125
|
+
*/
|
|
131
126
|
doorPNGPaths?: Readonly<{
|
|
132
127
|
/**
|
|
133
|
-
* Optional. The path to the spritesheet that contains the graphics of the normal doors for
|
|
134
|
-
* floor.
|
|
128
|
+
* Optional. The full path to the spritesheet that contains the graphics of the normal doors for
|
|
129
|
+
* the floor.
|
|
135
130
|
*
|
|
136
131
|
* If not specified, the vanilla Basement door spritesheet will be used. For reference, this is
|
|
137
132
|
* located at: `C:\Program Files (x86)\Steam\steamapps\common\The Binding of Isaac
|
|
@@ -139,8 +134,8 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
139
134
|
*/
|
|
140
135
|
normal?: string;
|
|
141
136
|
/**
|
|
142
|
-
* Optional. The path to the spritesheet that contains the graphics of the Treasure Room
|
|
143
|
-
* for the floor.
|
|
137
|
+
* Optional. The full path to the spritesheet that contains the graphics of the Treasure Room
|
|
138
|
+
* doors for the floor.
|
|
144
139
|
*
|
|
145
140
|
* If not specified, the vanilla Basement door spritesheet will be used. For reference, this is
|
|
146
141
|
* located at: `C:\Program Files (x86)\Steam\steamapps\common\The Binding of Isaac
|
|
@@ -148,8 +143,8 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
148
143
|
*/
|
|
149
144
|
treasureRoom?: string;
|
|
150
145
|
/**
|
|
151
|
-
* Optional. The path to the spritesheet that contains the graphics of the Boss Room doors
|
|
152
|
-
* the floor.
|
|
146
|
+
* Optional. The full path to the spritesheet that contains the graphics of the Boss Room doors
|
|
147
|
+
* for the floor.
|
|
153
148
|
*
|
|
154
149
|
* If not specified, the vanilla Basement door spritesheet will be used. For reference, this is
|
|
155
150
|
* located at: `C:\Program Files (x86)\Steam\steamapps\common\The Binding of Isaac
|
|
@@ -157,8 +152,8 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
157
152
|
*/
|
|
158
153
|
bossRoom?: string;
|
|
159
154
|
/**
|
|
160
|
-
* Optional. The path to the spritesheet that contains the graphics of the Secret Room and
|
|
161
|
-
* Secret Room doors for the floor.
|
|
155
|
+
* Optional. The full path to the spritesheet that contains the graphics of the Secret Room and
|
|
156
|
+
* Super Secret Room doors for the floor.
|
|
162
157
|
*
|
|
163
158
|
* If not specified, the vanilla Basement door spritesheet will be used. For reference, this is
|
|
164
159
|
* located at: `C:\Program Files (x86)\Steam\steamapps\common\The Binding of Isaac
|
|
@@ -166,8 +161,8 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
166
161
|
*/
|
|
167
162
|
secretRoom?: string;
|
|
168
163
|
/**
|
|
169
|
-
* Optional. The path to the spritesheet that contains the graphics of the arcade doors for
|
|
170
|
-
* floor.
|
|
164
|
+
* Optional. The full path to the spritesheet that contains the graphics of the arcade doors for
|
|
165
|
+
* the floor.
|
|
171
166
|
*
|
|
172
167
|
* If not specified, the vanilla Basement door spritesheet will be used. For reference, this is
|
|
173
168
|
* located at: `C:\Program Files (x86)\Steam\steamapps\common\The Binding of Isaac
|
|
@@ -175,8 +170,8 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
175
170
|
*/
|
|
176
171
|
arcade?: string;
|
|
177
172
|
/**
|
|
178
|
-
* Optional. The path to the spritesheet that contains the graphics of the Curse Room doors
|
|
179
|
-
* the floor.
|
|
173
|
+
* Optional. The full path to the spritesheet that contains the graphics of the Curse Room doors
|
|
174
|
+
* for the floor.
|
|
180
175
|
*
|
|
181
176
|
* If not specified, the vanilla Basement door spritesheet will be used. For reference, this is
|
|
182
177
|
* located at: `C:\Program Files (x86)\Steam\steamapps\common\The Binding of Isaac
|
|
@@ -184,8 +179,8 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
184
179
|
*/
|
|
185
180
|
curseRoom?: string;
|
|
186
181
|
/**
|
|
187
|
-
* Optional. The path to the spritesheet that contains the graphics of the normal Challenge
|
|
188
|
-
* doors for the floor.
|
|
182
|
+
* Optional. The full path to the spritesheet that contains the graphics of the normal Challenge
|
|
183
|
+
* Room doors for the floor.
|
|
189
184
|
*
|
|
190
185
|
* If not specified, the vanilla Basement door spritesheet will be used. For reference, this is
|
|
191
186
|
* located at: `C:\Program Files (x86)\Steam\steamapps\common\The Binding of Isaac
|
|
@@ -193,8 +188,8 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
193
188
|
*/
|
|
194
189
|
normalChallengeRoom?: string;
|
|
195
190
|
/**
|
|
196
|
-
* Optional. The path to the spritesheet that contains the graphics of the Boss Challenge
|
|
197
|
-
* doors for the floor.
|
|
191
|
+
* Optional. The full path to the spritesheet that contains the graphics of the Boss Challenge
|
|
192
|
+
* Room doors for the floor.
|
|
198
193
|
*
|
|
199
194
|
* If not specified, the vanilla Basement door spritesheet will be used. For reference, this is
|
|
200
195
|
* located at: `C:\Program Files (x86)\Steam\steamapps\common\The Binding of Isaac
|
|
@@ -202,8 +197,8 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
202
197
|
*/
|
|
203
198
|
bossChallengeRoom?: string;
|
|
204
199
|
/**
|
|
205
|
-
* Optional. The path to the spritesheet that contains the graphics of the Devil Room doors
|
|
206
|
-
* the floor.
|
|
200
|
+
* Optional. The full path to the spritesheet that contains the graphics of the Devil Room doors
|
|
201
|
+
* for the floor.
|
|
207
202
|
*
|
|
208
203
|
* If not specified, the vanilla Basement door spritesheet will be used. For reference, this is
|
|
209
204
|
* located at: `C:\Program Files (x86)\Steam\steamapps\common\The Binding of Isaac
|
|
@@ -211,8 +206,8 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
211
206
|
*/
|
|
212
207
|
devilRoom?: string;
|
|
213
208
|
/**
|
|
214
|
-
* Optional. The path to the spritesheet that contains the graphics of the Angel Room doors
|
|
215
|
-
* the floor.
|
|
209
|
+
* Optional. The full path to the spritesheet that contains the graphics of the Angel Room doors
|
|
210
|
+
* for the floor.
|
|
216
211
|
*
|
|
217
212
|
* If not specified, the vanilla Basement door spritesheet will be used. For reference, this is
|
|
218
213
|
* located at: `C:\Program Files (x86)\Steam\steamapps\common\The Binding of Isaac
|
|
@@ -220,8 +215,8 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
220
215
|
*/
|
|
221
216
|
angelRoom?: string;
|
|
222
217
|
/**
|
|
223
|
-
* Optional. The path to the spritesheet that contains the graphics of the Boss Rush doors
|
|
224
|
-
* the floor.
|
|
218
|
+
* Optional. The full path to the spritesheet that contains the graphics of the Boss Rush doors
|
|
219
|
+
* for the floor.
|
|
225
220
|
*
|
|
226
221
|
* If not specified, the vanilla Basement door spritesheet will be used. For reference, this is
|
|
227
222
|
* located at: `C:\Program Files (x86)\Steam\steamapps\common\The Binding of Isaac
|
|
@@ -229,8 +224,8 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
229
224
|
*/
|
|
230
225
|
bossRush?: string;
|
|
231
226
|
/**
|
|
232
|
-
* Optional. The path to the spritesheet that contains the graphics of the Chest Room doors
|
|
233
|
-
* the floor.
|
|
227
|
+
* Optional. The full path to the spritesheet that contains the graphics of the Chest Room doors
|
|
228
|
+
* for the floor.
|
|
234
229
|
*
|
|
235
230
|
* If not specified, the vanilla Basement door spritesheet will be used. For reference, this is
|
|
236
231
|
* located at: `C:\Program Files (x86)\Steam\steamapps\common\The Binding of Isaac
|
|
@@ -238,6 +233,50 @@ export declare type CustomStageTSConfig = Readonly<{
|
|
|
238
233
|
*/
|
|
239
234
|
chestRoom?: string;
|
|
240
235
|
}>;
|
|
236
|
+
/**
|
|
237
|
+
* Optional. A collection of paths that contain graphics for the custom shadows of the floor. (In
|
|
238
|
+
* this context, "shadows" are the outlines from things on the roof. For example, in Basement, a
|
|
239
|
+
* shadow of a sideways V is used.) If not specified, no extra shadows will be drawn.
|
|
240
|
+
*/
|
|
241
|
+
shadowPNGPaths?: Readonly<{
|
|
242
|
+
/**
|
|
243
|
+
* An array containing the full paths to the shadows that are used in rooms of shape
|
|
244
|
+
* `RoomShape.SHAPE_1x1` (1), `RoomShape.IH` (2), and `RoomShape.IV` (3).
|
|
245
|
+
*
|
|
246
|
+
* If more than one shadow is specified, one will be randomly chosen for each room.
|
|
247
|
+
*
|
|
248
|
+
* If not specified, no extra shadows will be drawn in these room shapes.
|
|
249
|
+
*/
|
|
250
|
+
"1x1"?: readonly string[];
|
|
251
|
+
/**
|
|
252
|
+
* An array containing the full paths to the shadows that are used in rooms of shape
|
|
253
|
+
* `RoomShape.SHAPE_1x2` (4) and `RoomShape.IIV` (5).
|
|
254
|
+
*
|
|
255
|
+
* If more than one shadow is specified, one will be randomly chosen for each room.
|
|
256
|
+
*
|
|
257
|
+
* If not specified, no extra shadows will be drawn in these room shapes.
|
|
258
|
+
*/
|
|
259
|
+
"1x2"?: readonly string[];
|
|
260
|
+
/**
|
|
261
|
+
* An array containing the full paths to the shadows that are used in rooms of shape
|
|
262
|
+
* `RoomShape.SHAPE_2x1` (6) and `RoomShape.IIH` (7).
|
|
263
|
+
*
|
|
264
|
+
* If more than one shadow is specified, one will be randomly chosen for each room.
|
|
265
|
+
*
|
|
266
|
+
* If not specified, no extra shadows will be drawn in these room shapes.
|
|
267
|
+
*/
|
|
268
|
+
"2x1"?: readonly string[];
|
|
269
|
+
/**
|
|
270
|
+
* An array containing the full paths to the shadows that are used in rooms of shape
|
|
271
|
+
* `RoomShape.SHAPE_2x2` (8), `RoomShape.LTL` (9), `RoomShape.LTR` (10), `RoomShape.LBL` (11),
|
|
272
|
+
* and `RoomShape.LBR` (12).
|
|
273
|
+
*
|
|
274
|
+
* If more than one shadow is specified, one will be randomly chosen for each room.
|
|
275
|
+
*
|
|
276
|
+
* If not specified, no extra shadows will be drawn in these room shapes.
|
|
277
|
+
*/
|
|
278
|
+
"2x2"?: readonly string[];
|
|
279
|
+
}>;
|
|
241
280
|
/** Optional. A collection of colors used in the boss "versus" screen. */
|
|
242
281
|
versusScreen?: Readonly<{
|
|
243
282
|
/**
|