isaacscript-common 1.0.571 → 1.0.572

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.
@@ -140,8 +140,8 @@ end
140
140
  function ____exports.lockDoor(self, door)
141
141
  local game = Game()
142
142
  local level = game:GetLevel()
143
- local roomDesc = level:GetRoomByIdx(door.TargetRoomIndex)
144
- roomDesc.VisitedCount = 0
143
+ local roomDescriptor = level:GetRoomByIdx(door.TargetRoomIndex)
144
+ roomDescriptor.VisitedCount = 0
145
145
  door:SetVariant(DoorVariant.DOOR_LOCKED)
146
146
  door:SetLocked(true)
147
147
  door:Close(true)
@@ -10,45 +10,34 @@ export declare function getAllRoomGridIndexes(): int[];
10
10
  * Helper function to get the current dimension. Most of the time, this will be `Dimension.MAIN`,
11
11
  * but it can change if e.g. the player is in the mirror world of Downpour/Dross.
12
12
  *
13
- * Note that this function does correctly handle detecting the Death Certificate dimension, which is
13
+ * Note that this function correctly handles detecting the Death Certificate dimension, which is
14
14
  * tricky to properly detect.
15
15
  */
16
16
  export declare function getCurrentDimension(): Dimension;
17
- /** An alias to the `Level.GetCurrentRoomDesc()` method. */
18
- export declare function getCurrentRoomDescReadOnly(): RoomDescriptorReadOnly;
19
- export declare function getRoomData(): RoomConfig | undefined;
17
+ /** Alias for the `Level.GetCurrentRoomDesc()` method. */
18
+ export declare function getCurrentRoomDescriptorReadOnly(): RoomDescriptorReadOnly;
20
19
  /**
21
- * Helper function to get the type for the room from the XML/STB data. The room data type will
20
+ * Helper function to get the room data for the provided room.
21
+ *
22
+ * @param roomGridIndex Optional. Equal to the current room index by default.
23
+ */
24
+ export declare function getRoomData(roomGridIndex?: int): RoomConfig | undefined;
25
+ /**
26
+ * Helper function to get the type of a room from the XML/STB data. The room data type will
22
27
  * correspond to different things depending on what XML/STB file it draws from. For example, in the
23
28
  * "00.special rooms.stb" file, a room type of 2 corresponds to a shop, a room type of 3 corresponds
24
29
  * to an I AM ERROR room, and so on.
25
30
  *
31
+ * @param roomGridIndex Optional. Equal to the current room index by default.
26
32
  * @returns The room data type. Returns -1 if the type was not found.
27
33
  */
28
- export declare function getRoomDataType(): int;
34
+ export declare function getRoomDataType(roomGridIndex?: int): int;
29
35
  /**
30
- * Helper function to get the list grid index of the current room, which is equal to the index in
31
- * the `Level.GetRooms().Get()` method. In other words, this is equal to the order that the room was
32
- * created by the floor generation algorithm.
33
- *
34
- * Use this as an index for data structures that store data per room, since it is unique across
35
- * different dimensions.
36
- */
37
- export declare function getRoomListIndex(): int;
38
- /**
39
- * Helper function to get the safe grid index of the current room. The safe grid index is defined as
40
- * the top-left 1x1 section that the room overlaps with (or the top-right 1x1 section of a
41
- * `RoomType.ROOMSHAPE_LTL` room).
42
- *
43
- * In most situations, using the safe grid index is more reliable than using the `GridIndex` or the
44
- * `Level.GetCurrentRoomIndex()` method directly. `GridIndex` can return quadrants that are not on
45
- * the map, and `Level.GetCurrentRoomIndex()` returns the specific 1x1 quadrant that the player
46
- * entered the room at.
36
+ * Helper function to get the descriptor for a room.
47
37
  *
48
- * Data structures that store data per room should use the room's `ListIndex` instead of
49
- * `SafeGridIndex`, since the former is unique across different dimensions.
38
+ * @param roomGridIndex Optional. Equal to the current room index by default.
50
39
  */
