isaacscript-common 6.19.0 → 6.20.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.
Files changed (43) hide show
  1. package/dist/features/customStage/exports.d.ts.map +1 -1
  2. package/dist/features/customStage/exports.lua +2 -7
  3. package/dist/features/customTrapdoor/init.d.ts.map +1 -1
  4. package/dist/features/customTrapdoor/init.lua +10 -2
  5. package/dist/features/extraConsoleCommands/commandsSubroutines.d.ts.map +1 -1
  6. package/dist/features/extraConsoleCommands/commandsSubroutines.lua +2 -1
  7. package/dist/features/extraConsoleCommands/listCommands.d.ts.map +1 -1
  8. package/dist/features/extraConsoleCommands/listCommands.lua +2 -1
  9. package/dist/functions/curses.d.ts +3 -0
  10. package/dist/functions/curses.d.ts.map +1 -0
  11. package/dist/functions/curses.lua +11 -0
  12. package/dist/functions/dimensions.d.ts +12 -0
  13. package/dist/functions/dimensions.d.ts.map +1 -0
  14. package/dist/functions/dimensions.lua +35 -0
  15. package/dist/functions/level.d.ts.map +1 -1
  16. package/dist/functions/level.lua +8 -7
  17. package/dist/functions/levelGrid.d.ts +152 -0
  18. package/dist/functions/levelGrid.d.ts.map +1 -0
  19. package/dist/functions/levelGrid.lua +326 -0
  20. package/dist/functions/roomData.d.ts +5 -0
  21. package/dist/functions/roomData.d.ts.map +1 -1
  22. package/dist/functions/roomData.lua +6 -0
  23. package/dist/functions/roomGrid.d.ts +8 -0
  24. package/dist/functions/roomGrid.d.ts.map +1 -1
  25. package/dist/functions/rooms.d.ts +39 -61
  26. package/dist/functions/rooms.d.ts.map +1 -1
  27. package/dist/functions/rooms.lua +126 -200
  28. package/dist/index.d.ts +3 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.lua +24 -0
  31. package/package.json +2 -2
  32. package/src/features/customStage/exports.ts +10 -11
  33. package/src/features/customTrapdoor/init.ts +7 -3
  34. package/src/features/extraConsoleCommands/commandsSubroutines.ts +2 -1
  35. package/src/features/extraConsoleCommands/listCommands.ts +2 -1
  36. package/src/functions/curses.ts +9 -0
  37. package/src/functions/dimensions.ts +41 -0
  38. package/src/functions/level.ts +7 -10
  39. package/src/functions/levelGrid.ts +424 -0
  40. package/src/functions/roomData.ts +12 -0
  41. package/src/functions/roomGrid.ts +9 -0
  42. package/src/functions/rooms.ts +90 -206
  43. package/src/index.ts +3 -0
