isaacscript-common 7.4.2 → 7.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.
Files changed (163) hide show
  1. package/dist/callbacks/postGridEntity.d.ts.map +1 -1
  2. package/dist/callbacks/postGridEntity.lua +53 -6
  3. package/dist/callbacks/postPlayerChangeStat.d.ts.map +1 -1
  4. package/dist/callbacks/postPlayerChangeStat.lua +9 -2
  5. package/dist/callbacks/subscriptions/postGridEntityCustomBroken.d.ts +1 -0
  6. package/dist/callbacks/subscriptions/postGridEntityCustomBroken.d.ts.map +1 -1
  7. package/dist/callbacks/subscriptions/postGridEntityCustomBroken.lua +5 -2
  8. package/dist/callbacks/subscriptions/postGridEntityCustomInit.d.ts +9 -0
  9. package/dist/callbacks/subscriptions/postGridEntityCustomInit.d.ts.map +1 -0
  10. package/dist/callbacks/subscriptions/postGridEntityCustomInit.lua +23 -0
  11. package/dist/callbacks/subscriptions/postGridEntityCustomRemove.d.ts +9 -0
  12. package/dist/callbacks/subscriptions/postGridEntityCustomRemove.d.ts.map +1 -0
  13. package/dist/callbacks/subscriptions/postGridEntityCustomRemove.lua +23 -0
  14. package/dist/callbacks/subscriptions/postGridEntityCustomStateChanged.d.ts +9 -0
  15. package/dist/callbacks/subscriptions/postGridEntityCustomStateChanged.d.ts.map +1 -0
  16. package/dist/callbacks/subscriptions/postGridEntityCustomStateChanged.lua +29 -0
  17. package/dist/callbacks/subscriptions/postPlayerChangeStat.d.ts +3 -2
  18. package/dist/callbacks/subscriptions/postPlayerChangeStat.d.ts.map +1 -1
  19. package/dist/classes/DefaultMap.d.ts +3 -2
  20. package/dist/classes/DefaultMap.d.ts.map +1 -1
  21. package/dist/classes/DefaultMap.lua +2 -1
  22. package/dist/enums/ModCallbackCustom.d.ts +131 -81
  23. package/dist/enums/ModCallbackCustom.d.ts.map +1 -1
  24. package/dist/enums/ModCallbackCustom.lua +67 -61
  25. package/dist/enums/StatType.d.ts +3 -1
  26. package/dist/enums/StatType.d.ts.map +1 -1
  27. package/dist/enums/StatType.lua +2 -0
  28. package/dist/features/customGridEntity.d.ts +30 -13
  29. package/dist/features/customGridEntity.d.ts.map +1 -1
  30. package/dist/features/customGridEntity.lua +67 -48
  31. package/dist/features/customStage/customStageGridEntities.d.ts.map +1 -1
  32. package/dist/features/customStage/customStageGridEntities.lua +37 -31
  33. package/dist/features/customStage/customStageUtils.d.ts +2 -1
  34. package/dist/features/customStage/customStageUtils.d.ts.map +1 -1
  35. package/dist/features/customStage/customStageUtils.lua +40 -1
  36. package/dist/features/customStage/exports.d.ts +1 -25
  37. package/dist/features/customStage/exports.d.ts.map +1 -1
  38. package/dist/features/customStage/exports.lua +28 -29
  39. package/dist/features/customStage/v.d.ts +0 -2
  40. package/dist/features/customStage/v.d.ts.map +1 -1
  41. package/dist/features/customStage/v.lua +0 -2
  42. package/dist/features/customStage/versusScreen.d.ts.map +1 -1
  43. package/dist/features/customStage/versusScreen.lua +74 -60
  44. package/dist/functions/dev.d.ts +20 -0
  45. package/dist/functions/dev.d.ts.map +1 -0
  46. package/dist/functions/dev.lua +34 -0
  47. package/dist/functions/doors.d.ts +6 -5
  48. package/dist/functions/doors.d.ts.map +1 -1
  49. package/dist/functions/doors.lua +25 -12
  50. package/dist/functions/enums.d.ts +3 -3
  51. package/dist/functions/enums.lua +3 -3
  52. package/dist/functions/gridEntities.d.ts +3 -0
  53. package/dist/functions/gridEntities.d.ts.map +1 -1
  54. package/dist/functions/gridEntities.lua +35 -4
  55. package/dist/functions/playerStats.d.ts.map +1 -1
  56. package/dist/functions/playerStats.lua +2 -1
  57. package/dist/functions/players.d.ts.map +1 -1
  58. package/dist/functions/players.lua +3 -2
  59. package/dist/functions/rooms.d.ts +5 -0
  60. package/dist/functions/rooms.d.ts.map +1 -1
  61. package/dist/functions/rooms.lua +12 -2
  62. package/dist/index.d.ts +312 -198
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.lua +1134 -8
  65. package/dist/interfaces/{CustomStageLua.d.ts → CustomStageTSConfig.d.ts} +86 -60
  66. package/dist/interfaces/CustomStageTSConfig.d.ts.map +1 -0
  67. package/dist/interfaces/{CustomStageLua.lua → CustomStageTSConfig.lua} +0 -0
  68. package/dist/interfaces/JSONRoomsFile.d.ts +6 -5
  69. package/dist/interfaces/JSONRoomsFile.d.ts.map +1 -1
  70. package/dist/interfaces/StatTypeType.d.ts +1 -0
  71. package/dist/interfaces/StatTypeType.d.ts.map +1 -1
  72. package/dist/interfaces/private/AddCallbackParameterCustom.d.ts +6 -0
  73. package/dist/interfaces/private/AddCallbackParameterCustom.d.ts.map +1 -1
  74. package/dist/interfaces/private/CustomStage.d.ts +1 -1
  75. package/dist/interfaces/private/CustomStage.d.ts.map +1 -1
  76. package/dist/objects/callbackRegisterFunctions.d.ts.map +1 -1
  77. package/dist/objects/callbackRegisterFunctions.lua +9 -0
  78. package/dist/types/PossibleStatType.d.ts +7 -0
  79. package/dist/types/PossibleStatType.d.ts.map +1 -0
  80. package/dist/{interfaces/index.lua → types/PossibleStatType.lua} +0 -0
  81. package/package.json +1 -1
  82. package/src/callbacks/postGridEntity.ts +75 -10
  83. package/src/callbacks/postPlayerChangeStat.ts +8 -4
  84. package/src/callbacks/subscriptions/postGridEntityCustomBroken.ts +4 -0
  85. package/src/callbacks/subscriptions/postGridEntityCustomInit.ts +38 -0
  86. package/src/callbacks/subscriptions/postGridEntityCustomRemove.ts +35 -0
  87. package/src/callbacks/subscriptions/postGridEntityCustomStateChanged.ts +42 -0
  88. package/src/callbacks/subscriptions/postPlayerChangeStat.ts +4 -7
  89. package/src/classes/DefaultMap.ts +3 -2
  90. package/src/enums/ModCallbackCustom.ts +73 -20
  91. package/src/enums/StatType.ts +3 -3
  92. package/src/features/customGridEntity.ts +87 -61
  93. package/src/features/customStage/customStageGridEntities.ts +16 -7
  94. package/src/features/customStage/customStageUtils.ts +52 -1
  95. package/src/features/customStage/exports.ts +33 -45
  96. package/src/features/customStage/init.ts +1 -1
  97. package/src/features/customStage/v.ts +0 -6
  98. package/src/features/customStage/versusScreen.ts +70 -55
  99. package/src/functions/dev.ts +31 -0
  100. package/src/functions/doors.ts +37 -21
  101. package/src/functions/enums.ts +3 -3
  102. package/src/functions/gridEntities.ts +33 -1
  103. package/src/functions/playerStats.ts +1 -0
  104. package/src/functions/players.ts +7 -3
  105. package/src/functions/rooms.ts +18 -0
  106. package/src/index.ts +208 -9
  107. package/src/interfaces/{CustomStageLua.ts → CustomStageTSConfig.ts} +107 -41
  108. package/src/interfaces/JSONRoomsFile.ts +6 -5
  109. package/src/interfaces/StatTypeType.ts +1 -0
  110. package/src/interfaces/private/AddCallbackParameterCustom.ts +6 -0
  111. package/src/interfaces/private/CustomStage.ts +4 -1
  112. package/src/objects/callbackRegisterFunctions.ts +9 -0
  113. package/src/types/PossibleStatType.ts +12 -0
  114. package/dist/classes/index.d.ts +0 -3
  115. package/dist/classes/index.d.ts.map +0 -1
  116. package/dist/classes/index.lua +0 -18
  117. package/dist/core/index.d.ts +0 -5
  118. package/dist/core/index.d.ts.map +0 -1
  119. package/dist/core/index.lua +0 -34
  120. package/dist/enums/DecorationVariant.d.ts +0 -10
  121. package/dist/enums/DecorationVariant.d.ts.map +0 -1
  122. package/dist/enums/DecorationVariant.lua +0 -7
  123. package/dist/enums/index.d.ts +0 -11
  124. package/dist/enums/index.d.ts.map +0 -1
  125. package/dist/enums/index.lua +0 -82
  126. package/dist/features/index.d.ts +0 -30
  127. package/dist/features/index.d.ts.map +0 -1
  128. package/dist/features/index.lua +0 -216
  129. package/dist/functions/index.d.ts +0 -100
  130. package/dist/functions/index.d.ts.map +0 -1
  131. package/dist/functions/index.lua +0 -794
  132. package/dist/interfaces/CustomStageLua.d.ts.map +0 -1
  133. package/dist/interfaces/index.d.ts +0 -12
  134. package/dist/interfaces/index.d.ts.map +0 -1
  135. package/dist/maps/index.d.ts +0 -5
  136. package/dist/maps/index.d.ts.map +0 -1
  137. package/dist/maps/index.lua +0 -34
  138. package/dist/objects/index.d.ts +0 -2
  139. package/dist/objects/index.d.ts.map +0 -1
  140. package/dist/objects/index.lua +0 -10
  141. package/dist/types/index.d.ts +0 -11
  142. package/dist/types/index.d.ts.map +0 -1
  143. package/dist/types/index.lua +0 -10
  144. package/src/classes/index.ts +0 -2
  145. package/src/classes/indexTypeDoc.ts +0 -2
  146. package/src/core/index.ts +0 -4
  147. package/src/core/indexTypeDoc.ts +0 -4
  148. package/src/enums/DecorationVariant.ts +0 -10
  149. package/src/enums/index.ts +0 -10
  150. package/src/enums/indexTypeDoc.ts +0 -10
  151. package/src/features/index.ts +0 -59
  152. package/src/features/indexTypeDoc.ts +0 -30
  153. package/src/functions/index.ts +0 -101
  154. package/src/functions/indexTypeDoc.ts +0 -101
  155. package/src/indexTypeDoc.ts +0 -13
  156. package/src/interfaces/index.ts +0 -11
  157. package/src/interfaces/indexTypeDoc.ts +0 -11
  158. package/src/maps/index.ts +0 -4
  159. package/src/maps/indexTypeDoc.ts +0 -4
  160. package/src/objects/index.ts +0 -1
  161. package/src/objects/indexTypeDoc.ts +0 -1
  162. package/src/types/index.ts +0 -10
  163. package/src/types/indexTypeDoc.ts +0 -10
