isaacscript-common 20.18.1 → 21.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. package/dist/index.d.ts +48 -33
  2. package/dist/isaacscript-common.lua +637 -460
  3. package/dist/src/callbacks.d.ts.map +1 -1
  4. package/dist/src/classes/callbacks/PostBoneSwing.d.ts.map +1 -1
  5. package/dist/src/classes/callbacks/PostBoneSwing.lua +3 -2
  6. package/dist/src/classes/callbacks/PreNewLevel.d.ts.map +1 -1
  7. package/dist/src/classes/callbacks/PreNewLevel.lua +3 -2
  8. package/dist/src/classes/features/other/CustomTrapdoors.d.ts.map +1 -1
  9. package/dist/src/classes/features/other/CustomTrapdoors.lua +4 -2
  10. package/dist/src/classes/features/other/DeployJSONRoom.d.ts.map +1 -1
  11. package/dist/src/classes/features/other/DeployJSONRoom.lua +3 -2
  12. package/dist/src/classes/features/other/ModdedElementSets.d.ts.map +1 -1
  13. package/dist/src/classes/features/other/ModdedElementSets.lua +7 -4
  14. package/dist/src/classes/features/other/SaveDataManager.d.ts.map +1 -1
  15. package/dist/src/classes/features/other/SaveDataManager.lua +3 -2
  16. package/dist/src/classes/features/other/customStages/backdrop.lua +3 -2
  17. package/dist/src/classes/features/other/customStages/shadows.d.ts.map +1 -1
  18. package/dist/src/classes/features/other/customStages/streakText.d.ts.map +1 -1
  19. package/dist/src/classes/features/other/saveDataManager/restoreDefaults.d.ts.map +1 -1
  20. package/dist/src/classes/features/other/saveDataManager/restoreDefaults.lua +3 -2
  21. package/dist/src/core/constants.d.ts +4 -6
  22. package/dist/src/core/constants.d.ts.map +1 -1
  23. package/dist/src/core/constants.lua +17 -13
  24. package/dist/src/features.d.ts.map +1 -1
  25. package/dist/src/functions/bosses.d.ts.map +1 -1
  26. package/dist/src/functions/bosses.lua +3 -2
  27. package/dist/src/functions/cards.lua +3 -3
  28. package/dist/src/functions/characters.d.ts.map +1 -1
  29. package/dist/src/functions/characters.lua +3 -2
  30. package/dist/src/functions/doors.d.ts.map +1 -1
  31. package/dist/src/functions/doors.lua +9 -7
  32. package/dist/src/functions/emptyRoom.d.ts.map +1 -1
  33. package/dist/src/functions/emptyRoom.lua +3 -2
  34. package/dist/src/functions/entities.d.ts.map +1 -1
  35. package/dist/src/functions/entities.lua +4 -1
  36. package/dist/src/functions/globals.d.ts.map +1 -1
  37. package/dist/src/functions/globals.lua +6 -4
  38. package/dist/src/functions/gridEntities.d.ts.map +1 -1
  39. package/dist/src/functions/gridEntities.lua +5 -3
  40. package/dist/src/functions/input.d.ts.map +1 -1
  41. package/dist/src/functions/input.lua +4 -3
  42. package/dist/src/functions/logEntities.d.ts.map +1 -1
  43. package/dist/src/functions/logEntities.lua +3 -2
  44. package/dist/src/functions/map.d.ts +23 -0
  45. package/dist/src/functions/map.d.ts.map +1 -1
  46. package/dist/src/functions/map.lua +28 -0
  47. package/dist/src/functions/npcs.d.ts.map +1 -1
  48. package/dist/src/functions/npcs.lua +4 -3
  49. package/dist/src/functions/playerIndex.d.ts.map +1 -1
  50. package/dist/src/functions/playerIndex.lua +3 -2
  51. package/dist/src/functions/readOnly.d.ts +26 -0
  52. package/dist/src/functions/readOnly.d.ts.map +1 -0
  53. package/dist/src/functions/readOnly.lua +31 -0
  54. package/dist/src/functions/roomGrid.d.ts.map +1 -1
  55. package/dist/src/functions/roomGrid.lua +4 -1
  56. package/dist/src/functions/roomShapeWalls.d.ts.map +1 -1
  57. package/dist/src/functions/roomShapeWalls.lua +9 -10
  58. package/dist/src/functions/serialization.d.ts.map +1 -1
  59. package/dist/src/functions/serialization.lua +3 -2
  60. package/dist/src/functions/slots.d.ts.map +1 -1
  61. package/dist/src/functions/slots.lua +3 -2
  62. package/dist/src/functions/stats.d.ts.map +1 -1
  63. package/dist/src/functions/stats.lua +3 -2
  64. package/dist/src/functions/transformations.d.ts.map +1 -1
  65. package/dist/src/functions/transformations.lua +6 -3
  66. package/dist/src/functions/utils.d.ts +1 -1
  67. package/dist/src/functions/utils.lua +1 -1
  68. package/dist/src/index.d.ts +2 -1
  69. package/dist/src/index.d.ts.map +1 -1
  70. package/dist/src/index.lua +16 -0
  71. package/dist/src/maps/PHDPillConversions.d.ts.map +1 -1
  72. package/dist/src/maps/PHDPillConversions.lua +3 -2
  73. package/dist/src/maps/cardNameToTypeMap.d.ts.map +1 -1
  74. package/dist/src/maps/cardNameToTypeMap.lua +3 -2
  75. package/dist/src/maps/characterNameToTypeMap.d.ts.map +1 -1
  76. package/dist/src/maps/characterNameToTypeMap.lua +3 -2
  77. package/dist/src/maps/collectibleDescriptionMap.d.ts.map +1 -1
  78. package/dist/src/maps/collectibleDescriptionMap.lua +3 -2
  79. package/dist/src/maps/collectibleNameToTypeMap.d.ts +5 -0
  80. package/dist/src/maps/collectibleNameToTypeMap.d.ts.map +1 -1
  81. package/dist/src/maps/collectibleNameToTypeMap.lua +10 -8
  82. package/dist/src/maps/collectibleTypeToNameMap.d.ts.map +1 -1
  83. package/dist/src/maps/collectibleTypeToNameMap.lua +3 -2
  84. package/dist/src/maps/defaultPlayerStatMap.d.ts +5 -2
  85. package/dist/src/maps/defaultPlayerStatMap.d.ts.map +1 -1
  86. package/dist/src/maps/defaultPlayerStatMap.lua +3 -2
  87. package/dist/src/maps/falsePHDPillConversions.d.ts.map +1 -1
  88. package/dist/src/maps/falsePHDPillConversions.lua +3 -2
  89. package/dist/src/maps/gridEntityTypeToBrokenStateMap.d.ts +1 -1
  90. package/dist/src/maps/gridEntityTypeToBrokenStateMap.d.ts.map +1 -1
  91. package/dist/src/maps/gridEntityTypeToBrokenStateMap.lua +3 -2
  92. package/dist/src/maps/gridEntityXMLMap.d.ts +1 -4
  93. package/dist/src/maps/gridEntityXMLMap.d.ts.map +1 -1
  94. package/dist/src/maps/gridEntityXMLMap.lua +3 -2
  95. package/dist/src/maps/keyboardToString.d.ts.map +1 -1
  96. package/dist/src/maps/keyboardToString.lua +3 -2
  97. package/dist/src/maps/pillNameToEffectMap.d.ts.map +1 -1
  98. package/dist/src/maps/pillNameToEffectMap.lua +3 -2
  99. package/dist/src/maps/roomNameToTypeMap.d.ts.map +1 -1
  100. package/dist/src/maps/roomNameToTypeMap.lua +3 -2
  101. package/dist/src/maps/roomShapeToTopLeftWallGridIndexMap.d.ts +1 -1
  102. package/dist/src/maps/roomShapeToTopLeftWallGridIndexMap.d.ts.map +1 -1
  103. package/dist/src/maps/roomShapeToTopLeftWallGridIndexMap.lua +3 -2
  104. package/dist/src/maps/transformationNameToPlayerFormMap.d.ts.map +1 -1
  105. package/dist/src/maps/transformationNameToPlayerFormMap.lua +3 -2
  106. package/dist/src/maps/trinketDescriptionMap.d.ts.map +1 -1
  107. package/dist/src/maps/trinketDescriptionMap.lua +3 -2
  108. package/dist/src/maps/trinketNameToTypeMap.d.ts +5 -0
  109. package/dist/src/maps/trinketNameToTypeMap.d.ts.map +1 -1
  110. package/dist/src/maps/trinketNameToTypeMap.lua +10 -8
  111. package/dist/src/maps/trinketTypeToNameMap.d.ts.map +1 -1
  112. package/dist/src/maps/trinketTypeToNameMap.lua +3 -2
  113. package/dist/src/objects/LRoomShapeToRectangles.d.ts +8 -6
  114. package/dist/src/objects/LRoomShapeToRectangles.d.ts.map +1 -1
  115. package/dist/src/objects/LRoomShapeToRectangles.lua +19 -17
  116. package/dist/src/objects/backdropTypeToRockAltType.d.ts.map +1 -1
  117. package/dist/src/objects/bossNamePNGFileNames.d.ts.map +1 -1
  118. package/dist/src/objects/bossPortraitPNGFileNames.d.ts.map +1 -1
  119. package/dist/src/objects/cardDescriptions.d.ts.map +1 -1
  120. package/dist/src/objects/cardNames.d.ts.map +1 -1
  121. package/dist/src/objects/challengeNames.d.ts.map +1 -1
  122. package/dist/src/objects/characterDamageMultipliers.d.ts.map +1 -1
  123. package/dist/src/objects/characterNames.d.ts.map +1 -1
  124. package/dist/src/objects/coinSubTypeToValue.d.ts.map +1 -1
  125. package/dist/src/objects/directionNames.d.ts.map +1 -1
  126. package/dist/src/objects/directionToDegrees.d.ts.map +1 -1
  127. package/dist/src/objects/directionToMoveAction.d.ts.map +1 -1
  128. package/dist/src/objects/directionToShootAction.d.ts.map +1 -1
  129. package/dist/src/objects/directionToVector.d.ts +5 -2
  130. package/dist/src/objects/directionToVector.d.ts.map +1 -1
  131. package/dist/src/objects/directionToVector.lua +6 -4
  132. package/dist/src/objects/doorSlotFlagToDoorSlot.d.ts.map +1 -1
  133. package/dist/src/objects/doorSlotToDirection.d.ts.map +1 -1
  134. package/dist/src/objects/doorSlotToDoorSlotFlag.d.ts.map +1 -1
  135. package/dist/src/objects/isaacAPIClassTypeToBrand.d.ts.map +1 -1
  136. package/dist/src/objects/languageNames.d.ts.map +1 -1
  137. package/dist/src/objects/oppositeDoorSlots.d.ts.map +1 -1
  138. package/dist/src/objects/pillEffectClasses.d.ts.map +1 -1
  139. package/dist/src/objects/pillEffectNames.d.ts.map +1 -1
  140. package/dist/src/objects/pillEffectTypes.d.ts.map +1 -1
  141. package/dist/src/objects/playerNamePNGFileNames.d.ts.map +1 -1
  142. package/dist/src/objects/playerPortraitPNGFileNames.d.ts.map +1 -1
  143. package/dist/src/objects/roomShapeBounds.d.ts +12 -2
  144. package/dist/src/objects/roomShapeBounds.d.ts.map +1 -1
  145. package/dist/src/objects/roomShapeCorners.d.ts +237 -3
  146. package/dist/src/objects/roomShapeCorners.d.ts.map +1 -1
  147. package/dist/src/objects/roomShapeCorners.lua +58 -56
  148. package/dist/src/objects/roomShapeLayoutSizes.d.ts +12 -2
  149. package/dist/src/objects/roomShapeLayoutSizes.d.ts.map +1 -1
  150. package/dist/src/objects/roomShapeToBottomRightPosition.d.ts +12 -2
  151. package/dist/src/objects/roomShapeToBottomRightPosition.d.ts.map +1 -1
  152. package/dist/src/objects/roomShapeToBottomRightPosition.lua +10 -8
  153. package/dist/src/objects/roomShapeToDoorSlotCoordinates.d.ts +88 -2
  154. package/dist/src/objects/roomShapeToDoorSlotCoordinates.d.ts.map +1 -1
  155. package/dist/src/objects/roomShapeToDoorSlotCoordinates.lua +71 -74
  156. package/dist/src/objects/roomShapeToDoorSlots.d.ts +13 -2
  157. package/dist/src/objects/roomShapeToDoorSlots.d.ts.map +1 -1
  158. package/dist/src/objects/roomShapeToDoorSlots.lua +10 -9
  159. package/dist/src/objects/roomShapeToDoorSlotsToGridIndexDelta.d.ts.map +1 -1
  160. package/dist/src/objects/roomShapeToDoorSlotsToGridIndexDelta.lua +14 -13
  161. package/dist/src/objects/roomShapeToGridWidth.d.ts.map +1 -1
  162. package/dist/src/objects/roomShapeToTopLeftPosition.d.ts +12 -2
  163. package/dist/src/objects/roomShapeToTopLeftPosition.d.ts.map +1 -1
  164. package/dist/src/objects/roomShapeToTopLeftPosition.lua +5 -3
  165. package/dist/src/objects/roomShapeVolumes.d.ts.map +1 -1
  166. package/dist/src/objects/roomTypeGotoPrefixes.d.ts.map +1 -1
  167. package/dist/src/objects/roomTypeNames.d.ts.map +1 -1
  168. package/dist/src/objects/stageToMusic.d.ts.map +1 -1
  169. package/dist/src/objects/stageTypeSuffixes.d.ts.map +1 -1
  170. package/dist/src/objects/stageTypeToLetter.d.ts.map +1 -1
  171. package/dist/src/objects/transformationNames.d.ts.map +1 -1
  172. package/dist/src/objects/versusScreenBackgroundColors.d.ts +29 -2
  173. package/dist/src/objects/versusScreenBackgroundColors.d.ts.map +1 -1
  174. package/dist/src/objects/versusScreenBackgroundColors.lua +29 -27
  175. package/dist/src/objects/versusScreenDirtSpotColors.d.ts +29 -2
  176. package/dist/src/objects/versusScreenDirtSpotColors.d.ts.map +1 -1
  177. package/dist/src/objects/versusScreenDirtSpotColors.lua +29 -27
  178. package/dist/src/sets/LRoomShapesSet.d.ts.map +1 -1
  179. package/dist/src/sets/LRoomShapesSet.lua +3 -2
  180. package/dist/src/sets/bossSets.d.ts +2 -3
  181. package/dist/src/sets/bossSets.d.ts.map +1 -1
  182. package/dist/src/sets/bossSets.lua +52 -49
  183. package/dist/src/sets/charactersThatStartWithAnActiveItemSet.d.ts.map +1 -1
  184. package/dist/src/sets/charactersThatStartWithAnActiveItemSet.lua +3 -2
  185. package/dist/src/sets/charactersWithBlackHeartFromEternalHeartSet.d.ts.map +1 -1
  186. package/dist/src/sets/charactersWithBlackHeartFromEternalHeartSet.lua +3 -2
  187. package/dist/src/sets/charactersWithFreeDevilDealsSet.d.ts.map +1 -1
  188. package/dist/src/sets/charactersWithFreeDevilDealsSet.lua +3 -2
  189. package/dist/src/sets/charactersWithNoRedHeartsSet.d.ts.map +1 -1
  190. package/dist/src/sets/charactersWithNoRedHeartsSet.lua +3 -2
  191. package/dist/src/sets/charactersWithNoSoulHeartsSet.d.ts.map +1 -1
  192. package/dist/src/sets/charactersWithNoSoulHeartsSet.lua +3 -2
  193. package/dist/src/sets/chestPickupVariantsSet.d.ts.map +1 -1
  194. package/dist/src/sets/chestPickupVariantsSet.lua +3 -2
  195. package/dist/src/sets/consoleCommandsSet.d.ts.map +1 -1
  196. package/dist/src/sets/consoleCommandsSet.lua +3 -2
  197. package/dist/src/sets/entitiesWithArmorSet.d.ts.map +1 -1
  198. package/dist/src/sets/entitiesWithArmorSet.lua +3 -2
  199. package/dist/src/sets/familiarsThatShootPlayerTearsSet.d.ts.map +1 -1
  200. package/dist/src/sets/familiarsThatShootPlayerTearsSet.lua +3 -2
  201. package/dist/src/sets/itemConfigCardTypesForCardsSet.d.ts +4 -0
  202. package/dist/src/sets/itemConfigCardTypesForCardsSet.d.ts.map +1 -0
  203. package/dist/src/sets/itemConfigCardTypesForCardsSet.lua +10 -0
  204. package/dist/src/sets/lostStyleCharactersSet.d.ts.map +1 -1
  205. package/dist/src/sets/lostStyleCharactersSet.lua +3 -2
  206. package/dist/src/sets/mineShaftRoomSubTypesSet.d.ts.map +1 -1
  207. package/dist/src/sets/mineShaftRoomSubTypesSet.lua +3 -2
  208. package/dist/src/sets/narrowRoomShapesSet.d.ts.map +1 -1
  209. package/dist/src/sets/narrowRoomShapesSet.lua +3 -2
  210. package/dist/src/sets/redHeartSubTypesSet.d.ts.map +1 -1
  211. package/dist/src/sets/redHeartSubTypesSet.lua +3 -2
  212. package/dist/src/sets/sinEntityTypesSet.d.ts.map +1 -1
  213. package/dist/src/sets/sinEntityTypesSet.lua +3 -2
  214. package/dist/src/sets/singleUseActiveCollectibleTypesSet.d.ts.map +1 -1
  215. package/dist/src/sets/singleUseActiveCollectibleTypesSet.lua +3 -2
  216. package/dist/src/sets/storyBossesSet.d.ts.map +1 -1
  217. package/dist/src/sets/storyBossesSet.lua +3 -2
  218. package/dist/src/types/PickingUpItem.d.ts.map +1 -1
  219. package/dist/src/types/PickingUpItem.lua +3 -2
  220. package/dist/src/types/ReadonlyMap.d.ts +9 -0
  221. package/dist/src/types/ReadonlyMap.d.ts.map +1 -0
  222. package/dist/src/types/ReadonlyMap.lua +6 -0
  223. package/dist/src/types/ReadonlySet.d.ts +8 -0
  224. package/dist/src/types/ReadonlySet.d.ts.map +1 -0
  225. package/dist/src/types/ReadonlySet.lua +6 -0
  226. package/package.json +1 -1
  227. package/src/callbacks.ts +1 -2
  228. package/src/classes/callbacks/PostBoneSwing.ts +2 -1
  229. package/src/classes/callbacks/PreNewLevel.ts +2 -1
  230. package/src/classes/features/other/CustomTrapdoors.ts +2 -1
  231. package/src/classes/features/other/DeployJSONRoom.ts +5 -2
  232. package/src/classes/features/other/ModdedElementSets.ts +20 -22
  233. package/src/classes/features/other/SaveDataManager.ts +2 -1
  234. package/src/classes/features/other/customStages/backdrop.ts +3 -3
  235. package/src/classes/features/other/customStages/shadows.ts +1 -2
  236. package/src/classes/features/other/customStages/streakText.ts +1 -2
  237. package/src/classes/features/other/saveDataManager/restoreDefaults.ts +2 -1
  238. package/src/core/constants.ts +18 -17
  239. package/src/features.ts +1 -2
  240. package/src/functions/bosses.ts +2 -1
  241. package/src/functions/cards.ts +2 -2
  242. package/src/functions/characters.ts +2 -1
  243. package/src/functions/doors.ts +15 -4
  244. package/src/functions/emptyRoom.ts +2 -1
  245. package/src/functions/entities.ts +2 -1
  246. package/src/functions/globals.ts +4 -3
  247. package/src/functions/gridEntities.ts +5 -4
  248. package/src/functions/input.ts +3 -2
  249. package/src/functions/logEntities.ts +2 -1
  250. package/src/functions/map.ts +35 -0
  251. package/src/functions/npcs.ts +3 -2
  252. package/src/functions/playerIndex.ts +2 -1
  253. package/src/functions/readOnly.ts +42 -0
  254. package/src/functions/roomGrid.ts +3 -2
  255. package/src/functions/roomShapeWalls.ts +3 -5
  256. package/src/functions/serialization.ts +2 -3
  257. package/src/functions/slots.ts +2 -1
  258. package/src/functions/stats.ts +2 -1
  259. package/src/functions/transformations.ts +19 -18
  260. package/src/functions/utils.ts +1 -1
  261. package/src/index.ts +2 -1
  262. package/src/maps/PHDPillConversions.ts +19 -19
  263. package/src/maps/cardNameToTypeMap.ts +2 -1
  264. package/src/maps/characterNameToTypeMap.ts +86 -86
  265. package/src/maps/collectibleDescriptionMap.ts +726 -724
  266. package/src/maps/collectibleNameToTypeMap.ts +10 -7
  267. package/src/maps/collectibleTypeToNameMap.ts +3 -4
  268. package/src/maps/defaultPlayerStatMap.ts +2 -1
  269. package/src/maps/falsePHDPillConversions.ts +36 -33
  270. package/src/maps/gridEntityTypeToBrokenStateMap.ts +3 -2
  271. package/src/maps/gridEntityXMLMap.ts +3 -2
  272. package/src/maps/keyboardToString.ts +3 -2
  273. package/src/maps/pillNameToEffectMap.ts +85 -86
  274. package/src/maps/roomNameToTypeMap.ts +2 -1
  275. package/src/maps/roomShapeToTopLeftWallGridIndexMap.ts +3 -2
  276. package/src/maps/transformationNameToPlayerFormMap.ts +3 -2
  277. package/src/maps/trinketDescriptionMap.ts +191 -192
  278. package/src/maps/trinketNameToTypeMap.ts +10 -7
  279. package/src/maps/trinketTypeToNameMap.ts +191 -193
  280. package/src/objects/LRoomShapeToRectangles.ts +35 -28
  281. package/src/objects/backdropTypeToRockAltType.ts +1 -2
  282. package/src/objects/bossNamePNGFileNames.ts +1 -2
  283. package/src/objects/bossPortraitPNGFileNames.ts +1 -2
  284. package/src/objects/cardDescriptions.ts +1 -2
  285. package/src/objects/cardNames.ts +1 -2
  286. package/src/objects/challengeNames.ts +1 -2
  287. package/src/objects/characterDamageMultipliers.ts +1 -2
  288. package/src/objects/characterNames.ts +1 -2
  289. package/src/objects/coinSubTypeToValue.ts +1 -2
  290. package/src/objects/directionNames.ts +1 -2
  291. package/src/objects/directionToDegrees.ts +1 -2
  292. package/src/objects/directionToMoveAction.ts +1 -2
  293. package/src/objects/directionToShootAction.ts +1 -2
  294. package/src/objects/directionToVector.ts +7 -10
  295. package/src/objects/doorSlotFlagToDoorSlot.ts +1 -2
  296. package/src/objects/doorSlotToDirection.ts +1 -2
  297. package/src/objects/doorSlotToDoorSlotFlag.ts +1 -2
  298. package/src/objects/isaacAPIClassTypeToBrand.ts +1 -5
  299. package/src/objects/languageNames.ts +1 -2
  300. package/src/objects/oppositeDoorSlots.ts +1 -2
  301. package/src/objects/pillEffectClasses.ts +1 -2
  302. package/src/objects/pillEffectNames.ts +1 -2
  303. package/src/objects/pillEffectTypes.ts +1 -2
  304. package/src/objects/playerNamePNGFileNames.ts +1 -2
  305. package/src/objects/playerPortraitPNGFileNames.ts +1 -2
  306. package/src/objects/roomShapeBounds.ts +3 -7
  307. package/src/objects/roomShapeCorners.ts +59 -62
  308. package/src/objects/roomShapeLayoutSizes.ts +6 -10
  309. package/src/objects/roomShapeToBottomRightPosition.ts +11 -17
  310. package/src/objects/roomShapeToDoorSlotCoordinates.ts +93 -94
  311. package/src/objects/roomShapeToDoorSlots.ts +11 -14
  312. package/src/objects/roomShapeToDoorSlotsToGridIndexDelta.ts +15 -14
  313. package/src/objects/roomShapeToGridWidth.ts +1 -2
  314. package/src/objects/roomShapeToTopLeftPosition.ts +6 -9
  315. package/src/objects/roomShapeVolumes.ts +1 -2
  316. package/src/objects/roomTypeGotoPrefixes.ts +1 -2
  317. package/src/objects/roomTypeNames.ts +1 -2
  318. package/src/objects/stageToMusic.ts +10 -11
  319. package/src/objects/stageTypeSuffixes.ts +1 -2
  320. package/src/objects/stageTypeToLetter.ts +1 -2
  321. package/src/objects/transformationNames.ts +1 -2
  322. package/src/objects/versusScreenBackgroundColors.ts +30 -33
  323. package/src/objects/versusScreenDirtSpotColors.ts +30 -33
  324. package/src/sets/LRoomShapesSet.ts +2 -1
  325. package/src/sets/bossSets.ts +51 -49
  326. package/src/sets/charactersThatStartWithAnActiveItemSet.ts +3 -2
  327. package/src/sets/charactersWithBlackHeartFromEternalHeartSet.ts +3 -2
  328. package/src/sets/charactersWithFreeDevilDealsSet.ts +4 -2
  329. package/src/sets/charactersWithNoRedHeartsSet.ts +11 -11
  330. package/src/sets/charactersWithNoSoulHeartsSet.ts +8 -8
  331. package/src/sets/chestPickupVariantsSet.ts +2 -1
  332. package/src/sets/consoleCommandsSet.ts +3 -1
  333. package/src/sets/entitiesWithArmorSet.ts +2 -1
  334. package/src/sets/familiarsThatShootPlayerTearsSet.ts +3 -2
  335. package/src/sets/itemConfigCardTypesForCardsSet.ts +11 -0
  336. package/src/sets/lostStyleCharactersSet.ts +2 -1
  337. package/src/sets/mineShaftRoomSubTypesSet.ts +8 -8
  338. package/src/sets/narrowRoomShapesSet.ts +2 -1
  339. package/src/sets/redHeartSubTypesSet.ts +2 -1
  340. package/src/sets/sinEntityTypesSet.ts +2 -1
  341. package/src/sets/singleUseActiveCollectibleTypesSet.ts +3 -2
  342. package/src/sets/storyBossesSet.ts +2 -1
  343. package/src/types/PickingUpItem.ts +2 -1
  344. package/src/types/ReadonlyMap.ts +13 -0
  345. package/src/types/ReadonlySet.ts +9 -0
  346. package/dist/src/types/HasAllEnumKeys.d.ts +0 -26
  347. package/dist/src/types/HasAllEnumKeys.d.ts.map +0 -1
  348. package/dist/src/types/HasAllEnumKeys.lua +0 -2
  349. package/src/types/HasAllEnumKeys.ts +0 -25