51
- export declare function getRoomSafeGridIndex(): int;
40
+ export declare function getRoomDescriptor(roomGridIndex?: int): RoomDescriptor;
52
41
  /**
53
42
  * Helper function to get an array of all of the safe grid indexes for rooms that match the
54
43
  * specified room type.
@@ -61,43 +50,76 @@ export declare function getRoomGridIndexesForType(roomType: RoomType): int[];
61
50
  * `ItemPoolType.ItemPoolType.POOL_ANGEL` if you are in an Angel Room.
62
51
  */
63
52
  export declare function getRoomItemPoolType(): ItemPoolType;
53
+ /**
54
+ * Helper function to get the list grid index of the provided room, which is equal to the index in
55
+ * the `Level.GetRooms().Get()` method. In other words, this is equal to the order that the room was
56
+ * created by the floor generation algorithm.
57
+ *
58
+ * Use this as an index for data structures that store data per room, since it is unique across
59
+ * different dimensions.
60
+ *
61
+ * @param roomGridIndex Optional. Equal to the current room index by default.
62
+ */
63
+ export declare function getRoomListIndex(roomGridIndex?: int): int;
64
64
  /**
65
65
  * Helper function to get the name of the room as it appears in the STB/XML data.
66
66
  *
67
+ * @param roomGridIndex Optional. Equal to the current room index by default.
67
68
  * @returns The room name. Returns "Unknown" if the type was not found.
68
69
  */
69
- export declare function getRoomName(): string;
70
+ export declare function getRoomName(roomGridIndex?: int): string;
70
71
  /**
71
- * Helper function to get the stage ID for the room from the XML/STB data. The room stage ID will
72
+ * Helper function to get the safe grid index of the provided room. The safe grid index is defined as
73
+ * the top-left 1x1 section that the room overlaps with (or the top-right 1x1 section of a
74
+ * `RoomType.ROOMSHAPE_LTL` room).
75
+ *
76
+ * In most situations, using the safe grid index is more reliable than using the `GridIndex` or the
77
+ * `Level.GetCurrentRoomIndex()` method directly. `GridIndex` can return quadrants that are not on
78
+ * the map, and `Level.GetCurrentRoomIndex()` returns the specific 1x1 quadrant that the player
79
+ * entered the room at.
80
+ *
81
+ * Data structures that store data per room should use the room's `ListIndex` instead of
82
+ * `SafeGridIndex`, since the former is unique across different dimensions.
83
+ *
84
+ * @param roomGridIndex Optional. Equal to the current room index by default.
85
+ */
86
+ export declare function getRoomSafeGridIndex(roomGridIndex?: int): int;
87
+ /**
88
+ * Helper function to get the stage ID for a room from the XML/STB data. The room stage ID will
72
89
  * correspond to the first number in the filename of the XML/STB file. For example, a Depths room
73
90
  * would have a stage ID of 7.
74
91
  *
92
+ * @param roomGridIndex Optional. Equal to the current room index by default.
75
93
  * @returns The room stage ID. Returns -1 if the stage ID was not found.
76
94
  */
77
- export declare function getRoomStageID(): StageID;
95
+ export declare function getRoomStageID(roomGridIndex?: int): StageID;
78
96
  /**
79
- * Helper function to get the subtype for the room from the XML/STB data. The room subtype will
97
+ * Helper function to get the subtype for a room from the XML/STB data. The room subtype will
80
98
  * correspond to different things depending on what XML/STB file it draws from. For example, in the
81
99
  * "00.special rooms.stb" file, an Angel Room with a subtype of 0 will correspond to a normal Angel
82
100
  * Room and a subtype of 1 will correspond to an Angel Room shop for The Stairway.
83
101
  *
102
+ * @param roomGridIndex Optional. Equal to the current room index by default.
84
103
  * @returns The room subtype. Returns -1 if the subtype was not found.
85
104
  */