package/dist/index.d.ts CHANGED
@@ -104,7 +104,10 @@ declare interface AddCallbackParameterCustom {
104
104
  [ModCallbackCustom.POST_GRID_ENTITY_COLLISION]: PostGridEntityCollisionRegisterParameters;
105
105
  [ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_BROKEN]: PostGridEntityCustomBrokenRegisterParameters;
106
106
  [ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_COLLISION]: PostGridEntityCustomCollisionRegisterParameters;
107
+ [ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_INIT]: PostGridEntityCustomInitRegisterParameters;
108
+ [ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_REMOVE]: PostGridEntityCustomRemoveRegisterParameters;
107
109
  [ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER]: PostGridEntityCustomRenderRegisterParameters;
110
+ [ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_STATE_CHANGED]: PostGridEntityCustomStateChangedRegisterParameters;
108
111
  [ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE]: PostGridEntityCustomUpdateRegisterParameters;
109
112
  [ModCallbackCustom.POST_GRID_ENTITY_INIT]: PostGridEntityInitRegisterParameters;
110
113
  [ModCallbackCustom.POST_GRID_ENTITY_REMOVE]: PostGridEntityRemoveRegisterParameters;
@@ -959,53 +962,63 @@ export declare function countEntities(entityType?: EntityType, variant?: number,
959
962
  */
960
963
  export declare function countSetBits(n: int): int;
961
964
 
962
- /** An object that represents a possible boss for a custom stage. */
965
+ /**
966
+ * An object that represents a possible boss for a custom stage. This can be for a vanilla boss or a
967
+ * custom boss.
968
+ */
963
969
  export declare interface CustomStageBossPoolEntry {
964
970
  /**
965
- * The name of the boss. This must correspond to the entry in "entities2.xml".
966
- *
967
- * Note that since there is no way to determine the corresponding `EntityType` of the boss during
968
- * compile-time, you must specify the `EntityType` at run-time when your mod first loads using the
969
- * `registerCustomBoss` helper function.
971
+ * The name of the boss. This should correspond to the entry for the boss in the "entities2.xml"
972
+ * file.
970
973
  */
971
974
  name: string;
975
+ /**
976
+ * The arbitrary sub-type chosen for this boss, ranging between 1 and 999. You must set the boss
977
+ * rooms for this boss to this sub-type in Basement Renovator by right-clicking on the room on the
978
+ * right-hand-side.
979
+ *
980
+ * It does not matter if the arbitrary sub-type overlaps with any of the vanilla `BossID` values
981
+ * (e.g. vanilla Boss Room sub-types in "00.special_rooms.stb"). It also does not matter if this
982
+ * value overlaps with the values from other mods.
983
+ *
984
+ * If you are creating an entry for a vanilla boss, it is recommended that you match the sub-type
985
+ * with the corresponding vanilla `BossID` value. This will make things a bit easier to understand
986
+ * for people working on your mod, but is not a hard requirement.
987
+ *
988
+ * @minimum 1
989
+ * @maximum 999
990
+ */
991
+ subType: number;
972
992
  /**
973
993
  * The weight of the boss. This is used when randomly selecting which boss to use for the floor.
974
994
  * For example, use a value of 1 if you want this boss to be equally likely as any other boss, 0.5
975
995
  * if you want it to be half as likely, 2 if you want it to be twice as likely, and so on.
976
996
  */
977
997
  weight: number;
998
+ /** Optional. A collection of sprites used for the boss on the "versus" screen. */
999
+ versusScreen?: {
1000
+ /**
1001
+ * Mandatory. The full path to the spritesheet that contains the graphics of the name of the
1002
+ * boss that will be displayed on the top of the boss "versus" screen.
1003
+ *
1004
+ * If not specified, a sprite showing "???" will be used.
1005
+ */
1006
+ namePNGPath: string;
1007
+ /**
1008
+ * Mandatory. The full path to the spritesheet that contains the portrait of the boss that will
1009
+ * be displayed on the right side of the boss "versus" screen.
1010
+ *
1011
+ * If not specified, a sprite showing "???" will be used.
1012
+ */
1013
+ portraitPNGPath: string;
1014
+ };
978
1015
  }
979
1016
 
980
- /**
981
- * An object that represents a custom stage. The "metadata.lua" file contains an array of these
982
- * objects. Besides the room metadata, the data is the same as what is specified inside the
983
- * "tsconfig.json" file.
984
- *
985
- * The `CustomStage` interface extends this, adding more data.
986
- */
987
- export declare interface CustomStageLua extends CustomStageTSConfig {
988
- readonly roomsMetadata: readonly CustomStageRoomMetadata[];
989
- }
990
-
991
- /**
992
- * Metadata about a custom stage room. Each custom stage object contains an array with metadata for
993
- * each room.
994
- */
995
- export declare type CustomStageRoomMetadata = Readonly<{
996
- type: number;
997
- variant: number;
998
- subType: number;
999
- shape: number;
1000
- doorSlotFlags: number;
1001
- weight: number;
1002
- }>;
1003
-
1004
1017
  /**
1005
1018
  * A description of a custom stage shadow. (In this context, "shadows" are the outlines from things
1006
1019
  * on the roof. For example, in Basement, a shadow of a sideways V is used, among others.)
1007
1020
  */
1008
- export declare type CustomStageShadow = Readonly<{
1021
+ export declare interface CustomStageShadow {
1009
1022
  /**
1010
1023
  * The full path to the shadow overlay PNG file.
1011
1024
  *
@@ -1019,7 +1032,7 @@ export declare type CustomStageShadow = Readonly<{
1019
1032
  * If not specified, an object of `{ r: 0, g: 0, b: 0, a: 0.25 }` will be used (which corresponds
1020
1033
  * to 75% faded black).
1021
1034
  */
1022
- color?: Readonly<{
1035
+ color?: {
1023
1036
  /**
1024
1037
  * @minimum 0
1025
1038
  * @maximum 1
@@ -1040,8 +1053,8 @@ export declare type CustomStageShadow = Readonly<{
1040
1053
  * @maximum 1
1041
1054
  */
1042
1055
  a: number;
1043
- }>;
1044
- }>;
1056
+ };
1057
+ }
1045
1058
 
1046
1059
  /**
1047
1060
  * This is the format of a custom stage in the "isaacscript" section of the "tsconfig.json" file.
@@ -1054,7 +1067,7 @@ export declare type CustomStageShadow = Readonly<{
1054
1067
  *
1055
1068
  * The `CustomStageLua` interface extends this, adding room metadata.
1056
1069
  */
1057
- export declare type CustomStageTSConfig = Readonly<{
1070
+ export declare interface CustomStageTSConfig {
1058
1071
  /** Mandatory. The name of the custom stage. */
1059
1072
  name: string;
1060
1073
  /**
@@ -1079,8 +1092,14 @@ export declare type CustomStageTSConfig = Readonly<{
1079
1092
  * number of the stage that will be warped to and used as a basis for the stage by the level
1080
1093
  * generation algorithm.
1081
1094
  *
1082
- * (It is not possible to use Basement 1 as a base stage due to conflicts with the `Game.SetStage`
1083
- * method.)
1095
+ * For example, if you wanted to have a custom stage with a small amount of rooms per floor, then
1096
+ * you should choose 2 as a base. (This would copy the number of rooms that would appear in
1097
+ * Basement 2.) And if you wanted to have a custom stage with the maximum amount of rooms, then
1098
+ * you should choose 13 as a base. (This would copy the number of rooms that would appear on The
1099
+ * Void.)
1100
+ *
1101
+ * It is not possible to use Basement 1 as a base stage due to conflicts with the `Game.SetStage`
1102
+ * method.
1084
1103
  *
1085
1104
  * If not specified, `LevelStage.BASEMENT_2` (2) will be used.
1086
1105
  *
@@ -1104,7 +1123,7 @@ export declare type CustomStageTSConfig = Readonly<{
1104
1123
  * the graphics for the walls and floor.) If not specified, the graphics for Basement will be
1105
1124
  * used.
1106
1125
  */
1107
- backdropPNGPaths?: Readonly<{
1126
+ backdropPNGPaths?: {
1108
1127
  /**
1109
1128
  * An array that contains the full paths to the graphic files that are used for the floor in
1110
1129
  * narrow rooms. (The "n" stands for "narrow").
@@ -1114,7 +1133,7 @@ export declare type CustomStageTSConfig = Readonly<{
1114
1133
  *
1115
1134
  * For an example of this, see the vanilla file "resources/gfx/backdrop/01_basement_nfloor.png".
1116
1135
  */
1117
- nFloors: readonly string[];
1136
+ nFloors: string[];
1118
1137
  /**
1119
1138
  * An array that contains the full paths to the graphic files that are used for the floor in L
1120
1139
  * rooms.
@@ -1124,7 +1143,7 @@ export declare type CustomStageTSConfig = Readonly<{
1124
1143
  *
1125
1144
  * For an example of this, see the vanilla file "resources/gfx/backdrop/01_lbasementfloor.png".
1126
1145
  */
1127
- lFloors: readonly string[];
1146
+ lFloors: string[];
1128
1147
  /**
1129
1148
  * An array that contains the full paths to the graphic files that are used for the walls of the
1130
1149
  * floor.
@@ -1136,7 +1155,7 @@ export declare type CustomStageTSConfig = Readonly<{
1136
1155
  * the vanilla file, they concatenate all four variations together into one PNG file. However,
1137
1156
  * for the custom stages feature, you must separate each wall variation into a separate file.)
1138
1157
  */
1139
- walls: readonly string[];
1158
+ walls: string[];
1140
1159
  /**
1141
1160
  * An array that contains the full paths to the graphic files for the stage's corners.
1142
1161
  *
@@ -1150,8 +1169,8 @@ export declare type CustomStageTSConfig = Readonly<{
1150
1169
  * you must separate each corner variation into a separate file (and put it in a different file
1151
1170
  * from the walls).
1152
1171
  */
1153
- corners: readonly string[];
1154
- }>;
1172
+ corners: string[];
1173
+ };
1155
1174
  /**
1156
1175
  * Optional. The full path to the spritesheet that contains the graphics of the decorations for
1157
1176
  * the floor.
@@ -1185,7 +1204,7 @@ export declare type CustomStageTSConfig = Readonly<{
1185
1204
  * Optional. A collection of paths that contain graphics for the doors of the floor. If not
1186
1205
  * specified, the doors for Basement will be used.
1187
1206
  */
1188
- doorPNGPaths?: Readonly<{
1207
+ doorPNGPaths?: {
1189
1208
  /**
1190
1209
  * Optional. The full path to the spritesheet that contains the graphics of the normal doors for
1191
1210
  * the floor.
@@ -1282,14 +1301,14 @@ export declare type CustomStageTSConfig = Readonly<{
1282
1301
  * located at: `resources/gfx/grid/door_02b_chestroomdoor.png`
1283
1302
  */
1284
1303
  chestRoom?: string;
1285
- }>;
1304
+ };
1286
1305
  /**
1287
1306
  * Optional. An array of shadow objects that describe the graphics for the custom shadows of the
1288
1307
  * floor. (In this context, "shadows" are the outlines from things on the roof. For example, in
1289
1308
  * Basement, a shadow of a sideways V is used, among others.) If not specified, no extra shadows
1290
1309
  * will be drawn.
1291
1310
  */
1292
- shadows?: Readonly<{
1311
+ shadows?: {
1293
1312
  /**
1294
1313
  * Optional. An array containing the shadows that will be used in rooms of shape
1295
1314
  * `RoomShape.SHAPE_1x1` (1), `RoomShape.IH` (2), and `RoomShape.IV` (3).
@@ -1298,7 +1317,7 @@ export declare type CustomStageTSConfig = Readonly<{
1298
1317
  *
1299
1318
  * If not specified, no extra shadows will be drawn in these room shapes.
1300
1319
  */
1301
- "1x1"?: readonly CustomStageShadow[];
1320
+ "1x1"?: CustomStageShadow[];
1302
1321
  /**
1303
1322
  * Optional. An array containing the shadows that will be used in rooms of shape
1304
1323
  * `RoomShape.SHAPE_1x2` (4) and `RoomShape.IIV` (5).
@@ -1307,7 +1326,7 @@ export declare type CustomStageTSConfig = Readonly<{
1307
1326
  *
1308
1327
  * If not specified, no extra shadows will be drawn in these room shapes.
1309
1328
  */
1310
- "1x2"?: readonly CustomStageShadow[];
1329
+ "1x2"?: CustomStageShadow[];
1311
1330
  /**
1312
1331
  * Optional. An array containing the shadows that will be used in rooms of shape
1313
1332
  * `RoomShape.SHAPE_2x1` (6) and `RoomShape.IIH` (7).
@@ -1316,7 +1335,7 @@ export declare type CustomStageTSConfig = Readonly<{
1316
1335
  *
1317
1336
  * If not specified, no extra shadows will be drawn in these room shapes.
1318
1337
  */
1319
- "2x1"?: readonly CustomStageShadow[];
1338
+ "2x1"?: CustomStageShadow[];
1320
1339
  /**
1321
1340
  * Optional. An array containing the shadows that will be used in rooms of shape
1322
1341
  * `RoomShape.SHAPE_2x2` (8), `RoomShape.LTL` (9), `RoomShape.LTR` (10), `RoomShape.LBL` (11),
@@ -1326,12 +1345,20 @@ export declare type CustomStageTSConfig = Readonly<{
1326
1345
  *
1327
1346
  * If not specified, no extra shadows will be drawn in these room shapes.
1328
1347
  */
1329
- "2x2"?: readonly CustomStageShadow[];
1330
- }>;
1331
- /** Optional. An array containing the bosses that should be used for the stage. */
1332
- bossPool?: readonly CustomStageBossPoolEntry[];
1333
- /** Optional. A collection of colors used in the boss "versus" screen. */
1334
- versusScreen?: Readonly<{
1348
+ "2x2"?: CustomStageShadow[];
1349
+ };
1350
+ /**
1351
+ * Optional. An array containing the bosses that should be used for the stage. This can include
1352
+ * both vanilla bosses and modded bosses.
1353
+ */
1354
+ bossPool?: CustomStageBossPoolEntry[];
1355
+ /**
1356
+ * Optional. A collection of colors used for in the boss "versus" screen for all of the bosses.
1357
+ *
1358
+ * Note that these graphics will only be applied if one or more bosses are specified in the
1359
+ * `bossPool` field.
1360
+ */
1361
+ versusScreen?: {
1335
1362
  /**
1336
1363
  * Optional. An object representing the color to use for the background of the boss "versus"
1337
1364
  * screen. If not specified, the color for Basement 1 will be used.
@@ -1339,7 +1366,7 @@ export declare type CustomStageTSConfig = Readonly<{
1339
1366
  * For a list of the colors that correspond to the vanilla stages, see
1340
1367
  * `versusScreenBackgroundColors.ts`.
1341
1368
  */
1342
- backgroundColor?: Readonly<{
1369
+ backgroundColor?: {
1343
1370
  /**
1344
1371
  * @minimum 0
1345
1372
  * @maximum 1
@@ -1360,7 +1387,7 @@ export declare type CustomStageTSConfig = Readonly<{
1360
1387
  * @maximum 1
1361
1388
  */
1362
1389
  a: number;
1363
- }>;
1390
+ };
1364
1391
  /**
1365
1392
  * Optional. An object representing the color to use for the dirt spots in the boss "versus"
1366
1393
  * screen. (There are two dirt spots; one for the player and one for the boss.) If not
@@ -1369,7 +1396,7 @@ export declare type CustomStageTSConfig = Readonly<{
1369
1396
  * For a list of the colors that correspond to the vanilla stages, see
1370
1397
  * `versusScreenDirtSpotColors.ts`.
1371
1398
  */
1372
- dirtSpotColor?: Readonly<{
1399
+ dirtSpotColor?: {
1373
1400
  /**
1374
1401
  * @minimum 0
1375
1402
  * @maximum 1
@@ -1390,9 +1417,9 @@ export declare type CustomStageTSConfig = Readonly<{
1390
1417
  * @maximum 1
1391
1418
  */
1392
1419
  a: number;
1393
- }>;
1394
- }>;
1395
- }>;
1420
+ };
1421
+ };
1422
+ }
1396
1423
 
1397
1424
  /**
1398
1425
  * `deepCopy` is a semi-generic deep cloner. It will recursively copy all of the values so that none
@@ -1434,7 +1461,8 @@ export declare const DEFAULT_BASE_STAGE_TYPE = StageType.ORIGINAL;
1434
1461
  export declare const DEFAULT_ITEM_POOL_TYPE = ItemPoolType.TREASURE;
1435
1462
 
1436
1463
  /**
1437
- * `DefaultMap` is a data structure that makes working with default values easier.
1464
+ * `DefaultMap` is a data structure that makes working with default values easier. It extends a
1465
+ * `Map` and adds additional methods.
1438
1466
  *
1439
1467
  * It is a common pattern to look up a value in a `Map`, and then, if the value does not exist, set
1440
1468
  * a default value for the key, and then return the default value. `DefaultMap` abstracts this
@@ -1518,7 +1546,7 @@ export declare class DefaultMap<Key, Value, Args extends unknown[] = []> extends
1518
1546
  private defaultValueFactory;
1519
1547
  /**
1520
1548
  * See the main `DefaultMap` documentation:
1521
- * https://isaacscript.github.io/isaacscript-common/classes/classes_DefaultMap.DefaultMap
1549
+ * https://isaacscript.github.io/isaacscript-common/other/classes/DefaultMap
1522
1550
  */
1523
1551
  constructor(defaultValueOrFactoryFunction: Value | FactoryFunction<Value, Args>, initializerArray?: Iterable<[Key, Value]>);
1524
1552
  /**
@@ -1788,8 +1816,16 @@ export declare function doesPlayerHaveAllSoulHearts(player: EntityPlayer): boole
1788
1816
 
1789
1817
  export declare const DOOR_HITBOX_RADIUS = 11;
1790
1818
 
1819
+ export declare function doorSlotFlagsToDoorSlots(doorSlotFlags: BitFlags<DoorSlotFlag>): DoorSlot[];
1820
+
1791
1821
  export declare function doorSlotFlagToDoorSlot(doorSlotFlag: DoorSlotFlag): DoorSlot;
1792
1822
 
1823
+ /**
1824
+ * Helper function to convert an array of door slots or a set of door slots to the resulting bit
1825
+ * flag number.
1826
+ */
1827
+ export declare function doorSlotsToDoorSlotFlags(doorSlots: DoorSlot[] | readonly DoorSlot[] | Set<DoorSlot> | ReadonlySet<DoorSlot>): BitFlags<DoorSlotFlag>;
1828
+
1793
1829
  export declare function doorSlotToDirection(doorSlot: DoorSlot): Direction;
1794
1830
 
1795
1831
  export declare function doorSlotToDoorSlotFlag(doorSlot: DoorSlot): DoorSlotFlag;
@@ -1913,6 +1949,25 @@ export declare function enableAllInputsExceptFor(key: string, blacklist: Set<But
1913
1949
  */
1914
1950
  export declare function enableAllSound(key: string): void;
1915
1951
 
1952
+ /**
1953
+ * Helper function to enable some IsaacScript features that are useful when developing a mod. They
1954
+ * shouldn't be enabled when your mod goes to production (i.e. it is uploaded to the Steam
1955
+ * Workshop).
1956
+ *
1957
+ * The list of development features that are enabled are as follows:
1958
+ *
1959
+ * - `saveDataManagerSetGlobal` - Sets your local variables registered with the save data manager as
1960
+ * global variables so you can access them from the in-game console.
1961
+ * - `setLogFunctionsGlobal` - Sets the various log functions global so that you can access them
1962
+ * from the in-game console.
1963
+ * - `enableExtraConsoleCommands` - Enables many extra in-game console commands that make warping
1964
+ * around easier (like e.g. `angel` to warp to the Angel Room).
1965
+ * - `enableFastReset` - Makes it so that the r key resets the game instantaneously.
1966
+ * - `removeFadeIn` - Removes the slow fade in that occurs at the beginning of the run, so that you
1967
+ * can immediately start playing or testing.
1968
+ */
1969
+ export declare function enableDevFeatures(mod: ModUpgraded): void;
1970
+
1916
1971
  /**
1917
1972
  * Enables extra console commands which are useful for debugging. See [the
1918
1973
  * docs](https://isaacscript.github.io/isaacscript-common/features/extraConsoleCommands_listCommands)
@@ -2741,12 +2796,6 @@ export declare function getDoors(...roomTypes: RoomType[]): GridEntityDoor[];
2741
2796
  */
2742
2797
  export declare function getDoorSlotEnterPositionOffset(doorSlot: DoorSlot): Readonly<Vector>;
2743
2798
 
2744
- /**
2745
- * Helper function to convert an array of door slots or a set of door slots to the resulting bit
2746
- * flag number.
2747
- */
2748
- export declare function getDoorSlotFlags(doorSlots: DoorSlot[] | readonly DoorSlot[] | Set<DoorSlot> | ReadonlySet<DoorSlot>): BitFlags<DoorSlotFlag>;
2749
-
2750
2799
  /** Helper function to get the possible door slots that can exist for a given room shape. */
2751
2800
  export declare function getDoorSlotsForRoomShape(roomShape: RoomShape): ReadonlySet<DoorSlot>;
2752
2801
 
@@ -2876,7 +2925,7 @@ export declare function getEntityVelocities(entities?: Entity[]): Map<PtrHash, V
2876
2925
  * Also see the `getEnumKeys` and `getEnumValues` helper functions.
2877
2926
  *
2878
2927
  * For a more in depth explanation, see:
2879
- * https://isaacscript.github.io/gotchas#iterating-over-enums
2928
+ * https://isaacscript.github.io/main/gotchas#iterating-over-enums
2880
2929
  */
2881
2930
  export declare function getEnumEntries<T>(transpiledEnum: T): Array<[key: string, value: T[keyof T]]>;
2882
2931
 
@@ -2894,7 +2943,7 @@ export declare function getEnumEntries<T>(transpiledEnum: T): Array<[key: string
2894
2943
  * Also see the `getEnumEntries` and `getEnumValues` helper functions.
2895
2944
  *
2896
2945
  * For a more in depth explanation, see:
2897
- * https://isaacscript.github.io/gotchas#iterating-over-enums
2946
+ * https://isaacscript.github.io/main/gotchas#iterating-over-enums
2898
2947
  */
2899
2948
  export declare function getEnumKeys<T>(transpiledEnum: T): string[];
2900
2949
 
@@ -2915,7 +2964,7 @@ export declare function getEnumLength<T>(transpiledEnum: T): int;
2915
2964
  * Also see the `getEnumEntries` and `getEnumKeys` helper functions.
2916
2965
  *
2917
2966
  * For a more in depth explanation, see:
2918
- * https://isaacscript.github.io/gotchas#iterating-over-enums
2967
+ * https://isaacscript.github.io/main/gotchas#iterating-over-enums
2919
2968
  */
2920
2969
  export declare function getEnumValues<T>(transpiledEnum: T): Array<T[keyof T]>;
2921
2970
 
@@ -5017,6 +5066,12 @@ export declare function inMineShaft(): boolean;
5017
5066
  */
5018
5067
  export declare function inMinibossRoomOf(minibossID: MinibossID): boolean;
5019
5068
 
5069
+ /**
5070
+ * Helper function to check if the current room is a "mirror room" in Downpour or Dross. (These
5071
+ * rooms are marked with a specific sub-type.)
5072
+ */
5073
+ export declare function inMirrorRoom(): boolean;
5074
+
5020
5075
  /**
5021
5076
  * Helper function to check if a given position is within a given rectangle.
5022
5077
  *
@@ -5837,7 +5892,7 @@ export declare function iterateTableInOrder<K, V>(luaMap: LuaMap<K, V>, func: (k
5837
5892
  */
5838
5893
  export declare function jsonDecode(jsonString: string): LuaMap<AnyNotNil, unknown>;
5839
5894
 
5840
- /** Part of `JSONRooms`. */
5895
+ /** Part of `JSONRoomsFile`. */
5841
5896
  export declare interface JSONDoor {
5842
5897
  $: {
5843
5898
  /** Equal to "True" or "False". Needs to be converted to an `boolean`. */
@@ -5861,7 +5916,7 @@ export declare interface JSONDoor {
5861
5916
  */
5862
5917
  export declare function jsonEncode(luaTable: unknown): string;
5863
5918
 
5864
- /** Part of `JSONRooms`. */
5919
+ /** Part of `JSONRoomsFile`. */
5865
5920
  export declare interface JSONEntity {
5866
5921
  $: {
5867
5922
  /** Needs to be converted to an `int`. */
@@ -5875,7 +5930,7 @@ export declare interface JSONEntity {
5875
5930
  };
5876
5931
  }
5877
5932
 
5878
- /** Part of `JSONRooms`. */
5933
+ /** Part of `JSONRoomsFile`. */
5879
5934
  export declare interface JSONRoom {
5880
5935
  $: {
5881
5936
  /** Needs to be converted to an `int`. */
@@ -5900,6 +5955,7 @@ export declare interface JSONRoom {
5900
5955
  spawn: JSONSpawn[];
5901
5956
  }
5902
5957
 
5958
+ /** Part of `JSONRoomsFile`. */
5903
5959
  export declare interface JSONRooms {
5904
5960
  room: JSONRoom[];
5905
5961
  }
@@ -5907,7 +5963,7 @@ export declare interface JSONRooms {
5907
5963
  /**
5908
5964
  * The standard library has the feature to deploy a new room on-the-fly with the `deployJSONRoom`
5909
5965
  * helper function. It requires a `JSONRoomsFile` as an argument, which is simply an XML file
5910
- * converted to JSON. (You create XML room files using the Basement Renovator program.)
5966
+ * converted to JSON. (You can create XML room files using the Basement Renovator program.)
5911
5967
  *
5912
5968
  * You can convert your XML files using the following command:
5913
5969
  *
@@ -5923,7 +5979,7 @@ export declare interface JSONRoomsFile {
5923
5979
  rooms: JSONRooms;
5924
5980
  }
5925
5981
 
5926
- /** Part of `JSONRooms`. */
5982
+ /** Part of `JSONRoomsFile`. */
5927
5983
  export declare interface JSONSpawn {
5928
5984
  $: {
5929
5985
  /** Needs to be converted to an `int`. */
@@ -6457,7 +6513,7 @@ export declare enum ModCallbackCustom {
6457
6513
  POST_EFFECT_INIT_LATE = 13,
6458
6514
  /**
6459
6515
  * Fires from the `POST_EFFECT_UPDATE` callback when an effect's state has changed from what it
6460
- * was on the previous frame.
6516
+ * was on the previous frame. (In this context, "state" refers to the `EntityEffect.State` field.)
6461
6517
  *
6462
6518
  * When registering the callback, takes an optional second argument that will make the callback
6463
6519
  * only fire if it matches the `EffectVariant` provided.
@@ -6496,7 +6552,8 @@ export declare enum ModCallbackCustom {
6496
6552
  POST_FAMILIAR_INIT_LATE = 16,
6497
6553
  /**
6498
6554
  * Fires from the `POST_FAMILIAR_UPDATE` callback when a familiar's state has changed from what it
6499
- * was on the previous frame.
6555
+ * was on the previous frame. (In this context, "state" refers to the `EntityFamiliar.State`
6556
+ * field.)
6500
6557
  *
6501
6558
  * When registering the callback, takes an optional second argument that will make the callback
6502
6559
  * only fire if it matches the `FamiliarVariant` provided.
@@ -6569,7 +6626,8 @@ export declare enum ModCallbackCustom {
6569
6626
  POST_GREED_MODE_WAVE = 22,
6570
6627
  /**
6571
6628
  * Fires from the `POST_UPDATE` callback when a grid entity changes to a state that corresponds to
6572
- * the broken state for the respective grid entity type.
6629
+ * the broken state for the respective grid entity type. (For example, this will fire for a
6630
+ * `GridEntityType.ROCK` (2) when its state changes to `RockState.BROKEN` (2).)
6573
6631
  *
6574
6632
  * When registering the callback, takes an optional second argument that will make the callback
6575
6633
  * only fire if it matches the `GridEntityType` provided.
@@ -6594,12 +6652,8 @@ export declare enum ModCallbackCustom {
6594
6652
  */
6595
6653
  POST_GRID_ENTITY_COLLISION = 24,
6596
6654
  /**
6597
- * Fires from the `POST_UPDATE` callback when a grid entity created with the
6598
- * `spawnCustomGridEntity` helper function is hit by an explosion.
6599
- *
6600
- * In most cases, you will want to remove the grid entity inside of this callback in order to
6601
- * prevent further "broken" callbacks from firing. (This would not be the case if you were trying
6602
- * to emulate a super tinted rock that takes multiple explosions to destroy, for example.)
6655
+ * The same as the `POST_GRID_ENTITY_BROKEN` callback, but only fires for grid entities created
6656
+ * with the `spawnCustomGridEntity` helper function.
6603
6657
  *
6604
6658
  * When registering the callback, takes an optional second argument that will make the callback
6605
6659
  * only fire if it matches the `GridEntityType` provided.
@@ -6613,23 +6667,54 @@ export declare enum ModCallbackCustom {
6613
6667
  */
6614
6668
  POST_GRID_ENTITY_CUSTOM_BROKEN = 25,
6615
6669
  /**
6616
- * Fires from the `POST_UPDATE` callback a new entity collides with a grid entity created with the
6617
- * `spawnCustomGridEntity` helper function.
6670
+ * The same as the `POST_GRID_ENTITY_COLLISION` callback, but only fires for grid entities created
6671
+ * with the `spawnCustomGridEntity` helper function.
6618
6672
  *
6619
6673
  * When registering the callback, takes an optional second argument that will make the callback
6620
6674
  * only fire if it matches the `GridEntityType` provided.
6621
6675
  *
6622
6676
  * ```ts
6623
- * function postGridEntityCustomRender(
6677
+ * function postGridEntityCustomCollision(
6624
6678
  * gridEntity: GridEntity,
6625
6679
  * gridEntityTypeCustom: GridEntityType,
6680
+ * entity: Entity,
6626
6681
  * ): void {}
6627
6682
  * ```
6628
6683
  */
6629
6684
  POST_GRID_ENTITY_CUSTOM_COLLISION = 26,
6630
6685
  /**
6631
- * Fires from the `POST_RENDER` callback on every frame that a grid entity created with the
6632
- * `spawnCustomGridEntity` helper function exists.
6686
+ * The same as the `POST_GRID_ENTITY_INIT` callback, but only fires for grid entities created with
6687
+ * the `spawnCustomGridEntity` helper function.
6688
+ *
6689
+ * When registering the callback, takes an optional second argument that will make the callback
6690
+ * only fire if it matches the `GridEntityType` provided.
6691
+ *
6692
+ * ```ts
6693
+ * function postGridEntityCustomInit(
6694
+ * gridEntity: GridEntity,
6695
+ * gridEntityTypeCustom: GridEntityType,
6696
+ * ): void {}
6697
+ * ```
6698
+ */
6699
+ POST_GRID_ENTITY_CUSTOM_INIT = 27,
6700
+ /**
6701
+ * The same as the `POST_GRID_ENTITY_REMOVE` callback, but only fires for grid entities created
6702
+ * with the `spawnCustomGridEntity` helper function.
6703
+ *
6704
+ * When registering the callback, takes an optional second argument that will make the callback
6705
+ * only fire if it matches the `GridEntityType` provided.
6706
+ *
6707
+ * ```ts
6708
+ * function postGridEntityCustomRemove(
6709
+ * gridIndex: int,
6710
+ * gridEntityTypeCustom: GridEntityType,
6711
+ * ): void {}
6712
+ * ```
6713
+ */
6714
+ POST_GRID_ENTITY_CUSTOM_REMOVE = 28,
6715
+ /**
6716
+ * The same as the `POST_GRID_ENTITY_RENDER` callback, but only fires for grid entities created
6717
+ * with the `spawnCustomGridEntity` helper function.
6633
6718
  *
6634
6719
  * When registering the callback, takes an optional second argument that will make the callback
6635
6720
  * only fire if it matches the `GridEntityType` provided.
@@ -6641,10 +6726,27 @@ export declare enum ModCallbackCustom {
6641
6726
  * ): void {}
6642
6727
  * ```
6643
6728
  */
6644
- POST_GRID_ENTITY_CUSTOM_RENDER = 27,
6729
+ POST_GRID_ENTITY_CUSTOM_RENDER = 29,
6730
+ /**
6731
+ * The same as the `POST_GRID_ENTITY_STATE_CHANGED` callback, but only fires for grid entities
6732
+ * created with the `spawnCustomGridEntity` helper function.
6733
+ *
6734
+ * When registering the callback, takes an optional second argument that will make the callback
6735
+ * only fire if it matches the `GridEntityType` provided.
6736
+ *
6737
+ * ```ts
6738
+ * function postGridEntityCustomStateChanged(
6739
+ * gridEntity: GridEntity,
6740
+ * gridEntityTypeCustom: GridEntityType,
6741
+ * oldState: int,
6742
+ * newState: int,
6743
+ * ): void {}
6744
+ * ```
6745
+ */
6746
+ POST_GRID_ENTITY_CUSTOM_STATE_CHANGED = 30,
6645
6747
  /**
6646
- * Fires from the `POST_UPDATE` callback on every frame that a grid entity created with the
6647
- * `spawnCustomGridEntity` helper function exists.
6748
+ * The same as the `POST_GRID_ENTITY_UPDATE` callback, but only fires for grid entities created
6749
+ * with the `spawnCustomGridEntity` helper function.
6648
6750
  *
6649
6751
  * When registering the callback, takes an optional second argument that will make the callback
6650
6752
  * only fire if it matches the `GridEntityType` provided.
@@ -6656,7 +6758,7 @@ export declare enum ModCallbackCustom {
6656
6758
  * ): void {}
6657
6759
  * ```
6658
6760
  */
6659
- POST_GRID_ENTITY_CUSTOM_UPDATE = 28,
6761
+ POST_GRID_ENTITY_CUSTOM_UPDATE = 31,
6660
6762
  /**
6661
6763
  * Fires when a new grid entity is initialized. Specifically, this is either:
6662
6764
  *
@@ -6672,11 +6774,13 @@ export declare enum ModCallbackCustom {
6672
6774
  * function postGridEntityInit(gridEntity: GridEntity): void {}
6673
6775
  * ```
6674
6776
  */
6675
- POST_GRID_ENTITY_INIT = 29,
6777
+ POST_GRID_ENTITY_INIT = 32,
6676
6778
  /**
6677
6779
  * Fires from the `POST_UPDATE` callback when a new grid entity is removed. Specifically, this on
6678
6780
  * the frame after it no longer exists (where it did exist a frame ago).
6679
6781
  *
6782
+ * (Leaving a room with a grid entity does not count as "removing" it.)
6783
+ *
6680
6784
  * When registering the callback, takes an optional second argument that will make the callback
6681
6785
  * only fire if it matches the `GridEntityType` provided.
6682
6786
  *
@@ -6687,7 +6791,7 @@ export declare enum ModCallbackCustom {
6687
6791
  * ): void {}
6688
6792
  * ```
6689
6793
  */
6690
- POST_GRID_ENTITY_REMOVE = 30,
6794
+ POST_GRID_ENTITY_REMOVE = 33,
6691
6795
  /**
6692
6796
  * Fires from the `POST_RENDER` callback on every frame that a grid entity exists.
6693
6797
  *
@@ -6700,9 +6804,10 @@ export declare enum ModCallbackCustom {
6700
6804
  * function postGridEntityRender(gridEntity: GridEntity): void {}
6701
6805
  * ```
6702
6806
  */
6703
- POST_GRID_ENTITY_RENDER = 31,
6807
+ POST_GRID_ENTITY_RENDER = 34,
6704
6808
  /**
6705
- * Fires from the `POST_UPDATE` callback when a grid entity changes its state.
6809
+ * Fires from the `POST_UPDATE` callback when a grid entity changes its state. (In this context,
6810
+ * "state" refers to the `GridEntity.State` field.)
6706
6811
  *
6707
6812
  * When registering the callback, takes an optional second argument that will make the callback
6708
6813
  * only fire if it matches the `GridEntityType` provided.
@@ -6715,7 +6820,7 @@ export declare enum ModCallbackCustom {
6715
6820
  * ): void {}
6716
6821
  * ```
6717
6822
  */
6718
- POST_GRID_ENTITY_STATE_CHANGED = 32,
6823
+ POST_GRID_ENTITY_STATE_CHANGED = 35,
6719
6824
  /**
6720
6825
  * Fires from the `POST_UPDATE` callback on every frame that a grid entity exists.
6721
6826
  *
@@ -6728,7 +6833,7 @@ export declare enum ModCallbackCustom {
6728
6833
  * function postGridEntityUpdate(gridEntity: GridEntity): void {}
6729
6834
  * ```
6730
6835
  */
6731
- POST_GRID_ENTITY_UPDATE = 33,
6836
+ POST_GRID_ENTITY_UPDATE = 36,
6732
6837
  /**
6733
6838
  * Fires from the `POST_PEFFECT_UPDATE` callback when the player loses a Holy Mantle temporary
6734
6839
  * collectible effect.
@@ -6750,7 +6855,7 @@ export declare enum ModCallbackCustom {
6750
6855
  * ): void {}
6751
6856
  * ```
6752
6857
  */
6753
- POST_HOLY_MANTLE_REMOVED = 34,
6858
+ POST_HOLY_MANTLE_REMOVED = 37,
6754
6859
  /**
6755
6860
  * Fires from `POST_PEFFECT_UPDATE` callback when the player loses charge on their active
6756
6861
  * collectible item, implying that the item was just used.
@@ -6772,7 +6877,7 @@ export declare enum ModCallbackCustom {
6772
6877
  * ): void {}
6773
6878
  * ```
6774
6879
  */
6775
- POST_ITEM_DISCHARGE = 35,
6880
+ POST_ITEM_DISCHARGE = 38,
6776
6881
  /**
6777
6882
  * Fires from the `POST_PEFFECT_UPDATE` callback when an item is no longer queued (i.e. when the
6778
6883
  * animation of the player holding the item above their head is finished and the item is actually
@@ -6792,7 +6897,7 @@ export declare enum ModCallbackCustom {
6792
6897
  * ): void {}
6793
6898
  * ```
6794
6899
  */
6795
- POST_ITEM_PICKUP = 36,
6900
+ POST_ITEM_PICKUP = 39,
6796
6901
  /**
6797
6902
  * Fires on the first `POST_KNIFE_UPDATE` frame for each knife.
6798
6903
  *
@@ -6806,7 +6911,7 @@ export declare enum ModCallbackCustom {
6806
6911
  * function postKnifeInitLate(knife: EntityKnife): void {}
6807
6912
  * ```
6808
6913
  */
6809
- POST_KNIFE_INIT_LATE = 37,
6914
+ POST_KNIFE_INIT_LATE = 40,
6810
6915
  /**
6811
6916
  * Fires on the first `POST_LASER_UPDATE` frame for each laser.
6812
6917
  *
@@ -6820,7 +6925,7 @@ export declare enum ModCallbackCustom {
6820
6925
  * function postLaserInitLate(laser: EntityLaser): void {}
6821
6926
  * ```
6822
6927
  */
6823
- POST_LASER_INIT_LATE = 38,
6928
+ POST_LASER_INIT_LATE = 41,
6824
6929
  /**
6825
6930
  * The same as the vanilla callback of the same name, but fires in the correct order with respect
6826
6931
  * to the `POST_GAME_STARTED` and the `POST_NEW_ROOM` callbacks:
@@ -6837,7 +6942,7 @@ export declare enum ModCallbackCustom {
6837
6942
  * function postNewLevelReordered(): void {}
6838
6943
  * ```
6839
6944
  */
6840
- POST_NEW_LEVEL_REORDERED = 39,
6945
+ POST_NEW_LEVEL_REORDERED = 42,
6841
6946
  /**
6842
6947
  * Fires on the first `POST_NEW_ROOM` or `PRE_ENTITY_SPAWN` callback where being in a new room is
6843
6948
  * detected. This is useful because the vanilla `POST_NEW_ROOM` callback fires only after entities
@@ -6848,7 +6953,7 @@ export declare enum ModCallbackCustom {
6848
6953
  * function postNewRoomEarly(): void {}
6849
6954
  * ```
6850
6955
  */
6851
- POST_NEW_ROOM_EARLY = 40,
6956
+ POST_NEW_ROOM_EARLY = 43,
6852
6957
  /**
6853
6958
  * The same as the vanilla callback of the same name, but fires in the correct order with respect
6854
6959
  * to the `POST_GAME_STARTED` and the `POST_NEW_LEVEL` callbacks:
@@ -6865,7 +6970,7 @@ export declare enum ModCallbackCustom {
6865
6970
  * function postNewRoomReordered(): void {}
6866
6971
  * ```
6867
6972
  */
6868
- POST_NEW_ROOM_REORDERED = 41,
6973
+ POST_NEW_ROOM_REORDERED = 44,
6869
6974
  /**
6870
6975
  * Fires on the first `NPC_UPDATE` frame for each NPC.
6871
6976
  *
@@ -6879,10 +6984,10 @@ export declare enum ModCallbackCustom {
6879
6984
  * function postNPCInitLate(npc: EntityNPC): void {}
6880
6985
  * ```
6881
6986
  */
6882
- POST_NPC_INIT_LATE = 42,
6987
+ POST_NPC_INIT_LATE = 45,
6883
6988
  /**
6884
6989
  * Fires from the `POST_NPC_UPDATE` callback when an NPC's state has changed from what it was on
6885
- * the previous frame.
6990
+ * the previous frame. (In this context, "state" refers to the `EntityNPC.State` field.)
6886
6991
  *
6887
6992
  * - When registering the callback, takes an optional second argument that will make the callback
6888
6993
  * only fire if it matches the `EntityType` provided.
@@ -6897,7 +7002,7 @@ export declare enum ModCallbackCustom {
6897
7002
  * ): void {}
6898
7003
  * ```
6899
7004
  */
6900
- POST_NPC_STATE_CHANGED = 43,
7005
+ POST_NPC_STATE_CHANGED = 46,
6901
7006
  /**
6902
7007
  * Similar to the vanilla callback of the same name, but fires after the `POST_GAME_STARTED`
6903
7008
  * callback fires (if the player is being updated on the 0th game frame of the run).
@@ -6920,7 +7025,7 @@ export declare enum ModCallbackCustom {
6920
7025
  * function postPEffectUpdateReordered(player: EntityPlayer): void {}
6921
7026
  * ```
6922
7027
  */
6923
- POST_PEFFECT_UPDATE_REORDERED = 44,
7028
+ POST_PEFFECT_UPDATE_REORDERED = 47,
6924
7029
  /**
6925
7030
  * Fires on the first `POST_RENDER` frame that a pickup plays the "Collect" animation.
6926
7031
  *
@@ -6933,7 +7038,7 @@ export declare enum ModCallbackCustom {
6933
7038
  * function postPickupCollect(pickup: EntityPickup, player: EntityPlayer): void {}
6934
7039
  * ```
6935
7040
  */
6936
- POST_PICKUP_COLLECT = 45,
7041
+ POST_PICKUP_COLLECT = 48,
6937
7042
  /**
6938
7043
  * Fires from the `POST_PICKUP_INIT` callback on the first time that a player has seen the
6939
7044
  * respective pickup on the run.
@@ -6948,7 +7053,7 @@ export declare enum ModCallbackCustom {
6948
7053
  * function postPickupInitFirst(pickup: EntityPickup): void {}
6949
7054
  * ```
6950
7055
  */
6951
- POST_PICKUP_INIT_FIRST = 46,
7056
+ POST_PICKUP_INIT_FIRST = 49,
6952
7057
  /**
6953
7058
  * Fires on the first `POST_PICKUP_UPDATE` frame for each pickup.
6954
7059
  *
@@ -6962,10 +7067,10 @@ export declare enum ModCallbackCustom {
6962
7067
  * function postPickupInitLate(pickup: EntityPickup): void {}
6963
7068
  * ```
6964
7069
  */
6965
- POST_PICKUP_INIT_LATE = 47,
7070
+ POST_PICKUP_INIT_LATE = 50,
6966
7071
  /**
6967
7072
  * Fires from the `POST_PICKUP_UPDATE` callback when a pickup's state has changed from what it was
6968
- * on the previous frame.
7073
+ * on the previous frame. (In this context, "state" refers to the `EntityPickup.State` field.)
6969
7074
  *
6970
7075
  * When registering the callback, takes an optional second argument that will make the callback
6971
7076
  * only fire if it matches the `PickupVariant` provided.
@@ -6978,7 +7083,7 @@ export declare enum ModCallbackCustom {
6978
7083
  * ): void {}
6979
7084
  * ```
6980
7085
  */
6981
- POST_PICKUP_STATE_CHANGED = 48,
7086
+ POST_PICKUP_STATE_CHANGED = 51,
6982
7087
  /**
6983
7088
  * Fires from the `POST_RENDER` callback on every frame that a pit exists.
6984
7089
  *
@@ -6989,7 +7094,7 @@ export declare enum ModCallbackCustom {
6989
7094
  * function postPitRender(pit: GridEntityPit): void {}
6990
7095
  * ```
6991
7096
  */
6992
- POST_PIT_RENDER = 49,
7097
+ POST_PIT_RENDER = 52,
6993
7098
  /**
6994
7099
  * Fires from the `POST_UPDATE` callback on every frame that a pit exists.
6995
7100
  *
@@ -7000,7 +7105,7 @@ export declare enum ModCallbackCustom {
7000
7105
  * function postPitUpdate(pit: GridEntityPit): void {}
7001
7106
  * ```
7002
7107
  */
7003
- POST_PIT_UPDATE = 50,
7108
+ POST_PIT_UPDATE = 53,
7004
7109
  /**
7005
7110
  * Fires from the `POST_PEFFECT_UPDATE` callback when a player's health (i.e. hearts) is different
7006
7111
  * than what it was on the previous frame. For more information, see the `PlayerHealth` enum.
@@ -7020,7 +7125,7 @@ export declare enum ModCallbackCustom {
7020
7125
  * ): void {}
7021
7126
  * ```
7022
7127
  */
7023
- POST_PLAYER_CHANGE_HEALTH = 51,
7128
+ POST_PLAYER_CHANGE_HEALTH = 54,
7024
7129
  /**
7025
7130
  * Fires from the `POST_PEFFECT_UPDATE` callback when one of the player's stats change from what
7026
7131
  * they were on the previous frame.
@@ -7049,7 +7154,7 @@ export declare enum ModCallbackCustom {
7049
7154
  * ): void {}
7050
7155
  * ```
7051
7156
  */
7052
- POST_PLAYER_CHANGE_STAT = 52,
7157
+ POST_PLAYER_CHANGE_STAT = 55,
7053
7158
  /**
7054
7159
  * Fires from the `POST_PEFFECT_UPDATE` callback when a player entity changes its player type
7055
7160
  * (i.e. character) from what it was on the previous frame. For example, it will fire after using
@@ -7067,7 +7172,7 @@ export declare enum ModCallbackCustom {
7067
7172
  * ): void {}
7068
7173
  * ```
7069
7174
  */
7070
- POST_PLAYER_CHANGE_TYPE = 53,
7175
+ POST_PLAYER_CHANGE_TYPE = 56,
7071
7176
  /**
7072
7177
  * Fires from the `POST_PEFFECT_UPDATE` callback when a player's collectible count is higher than
7073
7178
  * what it was on the previous frame.
@@ -7082,7 +7187,7 @@ export declare enum ModCallbackCustom {
7082
7187
  * ): void {}
7083
7188
  * ```
7084
7189
  */
7085
- POST_PLAYER_COLLECTIBLE_ADDED = 54,
7190
+ POST_PLAYER_COLLECTIBLE_ADDED = 57,
7086
7191
  /**
7087
7192
  * Fires from the `POST_PEFFECT_UPDATE` callback when a player's collectible count is lower than
7088
7193
  * what it was on the previous frame.
@@ -7097,7 +7202,7 @@ export declare enum ModCallbackCustom {
7097
7202
  * ): void {}
7098
7203
  * ```
7099
7204
  */
7100
- POST_PLAYER_COLLECTIBLE_REMOVED = 55,
7205
+ POST_PLAYER_COLLECTIBLE_REMOVED = 58,
7101
7206
  /**
7102
7207
  * Fires from the `ENTITY_TAKE_DMG` callback when a player takes fatal damage. Return false to
7103
7208
  * prevent the fatal damage.
@@ -7114,7 +7219,7 @@ export declare enum ModCallbackCustom {
7114
7219
  * function postPlayerFatalDamage(player: EntityPlayer): boolean | undefined {}
7115
7220
  * ```
7116
7221
  */
7117
- POST_PLAYER_FATAL_DAMAGE = 56,
7222
+ POST_PLAYER_FATAL_DAMAGE = 59,
7118
7223
  /**
7119
7224
  * Fires on the first `POST_PEFFECT_UPDATE_REORDERED` frame for each player, similar to the
7120
7225
  * `POST_PLAYER_INIT_LATE` callback, with two changes:
@@ -7135,7 +7240,7 @@ export declare enum ModCallbackCustom {
7135
7240
  * function postPlayerInitFirst(player: EntityPlayer): void {}
7136
7241
  * ```
7137
7242
  */
7138
- POST_PLAYER_INIT_FIRST = 57,
7243
+ POST_PLAYER_INIT_FIRST = 60,
7139
7244
  /**
7140
7245
  * Fires on the first `POST_PEFFECT_UPDATE_REORDERED` frame for each player.
7141
7246
  *
@@ -7154,7 +7259,7 @@ export declare enum ModCallbackCustom {
7154
7259
  * function postPlayerInitLate(pickup: EntityPickup): void {}
7155
7260
  * ```
7156
7261
  */
7157
- POST_PLAYER_INIT_LATE = 58,
7262
+ POST_PLAYER_INIT_LATE = 61,
7158
7263
  /**
7159
7264
  * Similar to the vanilla callback of the same name, but fires after the `POST_GAME_STARTED`
7160
7265
  * callback fires (if the player is spawning on the 0th game frame of the run).
@@ -7177,7 +7282,7 @@ export declare enum ModCallbackCustom {
7177
7282
  * function postPlayerRenderReordered(player: EntityPlayer): void {}
7178
7283
  * ```
7179
7284
  */
7180
- POST_PLAYER_RENDER_REORDERED = 59,
7285
+ POST_PLAYER_RENDER_REORDERED = 62,
7181
7286
  /**
7182
7287
  * Similar to the vanilla callback of the same name, but fires after the `POST_GAME_STARTED`
7183
7288
  * callback fires (if the player is being updated on the 0th game frame of the run).
@@ -7200,7 +7305,7 @@ export declare enum ModCallbackCustom {
7200
7305
  * function postPlayerUpdateReordered(player: EntityPlayer): void {}
7201
7306
  * ```
7202
7307
  */
7203
- POST_PLAYER_UPDATE_REORDERED = 60,
7308
+ POST_PLAYER_UPDATE_REORDERED = 63,
7204
7309
  /**
7205
7310
  * Fires from the `POST_RENDER` callback on every frame that a poop exists.
7206
7311
  *
@@ -7211,7 +7316,7 @@ export declare enum ModCallbackCustom {
7211
7316
  * function postPoopRender(poop: GridEntityPoop): void {}
7212
7317
  * ```
7213
7318
  */
7214
- POST_POOP_RENDER = 61,
7319
+ POST_POOP_RENDER = 64,
7215
7320
  /**
7216
7321
  * Fires from the `POST_UPDATE` callback on every frame that a poop exists.
7217
7322
  *
@@ -7222,7 +7327,7 @@ export declare enum ModCallbackCustom {
7222
7327
  * function postPoopUpdate(poop: GridEntityPoop): void {}
7223
7328
  * ```
7224
7329
  */
7225
- POST_POOP_UPDATE = 62,
7330
+ POST_POOP_UPDATE = 65,
7226
7331
  /**
7227
7332
  * Fires from the `POST_RENDER` callback on every frame that a pressure plate exists.
7228
7333
  *
@@ -7233,7 +7338,7 @@ export declare enum ModCallbackCustom {
7233
7338
  * function postPressurePlateRender(pressurePlate: GridEntityPressurePlate): void {}
7234
7339
  * ```
7235
7340
  */
7236
- POST_PRESSURE_PLATE_RENDER = 63,
7341
+ POST_PRESSURE_PLATE_RENDER = 66,
7237
7342
  /**
7238
7343
  * Fires from the `POST_UPDATE` callback on every frame that a pressure plate exists.
7239
7344
  *
@@ -7244,7 +7349,7 @@ export declare enum ModCallbackCustom {
7244
7349
  * function postPressurePlateUpdate(pressurePlate: GridEntityPressurePlate): void {}
7245
7350
  * ```
7246
7351
  */
7247
- POST_PRESSURE_PLATE_UPDATE = 64,
7352
+ POST_PRESSURE_PLATE_UPDATE = 67,
7248
7353
  /**
7249
7354
  * Fires on the first `POST_PROJECTILE_UPDATE` frame for each projectile.
7250
7355
  *
@@ -7258,7 +7363,7 @@ export declare enum ModCallbackCustom {
7258
7363
  * function postProjectileInitLate(projectile: EntityProjectile): void {}
7259
7364
  * ```
7260
7365
  */
7261
- POST_PROJECTILE_INIT_LATE = 65,
7366
+ POST_PROJECTILE_INIT_LATE = 68,
7262
7367
  /**
7263
7368
  * Fires from the `POST_PEFFECT_UPDATE` callback when a player first picks up a new item. The
7264
7369
  * pickup returned in the callback is assumed to be the first pickup that no longer exists.
@@ -7272,7 +7377,7 @@ export declare enum ModCallbackCustom {
7272
7377
  * function postPurchase(player: EntityPlayer, pickup: EntityPickup): void {}
7273
7378
  * ```
7274
7379
  */
7275
- POST_PURCHASE = 66,
7380
+ POST_PURCHASE = 69,
7276
7381
  /**
7277
7382
  * Fires from the `POST_RENDER` callback on every frame that a rock exists.
7278
7383
  *
@@ -7283,7 +7388,7 @@ export declare enum ModCallbackCustom {
7283
7388
  * function postRockRender(rock: GridEntityRock): void {}
7284
7389
  * ```
7285
7390
  */
7286
- POST_ROCK_RENDER = 67,
7391
+ POST_ROCK_RENDER = 70,
7287
7392
  /**
7288
7393
  * Fires from the `POST_UPDATE` callback on every frame that a rock exists.
7289
7394
  *
@@ -7294,9 +7399,10 @@ export declare enum ModCallbackCustom {
7294
7399
  * function postRockUpdate(rock: GridEntityRock): void {}
7295
7400
  * ```
7296
7401
  */
7297
- POST_ROCK_UPDATE = 68,
7402
+ POST_ROCK_UPDATE = 71,
7298
7403
  /**
7299
- * Fires from the `POST_UPDATE` callback when the clear state of a room changes.
7404
+ * Fires from the `POST_UPDATE` callback when the clear state of a room changes (as according to
7405
+ * the `Room.IsClear` method).
7300
7406
  *
7301
7407
  * When registering the callback, takes an optional second argument that will make the callback
7302
7408
  * only fire if the room clear state matches the boolean provided.
@@ -7305,7 +7411,7 @@ export declare enum ModCallbackCustom {
7305
7411
  * function postRoomClearChanged(roomClear: boolean): void {}
7306
7412
  * ```
7307
7413
  */
7308
- POST_ROOM_CLEAR_CHANGED = 69,
7414
+ POST_ROOM_CLEAR_CHANGED = 72,
7309
7415
  /**
7310
7416
  * Fires from the `ENTITY_TAKE_DMG` callback when a player takes damage from spikes in a Sacrifice
7311
7417
  * Room.
@@ -7319,7 +7425,7 @@ export declare enum ModCallbackCustom {
7319
7425
  * function postSacrifice(player: EntityPlayer, numSacrifices: int): void {}
7320
7426
  * ```
7321
7427
  */
7322
- POST_SACRIFICE = 70,
7428
+ POST_SACRIFICE = 73,
7323
7429
  /**
7324
7430
  * Fires from the `POST_RENDER` callback when a slot entity's animation changes.
7325
7431
  *
@@ -7330,7 +7436,7 @@ export declare enum ModCallbackCustom {
7330
7436
  * function postSlotAnimationChanged(slot: Entity): void {}
7331
7437
  * ```
7332
7438
  */
7333
- POST_SLOT_ANIMATION_CHANGED = 71,
7439
+ POST_SLOT_ANIMATION_CHANGED = 74,
7334
7440
  /**
7335
7441
  * Fires from the `POST_RENDER` callback when a slot plays the animation that indicates that it
7336
7442
  * has broken.
@@ -7344,7 +7450,7 @@ export declare enum ModCallbackCustom {
7344
7450
  * function postSlotDestroyed(slot: Entity, slotDestructionType: SlotDestructionType): void {}
7345
7451
  * ```
7346
7452
  */
7347
- POST_SLOT_DESTROYED = 72,
7453
+ POST_SLOT_DESTROYED = 75,
7348
7454
  /**
7349
7455
  * Fires when a new slot entity is initialized. Specifically, this is either:
7350
7456
  *
@@ -7360,7 +7466,7 @@ export declare enum ModCallbackCustom {
7360
7466
  * function postSlotInit(slot: Entity): void {}
7361
7467
  * ```
7362
7468
  */
7363
- POST_SLOT_INIT = 73,
7469
+ POST_SLOT_INIT = 76,
7364
7470
  /**
7365
7471
  * Fires from the `POST_RENDER` callback on every frame that a slot entity exists.
7366
7472
  *
@@ -7371,7 +7477,7 @@ export declare enum ModCallbackCustom {
7371
7477
  * function postSlotRender(slot: Entity): void {}
7372
7478
  * ```
7373
7479
  */
7374
- POST_SLOT_RENDER = 74,
7480
+ POST_SLOT_RENDER = 77,
7375
7481
  /**
7376
7482
  * Fires from the `POST_UPDATE` callback on every frame that a slot entity exists.
7377
7483
  *
@@ -7382,7 +7488,7 @@ export declare enum ModCallbackCustom {
7382
7488
  * function postSlotUpdate(slot: Entity): void {}
7383
7489
  * ```
7384
7490
  */
7385
- POST_SLOT_UPDATE = 75,
7491
+ POST_SLOT_UPDATE = 78,
7386
7492
  /**
7387
7493
  * Fires from the `POST_RENDER` callback on every frame that spikes exist.
7388
7494
  *
@@ -7393,7 +7499,7 @@ export declare enum ModCallbackCustom {
7393
7499
  * function postSpikesRender(spikes: GridEntitySpikes): void {}
7394
7500
  * ```
7395
7501
  */
7396
- POST_SPIKES_RENDER = 76,
7502
+ POST_SPIKES_RENDER = 79,
7397
7503
  /**
7398
7504
  * Fires from the `POST_UPDATE` callback on every frame that spikes exist.
7399
7505
  *
@@ -7404,7 +7510,7 @@ export declare enum ModCallbackCustom {
7404
7510
  * function postSpikesUpdate(spikes: GridEntitySpikes): void {}
7405
7511
  * ```
7406
7512
  */
7407
- POST_SPIKES_UPDATE = 77,
7513
+ POST_SPIKES_UPDATE = 80,
7408
7514
  /**
7409
7515
  * Fires on the first `POST_TEAR_UPDATE` frame for each tear (which is when
7410
7516
  * `EntityTear.FrameCount` is equal to 0).
@@ -7419,7 +7525,7 @@ export declare enum ModCallbackCustom {
7419
7525
  * function postTearInitLate(tear: EntityTear): void {}
7420
7526
  * ```
7421
7527
  */
7422
- POST_TEAR_INIT_LATE = 78,
7528
+ POST_TEAR_INIT_LATE = 81,
7423
7529
  /**
7424
7530
  * Fires on the second `POST_TEAR_UPDATE` frame for each tear (which is when
7425
7531
  * `EntityTear.FrameCount` is equal to 1).
@@ -7433,7 +7539,7 @@ export declare enum ModCallbackCustom {
7433
7539
  * function postTearInitVeryLate(tear: EntityTear): void {}
7434
7540
  * ```
7435
7541
  */
7436
- POST_TEAR_INIT_VERY_LATE = 79,
7542
+ POST_TEAR_INIT_VERY_LATE = 82,
7437
7543
  /**
7438
7544
  * Fires from the `POST_RENDER` callback on every frame that a TNT exists.
7439
7545
  *
@@ -7444,7 +7550,7 @@ export declare enum ModCallbackCustom {
7444
7550
  * function postTNTRender(tnt: GridEntityTNT): void {}
7445
7551
  * ```
7446
7552
  */
7447
- POST_TNT_RENDER = 80,
7553
+ POST_TNT_RENDER = 83,
7448
7554
  /**
7449
7555
  * Fires from the `POST_UPDATE` callback on every frame that a TNT exists.
7450
7556
  *
@@ -7455,7 +7561,7 @@ export declare enum ModCallbackCustom {
7455
7561
  * function postTNTUpdate(tnt: GridEntityTNT): void {}
7456
7562
  * ```
7457
7563
  */
7458
- POST_TNT_UPDATE = 81,
7564
+ POST_TNT_UPDATE = 84,
7459
7565
  /**
7460
7566
  * Fires from the `POST_PEFFECT_UPDATE` callback when a player gains or loses a new
7461
7567
  * transformation.
@@ -7473,7 +7579,7 @@ export declare enum ModCallbackCustom {
7473
7579
  * ): void {}
7474
7580
  * ```
7475
7581
  */
7476
- POST_TRANSFORMATION = 82,
7582
+ POST_TRANSFORMATION = 85,
7477
7583
  /**
7478
7584
  * Fires from `ENTITY_TAKE_DMG` callback when a Wishbone or a Walnut breaks.
7479
7585
  *
@@ -7487,7 +7593,7 @@ export declare enum ModCallbackCustom {
7487
7593
  * ): void {}
7488
7594
  * ```
7489
7595
  */
7490
- POST_TRINKET_BREAK = 83,
7596
+ POST_TRINKET_BREAK = 86,
7491
7597
  /**
7492
7598
  * Fires from the `POST_PEFFECT_UPDATE` callback on the frame before a Berserk effect ends when
7493
7599
  * the player is predicted to die (e.g. they currently have no health left or they took damage in
@@ -7502,7 +7608,7 @@ export declare enum ModCallbackCustom {
7502
7608
  * function preBerserkDeath(player: EntityPlayer): void {}
7503
7609
  * ```
7504
7610
  */
7505
- PRE_BERSERK_DEATH = 84,
7611
+ PRE_BERSERK_DEATH = 87,
7506
7612
  /**
7507
7613
  * Fires from the `POST_PLAYER_FATAL_DAMAGE` callback when a player is about to die. If you want
7508
7614
  * to initiate a custom revival, return an integer that corresponds to the item or type of revival
@@ -7520,7 +7626,7 @@ export declare enum ModCallbackCustom {
7520
7626
  * function preCustomRevive(player: EntityPlayer): int | undefined {}
7521
7627
  * ```
7522
7628
  */
7523
- PRE_CUSTOM_REVIVE = 85,
7629
+ PRE_CUSTOM_REVIVE = 88,
7524
7630
  /**
7525
7631
  * Fires from the `POST_PEFFECT_UPDATE` callback when an item becomes queued (i.e. when the player
7526
7632
  * begins to hold the item above their head).
@@ -7539,7 +7645,7 @@ export declare enum ModCallbackCustom {
7539
7645
  * ): void {}
7540
7646
  * ```
7541
7647
  */
7542
- PRE_ITEM_PICKUP = 86,
7648
+ PRE_ITEM_PICKUP = 89,
7543
7649
  /**
7544
7650
  * Fires on the `POST_RENDER` frame before the player is taken to a new floor. Only fires when a
7545
7651
  * player jumps into a trapdoor or enters a heaven door (beam of light). Does not fire on the
@@ -7553,7 +7659,7 @@ export declare enum ModCallbackCustom {
7553
7659
  * function preNewLevel(player: EntityPlayer): void {}
7554
7660
  * ```
7555
7661
  */
7556
- PRE_NEW_LEVEL = 87
7662
+ PRE_NEW_LEVEL = 90
7557
7663
  }
7558
7664
 
7559
7665
  /**
@@ -7925,6 +8031,12 @@ export declare enum PocketItemType {
7925
8031
  UNDETERMINABLE = 5
7926
8032
  }
7927
8033
 
8034
+ /**
8035
+ * These are the possible types that player stats can be. For example, `EntityPlayer.Damage` is of
8036
+ * type `float`, `EntityPlayer.CanFly` is of type `boolean`, and so on.
8037
+ */
8038
+ export declare type PossibleStatType = number | boolean | BitFlags<TearFlag> | Color | Vector;
8039
+
7928
8040
  declare type PostAmbushFinishedRegisterParameters = [
7929
8041
  callback: (ambushType: AmbushType) => void,
7930
8042
  ambushType?: AmbushType
@@ -8054,11 +8166,26 @@ callback: (gridEntity: GridEntity, gridEntityTypeCustom: GridEntityType, entity:
8054
8166
  gridEntityTypeCustom?: GridEntityType
8055
8167
  ];
8056
8168
 
8169
+ declare type PostGridEntityCustomInitRegisterParameters = [
8170
+ callback: (gridEntity: GridEntity, gridEntityTypeCustom: GridEntityType) => void,
8171
+ gridEntityTypeCustom?: GridEntityType
8172
+ ];
8173
+
8174
+ declare type PostGridEntityCustomRemoveRegisterParameters = [
8175
+ callback: (gridIndex: int, gridEntityTypeCustom: GridEntityType) => void,
8176
+ gridEntityTypeCustom?: GridEntityType
8177
+ ];
8178
+
8057
8179
  declare type PostGridEntityCustomRenderRegisterParameters = [
8058
8180
  callback: (gridEntity: GridEntity, gridEntityTypeCustom: GridEntityType) => void,
8059
8181
  gridEntityTypeCustom?: GridEntityType
8060
8182
  ];
8061
8183
 
8184
+ declare type PostGridEntityCustomStateChangedRegisterParameters = [
8185
+ callback: (gridEntity: GridEntity, gridEntityTypeCustom: GridEntityType, oldState: int, newState: int) => void,
8186
+ gridEntityTypeCustom?: GridEntityType
8187
+ ];
8188
+
8062
8189
  declare type PostGridEntityCustomUpdateRegisterParameters = [
8063
8190
  callback: (gridEntity: GridEntity, gridEntityTypeCustom: GridEntityType) => void,
8064
8191
  gridEntityTypeCustom?: GridEntityType
@@ -8185,7 +8312,7 @@ character?: PlayerType
8185
8312
  ];
8186
8313
 
8187
8314
  declare type PostPlayerChangeStatRegisterParameters = [
8188
- callback: (player: EntityPlayer, statType: StatType, difference: int, oldValue: number | boolean | BitFlags<TearFlag> | Color | Vector, newValue: number | boolean | BitFlags<TearFlag> | Color | Vector) => void,
8315
+ callback: (player: EntityPlayer, statType: StatType, difference: int, oldValue: PossibleStatType, newValue: PossibleStatType) => void,
8189
8316
  playerVariant?: PlayerVariant,
8190
8317
  character?: PlayerType
8191
8318
  ];
@@ -8427,31 +8554,6 @@ export declare function registerCharacterHealthConversion(playerType: PlayerType
8427
8554
  */
8428
8555
  export declare function registerCharacterStats(playerType: PlayerType, statMap: Map<CacheFlag, number> | ReadonlyMap<CacheFlag, number>): void;
8429
8556
 
8430
- /**
8431
- * By default, unknown bosses will be drawn on the boss "versus" screen as "???". If your custom
8432
- * stage has custom bosses, you can use this function to register the corresponding graphic file
8433
- * files for them.
8434
- *
8435
- * For reference:
8436
- * - The vanilla name sprite for Monstro is located at:
8437
- * `resources/gfx/ui/boss/bossname_20.0_monstro.png`
8438
- * - The vanilla portrait sprite for Monstro is located at:
8439
- * `resources/gfx/ui/boss/portrait_20.0_monstro.png`
8440
- *
8441
- * (Note that boss metadata like this cannot be specified with the rest of the custom stage metadata
8442
- * in the "tsconfig.json" file because there is not a way to retrieve the name of an entity at
8443
- * run-time.)
8444
- *
8445
- * @param entityType The entity type of the custom boss.
8446
- * @param variant The variant of the custom boss.
8447
- * @param subType The sub-type of the custom boss.
8448
- * @param namePNGPath The full path to the PNG file that contains the name of the boss that will be
8449
- * displayed on the top of the boss "versus" screen.
8450
- * @param portraitPNGPath The full path to the PNG file that contains the portrait of the boss that
8451
- * will be displayed on the right side of the boss "versus" screen.
8452
- */
8453
- export declare function registerCustomBoss(entityType: EntityType, variant: int, subType: int, namePNGPath: string, portraitPNGPath: string): void;
8454
-
8455
8557
  /**
8456
8558
  * Helper function to run arbitrary code when you press and release a specific keyboard key.
8457
8559
  *
@@ -8979,6 +9081,9 @@ export declare function removeGridEntities<T extends AnyGridEntity>(gridEntities
8979
9081
  * Helper function to remove a grid entity by providing the grid entity object or the grid index
8980
9082
  * inside of the room.
8981
9083
  *
9084
+ * If removing a Devil Statue or an Angel Statue, this will also remove the associated effect
9085
+ * (`EffectVariant.DEVIL` (6) or `EffectVariant.ANGEL` (9), respectively.)
9086
+ *
8982
9087
  * @param gridEntityOrGridIndex The grid entity or grid index to remove.
8983
9088
  * @param updateRoom Whether or not to update the room after the grid entity is removed. This is
8984
9089
  * generally a good idea because if the room is not updated, you will be unable to
@@ -10217,18 +10322,24 @@ export declare function spawnCustomDoor(effectVariant: EffectVariant, doorSlot:
10217
10322
  * will reappear if the player leaves and re-enters the room. (It will be manually respawned in the
10218
10323
  * `POST_NEW_ROOM` callback.)
10219
10324
  *
10220
- * This is an IsaacScript feature because the vanilla game does not support any custom grid
10221
- * entities. Under the hood, IsaacScript accomplishes this by using decorations with an arbitrary
10222
- * non-zero variant to represent custom grid entities.
10325
+ * Custom grid entities are built on top of real grid entities. You can use any existing grid entity
10326
+ * type as a base. For example, if you want to create a custom rock that would be breakable like a
10327
+ * normal rock, then you should specify `GridEntityType.ROCK` as the base grid entity type.
10223
10328
  *
10224
10329
  * Once a custom grid entity is spawned, you can take advantage of the custom grid callbacks such as
10225
- * `POST_GRID_ENTITY_CUSTOM_UPDATE`.
10330
+ * `POST_GRID_ENTITY_CUSTOM_UPDATE`. Note that the "normal" grid entities callbacks will not fire
10331
+ * for custom entities. For example, if you had a custom grid entity based on `GridEntityType.ROCK`,
10332
+ * and you also had a subscription to the `POST_GRID_ENTITY_UPDATE` callback, the callback would
10333
+ * only fire for normal rocks and not the custom entity.
10334
+ *
10335
+ * Custom grid entities are an IsaacScript feature because the vanilla game does not support any
10336
+ * custom grid entities.
10226
10337
  *
10227
10338
  * @param gridEntityTypeCustom An integer that identifies what kind of grid entity you are creating.
10228
- * It should correspond to a local enum value in your mod. The integer
10229
- * can be any unique value and will not correspond to the actual grid
10230
- * entity type used. (This integer is used in the various custom grid
10231
- * entity callbacks.)
10339
+ * It should correspond to a local enum value created in your mod. The
10340
+ * integer can be any unique value and will not correspond to the actual
10341
+ * grid entity type used. (This integer is used in the various custom
10342
+ * grid entity callbacks.)
10232
10343
  * @param gridIndexOrPosition The grid index or position in the room that you want to spawn the grid
10233
10344
  * entity at. If a position is specified, the closest grid index will be
10234
10345
  * used.
@@ -10237,12 +10348,12 @@ export declare function spawnCustomDoor(effectVariant: EffectVariant, doorSlot:
10237
10348
  * @param defaultAnimation Optional. The name of the animation to play after the sprite is
10238
10349
  * initialized and after the player re-enters a room with this grid entity
10239
10350
  * in it. If not specified, the default animation in the anm2 will be used.
10240
- * @param breakable Optional. Whether or not an explosion will be able to break this grid entity.
10241
- * False by default. Use the `POST_GRID_ENTITY_CUSTOM_BROKEN` callback to detect
10242
- * when it breaks. Due to technical limitations, you can only set the grid entity
10243
- * to be breakable if it has a collision class.
10351
+ * @param baseGridEntityType Optional. The type of the grid entity to use as a "base" for this
10352
+ * custom grid entity. Default is `GridEntityType.DECORATION`.
10353
+ * @param baseGridEntityVariant Optional. The variant of the grid entity to use as a "base" for this
10354
+ * custom grid entity. Default is 0.
10244
10355
  */
10245
- export declare function spawnCustomGrid(gridEntityTypeCustom: GridEntityType, gridIndexOrPosition: int | Vector, gridCollisionClass: GridCollisionClass, anm2Path: string, defaultAnimation?: string, breakable?: boolean): GridEntity;
10356
+ export declare function spawnCustomGrid(gridEntityTypeCustom: GridEntityType, gridIndexOrPosition: int | Vector, gridCollisionClass: GridCollisionClass, anm2Path: string, defaultAnimation?: string, baseGridEntityType?: GridEntityType, baseGridEntityVariant?: number): GridEntity;
10246
10357
 
10247
10358
  /**
10248
10359
  * Helper function to spawn a trapdoor grid entity that will have one or more of the following
@@ -10575,7 +10686,9 @@ export declare enum StatType {
10575
10686
  /** Corresponds to `CacheFlag.FLYING` (1 << 7) and `EntityPlayer.CanFly`. */
10576
10687
  FLYING = 10,
10577
10688
  /** Corresponds to `CacheFlag.LUCK` (1 << 10) and `EntityPlayer.Luck`. */
10578
- LUCK = 11
10689
+ LUCK = 11,
10690
+ /** Corresponds to `CacheFlag.SIZE` (1 << 11) and `EntityPlayer.SpriteScale`. */
10691
+ SIZE = 12
10579
10692
  }
10580
10693
 
10581
10694
  /**
@@ -10595,6 +10708,7 @@ export declare interface StatTypeType {
10595
10708
  [StatType.TEAR_COLOR]: Color;
10596
10709
  [StatType.FLYING]: boolean;
10597
10710
  [StatType.LUCK]: float;
10711
+ [StatType.SIZE]: Vector;
10598
10712
  }
10599
10713
 
10600
10714
  export declare function stopAllSoundEffects(): void;