@@ -1,41 +1,38 @@
1
1
  import { StageID } from "isaac-typescript-definitions";
2
+ import { newReadonlyColor } from "../functions/readOnly";
2
3
 
3
4
  /** We arbitrarily specify a default color equal to that of Basement. */
4
- const DEFAULT_COLOR: Readonly<Color> = Color(26 / 255, 14 / 255, 12 / 255);
5
+ const DEFAULT_COLOR = newReadonlyColor(26 / 255, 14 / 255, 12 / 255);
5
6
 
6
7
  /** These values are taken from StageAPI. */
7
- // We need the colors to be read-only, so we specify the type instead of using the `satisfies`
8
- // operator.
9
- export const VERSUS_SCREEN_BACKGROUND_COLORS: {
10
- readonly [Key in StageID]: Readonly<Color>;
11
- } = {
8
+ export const VERSUS_SCREEN_BACKGROUND_COLORS = {
12
9
  [StageID.SPECIAL_ROOMS]: DEFAULT_COLOR, // 0
13
- [StageID.BASEMENT]: Color(26 / 255, 14 / 255, 12 / 255), // 1
14
- [StageID.CELLAR]: Color(26 / 255, 17 / 255, 13 / 255), // 2
15
- [StageID.BURNING_BASEMENT]: Color(28 / 255, 12 / 255, 10 / 255), // 3
16
- [StageID.CAVES]: Color(18 / 255, 13 / 255, 8 / 255), // 4
17
- [StageID.CATACOMBS]: Color(15 / 255, 10 / 255, 8 / 255), // 5
18
- [StageID.FLOODED_CAVES]: Color(21 / 255, 28 / 255, 35 / 255), // 6
19
- [StageID.DEPTHS]: Color(8 / 255, 8 / 255, 8 / 255), // 7
20
- [StageID.NECROPOLIS]: Color(10 / 255, 6 / 255, 6 / 255), // 8
21
- [StageID.DANK_DEPTHS]: Color(8 / 255, 8 / 255, 8 / 255), // 9
22
- [StageID.WOMB]: Color(27 / 255, 3 / 255, 3 / 255), // 10
23
- [StageID.UTERO]: Color(22 / 255, 6 / 255, 5 / 255), // 11
24
- [StageID.SCARRED_WOMB]: Color(42 / 255, 19 / 255, 10 / 255), // 12
25
- [StageID.BLUE_WOMB]: Color(26 / 255, 32 / 255, 40 / 255), // 13
26
- [StageID.SHEOL]: Color(6 / 255, 6 / 255, 6 / 255), // 14
27
- [StageID.CATHEDRAL]: Color(6 / 255, 13 / 255, 17 / 255), // 15
28
- [StageID.DARK_ROOM]: Color(9 / 255, 4 / 255, 3 / 255), // 16
29
- [StageID.CHEST]: Color(15 / 255, 9 / 255, 6 / 255), // 17
30
- [StageID.VOID]: Color(0, 0, 0), // 26
31
- [StageID.DOWNPOUR]: Color(29 / 255, 30 / 255, 32 / 255), // 27
32
- [StageID.DROSS]: Color(35 / 255, 35 / 255, 29 / 255), // 28
33
- [StageID.MINES]: Color(17 / 255, 15 / 255, 12 / 255), // 29
34
- [StageID.ASHPIT]: Color(12 / 255, 10 / 255, 10 / 255), // 30
35
- [StageID.MAUSOLEUM]: Color(14 / 255, 10 / 255, 14 / 255), // 31
36
- [StageID.GEHENNA]: Color(15 / 255, 4 / 255, 4 / 255), // 32
37
- [StageID.CORPSE]: Color(13 / 255, 14 / 255, 12 / 255), // 33
38
- [StageID.MORTIS]: Color(13 / 255, 14 / 255, 12 / 255), // 34
10
+ [StageID.BASEMENT]: newReadonlyColor(26 / 255, 14 / 255, 12 / 255), // 1
11
+ [StageID.CELLAR]: newReadonlyColor(26 / 255, 17 / 255, 13 / 255), // 2
12
+ [StageID.BURNING_BASEMENT]: newReadonlyColor(28 / 255, 12 / 255, 10 / 255), // 3
13
+ [StageID.CAVES]: newReadonlyColor(18 / 255, 13 / 255, 8 / 255), // 4
14
+ [StageID.CATACOMBS]: newReadonlyColor(15 / 255, 10 / 255, 8 / 255), // 5
15
+ [StageID.FLOODED_CAVES]: newReadonlyColor(21 / 255, 28 / 255, 35 / 255), // 6
16
+ [StageID.DEPTHS]: newReadonlyColor(8 / 255, 8 / 255, 8 / 255), // 7
17
+ [StageID.NECROPOLIS]: newReadonlyColor(10 / 255, 6 / 255, 6 / 255), // 8
18
+ [StageID.DANK_DEPTHS]: newReadonlyColor(8 / 255, 8 / 255, 8 / 255), // 9
19
+ [StageID.WOMB]: newReadonlyColor(27 / 255, 3 / 255, 3 / 255), // 10
20
+ [StageID.UTERO]: newReadonlyColor(22 / 255, 6 / 255, 5 / 255), // 11
21
+ [StageID.SCARRED_WOMB]: newReadonlyColor(42 / 255, 19 / 255, 10 / 255), // 12
22
+ [StageID.BLUE_WOMB]: newReadonlyColor(26 / 255, 32 / 255, 40 / 255), // 13
23
+ [StageID.SHEOL]: newReadonlyColor(6 / 255, 6 / 255, 6 / 255), // 14
24
+ [StageID.CATHEDRAL]: newReadonlyColor(6 / 255, 13 / 255, 17 / 255), // 15
25
+ [StageID.DARK_ROOM]: newReadonlyColor(9 / 255, 4 / 255, 3 / 255), // 16
26
+ [StageID.CHEST]: newReadonlyColor(15 / 255, 9 / 255, 6 / 255), // 17
27
+ [StageID.VOID]: newReadonlyColor(0, 0, 0), // 26
28
+ [StageID.DOWNPOUR]: newReadonlyColor(29 / 255, 30 / 255, 32 / 255), // 27
29
+ [StageID.DROSS]: newReadonlyColor(35 / 255, 35 / 255, 29 / 255), // 28
30
+ [StageID.MINES]: newReadonlyColor(17 / 255, 15 / 255, 12 / 255), // 29
31
+ [StageID.ASHPIT]: newReadonlyColor(12 / 255, 10 / 255, 10 / 255), // 30
32
+ [StageID.MAUSOLEUM]: newReadonlyColor(14 / 255, 10 / 255, 14 / 255), // 31
33
+ [StageID.GEHENNA]: newReadonlyColor(15 / 255, 4 / 255, 4 / 255), // 32
34
+ [StageID.CORPSE]: newReadonlyColor(13 / 255, 14 / 255, 12 / 255), // 33
35
+ [StageID.MORTIS]: newReadonlyColor(13 / 255, 14 / 255, 12 / 255), // 34
39
36
  [StageID.HOME]: DEFAULT_COLOR, // 35
40
37
  [StageID.BACKWARDS]: DEFAULT_COLOR, // 36
41
- } as const;
38
+ } as const satisfies Record<StageID, Readonly<Color>>;
@@ -1,41 +1,38 @@
1
1
  import { StageID } from "isaac-typescript-definitions";