86
- export declare function getRoomSubType(): int;
105
+ export declare function getRoomSubType(roomGridIndex?: int): int;
87
106
  /**
88
- * Helper function to get the variant for the current room from the XML/STB data. You can think of a
89
- * room variant as its identifier. For example, to go to Basement room #123, you would use a console
107
+ * Helper function to get the variant for a room from the XML/STB data. You can think of a room
108
+ * variant as its identifier. For example, to go to Basement room #123, you would use a console
90
109
  * command of `goto d.123` while on the Basement.
91
110
  *
111
+ * @param roomGridIndex Optional. Equal to the current room index by default.
92
112
  * @returns The room variant. Returns -1 if the variant was not found.
93
113
  */
94
- export declare function getRoomVariant(): int;
114
+ export declare function getRoomVariant(roomGridIndex?: int): int;
95
115
  /**
96
- * The room visited count will be inaccurate during the period before the PostNewRoom callback has
97
- * fired (i.e. when entities are initializing and performing their first update). This is because
98
- * the variable is only incremented immediately before the PostNewRoom callback fires.
116
+ * Note that the room visited count will be inaccurate during the period before the PostNewRoom
117
+ * callback has fired (i.e. when entities are initializing and performing their first update). This
118
+ * is because the variable is only incremented immediately before the PostNewRoom callback fires.
119
+ *
120
+ * @param roomGridIndex Optional. Equal to the current room index by default.
99
121
  */
100
- export declare function getRoomVisitedCount(): int;
122
+ export declare function getRoomVisitedCount(roomGridIndex?: int): int;
101
123
  /**
102
124
  * Helper function to get the room descriptor for every room on the level. Uses the
103
125
  * `Level.GetRooms()` method to accomplish this.
@@ -167,15 +189,19 @@ export declare function inStartingRoom(): boolean;
167
189
  */
168
190
  export declare function isAllRoomsClear(onlyCheckRoomTypes?: RoomType[]): boolean;
169
191
  /**
170
- * Helper function to detect if the current room was created by the Red Key item. Under the hood,
192
+ * Helper function to detect if the provided room was created by the Red Key item. Under the hood,
171
193
  * this checks for the `RoomDescriptorFlag.FLAG_RED_ROOM` flag.
194
+ *
195
+ * @param roomGridIndex Optional. Equal to the current room index by default.
172
196
  */
173
- export declare function isRedKeyRoom(): boolean;
197
+ export declare function isRedKeyRoom(roomGridIndex?: int): boolean;
174
198
  /**
175
- * Helper function to determine whether or not the current room is part of the floor layout. For
199
+ * Helper function to determine if the provided room is part of the floor layout. For
176
200
  * example, Devil Rooms and the Mega Satan room are not considered to be inside the map.
201
+ *
202
+ * @param roomGridIndex Optional. Equal to the current room index by default.
177
203
  */