@@ -0,0 +1,326 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__ArrayMap = ____lualib.__TS__ArrayMap
3
+ local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
4
+ local Map = ____lualib.Map
5
+ local __TS__Iterator = ____lualib.__TS__Iterator
6
+ local Set = ____lualib.Set
7
+ local __TS__New = ____lualib.__TS__New
8
+ local ____exports = {}
9
+ local ADJACENT_ROOM_GRID_INDEX_DELTAS
10
+ local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
11
+ local DownpourRoomSubType = ____isaac_2Dtypescript_2Ddefinitions.DownpourRoomSubType
12
+ local MinesRoomSubType = ____isaac_2Dtypescript_2Ddefinitions.MinesRoomSubType
13
+ local RoomDescriptorFlag = ____isaac_2Dtypescript_2Ddefinitions.RoomDescriptorFlag
14
+ local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
15
+ local ____cachedClasses = require("cachedClasses")
16
+ local game = ____cachedClasses.game
17
+ local ____constants = require("constants")
18
+ local LEVEL_GRID_ROW_WIDTH = ____constants.LEVEL_GRID_ROW_WIDTH
19
+ local MAX_LEVEL_GRID_INDEX = ____constants.MAX_LEVEL_GRID_INDEX
20
+ local ____roomShapeToDoorSlotsToGridIndexDelta = require("objects.roomShapeToDoorSlotsToGridIndexDelta")
21
+ local ROOM_SHAPE_TO_DOOR_SLOTS_TO_GRID_INDEX_DELTA = ____roomShapeToDoorSlotsToGridIndexDelta.ROOM_SHAPE_TO_DOOR_SLOTS_TO_GRID_INDEX_DELTA
22
+ local ____array = require("functions.array")
23
+ local getRandomArrayElement = ____array.getRandomArrayElement
24
+ local ____doors = require("functions.doors")
25
+ local doorSlotToDoorSlotFlag = ____doors.doorSlotToDoorSlotFlag
26
+ local ____flag = require("functions.flag")
27
+ local hasFlag = ____flag.hasFlag
28
+ local ____rng = require("functions.rng")
29
+ local getRandomSeed = ____rng.getRandomSeed
30
+ local ____roomData = require("functions.roomData")
31
+ local getRoomAllowedDoors = ____roomData.getRoomAllowedDoors
32
+ local getRoomData = ____roomData.getRoomData
33
+ local getRoomDescriptor = ____roomData.getRoomDescriptor
34
+ local getRoomGridIndex = ____roomData.getRoomGridIndex
35
+ local getRoomShape = ____roomData.getRoomShape
36
+ local ____rooms = require("functions.rooms")
37
+ local getRooms = ____rooms.getRooms
38
+ local getRoomsInGrid = ____rooms.getRoomsInGrid
39
+ local ____roomShape = require("functions.roomShape")
40
+ local getGridIndexDelta = ____roomShape.getGridIndexDelta
41
+ --- Helper function to get the room grid indexes that are adjacent to a given room grid index.
42
+ --
43
+ -- Adjacent room grid indexes that are outside of the grid will not be included in the returned
44
+ -- array.
45
+ --
46
+ -- If a room grid index is provided that is outside of the grid, then an empty array will be
47
+ -- returned.
48
+ --
49
+ -- Note that this function does not take the shape of the room into account; it only looks at a
50
+ -- single room grid index.
51
+ --
52
+ -- @param roomGridIndex Optional. Default is the current room index.
53
+ function ____exports.getAdjacentRoomGridIndexes(self, roomGridIndex)
54
+ local roomGridIndexToUse = roomGridIndex == nil and getRoomGridIndex(nil) or roomGridIndex
55
+ if not ____exports.isRoomGridIndexInBounds(nil, roomGridIndexToUse) then
56
+ return {}
57
+ end
58
+ local adjacentRoomGridIndexes = __TS__ArrayMap(
59
+ ADJACENT_ROOM_GRID_INDEX_DELTAS,
60
+ function(____, delta) return roomGridIndexToUse + delta end
61
+ )
62
+ return __TS__ArrayFilter(
63
+ adjacentRoomGridIndexes,
64
+ function(____, adjacentRoomGridIndex) return ____exports.isRoomGridIndexInBounds(nil, adjacentRoomGridIndex) end
65
+ )
66
+ end
67
+ --- Helper function to iterate through the possible doors for a room and see if any of them would be
68
+ -- a valid spot to insert a brand new room on the floor.
69
+ --
70
+ -- @param roomGridIndex Optional. Default is the current room index.
71
+ -- @returns A array of tuples of `DoorSlot` and room grid index.
72
+ function ____exports.getNewRoomCandidatesBesideRoom(self, roomGridIndex)
73
+ local roomDescriptor = getRoomDescriptor(nil, roomGridIndex)
74
+ if not ____exports.isRoomGridIndexInBounds(nil, roomDescriptor.SafeGridIndex) then
75
+ return {}
76
+ end
77
+ local roomData = roomDescriptor.Data
78
+ if roomData == nil then
79
+ return {}
80
+ end
81
+ local doorSlotToRoomGridIndexes = ____exports.getRoomShapeNeighborGridIndexes(nil, roomDescriptor.SafeGridIndex, roomData.Shape)
82
+ local roomCandidates = {}
83
+ for ____, ____value in __TS__Iterator(doorSlotToRoomGridIndexes:entries()) do
84
+ local doorSlot = ____value[1]
85
+ local neighborRoomGridIndex = ____value[2]
86
+ do
87
+ local doorSlotFlag = doorSlotToDoorSlotFlag(nil, doorSlot)
88
+ if not hasFlag(nil, roomData.Doors, doorSlotFlag) then
89
+ goto __continue13
90
+ end
91
+ if ____exports.roomExists(nil, neighborRoomGridIndex) then
92
+ goto __continue13
93
+ end
94
+ if not ____exports.isDeadEnd(nil, neighborRoomGridIndex) then
95
+ goto __continue13
96
+ end
97
+ roomCandidates[#roomCandidates + 1] = {doorSlot, neighborRoomGridIndex}
98
+ end
99
+ ::__continue13::
100
+ end
101
+ return roomCandidates
102
+ end
103
+ --- Helper function to search through all of the rooms on the floor for a spot to insert a brand new
104
+ -- room.
105
+ --
106
+ -- @returns A array of tuples of adjacent room grid index, `DoorSlot`, and new room grid index.
107
+ function ____exports.getNewRoomCandidatesForFloor(self)
108
+ local rooms = getRoomsInGrid(nil)
109
+ local normalRooms = __TS__ArrayFilter(
110
+ rooms,
111
+ function(____, room) return room.Data ~= nil and room.Data.Type == RoomType.DEFAULT and room.Data.Subtype ~= DownpourRoomSubType.MIRROR and room.Data.Subtype ~= MinesRoomSubType.MINESHAFT_ENTRANCE end
112
+ )
113
+ local newRoomCandidates = {}
114
+ for ____, room in ipairs(normalRooms) do
115
+ local newRoomCandidatesBesideRoom = ____exports.getNewRoomCandidatesBesideRoom(nil, room.SafeGridIndex)
116
+ for ____, ____value in ipairs(newRoomCandidatesBesideRoom) do
117
+ local doorSlot = ____value[1]
118
+ local newRoomGridIndex = ____value[2]
119
+ newRoomCandidates[#newRoomCandidates + 1] = {room.SafeGridIndex, doorSlot, newRoomGridIndex}
120
+ end
121
+ end
122
+ return newRoomCandidates
123
+ end
124
+ --- Helper function to get the room grid index delta that each hypothetical door in a given room
125
+ -- shape would go to.
126
+ --
127
+ -- This is used by the `getRoomShapeNeighborGridIndexes` function.
128
+ --
129
+ -- @returns A map of `DoorSlot` to the corresponding room grid index delta.
130
+ function ____exports.getRoomShapeNeighborGridIndexDeltas(self, roomShape)
131
+ return ROOM_SHAPE_TO_DOOR_SLOTS_TO_GRID_INDEX_DELTA[roomShape]
132
+ end
133
+ --- Helper function to get the room grid index that each hypothetical door in a given room shape
134
+ -- would go to. (This will not include room grid indexes that are outside of the grid.)
135
+ --
136
+ -- @param safeRoomGridIndex This must be the room safe grid index (i.e. the top-left room grid index
137
+ -- for the respective room).
138
+ -- @param roomShape The shape of the room.
139
+ -- @returns A map of `DoorSlot` to the corresponding room grid index.
140
+ function ____exports.getRoomShapeNeighborGridIndexes(self, safeRoomGridIndex, roomShape)
141
+ local roomShapeNeighborGridIndexDeltas = ____exports.getRoomShapeNeighborGridIndexDeltas(nil, roomShape)
142
+ local neighborGridIndexes = __TS__New(Map)
143
+ for ____, ____value in __TS__Iterator(roomShapeNeighborGridIndexDeltas:entries()) do
144
+ local doorSlot = ____value[1]
145
+ local delta = ____value[2]
146
+ local roomGridIndex = safeRoomGridIndex + delta
147
+ if ____exports.isRoomGridIndexInBounds(nil, roomGridIndex) then
148
+ neighborGridIndexes:set(doorSlot, roomGridIndex)
149
+ end
150
+ end
151
+ return neighborGridIndexes
152
+ end
153
+ --- Helper function to check if the given room grid index is a dead end. Specifically, this is
154
+ -- defined as having only one adjacent room that exists.
155
+ --
156
+ -- Note that this function does not take the shape of the room into account; it only looks at a
157
+ -- single room grid index.
158
+ --
159
+ -- This function does not care if the given room grid index actually exists, so you can use it to
160
+ -- check if a hypothetical room would be a dead end.
161
+ --
162
+ -- @param roomGridIndex Optional. Default is the current room index.
163
+ function ____exports.isDeadEnd(self, roomGridIndex)
164
+ local adjacentRoomGridIndexes = ____exports.getAdjacentRoomGridIndexes(nil, roomGridIndex)
165
+ local adjacentRoomData = __TS__ArrayMap(
166
+ adjacentRoomGridIndexes,
167
+ function(____, adjacentRoomGridIndex) return getRoomData(nil, adjacentRoomGridIndex) end
168
+ )
169
+ local existingRoomData = __TS__ArrayFilter(
170
+ adjacentRoomData,
171
+ function(____, data) return data ~= nil end
172
+ )
173
+ return #existingRoomData == 1
174
+ end
175
+ --- Helper function to determine if a given room grid index is inside of the normal 13x13 level grid.
176
+ --
177
+ -- For example, Devil Rooms and the Mega Satan room are not considered to be inside the grid.
178
+ function ____exports.isRoomGridIndexInBounds(self, roomGridIndex)
179
+ return roomGridIndex >= 0 and roomGridIndex <= MAX_LEVEL_GRID_INDEX
180
+ end
181
+ --- Helper function to check if a room exists at the given room grid index.
182
+ function ____exports.roomExists(self, roomGridIndex)
183
+ local roomData = getRoomData(nil, roomGridIndex)
184
+ return roomData ~= nil
185
+ end
186
+ local LEFT = -1
187
+ local UP = -LEVEL_GRID_ROW_WIDTH
188
+ local RIGHT = 1
189
+ local DOWN = LEVEL_GRID_ROW_WIDTH
190
+ ADJACENT_ROOM_GRID_INDEX_DELTAS = {LEFT, UP, RIGHT, DOWN}
191
+ --- Helper function to get the room safe grid index for every room on the entire floor.
192
+ function ____exports.getAllRoomGridIndexes(self)
193
+ local rooms = getRooms(nil)
194
+ return __TS__ArrayMap(
195
+ rooms,
196
+ function(____, roomDescriptor) return roomDescriptor.SafeGridIndex end
197
+ )
198
+ end
199
+ --- Helper function to pick a random valid spot on the floor to insert a brand new room. Note that
200
+ -- some floors will not have any valid spots. If this is the case, this function will return
201
+ -- undefined.
202
+ --
203
+ -- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
204
+ -- `RNG.Next` method will be called. Default is `getRandomSeed()`.
205
+ -- @returns Either a tuple of adjacent room grid index, `DoorSlot`, and new room grid index, or
206
+ -- undefined.
207
+ function ____exports.getNewRoomCandidate(self, seedOrRNG)
208
+ if seedOrRNG == nil then
209
+ seedOrRNG = getRandomSeed(nil)
210
+ end
211
+ local newRoomCandidatesForFloor = ____exports.getNewRoomCandidatesForFloor(nil)
212
+ if #newRoomCandidatesForFloor == 0 then
213
+ return nil
214
+ end
215
+ return getRandomArrayElement(nil, newRoomCandidatesForFloor, seedOrRNG)
216
+ end
217
+ --- Helper function to get an array of all of the safe grid indexes for rooms that match the
218
+ -- specified room type.
219
+ --
220
+ -- This function only searches through rooms in the current dimension.
221
+ --
222
+ -- This function is variadic, meaning that you can specify N arguments to get the combined grid
223
+ -- indexes for N room types.
224
+ function ____exports.getRoomGridIndexesForType(self, ...)
225
+ local roomTypesSet = __TS__New(Set, {...})
226
+ local rooms = getRooms(nil)
227
+ local matchingRooms = __TS__ArrayFilter(
228
+ rooms,
229
+ function(____, roomDescriptor) return roomDescriptor.Data ~= nil and roomTypesSet:has(roomDescriptor.Data.Type) end
230
+ )
231
+ return __TS__ArrayMap(
232
+ matchingRooms,
233
+ function(____, roomDescriptor) return roomDescriptor.SafeGridIndex end
234
+ )
235
+ end
236
+ --- Helper function to get the grid indexes of all the rooms connected to the given room index,
237
+ -- taking the shape of the room into account. (This will only include rooms with valid data.)
238
+ --
239
+ -- Returns an empty map if the provided room grid index is out of bounds or has no associated room
240
+ -- data.
241
+ --
242
+ -- @param roomGridIndex Optional. Default is the current room index.
243
+ -- @returns A map of `DoorSlot` to the corresponding room grid index.
244
+ function ____exports.getRoomNeighbors(self, roomGridIndex)
245
+ local roomDescriptor = getRoomDescriptor(nil, roomGridIndex)
246
+ if not ____exports.isRoomGridIndexInBounds(nil, roomDescriptor.SafeGridIndex) then
247
+ return __TS__New(Map)
248
+ end
249
+ local roomData = roomDescriptor.Data
250
+ if roomData == nil then
251
+ return __TS__New(Map)
252
+ end
253
+ local doorSlotToRoomGridIndexes = ____exports.getRoomShapeNeighborGridIndexes(nil, roomDescriptor.SafeGridIndex, roomData.Shape)
254
+ local roomNeighbors = __TS__New(Map)
255
+ for ____, ____value in __TS__Iterator(doorSlotToRoomGridIndexes:entries()) do
256
+ local doorSlot = ____value[1]
257
+ local neighborRoomGridIndex = ____value[2]
258
+ if ____exports.roomExists(nil, neighborRoomGridIndex) then
259
+ roomNeighbors:set(doorSlot, neighborRoomGridIndex)
260
+ end
261
+ end
262
+ return roomNeighbors
263
+ end
264
+ function ____exports.isDoorSlotValidAtGridIndex(self, doorSlot, roomGridIndex)
265
+ local allowedDoors = getRoomAllowedDoors(nil, roomGridIndex)
266
+ return allowedDoors:has(doorSlot)
267
+ end
268
+ function ____exports.isDoorSlotValidAtGridIndexForRedRoom(self, doorSlot, roomGridIndex)
269
+ local doorSlotValidAtGridIndex = ____exports.isDoorSlotValidAtGridIndex(nil, doorSlot, roomGridIndex)
270
+ if not doorSlotValidAtGridIndex then
271
+ return false
272
+ end
273
+ local roomShape = getRoomShape(nil, roomGridIndex)
274
+ if roomShape == nil then
275
+ return false
276
+ end
277
+ local delta = getGridIndexDelta(nil, roomShape, doorSlot)
278
+ if delta == nil then
279
+ return false
280
+ end
281
+ local redRoomGridIndex = roomGridIndex + delta
282
+ return not ____exports.roomExists(nil, redRoomGridIndex) and ____exports.isRoomGridIndexInBounds(nil, redRoomGridIndex)
283
+ end
284
+ --- Helper function to detect if the provided room was created by the Red Key item. Under the hood,
285
+ -- this checks for the `RoomDescriptorFlag.FLAG_RED_ROOM` flag.
286
+ --
287
+ -- @param roomGridIndex Optional. Default is the current room index.
288
+ function ____exports.isRedKeyRoom(self, roomGridIndex)
289
+ local roomDescriptor = getRoomDescriptor(nil, roomGridIndex)
290
+ return hasFlag(nil, roomDescriptor.Flags, RoomDescriptorFlag.RED_ROOM)
291
+ end
292
+ --- Helper function to generate a new room on the floor at a valid dead end attached to a normal
293
+ -- room.
294
+ --
295
+ -- Under the hood, this function uses the `Level.MakeRedRoomDoor` method to create the room.
296
+ --
297
+ -- The newly created room will have data corresponding to the game's randomly generated red room. If
298
+ -- you want to modify this, use the `setRoomData` helper function.
299
+ --
300
+ -- @returns The room grid index of the new room or undefined if the floor had no valid dead ends to
301
+ -- place a room.
302
+ function ____exports.newRoom(self)
303
+ local newRoomCandidate = ____exports.getNewRoomCandidate(nil)
304
+ if newRoomCandidate == nil then
305
+ return nil
306
+ end
307
+ local adjacentRoomGridIndex, doorSlot, newRoomGridIndex = table.unpack(newRoomCandidate)
308
+ local level = game:GetLevel()
309
+ level:MakeRedRoomDoor(adjacentRoomGridIndex, doorSlot)
310
+ return newRoomGridIndex
311
+ end
312
+ --- Helper function to get the coordinates of a given grid index. The floor is represented by a 13x13
313
+ -- grid.
314
+ --
315
+ -- - Since the starting room is in the center, the starting room grid index of 84 is equal to
316
+ -- coordinates of (6, 6).
317
+ -- - The top-left grid index of 0 is equal to coordinates of: (12, 0)
318
+ -- - The top-right grid index of 12 is equal to coordinates of: (0, 0)
319
+ -- - The bottom-left grid index of 156 is equal to coordinates of: (0, 12)
320
+ -- - The bottom-right grid index of 168 is equal to coordinates of: (12, 12)
321
+ function ____exports.roomGridIndexToXY(self, roomGridIndex)
322
+ local x = roomGridIndex % LEVEL_GRID_ROW_WIDTH
323
+ local y = math.floor(roomGridIndex / LEVEL_GRID_ROW_WIDTH)
324
+ return {x, y}
325
+ end
326
+ return ____exports
@@ -107,4 +107,9 @@ export declare function getRoomVariant(roomGridIndex?: int): int;
107
107
  * @param roomGridIndex Optional. Default is the current room index.
108
108
  */
109
109
  export declare function getRoomVisitedCount(roomGridIndex?: int): int;
110
+ /**
111
+ * Helper function to set the data for a given room. This will change the room type, contents, and
112
+ * so on.
113
+ */
114
+ export declare function setRoomData(roomGridIndex: int, data: Readonly<RoomConfig>): void;
110
115
  //# sourceMappingURL=roomData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"roomData.d.ts","sourceRoot":"","sources":["../../src/functions/roomData.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAER,SAAS,EACT,QAAQ,EACR,OAAO,EACR,MAAM,8BAA8B,CAAC;AAMtC;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,CAiBtE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,UAAU,GAAG,SAAS,CAGvE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,cAAc,CAQrE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,sBAAsB,CAGlE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,IAAI,GAAG,CAatC;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,GAAG,CAGzD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,MAAM,CAGvD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,SAAS,GAAG,SAAS,CAGvE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,OAAO,CAG3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,GAAG,CAGvD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,QAAQ,CAGzD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,GAAG,CAGvD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,GAAG,CAG5D"}
1
+ {"version":3,"file":"roomData.d.ts","sourceRoot":"","sources":["../../src/functions/roomData.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAER,SAAS,EACT,QAAQ,EACR,OAAO,EACR,MAAM,8BAA8B,CAAC;AAMtC;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,CAiBtE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,UAAU,GAAG,SAAS,CAGvE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,cAAc,CAQrE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,sBAAsB,CAGlE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,IAAI,GAAG,CAatC;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,GAAG,CAGzD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,MAAM,CAGvD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,SAAS,GAAG,SAAS,CAGvE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,OAAO,CAG3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,GAAG,CAGvD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,QAAQ,CAGzD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,GAAG,CAGvD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,GAAG,CAG5D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,aAAa,EAAE,GAAG,EAClB,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,GACzB,IAAI,CAGN"}
@@ -158,4 +158,10 @@ function ____exports.getRoomVisitedCount(self, roomGridIndex)
158
158
  local roomDescriptor = ____exports.getRoomDescriptor(nil, roomGridIndex)
159
159
  return roomDescriptor.VisitedCount
160
160
  end
161
+ --- Helper function to set the data for a given room. This will change the room type, contents, and
162
+ -- so on.
163
+ function ____exports.setRoomData(self, roomGridIndex, data)
164
+ local roomDescriptor = ____exports.getRoomDescriptor(nil, roomGridIndex)
165
+ roomDescriptor.Data = data
166
+ end
161
167
  return ____exports
@@ -1,3 +1,11 @@
1
+ /**
2
+ * These functions have to do with the grid index inside of a room (i.e. the grid index that grid
3
+ * entities use).
4
+ *
5
+ * For functions having to do with the room grid index of the level, see the "Level Grid" functions.
6
+ *
7
+ * @module
8
+ */
1
9
  import { RoomShape } from "isaac-typescript-definitions";
2
10
  /**
3
11
  * Helper function to convert grid coordinates to a world position `Vector`.
@@ -1 +1 @@
1
- {"version":3,"file":"roomGrid.d.ts","sourceRoot":"","sources":["../../src/functions/roomGrid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAUzD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAGrE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,SAAS,GACnB,MAAM,CAMR;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAIxE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,SAAS,GACnB,OAAO,CAIT;AA0BD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIpE;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIxE"}
1
+ {"version":3,"file":"roomGrid.d.ts","sourceRoot":"","sources":["../../src/functions/roomGrid.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAUzD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAGrE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,SAAS,GACnB,MAAM,CAMR;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAIxE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,SAAS,GACnB,OAAO,CAIT;AA0BD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIpE;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIxE"}
@@ -1,48 +1,39 @@
1
- import { BossID, Dimension, Direction, DoorSlot, ItemPoolType, MinibossID, RoomShape, RoomTransitionAnim, RoomType } from "isaac-typescript-definitions";
1
+ import { BossID, Dimension, Direction, ItemPoolType, MinibossID, RoomTransitionAnim, RoomType } from "isaac-typescript-definitions";
2
2
  /**
3
3
  * Helper function for quickly switching to a new room without playing a particular animation. Use
4
4
  * this helper function over invoking the `Game.ChangeRoom` method directly to ensure that you do
5
5
  * not forget to set the `LeaveDoor` property and to prevent crashing on invalid room grid indexes.
6
6
  */
7
7
  export declare function changeRoom(roomGridIndex: int): void;
8
- /**
9
- * Helper function to get an array with every valid `Dimension` (not including `Dimension.CURRENT`).
10
- */
11
- export declare function getAllDimensions(): Dimension[];
12
- /** Helper function to get the grid index for every room on the entire floor. */
13
- export declare function getAllRoomGridIndexes(): int[];
14
- /**
15
- * Helper function to get the current dimension. Most of the time, this will be `Dimension.MAIN`,
16
- * but it can change if e.g. the player is in the mirror world of Downpour/Dross.
17
- */
18
- export declare function getDimension(): Dimension;
19
8
  /**
20
9
  * Helper function to get the number of rooms that are currently on the floor layout. This does not
21
10
  * include off-grid rooms, like the Devil Room.
22
11
  */
23
12
  export declare function getNumRooms(): int;
24
13
  /**
25
- * Helper function to get an array of all of the safe grid indexes for rooms that match the
26
- * specified room type.
14
+ * Helper function to get the room data for a specific room type and variant combination. This is
15
+ * accomplished by using the "goto" console command to load the specified room into the
16
+ * `GridRoom.DEBUG` slot.
27
17
  *
28
- * This function only searches through rooms in the current dimension.
18
+ * Note that the side effect of using the "goto" console command is that it will trigger a room
19
+ * transition after a short delay. By default, this function cancels the incoming room transition by
20
+ * using the `Game.StartRoomTransition` method to travel to the same room.
29
21
  *
30
- * This function is variadic, meaning that you can specify N arguments to get the combined grid
31
- * indexes for N room types.
22
+ * @param roomType The type of room to retrieve.
23
+ * @param roomVariant The room variant to retrieve. (The room variant is the "ID" of the room in
24
+ * Basement Renovator.)
25
+ * @param cancelRoomTransition Optional. Whether to cancel the room transition by using the
26
+ * `Game.StartRoomTransition` method to travel to the same room. Default
27
+ * is true. Set this to false if you are getting the data for many rooms
28
+ * at the same time, and then use the `teleport` helper function when
29
+ * you are finished.
32
30
  */
33
- export declare function getRoomGridIndexesForType(...roomTypes: RoomType[]): int[];
31
+ export declare function getRoomDataForTypeVariant(roomType: RoomType, roomVariant: int, cancelRoomTransition?: boolean): Readonly<RoomConfig> | undefined;
34
32
  /**
35
33
  * Helper function to get the item pool type for the current room. For example, this returns
36
34
  * `ItemPoolType.ItemPoolType.POOL_ANGEL` if you are in an Angel Room.
37
35
  */
38
36
  export declare function getRoomItemPoolType(): ItemPoolType;
39
- /**
40
- * Helper function to get the grid indexes of all the rooms connected to the given room index.
41
- *
42
- * @param roomGridIndex Optional. Default is the current room index.
43
- */
44
- export declare function getRoomNeighbors(roomGridIndex?: int): int[];
45
- export declare function getRoomShapeNeighborGridIndexDeltas(roomShape: RoomShape): int[];
46
37
  /**
47
38
  * Helper function to get the proper name of a room type.
48
39
  *
@@ -50,9 +41,12 @@ export declare function getRoomShapeNeighborGridIndexDeltas(roomShape: RoomShape
50
41
  */
51
42
  export declare function getRoomTypeName(roomType: RoomType): string;
52
43
  /**
53
- * Helper function to get the room descriptor for every room on the level, including off-grid rooms.
54
- * Uses the `Level.GetRooms` method to accomplish this. Rooms without data are assumed to be
55
- * non-existent and are not added to the list.
44
+ * Helper function to get the room descriptor for every room on the level. This includes off-grid
45
+ * rooms, such as the Devil Room. (Off-grid rooms will only be included if they the data exists,
46
+ * which only usually happens once they have been visited at least once.)
47
+ *
48
+ * Under the hood, this function uses the `Level.GetRooms` method to accomplish this. Rooms without
49
+ * data are assumed to be non-existent and are not added to the list.
56
50
  *
57
51
  * @param includeExtraDimensionalRooms Optional. On some floors (e.g. Downpour 2, Mines 2),
58
52
  * extra-dimensional rooms are automatically generated and can be
@@ -61,8 +55,10 @@ export declare function getRoomTypeName(roomType: RoomType): string;
61
55
  export declare function getRooms(includeExtraDimensionalRooms?: boolean): RoomDescriptor[];
62
56
  /**
63
57
  * Helper function to get the room descriptor for every room on the level except for rooms that are
64
- * not on the grid. Uses the `Level.GetRooms` method to accomplish this. Rooms without data are
65
- * assumed to be non-existent and are not added to the list.
58
+ * not on the grid.
59
+ *
60
+ * Under the hood, this function uses the `Level.GetRooms` method to accomplish this. Rooms without
61
+ * data are assumed to be non-existent and are not added to the list.
66
62
  *
67
63
  * @param includeExtraDimensionalRooms Optional. On some floors (e.g. Downpour 2, Mines 2),
68
64
  * extra-dimensional rooms are automatically be generated and can be
@@ -71,8 +67,10 @@ export declare function getRooms(includeExtraDimensionalRooms?: boolean): RoomDe
71
67
  export declare function getRoomsInGrid(includeExtraDimensionalRooms?: boolean): RoomDescriptor[];
72
68
  /**
73
69
  * Helper function to get the room descriptor for every room on the level in a specific dimension.
74
- * Uses the `Level.GetRooms` method to accomplish this. Rooms without data are assumed to be
75
- * non-existent and are not added to the list.
70
+ * This will not include any off-grid rooms, such as the Devil Room.
71
+ *
72
+ * Under the hood, this function uses the `Level.GetRooms` method to accomplish this. Rooms without
73
+ * data are assumed to be non-existent and are not added to the list.
76
74
  *
77
75
  * @returns A map of room ListIndex to RoomDescriptor.
78
76
  */
@@ -106,7 +104,6 @@ export declare function inDeathCertificateArea(): boolean;
106
104
  * flag.
107
105
  */
108
106
  export declare function inDevilsCrownTreasureRoom(): boolean;
109
- export declare function inDimension(dimension: Dimension): boolean;
110
107
  export declare function inDoubleTrouble(): boolean;
111
108
  export declare function inGenesisRoom(): boolean;
112
109
  /** Helper function to determine if the current room shape is one of the four L room shapes. */
@@ -146,30 +143,6 @@ export declare function inStartingRoom(): boolean;
146
143
  * checked. Undefined by default.
147
144
  */
148
145
  export declare function isAllRoomsClear(onlyCheckRoomTypes?: RoomType[]): boolean;
149
- export declare function isDoorSlotValidAtGridIndex(doorSlot: DoorSlot, roomGridIndex: int): boolean;
150
- export declare function isDoorSlotValidAtGridIndexForRedRoom(doorSlot: DoorSlot, roomGridIndex: int): boolean;
151
- /**
152
- * Helper function to detect if the provided room was created by the Red Key item. Under the hood,
153
- * this checks for the `RoomDescriptorFlag.FLAG_RED_ROOM` flag.
154
- *
155
- * @param roomGridIndex Optional. Default is the current room index.
156
- */
157
- export declare function isRedKeyRoom(roomGridIndex?: int): boolean;
158
- /**
159
- * Helper function to determine if the provided room is part of the floor layout. For example, Devil
160
- * Rooms and the Mega Satan room are not considered to be inside the map.
161
- *
162
- * @param roomGridIndex Optional. Default is the current room index.
163
- */
164
- export declare function isRoomInsideMap(roomGridIndex?: int): boolean;
165
- /** Helper function to check if a room exists at the given room grid index. */
166
- export declare function roomExists(roomGridIndex: int): boolean;
167
- /**
168
- * Helper function to get the coordinates of a given grid index. The floor is represented by a 13x13
169
- * grid. For example, since the starting room is in the center, the starting room grid index of 84
170
- * be equal to coordinates of (?, ?).
171
- */
172
- export declare function roomGridIndexToXY(roomGridIndex: int): [x: int, y: int];
173
146
  /**
174
147
  * If the `Room.Update` method is called in a `POST_NEW_ROOM` callback, then some entities will
175
148
  * slide around (such as the player). Since those entity velocities are already at zero, setting
@@ -191,13 +164,18 @@ export declare function setRoomUncleared(): void;
191
164
  /**
192
165
  * Helper function to change the current room. It can be used for both teleportation and "normal"
193
166
  * room transitions, depending on what is passed for the `direction` and `roomTransitionAnim`
194
- * arguments. Use this function instead of invoking the `Game.StartRoomTransition` method directly
195
- * so that you do not forget to set `Level.LeaveDoor` property and to prevent crashing on invalid
196
- * room grid indexes.
167
+ * arguments.
168
+ *
169
+ * Use this function instead of invoking the `Game.StartRoomTransition` method directly so that:
170
+ * - you do not forget to set `Level.LeaveDoor` property
171
+ * - to prevent crashing on invalid room grid indexes
172
+ * - to automatically handle Curse of the Maze
197
173
  *
198
174
  * @param roomGridIndex The room grid index of the destination room.
199
175
  * @param direction Optional. Default is `Direction.NO_DIRECTION`.
200
176
  * @param roomTransitionAnim Optional. Default is `RoomTransitionAnim.TELEPORT`.
177
+ * @param force Optional. Whether to temporarily disable Curse of the Maze. Default is false. If set
178
+ * to false, then this function may not go to the provided room grid index.
201
179
  */
202
- export declare function teleport(roomGridIndex: int, direction?: Direction, roomTransitionAnim?: RoomTransitionAnim): void;
180
+ export declare function teleport(roomGridIndex: int, direction?: Direction, roomTransitionAnim?: RoomTransitionAnim, force?: boolean): void;
203
181
  //# sourceMappingURL=rooms.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rooms.d.ts","sourceRoot":"","sources":["../../src/functions/rooms.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,SAAS,EACT,SAAS,EACT,QAAQ,EAIR,YAAY,EACZ,UAAU,EAEV,SAAS,EACT,kBAAkB,EAClB,QAAQ,EAGT,MAAM,8BAA8B,CAAC;AAsCtC;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI,CAenD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,SAAS,EAAE,CAE9C;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,IAAI,GAAG,EAAE,CAG7C;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAmBxC;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,GAAG,CAGjC;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,GAAG,GAAG,EAAE,CAWzE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,CAOlD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAqB3D;AAED,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,SAAS,GACnB,GAAG,EAAE,CAEP;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAE1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACtB,4BAA4B,UAAQ,GACnC,cAAc,EAAE,CAsBlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,4BAA4B,UAAQ,GACnC,cAAc,EAAE,CAGlB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,EAAE,CAY1E;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAKnC;AAED,wBAAgB,WAAW,IAAI,OAAO,CAOrC;AAED,wBAAgB,WAAW,IAAI,OAAO,CASrC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAWpD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAOtC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAWhD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAGnD;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAEzD;AAED,wBAAgB,eAAe,IAAI,OAAO,CAMzC;AAED,wBAAgB,aAAa,IAAI,OAAO,CAKvC;AAED,+FAA+F;AAC/F,wBAAgB,OAAO,IAAI,OAAO,CAUjC;AAED,wBAAgB,eAAe,IAAI,OAAO,CAKzC;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,OAAO,CASrC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAWhE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAKtC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAMxC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,GAAG,OAAO,CAcxE;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,GAAG,GACjB,OAAO,CAGT;AAED,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,GAAG,GACjB,OAAO,CAyBT;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,OAAO,CAGzD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,OAAO,CAM5D;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,aAAa,EAAE,GAAG,GAAG,OAAO,CAGtD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAKtE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAWrC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,IAAI,CA8BrC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CACtB,aAAa,EAAE,GAAG,EAClB,SAAS,YAAyB,EAClC,kBAAkB,qBAA8B,GAC/C,IAAI,CAeN"}
1
+ {"version":3,"file":"rooms.d.ts","sourceRoot":"","sources":["../../src/functions/rooms.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,SAAS,EACT,SAAS,EAKT,YAAY,EAEZ,UAAU,EAGV,kBAAkB,EAClB,QAAQ,EAGT,MAAM,8BAA8B,CAAC;AAgCtC;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI,CAenD;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,GAAG,CAGjC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,GAAG,EAChB,oBAAoB,UAAO,GAC1B,QAAQ,CAAC,UAAU,CAAC,GAAG,SAAS,CAgBlC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,CAOlD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAE1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CACtB,4BAA4B,UAAQ,GACnC,cAAc,EAAE,CAwBlB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,4BAA4B,UAAQ,GACnC,cAAc,EAAE,CAGlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,EAAE,CAc1E;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAKnC;AAED,wBAAgB,WAAW,IAAI,OAAO,CAOrC;AAED,wBAAgB,WAAW,IAAI,OAAO,CASrC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAWpD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAOtC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAWhD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAGnD;AAED,wBAAgB,eAAe,IAAI,OAAO,CAMzC;AAED,wBAAgB,aAAa,IAAI,OAAO,CAKvC;AAED,+FAA+F;AAC/F,wBAAgB,OAAO,IAAI,OAAO,CAUjC;AAED,wBAAgB,eAAe,IAAI,OAAO,CAKzC;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,OAAO,CASrC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAWhE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAKtC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAMxC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,GAAG,OAAO,CAcxE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAWrC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,IAAI,CA8BrC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CACtB,aAAa,EAAE,GAAG,EAClB,SAAS,YAAyB,EAClC,kBAAkB,qBAA8B,EAChD,KAAK,UAAQ,GACZ,IAAI,CA0BN"}