2
+ import { newReadonlyColor } from "../functions/readOnly";
2
3
 
3
4
  /** We arbitrarily specify a default color equal to that of Basement. */
4
- const DEFAULT_COLOR: Readonly<Color> = Color(201 / 255, 114 / 255, 96 / 255);
5
+ const DEFAULT_COLOR = newReadonlyColor(201 / 255, 114 / 255, 96 / 255);
5
6
 
6
7
  /** These values are taken from StageAPI. */
7
- // We need the colors to be read-only, so we specify the type instead of using the `satisfies`
8
- // operator.
9
- export const VERSUS_SCREEN_DIRT_SPOT_COLORS: {
10
- readonly [Key in StageID]: Readonly<Color>;
11
- } = {
8
+ export const VERSUS_SCREEN_DIRT_SPOT_COLORS = {
12
9
  [StageID.SPECIAL_ROOMS]: DEFAULT_COLOR, // 0
13
- [StageID.BASEMENT]: Color(201 / 255, 114 / 255, 96 / 255), // 1
14
- [StageID.CELLAR]: Color(229 / 255, 157 / 255, 111 / 255), // 2
15
- [StageID.BURNING_BASEMENT]: Color(252 / 255, 108 / 255, 90 / 255), // 3
16
- [StageID.CAVES]: Color(167 / 255, 111 / 255, 75 / 255), // 4
17
- [StageID.CATACOMBS]: Color(135 / 255, 90 / 255, 80 / 255), // 5
18
- [StageID.FLOODED_CAVES]: Color(111 / 255, 147 / 255, 180 / 255), // 6
19
- [StageID.DEPTHS]: Color(70 / 255, 70 / 255, 72 / 255), // 7
20
- [StageID.NECROPOLIS]: Color(88 / 255, 67 / 255, 54 / 255), // 8
21
- [StageID.DANK_DEPTHS]: Color(70 / 255, 70 / 255, 72 / 255), // 9
22
- [StageID.WOMB]: Color(241 / 255, 28 / 255, 28 / 255), // 10
23
- [StageID.UTERO]: Color(199 / 255, 60 / 255, 48 / 255), // 11
24
- [StageID.SCARRED_WOMB]: Color(247 / 255, 152 / 255, 88 / 255), // 12
25
- [StageID.BLUE_WOMB]: Color(157 / 255, 209 / 255, 255 / 255), // 13
26
- [StageID.SHEOL]: Color(60 / 255, 54 / 255, 54 / 255), // 14
27
- [StageID.CATHEDRAL]: Color(44 / 255, 100 / 255, 111 / 255), // 15
28
- [StageID.DARK_ROOM]: Color(80 / 255, 38 / 255, 20 / 255), // 16
29
- [StageID.CHEST]: Color(175 / 255, 108 / 255, 72 / 255), // 17
30
- [StageID.VOID]: Color(70 / 255, 5 / 255, 5 / 255), // 26
31
- [StageID.DOWNPOUR]: Color(149 / 255, 157 / 255, 167 / 255), // 27
32
- [StageID.DROSS]: Color(179 / 255, 179 / 255, 143 / 255), // 28
33
- [StageID.MINES]: Color(93 / 255, 85 / 255, 72 / 255), // 29
34
- [StageID.ASHPIT]: Color(106 / 255, 102 / 255, 94 / 255), // 30
35
- [StageID.MAUSOLEUM]: Color(70 / 255, 59 / 255, 72 / 255), // 31
36
- [StageID.GEHENNA]: Color(59 / 255, 41 / 255, 41 / 255), // 32
37
- [StageID.CORPSE]: Color(124 / 255, 134 / 255, 111 / 255), // 33
38
- [StageID.MORTIS]: Color(124 / 255, 134 / 255, 111 / 255), // 34
10
+ [StageID.BASEMENT]: newReadonlyColor(201 / 255, 114 / 255, 96 / 255), // 1
11
+ [StageID.CELLAR]: newReadonlyColor(229 / 255, 157 / 255, 111 / 255), // 2
12
+ [StageID.BURNING_BASEMENT]: newReadonlyColor(252 / 255, 108 / 255, 90 / 255), // 3
13
+ [StageID.CAVES]: newReadonlyColor(167 / 255, 111 / 255, 75 / 255), // 4
14
+ [StageID.CATACOMBS]: newReadonlyColor(135 / 255, 90 / 255, 80 / 255), // 5
15
+ [StageID.FLOODED_CAVES]: newReadonlyColor(111 / 255, 147 / 255, 180 / 255), // 6
16
+ [StageID.DEPTHS]: newReadonlyColor(70 / 255, 70 / 255, 72 / 255), // 7
17
+ [StageID.NECROPOLIS]: newReadonlyColor(88 / 255, 67 / 255, 54 / 255), // 8
18
+ [StageID.DANK_DEPTHS]: newReadonlyColor(70 / 255, 70 / 255, 72 / 255), // 9
19
+ [StageID.WOMB]: newReadonlyColor(241 / 255, 28 / 255, 28 / 255), // 10
20
+ [StageID.UTERO]: newReadonlyColor(199 / 255, 60 / 255, 48 / 255), // 11
21
+ [StageID.SCARRED_WOMB]: newReadonlyColor(247 / 255, 152 / 255, 88 / 255), // 12
22
+ [StageID.BLUE_WOMB]: newReadonlyColor(157 / 255, 209 / 255, 255 / 255), // 13
23
+ [StageID.SHEOL]: newReadonlyColor(60 / 255, 54 / 255, 54 / 255), // 14
24
+ [StageID.CATHEDRAL]: newReadonlyColor(44 / 255, 100 / 255, 111 / 255), // 15
25
+ [StageID.DARK_ROOM]: newReadonlyColor(80 / 255, 38 / 255, 20 / 255), // 16
26
+ [StageID.CHEST]: newReadonlyColor(175 / 255, 108 / 255, 72 / 255), // 17
27
+ [StageID.VOID]: newReadonlyColor(70 / 255, 5 / 255, 5 / 255), // 26
28
+ [StageID.DOWNPOUR]: newReadonlyColor(149 / 255, 157 / 255, 167 / 255), // 27
29
+ [StageID.DROSS]: newReadonlyColor(179 / 255, 179 / 255, 143 / 255), // 28
30
+ [StageID.MINES]: newReadonlyColor(93 / 255, 85 / 255, 72 / 255), // 29
31
+ [StageID.ASHPIT]: newReadonlyColor(106 / 255, 102 / 255, 94 / 255), // 30
32
+ [StageID.MAUSOLEUM]: newReadonlyColor(70 / 255, 59 / 255, 72 / 255), // 31
33
+ [StageID.GEHENNA]: newReadonlyColor(59 / 255, 41 / 255, 41 / 255), // 32
34
+ [StageID.CORPSE]: newReadonlyColor(124 / 255, 134 / 255, 111 / 255), // 33
35
+ [StageID.MORTIS]: newReadonlyColor(124 / 255, 134 / 255, 111 / 255), // 34
39
36
  [StageID.HOME]: DEFAULT_COLOR, // 35
40
37
  [StageID.BACKWARDS]: DEFAULT_COLOR, // 36
41
- } as const;
38
+ } as const satisfies Record<StageID, Readonly<Color>>;
@@ -1,6 +1,7 @@
1
1
  import { RoomShape } from "isaac-typescript-definitions";