178
- export declare function isRoomInsideMap(): boolean;
204
+ export declare function isRoomInsideMap(roomGridIndex?: int): boolean;
179
205
  /**
180
206
  * If `Room.Update()` is called in a PostNewRoom callback, then some entities will slide around
181
207
  * (such as the player). Since those entity velocities are already at zero, setting them to zero
@@ -17,35 +17,31 @@ local setEntityPositions = ____entity.setEntityPositions
17
17
  local setEntityVelocities = ____entity.setEntityVelocities
18
18
  local ____flag = require("functions.flag")
19
19
  local hasFlag = ____flag.hasFlag
20
- function ____exports.getCurrentRoomDescReadOnly(self)
20
+ function ____exports.getCurrentRoomDescriptorReadOnly(self)
21
21
  local game = Game()
22
22
  local level = game:GetLevel()
23
23
  return level:GetCurrentRoomDesc()
24
24
  end
25
- function ____exports.getRoomData(self)
25
+ function ____exports.getRoomData(self, roomGridIndex)
26
+ local roomDescriptor = ____exports.getRoomDescriptor(nil, roomGridIndex)
27
+ return roomDescriptor.Data
28
+ end
29
+ function ____exports.getRoomDescriptor(self, roomGridIndex)
26
30
  local game = Game()
27
31
  local level = game:GetLevel()
28
- local roomSafeGridIndex = ____exports.getRoomSafeGridIndex(nil)
29
- local roomDesc = level:GetRoomByIdx(roomSafeGridIndex)
30
- return roomDesc.Data
31
- end
32
- function ____exports.getRoomSafeGridIndex(self)
33
- local roomDesc = ____exports.getCurrentRoomDescReadOnly(nil)
34
- return roomDesc.SafeGridIndex
35
- end
36
- function ____exports.getRoomStageID(self)
37
- local roomData = ____exports.getRoomData(nil)
38
- if roomData == nil then
39
- return -1
32
+ if roomGridIndex == nil then
33
+ local currentRoomDescriptor = ____exports.getCurrentRoomDescriptorReadOnly(nil)
34
+ roomGridIndex = currentRoomDescriptor.SafeGridIndex
40
35
  end
41
- return roomData.StageID
36
+ return level:GetRoomByIdx(roomGridIndex)
42
37
  end
43
- function ____exports.getRoomSubType(self)
44
- local roomData = ____exports.getRoomData(nil)
45
- if roomData == nil then
46
- return -1
47
- end
48
- return roomData.Subtype
38
+ function ____exports.getRoomStageID(self, roomGridIndex)
39
+ local roomData = ____exports.getRoomData(nil, roomGridIndex)
40
+ return ((roomData == nil) and -1) or roomData.StageID
41
+ end
42
+ function ____exports.getRoomSubType(self, roomGridIndex)
43
+ local roomData = ____exports.getRoomData(nil, roomGridIndex)
44
+ return ((roomData == nil) and -1) or roomData.Subtype
49
45
  end
50
46
  function ____exports.getRooms(self, includeExtraDimensionalRooms)
51
47
  if includeExtraDimensionalRooms == nil then
@@ -59,9 +55,9 @@ function ____exports.getRooms(self, includeExtraDimensionalRooms)
59
55
  do
60
56
  local i = 0
61
57
  while i < roomList.Size do
62
- local roomDesc = roomList:Get(i)
63
- if roomDesc ~= nil then
64
- __TS__ArrayPush(rooms, roomDesc)
58
+ local roomDescriptor = roomList:Get(i)
59
+ if roomDescriptor ~= nil then
60
+ __TS__ArrayPush(rooms, roomDescriptor)
65
61
  end
66
62
  i = i + 1
67
63
  end
@@ -70,9 +66,9 @@ function ____exports.getRooms(self, includeExtraDimensionalRooms)
70
66
  do
71
67
  local i = 0
72
68
  while i <= MAX_ROOM_INDEX do
73
- local roomDesc = level:GetRoomByIdx(i)
74
- if roomDesc ~= nil then
75
- __TS__ArrayPush(rooms, roomDesc)
69
+ local roomDescriptor = level:GetRoomByIdx(i)
70
+ if roomDescriptor ~= nil then
71
+ __TS__ArrayPush(rooms, roomDescriptor)
76
72
  end
77
73
  i = i + 1
78
74
  end
@@ -93,10 +89,10 @@ function ____exports.changeRoom(self, roomGridIndex)
93
89
  end
94
90
  function ____exports.getAllRoomGridIndexes(self)
95
91
  local allRoomGridIndexes = {}
96
- for ____, roomDesc in ipairs(
92
+ for ____, roomDescriptor in ipairs(
97
93
  ____exports.getRooms(nil)
98
94
  ) do
99
- __TS__ArrayPush(allRoomGridIndexes, roomDesc.SafeGridIndex)
95
+ __TS__ArrayPush(allRoomGridIndexes, roomDescriptor.SafeGridIndex)
100
96
  end
101
97
  return allRoomGridIndexes
102
98
  end
@@ -125,24 +121,17 @@ function ____exports.getCurrentDimension(self)
125
121
  )
126
122
  return 0
127
123
  end
128
- function ____exports.getRoomDataType(self)
129
- local roomData = ____exports.getRoomData(nil)
130
- if roomData == nil then
131
- return -1
132
- end
133
- return roomData.Type
134
- end
135
- function ____exports.getRoomListIndex(self)
136
- local roomDesc = ____exports.getCurrentRoomDescReadOnly(nil)
137
- return roomDesc.ListIndex
124
+ function ____exports.getRoomDataType(self, roomGridIndex)
125
+ local roomData = ____exports.getRoomData(nil, roomGridIndex)
126
+ return ((roomData == nil) and -1) or roomData.Type
138
127
  end
139
128
  function ____exports.getRoomGridIndexesForType(self, roomType)
140
129
  local roomGridIndexes = {}
141
- for ____, roomDesc in ipairs(
130
+ for ____, roomDescriptor in ipairs(
142
131
  ____exports.getRooms(nil)
143
132
  ) do
144
- if (roomDesc.Data ~= nil) and (roomDesc.Data.Type == roomType) then
145
- __TS__ArrayPush(roomGridIndexes, roomDesc.SafeGridIndex)
133
+ if (roomDescriptor.Data ~= nil) and (roomDescriptor.Data.Type == roomType) then
134
+ __TS__ArrayPush(roomGridIndexes, roomDescriptor.SafeGridIndex)
146
135
  end
147
136
  end
148
137
  return roomGridIndexes
@@ -155,23 +144,25 @@ function ____exports.getRoomItemPoolType(self)
155
144
  local roomSeed = room:GetSpawnSeed()
156
145
  return itemPool:GetPoolForRoom(roomType, roomSeed)
157
146
  end
158
- function ____exports.getRoomName(self)
159
- local roomData = ____exports.getRoomData(nil)
160
- if roomData == nil then
161
- return "Unknown"
162
- end
163
- return roomData.Name
147
+ function ____exports.getRoomListIndex(self, roomGridIndex)
148
+ local roomDescriptor = ____exports.getRoomDescriptor(nil, roomGridIndex)
149
+ return roomDescriptor.ListIndex
164
150
  end
165
- function ____exports.getRoomVariant(self)
166
- local roomData = ____exports.getRoomData(nil)
167
- if roomData == nil then
168
- return -1
169
- end
170
- return roomData.Variant
151
+ function ____exports.getRoomName(self, roomGridIndex)
152
+ local roomData = ____exports.getRoomData(nil, roomGridIndex)
153
+ return ((roomData == nil) and "Unknown") or roomData.Name
154
+ end
155
+ function ____exports.getRoomSafeGridIndex(self, roomGridIndex)
156
+ local roomDescriptor = ((roomGridIndex == nil) and ____exports.getCurrentRoomDescriptorReadOnly(nil)) or ____exports.getRoomDescriptor(nil, roomGridIndex)
157
+ return roomDescriptor.SafeGridIndex
171
158
  end
172
- function ____exports.getRoomVisitedCount(self)
173
- local roomDesc = ____exports.getCurrentRoomDescReadOnly(nil)
174
- return roomDesc.VisitedCount
159
+ function ____exports.getRoomVariant(self, roomGridIndex)
160
+ local roomData = ____exports.getRoomData(nil, roomGridIndex)
161
+ return ((roomData == nil) and -1) or roomData.Variant
162
+ end
163
+ function ____exports.getRoomVisitedCount(self, roomGridIndex)
164
+ local roomDescriptor = ____exports.getRoomDescriptor(nil, roomGridIndex)
165
+ return roomDescriptor.VisitedCount
175
166
  end
176
167
  function ____exports.gridToPos(self, x, y)
177
168
  local game = Game()
@@ -213,8 +204,8 @@ function ____exports.inCrawlspace(self)
213
204
  return (roomSafeGridIndex == GridRooms.ROOM_DUNGEON_IDX) and (roomSubType ~= 4)
214
205
  end
215
206
  function ____exports.inDevilsCrownTreasureRoom(self)
216
- local roomDesc = ____exports.getCurrentRoomDescReadOnly(nil)
217
- return hasFlag(nil, roomDesc.Flags, 2048)
207
+ local roomDescriptor = ____exports.getCurrentRoomDescriptorReadOnly(nil)
208
+ return hasFlag(nil, roomDescriptor.Flags, 2048)
218
209
  end
219
210
  function ____exports.inDimension(self, dimension)
220
211
  return dimension == ____exports.getCurrentDimension(nil)
@@ -250,33 +241,35 @@ function ____exports.inStartingRoom(self)
250
241
  end
251
242
  function ____exports.isAllRoomsClear(self, onlyCheckRoomTypes)
252
243
  local roomTypeWhitelist = (((onlyCheckRoomTypes == nil) and (function() return nil end)) or (function() return __TS__New(Set, onlyCheckRoomTypes) end))()
253
- for ____, roomDesc in ipairs(
244
+ for ____, roomDescriptor in ipairs(
254
245
  ____exports.getRooms(nil)
255
246
  ) do
256
247
  do
257
- local roomData = roomDesc.Data
248
+ local roomData = roomDescriptor.Data
258
249
  if roomData == nil then
259
- goto __continue49
250
+ goto __continue46
260
251
  end
261
252
  local roomType = roomData.Type
262
253
  if (roomTypeWhitelist ~= nil) and (not roomTypeWhitelist:has(roomType)) then
263
- goto __continue49
254
+ goto __continue46
264
255
  end
265
- if not roomDesc.Clear then
256
+ if not roomDescriptor.Clear then
266
257
  return false
267
258
  end
268
259
  end
269
- ::__continue49::
260
+ ::__continue46::
270
261
  end
271
262
  return true
272
263
  end
273
- function ____exports.isRedKeyRoom(self)
274
- local roomDesc = ____exports.getCurrentRoomDescReadOnly(nil)
275
- return hasFlag(nil, roomDesc.Flags, 1024)
264
+ function ____exports.isRedKeyRoom(self, roomGridIndex)
265
+ local roomDescriptor = ____exports.getRoomDescriptor(nil, roomGridIndex)
266
+ return hasFlag(nil, roomDescriptor.Flags, 1024)
276
267
  end
277
- function ____exports.isRoomInsideMap(self)
278
- local roomSafeGridIndex = ____exports.getRoomSafeGridIndex(nil)
279
- return roomSafeGridIndex >= 0
268
+ function ____exports.isRoomInsideMap(self, roomGridIndex)
269
+ if roomGridIndex == nil then
270
+ roomGridIndex = ____exports.getRoomSafeGridIndex(nil)
271
+ end
272
+ return roomGridIndex >= 0
280
273
  end
281
274
  function ____exports.roomUpdateSafe(self)
282
275
  local game = Game()
@@ -302,14 +295,14 @@ function ____exports.setRoomCleared(self)
302
295
  ) do
303
296
  do
304
297
  if isHiddenSecretRoomDoor(nil, door) then
305
- goto __continue58
298
+ goto __continue56
306
299
  end
307
300
  door.State = DoorState.STATE_OPEN
308
301
  local sprite = door:GetSprite()
309
302
  sprite:Play("Opened", true)
310
303
  door.ExtraVisible = false
311
304
  end
312
- ::__continue58::
305
+ ::__continue56::
313
306
  end
314
307
  sfx:Stop(SoundEffect.SOUND_DOOR_HEAVY_OPEN)
315
308
  game:ShakeScreen(0)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "1.0.571",
3
+ "version": "1.0.572",
4
4
  "description": "Helper functions for IsaacScript mods",
5
5
  "keywords": [
6
6
  "isaac",