2
+ import { ReadonlySet } from "../types/ReadonlySet";
2
3
 
3
- export const L_ROOM_SHAPES_SET: ReadonlySet<RoomShape> = new Set([
4
+ export const L_ROOM_SHAPES_SET = new ReadonlySet<RoomShape>([
4
5
  RoomShape.LTL, // 9
5
6
  RoomShape.LTR, // 10
6
7
  RoomShape.LBL, // 11
@@ -31,6 +31,8 @@ import {
31
31
  } from "isaac-typescript-definitions";
32
32
  import { parseEntityTypeVariantString } from "../functions/entities";
33
33
  import { copySet } from "../functions/set";
34
+ import { ReadonlyMap } from "../types/ReadonlyMap";
35
+ import { ReadonlySet } from "../types/ReadonlySet";
34
36
  import { STORY_BOSSES_SET } from "./storyBossesSet";
35
37
 
36
38
  // The "bosspools.xml" file does not actually correspond to the real boss pools, so these sets were
@@ -40,7 +42,7 @@ import { STORY_BOSSES_SET } from "./storyBossesSet";
40
42
  // not have real tuples. If we store bosses as tuples, then we cannot do a set lookup in O(1).
41
43
 
42
44
  /** Contains just the bosses in Basement (not e.g. Burning Basement). */
43
- const BASEMENT_BOSSES_SET: ReadonlySet<string> = new Set([
45
+ const BASEMENT_BOSSES_SET = new ReadonlySet<string>([
44
46
  `${EntityType.LARRY_JR}.${LarryJrVariant.LARRY_JR}`, // 19.0
45
47
  `${EntityType.MONSTRO}.0`, // 20.0
46
48
  `${EntityType.FAMINE}.0`, // 63.0
@@ -58,7 +60,7 @@ const BASEMENT_BOSSES_SET: ReadonlySet<string> = new Set([
58
60
  ]);
59
61
 
60
62
  /** Contains just the bosses in Cellar (not e.g. Burning Basement). */
61
- const CELLAR_BOSSES_SET: ReadonlySet<string> = new Set([
63
+ const CELLAR_BOSSES_SET = new ReadonlySet<string>([
62
64
  `${EntityType.PIN}.${PinVariant.PIN}`, // 62.0
63
65
  `${EntityType.FAMINE}.0`, // 63.0
64
66
  `${EntityType.DUKE_OF_FLIES}.${DukeOfFliesVariant.DUKE_OF_FLIES}`, // 67.0
@@ -73,7 +75,7 @@ const CELLAR_BOSSES_SET: ReadonlySet<string> = new Set([
73
75
  ]);
74
76
 
75
77
  /** Contains just the bosses in Burning Basement (not e.g. Cellar). */
76
- const BURNING_BASEMENT_BOSSES_SET: ReadonlySet<string> = new Set([
78
+ const BURNING_BASEMENT_BOSSES_SET = new ReadonlySet<string>([
77
79
  `${EntityType.LARRY_JR}.${LarryJrVariant.LARRY_JR}`, // 19.0
78
80
  `${EntityType.MONSTRO}.0`, // 20.0
79
81
  `${EntityType.FAMINE}.0`, // 63.0
@@ -92,7 +94,7 @@ const BURNING_BASEMENT_BOSSES_SET: ReadonlySet<string> = new Set([
92
94
  ]);
93
95
 
94
96
  /** Contains just the bosses in Downpour (not e.g. Burning Basement). */
95
- const DOWNPOUR_BOSSES_SET: ReadonlySet<string> = new Set([
97
+ const DOWNPOUR_BOSSES_SET = new ReadonlySet<string>([
96
98
  `${EntityType.PIN}.${PinVariant.WORMWOOD}`, // 62.3
97
99
  `${EntityType.LIL_BLUB}.0`, // 901.0
98
100
  `${EntityType.RAINMAKER}.0`, // 902.0
@@ -100,7 +102,7 @@ const DOWNPOUR_BOSSES_SET: ReadonlySet<string> = new Set([
100
102
  ]);
101
103
 
102
104
  /** Contains just the bosses in Dross (not e.g. Burning Basement). */
103
- const DROSS_BOSSES_SET: ReadonlySet<string> = new Set([
105
+ const DROSS_BOSSES_SET = new ReadonlySet<string>([
104
106
  `${EntityType.PIN}.${PinVariant.WORMWOOD}`, // 62.3
105
107
  `${EntityType.LIL_BLUB}.0`, // 901.0
106
108
  `${EntityType.CLOG}.0`, // 914.0
@@ -109,7 +111,7 @@ const DROSS_BOSSES_SET: ReadonlySet<string> = new Set([
109
111
  ]);
110
112
 
111
113
  /** The set of unique bosses for Basement, Cellar, and so on. */
112
- const ALL_BASEMENT_BOSSES_SET: ReadonlySet<string> = new Set([
114
+ const ALL_BASEMENT_BOSSES_SET = new ReadonlySet<string>([
113
115
  ...BASEMENT_BOSSES_SET.values(),
114
116
  ...CELLAR_BOSSES_SET.values(),
115
117
  ...BURNING_BASEMENT_BOSSES_SET.values(),
@@ -117,10 +119,10 @@ const ALL_BASEMENT_BOSSES_SET: ReadonlySet<string> = new Set([
117
119
  ...DROSS_BOSSES_SET.values(),
118
120
  ]);
119
121
 
120
- const BASEMENT_STAGE_TYPE_TO_BOSS_SET_MAP: ReadonlyMap<
122
+ const BASEMENT_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
121
123
  StageType,
122
124
  ReadonlySet<string>
123
- > = new Map([
125
+ >([
124
126
  [StageType.ORIGINAL, BASEMENT_BOSSES_SET],
125
127
  [StageType.WRATH_OF_THE_LAMB, CELLAR_BOSSES_SET],
126
128
  [StageType.AFTERBIRTH, BURNING_BASEMENT_BOSSES_SET],
@@ -129,7 +131,7 @@ const BASEMENT_STAGE_TYPE_TO_BOSS_SET_MAP: ReadonlyMap<
129
131
  ]);
130
132
 
131
133
  /** Contains just the bosses in Caves (not e.g. Flooded Caves). */
132
- const CAVES_BOSSES_SET: ReadonlySet<string> = new Set([
134
+ const CAVES_BOSSES_SET = new ReadonlySet<string>([
133
135
  `${EntityType.CHUB}.${ChubVariant.CHUB}`, // 28.0
134
136
  `${EntityType.CHUB}.${ChubVariant.CHAD}`, // 28.1
135
137
  `${EntityType.GURDY}.0`, // 36.0
@@ -148,7 +150,7 @@ const CAVES_BOSSES_SET: ReadonlySet<string> = new Set([
148
150
  ]);
149
151
 
150
152
  /** Contains just the bosses in Catacombs (not e.g. Flooded Caves). */
151
- const CATACOMBS_BOSSES_SET: ReadonlySet<string> = new Set([
153
+ const CATACOMBS_BOSSES_SET = new ReadonlySet<string>([
152
154
  `${EntityType.LARRY_JR}.${LarryJrVariant.THE_HOLLOW}`, // 19.1
153
155
  `${EntityType.CHUB}.${ChubVariant.CARRION_QUEEN}`, // 28.2
154
156
  `${EntityType.PIN}.${PinVariant.FRAIL}`, // 62.2
@@ -168,7 +170,7 @@ const CATACOMBS_BOSSES_SET: ReadonlySet<string> = new Set([
168
170
  ]);
169
171
 
170
172
  /** Contains just the bosses in Flooded Caves (not e.g. Catacombs). */
171
- const FLOODED_CAVES_BOSSES_SET: ReadonlySet<string> = new Set([
173
+ const FLOODED_CAVES_BOSSES_SET = new ReadonlySet<string>([
172
174
  `${EntityType.CHUB}.${ChubVariant.CHUB}`, // 28.0
173
175
  `${EntityType.CHUB}.${ChubVariant.CHAD}`, // 28.1
174
176
  `${EntityType.GURDY}.0`, // 36.0
@@ -189,7 +191,7 @@ const FLOODED_CAVES_BOSSES_SET: ReadonlySet<string> = new Set([
189
191
  ]);
190
192
 
191
193
  /** Contains just the bosses in Mines (not e.g. Flooded Caves). */
192
- const MINES_BOSSES_SET: ReadonlySet<string> = new Set([
194
+ const MINES_BOSSES_SET = new ReadonlySet<string>([
193
195
  `${EntityType.LARRY_JR}.${LarryJrVariant.TUFF_TWIN}`, // 19.2
194
196
  `${EntityType.REAP_CREEP}.0`, // 900.0
195
197
  `${EntityType.HORNFEL}.0`, // 906.0
@@ -197,7 +199,7 @@ const MINES_BOSSES_SET: ReadonlySet<string> = new Set([
197
199
  ]);
198
200
 
199
201
  /** Contains just the bosses in Ashpit (not e.g. Flooded Caves). */
200
- const ASHPIT_BOSSES_SET: ReadonlySet<string> = new Set([
202
+ const ASHPIT_BOSSES_SET = new ReadonlySet<string>([
201
203
  `${EntityType.LARRY_JR}.${LarryJrVariant.THE_SHELL}`, // 19.3
202
204
  `${EntityType.POLYCEPHALUS}.${PolycephalusVariant.THE_PILE}`, // 269.1
203
205
  `${EntityType.GREAT_GIDEON}.0`, // 907.0
@@ -206,7 +208,7 @@ const ASHPIT_BOSSES_SET: ReadonlySet<string> = new Set([
206
208
  ]);
207
209
 
208
210
  /** The set of unique bosses for Caves, Catacombs, and so on. */
209
- const ALL_CAVES_BOSSES_SET: ReadonlySet<string> = new Set([
211
+ const ALL_CAVES_BOSSES_SET = new ReadonlySet<string>([
210
212
  ...CAVES_BOSSES_SET.values(),
211
213
  ...CATACOMBS_BOSSES_SET.values(),
212
214
  ...FLOODED_CAVES_BOSSES_SET.values(),
@@ -214,10 +216,10 @@ const ALL_CAVES_BOSSES_SET: ReadonlySet<string> = new Set([
214
216
  ...ASHPIT_BOSSES_SET.values(),
215
217
  ]);
216
218
 
217
- const CAVES_STAGE_TYPE_TO_BOSS_SET_MAP: ReadonlyMap<
219
+ const CAVES_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
218
220
  StageType,
219
221
  ReadonlySet<string>
220
- > = new Map([
222
+ >([
221
223
  [StageType.ORIGINAL, CAVES_BOSSES_SET],
222
224
  [StageType.WRATH_OF_THE_LAMB, CATACOMBS_BOSSES_SET],
223
225
  [StageType.AFTERBIRTH, FLOODED_CAVES_BOSSES_SET],
@@ -226,7 +228,7 @@ const CAVES_STAGE_TYPE_TO_BOSS_SET_MAP: ReadonlyMap<
226
228
  ]);
227
229
 
228
230
  /** Contains just the bosses in Depths (not e.g. Dank Depths). */
229
- const DEPTHS_BOSSES_SET: ReadonlySet<string> = new Set([
231
+ const DEPTHS_BOSSES_SET = new ReadonlySet<string>([
230
232
  `${EntityType.MONSTRO_2}.${Monstro2Variant.MONSTRO_2}`, // 43.0
231
233
  `${EntityType.MONSTRO_2}.${Monstro2Variant.GISH}`, // 43.1
232
234
  `${EntityType.MOM}.${MomVariant.MOM}`, // 45.0
@@ -242,7 +244,7 @@ const DEPTHS_BOSSES_SET: ReadonlySet<string> = new Set([
242
244
  ]);
243
245
 
244
246
  /** Contains just the bosses in Necropolis (not e.g. Dank Depths). */
245
- const NECROPOLIS_BOSSES_SET: ReadonlySet<string> = new Set([
247
+ const NECROPOLIS_BOSSES_SET = new ReadonlySet<string>([
246
248
  `${EntityType.MOM}.${MomVariant.MOM}`, // 45.0
247
249
  `${EntityType.WAR}.${WarVariant.WAR}`, // 65.0
248
250
  `${EntityType.PEEP}.${PeepVariant.BLOAT}`, // 68.1
@@ -257,7 +259,7 @@ const NECROPOLIS_BOSSES_SET: ReadonlySet<string> = new Set([
257
259
  ]);
258
260
 
259
261
  /** Contains just the bosses in Dank Depths (not e.g. Necropolis). */
260
- const DANK_DEPTHS_BOSSES_SET: ReadonlySet<string> = new Set([
262
+ const DANK_DEPTHS_BOSSES_SET = new ReadonlySet<string>([
261
263
  `${EntityType.MONSTRO_2}.${Monstro2Variant.MONSTRO_2}`, // 43.0
262
264
  `${EntityType.MONSTRO_2}.${Monstro2Variant.GISH}`, // 43.1
263
265
  `${EntityType.MOM}.${MomVariant.MOM}`, // 45.0
@@ -273,21 +275,21 @@ const DANK_DEPTHS_BOSSES_SET: ReadonlySet<string> = new Set([
273
275
  ]);
274
276
 
275
277
  /** Contains just the bosses in Mausoleum (not e.g. Dank Depths). */
276
- const MAUSOLEUM_BOSSES_SET: ReadonlySet<string> = new Set([
278
+ const MAUSOLEUM_BOSSES_SET = new ReadonlySet<string>([
277
279
  `${EntityType.MOM}.${MomVariant.MOM}`, // 45.0
278
280
  `${EntityType.SIREN}.0`, // 904.0
279
281
  `${EntityType.HERETIC}.0`, // 905.0
280
282
  ]);
281
283
 
282
284
  /** Contains just the bosses in Gehenna (not e.g. Dank Depths). */
283
- const GEHENNA_BOSSES_SET: ReadonlySet<string> = new Set([
285
+ const GEHENNA_BOSSES_SET = new ReadonlySet<string>([
284
286
  `${EntityType.MOM}.${MomVariant.MOM}`, // 45.0
285
287
  `${EntityType.VISAGE}.0`, // 903.0
286
288
  `${EntityType.HORNY_BOYS}.0`, // 920.0
287
289
  ]);
288
290
 
289
291
  /** The set of unique bosses for Depths, Necropolis, and so on. */
290
- const ALL_DEPTHS_BOSSES_SET: ReadonlySet<string> = new Set([
292
+ const ALL_DEPTHS_BOSSES_SET = new ReadonlySet<string>([
291
293
  ...DEPTHS_BOSSES_SET.values(),
292
294
  ...NECROPOLIS_BOSSES_SET.values(),
293
295
  ...DANK_DEPTHS_BOSSES_SET.values(),
@@ -295,10 +297,10 @@ const ALL_DEPTHS_BOSSES_SET: ReadonlySet<string> = new Set([
295
297
  ...GEHENNA_BOSSES_SET.values(),
296
298
  ]);
297
299
 
298
- const DEPTHS_STAGE_TYPE_TO_BOSS_SET_MAP: ReadonlyMap<
300
+ const DEPTHS_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
299
301
  StageType,
300
302
  ReadonlySet<string>
301
- > = new Map([
303
+ >([
302
304
  [StageType.ORIGINAL, DEPTHS_BOSSES_SET],
303
305
  [StageType.WRATH_OF_THE_LAMB, NECROPOLIS_BOSSES_SET],
304
306
  [StageType.AFTERBIRTH, DANK_DEPTHS_BOSSES_SET],
@@ -307,7 +309,7 @@ const DEPTHS_STAGE_TYPE_TO_BOSS_SET_MAP: ReadonlyMap<
307
309
  ]);
308
310
 
309
311
  /** Contains just the bosses in Womb (not e.g. Scarred Womb). */
310
- const WOMB_BOSSES_SET: ReadonlySet<string> = new Set([
312
+ const WOMB_BOSSES_SET = new ReadonlySet<string>([
311
313
  `${EntityType.PIN}.${PinVariant.SCOLEX}`, // 62.1
312
314
  `${EntityType.WAR}.${WarVariant.CONQUEST}`, // 65.1
313
315
  `${EntityType.DEATH}.0`, // 66.0
@@ -323,7 +325,7 @@ const WOMB_BOSSES_SET: ReadonlySet<string> = new Set([
323
325
  ]);
324
326
 
325
327
  /** Contains just the bosses in Utero (not e.g. Scarred Womb). */
326
- const UTERO_BOSSES_SET: ReadonlySet<string> = new Set([
328
+ const UTERO_BOSSES_SET = new ReadonlySet<string>([
327
329
  `${EntityType.WAR}.${WarVariant.CONQUEST}`, // 65.1
328
330
  `${EntityType.DEATH}.0`, // 66.0
329
331
  `${EntityType.DADDY_LONG_LEGS}.${DaddyLongLegsVariant.DADDY_LONG_LEGS}`, // 101.0
@@ -338,7 +340,7 @@ const UTERO_BOSSES_SET: ReadonlySet<string> = new Set([
338
340
  ]);
339
341
 
340
342
  /** Contains just the bosses in Scarred Womb (not e.g. Utero). */
341
- const SCARRED_WOMB_BOSSES_SET: ReadonlySet<string> = new Set([
343
+ const SCARRED_WOMB_BOSSES_SET = new ReadonlySet<string>([
342
344
  `${EntityType.PIN}.${PinVariant.SCOLEX}`, // 62.1
343
345
  `${EntityType.WAR}.${WarVariant.CONQUEST}`, // 65.1
344
346
  `${EntityType.DEATH}.0`, // 66.0
@@ -355,7 +357,7 @@ const SCARRED_WOMB_BOSSES_SET: ReadonlySet<string> = new Set([
355
357
  ]);
356
358
 
357
359
  /** Contains just the bosses in Corpse (not e.g. Scarred Womb). */
358
- const CORPSE_BOSSES_SET: ReadonlySet<string> = new Set([
360
+ const CORPSE_BOSSES_SET = new ReadonlySet<string>([
359
361
  `${EntityType.SCOURGE}.0`, // 909.0
360
362
  `${EntityType.CHIMERA}.0`, // 910.0
361
363
  `${EntityType.ROTGUT}.0`, // 911.0
@@ -363,7 +365,7 @@ const CORPSE_BOSSES_SET: ReadonlySet<string> = new Set([
363
365
  ]);
364
366
 
365
367
  /** The set of unique bosses for Depths, Necropolis, and so on. */
366
- const ALL_WOMB_BOSSES_SET: ReadonlySet<string> = new Set([
368
+ const ALL_WOMB_BOSSES_SET = new ReadonlySet<string>([
367
369
  ...WOMB_BOSSES_SET.values(),
368
370
  ...UTERO_BOSSES_SET.values(),
369
371
  ...SCARRED_WOMB_BOSSES_SET.values(),
@@ -371,70 +373,70 @@ const ALL_WOMB_BOSSES_SET: ReadonlySet<string> = new Set([
371
373
  ...GEHENNA_BOSSES_SET.values(),
372
374
  ]);
373
375
 
374
- const WOMB_STAGE_TYPE_TO_BOSS_SET_MAP: ReadonlyMap<
376
+ const WOMB_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
375
377
  StageType,
376
378
  ReadonlySet<string>
377
- > = new Map([
379
+ >([
378
380
  [StageType.ORIGINAL, WOMB_BOSSES_SET],
379
381
  [StageType.WRATH_OF_THE_LAMB, UTERO_BOSSES_SET],
380
382
  [StageType.AFTERBIRTH, SCARRED_WOMB_BOSSES_SET],
381
383
  [StageType.REPENTANCE, CORPSE_BOSSES_SET],
382
384
  ]);
383
385
 
384
- const BLUE_WOMB_BOSSES_SET: ReadonlySet<string> = new Set([
386
+ const BLUE_WOMB_BOSSES_SET = new ReadonlySet<string>([
385
387
  `${EntityType.HUSH}.0`, // 407.0
386
388
  ]);
387
389
 
388
- const BLUE_WOMB_STAGE_TYPE_TO_BOSS_SET_MAP: ReadonlyMap<
390
+ const BLUE_WOMB_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
389
391
  StageType,
390
392
  ReadonlySet<string>
391
- > = new Map([[StageType.ORIGINAL, BLUE_WOMB_BOSSES_SET]]);
393
+ >([[StageType.ORIGINAL, BLUE_WOMB_BOSSES_SET]]);
392
394
 
393
- const SHEOL_BOSSES_SET: ReadonlySet<string> = new Set([
395
+ const SHEOL_BOSSES_SET = new ReadonlySet<string>([
394
396
  `${EntityType.SATAN}.${SatanVariant.SATAN}`, // 84.0
395
397
  ]);
396
- const CATHEDRAL_BOSSES_SET: ReadonlySet<string> = new Set([
398
+ const CATHEDRAL_BOSSES_SET = new ReadonlySet<string>([
397
399
  `${EntityType.ISAAC}.${IsaacVariant.ISAAC}`, // 102.0
398
400
  ]);
399
401
 
400
- const ALL_STAGE_10_BOSSES_SET: ReadonlySet<string> = new Set([
402
+ const ALL_STAGE_10_BOSSES_SET = new ReadonlySet<string>([
401
403
  ...SHEOL_BOSSES_SET.values(),
402
404
  ...CATHEDRAL_BOSSES_SET.values(),
403
405
  ]);
404
406
 
405
- const STAGE_10_STAGE_TYPE_TO_BOSS_SET_MAP: ReadonlyMap<
407
+ const STAGE_10_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
406
408
  StageType,
407
409
  ReadonlySet<string>
408
- > = new Map([
410
+ >([
409
411
  [StageType.ORIGINAL, SHEOL_BOSSES_SET],
410
412
  [StageType.WRATH_OF_THE_LAMB, CATHEDRAL_BOSSES_SET],
411
413
  ]);
412
414
 
413
- const DARK_ROOM_BOSSES_SET: ReadonlySet<string> = new Set([
415
+ const DARK_ROOM_BOSSES_SET = new ReadonlySet<string>([
414
416
  `${EntityType.THE_LAMB}.${LambVariant.LAMB}`, // 273.0
415
417
  ]);
416
418
 
417
- const CHEST_BOSSES_SET: ReadonlySet<string> = new Set([
419
+ const CHEST_BOSSES_SET = new ReadonlySet<string>([
418
420
  `${EntityType.ISAAC}.${IsaacVariant.BLUE_BABY}`, // 102.1
419
421
  ]);
420
422
 
421
- const ALL_STAGE_11_BOSSES_SET: ReadonlySet<string> = new Set([
423
+ const ALL_STAGE_11_BOSSES_SET = new ReadonlySet<string>([
422
424
  ...DARK_ROOM_BOSSES_SET.values(),
423
425
  ...CHEST_BOSSES_SET.values(),
424
426
  ]);
425
427
 
426
- const STAGE_11_STAGE_TYPE_TO_BOSS_SET_MAP: ReadonlyMap<
428
+ const STAGE_11_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
427
429
  StageType,
428
430
  ReadonlySet<string>
429
- > = new Map([
431
+ >([
430
432
  [StageType.ORIGINAL, DARK_ROOM_BOSSES_SET],
431
433
  [StageType.WRATH_OF_THE_LAMB, CHEST_BOSSES_SET],
432
434
  ]);
433
435
 
434
- export const STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP: ReadonlyMap<
436
+ export const STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP = new ReadonlyMap<
435
437
  int,
436
438
  ReadonlyMap<int, ReadonlySet<string>>
437
- > = new Map([
439
+ >([
438
440
  [1, BASEMENT_STAGE_TYPE_TO_BOSS_SET_MAP],
439
441
  [2, BASEMENT_STAGE_TYPE_TO_BOSS_SET_MAP],
440
442
  [3, CAVES_STAGE_TYPE_TO_BOSS_SET_MAP],
@@ -448,10 +450,10 @@ export const STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP: ReadonlyMap<
448
450
  [11, STAGE_11_STAGE_TYPE_TO_BOSS_SET_MAP],
449
451
  ]);
450
452
 
451
- export const STAGE_TO_COMBINED_BOSS_SET_MAP: ReadonlyMap<
453
+ export const STAGE_TO_COMBINED_BOSS_SET_MAP = new ReadonlyMap<
452
454
  int,
453
455
  ReadonlySet<string>
454
- > = new Map([
456
+ >([
455
457
  [1, ALL_BASEMENT_BOSSES_SET],
456
458
  [2, ALL_BASEMENT_BOSSES_SET],
457
459
  [3, ALL_CAVES_BOSSES_SET],
@@ -465,7 +467,7 @@ export const STAGE_TO_COMBINED_BOSS_SET_MAP: ReadonlyMap<
465
467
  [11, ALL_STAGE_11_BOSSES_SET],
466
468
  ]);
467
469
 
468
- export const ALL_BOSSES_SET: ReadonlySet<string> = new Set([
470
+ export const ALL_BOSSES_SET = new ReadonlySet<string>([
469
471
  ...ALL_BASEMENT_BOSSES_SET.values(),
470
472
  ...ALL_CAVES_BOSSES_SET.values(),
471
473
  ...ALL_DEPTHS_BOSSES_SET.values(),
@@ -1,7 +1,8 @@
1
1
  import { PlayerType } from "isaac-typescript-definitions";
2
+ import { ReadonlySet } from "../types/ReadonlySet";
2
3
 
3
- export const CHARACTERS_THAT_START_WITH_AN_ACTIVE_ITEM_SET: ReadonlySet<PlayerType> =
4
- new Set([
4
+ export const CHARACTERS_THAT_START_WITH_AN_ACTIVE_ITEM_SET =
5
+ new ReadonlySet<PlayerType>([
5
6
  PlayerType.ISAAC, // 0
6
7
  PlayerType.MAGDALENE, // 1
7
8
  PlayerType.JUDAS, // 3
@@ -1,7 +1,8 @@
1
1
  import { PlayerType } from "isaac-typescript-definitions";
2
+ import { ReadonlySet } from "../types/ReadonlySet";
2
3
 
3
- export const CHARACTERS_WITH_BLACK_HEART_FROM_ETERNAL_HEART_SET: ReadonlySet<PlayerType> =
4
- new Set([
4
+ export const CHARACTERS_WITH_BLACK_HEART_FROM_ETERNAL_HEART_SET =
5
+ new ReadonlySet<PlayerType>([
5
6
  PlayerType.DARK_JUDAS, // 12
6
7
  PlayerType.JUDAS_B, // 24
7
8
  ]);
@@ -1,4 +1,6 @@
1
1
  import { PlayerType } from "isaac-typescript-definitions";
2
+ import { ReadonlySet } from "../types/ReadonlySet";
2
3
 
3
- export const CHARACTERS_WITH_FREE_DEVIL_DEALS_SET: ReadonlySet<PlayerType> =
4
- new Set([PlayerType.LOST, PlayerType.LOST_B, PlayerType.JACOB_2_B]);
4
+ export const CHARACTERS_WITH_FREE_DEVIL_DEALS_SET = new ReadonlySet<PlayerType>(
5
+ [PlayerType.LOST, PlayerType.LOST_B, PlayerType.JACOB_2_B],
6
+ );
@@ -1,17 +1,17 @@
1
1
  import { PlayerType } from "isaac-typescript-definitions";
2
+ import { ReadonlySet } from "../types/ReadonlySet";
2
3
 
3
4
  /**
4
5
  * The set of characters where red heart containers will be turned into soul hearts (e.g. Blue
5
6
  * Baby). This includes The Lost and Tainted Lost. This does not include Keeper or Tainted Keeper.
6
7
  */
7
- export const CHARACTERS_WITH_NO_RED_HEARTS_SET: ReadonlySet<PlayerType> =
8
- new Set([
9
- PlayerType.BLUE_BABY, // 4
10
- PlayerType.LOST, // 10
11
- PlayerType.DARK_JUDAS, // 12
12
- PlayerType.JUDAS_B, // 24
13
- PlayerType.BLUE_BABY_B, // 25
14
- PlayerType.LOST_B, // 31
15
- PlayerType.FORGOTTEN_B, // 35
16
- PlayerType.BETHANY_B, // 36
17
- ]);
8
+ export const CHARACTERS_WITH_NO_RED_HEARTS_SET = new ReadonlySet<PlayerType>([
9
+ PlayerType.BLUE_BABY, // 4
10
+ PlayerType.LOST, // 10
11
+ PlayerType.DARK_JUDAS, // 12
12
+ PlayerType.JUDAS_B, // 24
13
+ PlayerType.BLUE_BABY_B, // 25
14
+ PlayerType.LOST_B, // 31
15
+ PlayerType.FORGOTTEN_B, // 35
16
+ PlayerType.BETHANY_B, // 36
17
+ ]);
@@ -1,14 +1,14 @@
1
1
  import { PlayerType } from "isaac-typescript-definitions";
2
+ import { ReadonlySet } from "../types/ReadonlySet";
2
3
 
3
4
  /**
4
5
  * The set of characters where soul hearts will be automatically stripped away (e.g. Bethany). This
5
6
  * includes The Lost and Tainted Lost.
6
7
  */
7
- export const CHARACTERS_WITH_NO_SOUL_HEARTS_SET: ReadonlySet<PlayerType> =
8
- new Set([
9
- PlayerType.LOST, // 10
10
- PlayerType.KEEPER, // 14
11
- PlayerType.BETHANY, // 18
12
- PlayerType.LOST_B, // 31
13
- PlayerType.KEEPER_B, // 33
14
- ]);
8
+ export const CHARACTERS_WITH_NO_SOUL_HEARTS_SET = new ReadonlySet<PlayerType>([
9
+ PlayerType.LOST, // 10
10
+ PlayerType.KEEPER, // 14
11
+ PlayerType.BETHANY, // 18
12
+ PlayerType.LOST_B, // 31
13
+ PlayerType.KEEPER_B, // 33
14
+ ]);
@@ -1,6 +1,7 @@
1
1
  import { PickupVariant } from "isaac-typescript-definitions";
2
+ import { ReadonlySet } from "../types/ReadonlySet";
2
3
 
3
- export const CHEST_PICKUP_VARIANTS: ReadonlySet<PickupVariant> = new Set([
4
+ export const CHEST_PICKUP_VARIANTS = new ReadonlySet<PickupVariant>([
4
5
  PickupVariant.CHEST, // 50
5
6
  PickupVariant.BOMB_CHEST, // 51
6
7
  PickupVariant.SPIKED_CHEST, // 52
@@ -1,8 +1,10 @@
1
+ import { ReadonlySet } from "../types/ReadonlySet";
2
+
1
3
  /**
2
4
  * The set of vanilla console commands, as documented here:
3
5
  * https://bindingofisaacrebirth.fandom.com/wiki/Debug_Console
4
6
  */
5
- export const CONSOLE_COMMANDS_SET: ReadonlySet<string> = new Set([
7
+ export const CONSOLE_COMMANDS_SET = new ReadonlySet<string>([
6
8
  // Listed commands
7
9
  "achievement",
8
10
  "challenge",
@@ -21,6 +21,7 @@ import {
21
21
  UltraGreedVariant,
22
22
  WallCreepVariant,
23
23
  } from "isaac-typescript-definitions";
24
+ import { ReadonlySet } from "../types/ReadonlySet";
24
25
 
25
26
  /**
26
27
  * "Armor" refers to the damage scaling mechanic. The following list corresponds to the entities
@@ -33,7 +34,7 @@ import {
33
34
  *
34
35
  * We use strings instead of a type + variant tuple so that we can have O(1) lookups.
35
36
  */
36
- export const ENTITIES_WITH_ARMOR_SET: ReadonlySet<string> = new Set([
37
+ export const ENTITIES_WITH_ARMOR_SET = new ReadonlySet<string>([
37
38
  `${EntityType.POOTER}.${PooterVariant.TAINTED_POOTER}`, // 14.2
38
39
  `${EntityType.HIVE}.${HiveVariant.TAINTED_MULLIGAN}`, // 22.3
39
40
  `${EntityType.BOOM_FLY}.${BoomFlyVariant.TAINTED_BOOM_FLY}`, // 25.6