isaacscript-common 3.16.1 → 4.0.1-dev.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 (417) hide show
  1. package/cachedClasses.ts +39 -0
  2. package/callbacks/customRevive.lua +2 -1
  3. package/callbacks/customRevive.ts +215 -0
  4. package/callbacks/itemPickup.ts +101 -0
  5. package/callbacks/postAmbush.ts +73 -0
  6. package/callbacks/postBombExploded.ts +26 -0
  7. package/callbacks/postBombInitLate.ts +36 -0
  8. package/callbacks/postBoneSwing.ts +64 -0
  9. package/callbacks/postCollectibleInitFirst.ts +40 -0
  10. package/callbacks/postCursedTeleport.ts +183 -0
  11. package/callbacks/postCustomDoorEnter.lua +0 -7
  12. package/callbacks/postCustomDoorEnter.ts +292 -0
  13. package/callbacks/postDiceRoomActivated.ts +60 -0
  14. package/callbacks/postDoorRender.ts +26 -0
  15. package/callbacks/postDoorUpdate.ts +26 -0
  16. package/callbacks/postEffectInitLate.ts +36 -0
  17. package/callbacks/postEffectStateChanged.ts +43 -0
  18. package/callbacks/postEsauJr.ts +107 -0
  19. package/callbacks/postFamiliarInitLate.ts +36 -0
  20. package/callbacks/postFamiliarStateChanged.ts +43 -0
  21. package/callbacks/postFlip.ts +88 -0
  22. package/callbacks/postGreedModeWave.ts +41 -0
  23. package/callbacks/postGridEntity.ts +164 -0
  24. package/callbacks/postGridEntityCollision.ts +69 -0
  25. package/callbacks/postGridEntityRender.ts +26 -0
  26. package/callbacks/postHolyMantleRemoved.ts +55 -0
  27. package/callbacks/postItemDischarged.ts +149 -0
  28. package/callbacks/postKnifeInitLate.ts +36 -0
  29. package/callbacks/postLaserInitLate.ts +36 -0
  30. package/callbacks/postNPCInitLate.ts +36 -0
  31. package/callbacks/postNPCStateChanged.ts +42 -0
  32. package/callbacks/postNewRoomEarly.ts +90 -0
  33. package/callbacks/postPickupCollect.ts +48 -0
  34. package/callbacks/postPickupInitFirst.ts +70 -0
  35. package/callbacks/postPickupInitLate.ts +36 -0
  36. package/callbacks/postPickupStateChanged.ts +43 -0
  37. package/callbacks/postPitRender.ts +26 -0
  38. package/callbacks/postPitUpdate.ts +26 -0
  39. package/callbacks/postPlayerChangeHealth.ts +62 -0
  40. package/callbacks/postPlayerChangeType.ts +56 -0
  41. package/callbacks/postPlayerCollectible.ts +113 -0
  42. package/callbacks/postPlayerFatalDamage.ts +141 -0
  43. package/callbacks/postPlayerInitLate.ts +37 -0
  44. package/callbacks/postPlayerReordered.ts +142 -0
  45. package/callbacks/postPoopRender.ts +26 -0
  46. package/callbacks/postPoopUpdate.ts +26 -0
  47. package/callbacks/postPressurePlateRender.ts +26 -0
  48. package/callbacks/postPressurePlateUpdate.ts +26 -0
  49. package/callbacks/postProjectileInitLate.ts +36 -0
  50. package/callbacks/postPurchase.ts +64 -0
  51. package/callbacks/postRockRender.ts +26 -0
  52. package/callbacks/postRockUpdate.ts +26 -0
  53. package/callbacks/postRoomClearChanged.ts +57 -0
  54. package/callbacks/postSacrifice.ts +62 -0
  55. package/callbacks/postSlotDestroyed.ts +92 -0
  56. package/callbacks/postSlotInitUpdate.ts +68 -0
  57. package/callbacks/postSlotRender.ts +69 -0
  58. package/callbacks/postSpikesRender.ts +26 -0
  59. package/callbacks/postSpikesUpdate.ts +26 -0
  60. package/callbacks/postTNTRender.ts +26 -0
  61. package/callbacks/postTNTUpdate.ts +26 -0
  62. package/callbacks/postTearInitLate.ts +36 -0
  63. package/callbacks/postTearInitVeryLate.ts +41 -0
  64. package/callbacks/postTransformation.ts +59 -0
  65. package/callbacks/postTrinketBreak.ts +110 -0
  66. package/callbacks/preBerserkDeath.ts +49 -0
  67. package/callbacks/preNewLevel.ts +55 -0
  68. package/callbacks/reorderedCallbacks.ts +166 -0
  69. package/callbacks/subscriptions/postAmbushFinished.ts +32 -0
  70. package/callbacks/subscriptions/postAmbushStarted.ts +32 -0
  71. package/callbacks/subscriptions/postBombInitLate.ts +32 -0
  72. package/callbacks/subscriptions/postBoneExploded.ts +32 -0
  73. package/callbacks/subscriptions/postBoneSwing.ts +24 -0
  74. package/callbacks/subscriptions/postCollectibleInitFirst.ts +37 -0
  75. package/callbacks/subscriptions/postCursedTeleport.ts +24 -0
  76. package/callbacks/subscriptions/postCustomDoorEnter.ts +45 -0
  77. package/callbacks/subscriptions/postCustomRevive.ts +36 -0
  78. package/callbacks/subscriptions/postDiceRoomActivated.ts +38 -0
  79. package/callbacks/subscriptions/postDoorRender.ts +35 -0
  80. package/callbacks/subscriptions/postDoorUpdate.ts +35 -0
  81. package/callbacks/subscriptions/postEffectInitLate.ts +32 -0
  82. package/callbacks/subscriptions/postEffectStateChanged.ts +40 -0
  83. package/callbacks/subscriptions/postEsauJr.ts +24 -0
  84. package/callbacks/subscriptions/postFamiliarInitLate.ts +32 -0
  85. package/callbacks/subscriptions/postFamiliarStateChanged.ts +40 -0
  86. package/callbacks/subscriptions/postFirstEsauJr.ts +24 -0
  87. package/callbacks/subscriptions/postFirstFlip.ts +24 -0
  88. package/callbacks/subscriptions/postFlip.ts +22 -0
  89. package/callbacks/subscriptions/postGameStartedReordered.ts +24 -0
  90. package/callbacks/subscriptions/postGreedModeWave.ts +24 -0
  91. package/callbacks/subscriptions/postGridEntityBroken.ts +51 -0
  92. package/callbacks/subscriptions/postGridEntityCollision.ts +54 -0
  93. package/callbacks/subscriptions/postGridEntityInit.ts +51 -0
  94. package/callbacks/subscriptions/postGridEntityRemove.ts +52 -0
  95. package/callbacks/subscriptions/postGridEntityRender.ts +51 -0
  96. package/callbacks/subscriptions/postGridEntityStateChanged.ts +55 -0
  97. package/callbacks/subscriptions/postGridEntityUpdate.ts +51 -0
  98. package/callbacks/subscriptions/postHolyMantleRemoved.ts +48 -0
  99. package/callbacks/subscriptions/postItemDischarged.ts +43 -0
  100. package/callbacks/subscriptions/postItemPickup.ts +64 -0
  101. package/callbacks/subscriptions/postKnifeInitLate.ts +32 -0
  102. package/callbacks/subscriptions/postLaserInitLate.ts +32 -0
  103. package/callbacks/subscriptions/postNPCInitLate.ts +32 -0
  104. package/callbacks/subscriptions/postNPCStateChanged.ts +42 -0
  105. package/callbacks/subscriptions/postNewLevelReordered.ts +22 -0
  106. package/callbacks/subscriptions/postNewRoomEarly.ts +22 -0
  107. package/callbacks/subscriptions/postNewRoomReordered.ts +22 -0
  108. package/callbacks/subscriptions/postPEffectUpdateReordered.ts +40 -0
  109. package/callbacks/subscriptions/postPickupCollect.ts +35 -0
  110. package/callbacks/subscriptions/postPickupInitFirst.ts +32 -0
  111. package/callbacks/subscriptions/postPickupInitLate.ts +32 -0
  112. package/callbacks/subscriptions/postPickupStateChanged.ts +40 -0
  113. package/callbacks/subscriptions/postPitRender.ts +35 -0
  114. package/callbacks/subscriptions/postPitUpdate.ts +35 -0
  115. package/callbacks/subscriptions/postPlayerChangeHealth.ts +49 -0
  116. package/callbacks/subscriptions/postPlayerChangeType.ts +40 -0
  117. package/callbacks/subscriptions/postPlayerCollectibleAdded.d.ts +2 -3
  118. package/callbacks/subscriptions/postPlayerCollectibleAdded.lua +2 -7
  119. package/callbacks/subscriptions/postPlayerCollectibleAdded.ts +38 -0
  120. package/callbacks/subscriptions/postPlayerCollectibleRemoved.d.ts +2 -3
  121. package/callbacks/subscriptions/postPlayerCollectibleRemoved.lua +2 -7
  122. package/callbacks/subscriptions/postPlayerCollectibleRemoved.ts +38 -0
  123. package/callbacks/subscriptions/postPlayerFatalDamage.d.ts +1 -1
  124. package/callbacks/subscriptions/postPlayerFatalDamage.ts +68 -0
  125. package/callbacks/subscriptions/postPlayerInitLate.ts +40 -0
  126. package/callbacks/subscriptions/postPlayerInitReordered.ts +40 -0
  127. package/callbacks/subscriptions/postPlayerRenderReordered.ts +40 -0
  128. package/callbacks/subscriptions/postPlayerUpdateReordered.ts +40 -0
  129. package/callbacks/subscriptions/postPoopRender.ts +35 -0
  130. package/callbacks/subscriptions/postPoopUpdate.ts +35 -0
  131. package/callbacks/subscriptions/postPressurePlateRender.ts +37 -0
  132. package/callbacks/subscriptions/postPressurePlateUpdate.ts +37 -0
  133. package/callbacks/subscriptions/postProjectileInitLate.ts +35 -0
  134. package/callbacks/subscriptions/postPurchase.ts +31 -0
  135. package/callbacks/subscriptions/postRockRender.ts +35 -0
  136. package/callbacks/subscriptions/postRockUpdate.ts +35 -0
  137. package/callbacks/subscriptions/postRoomClearChanged.ts +30 -0
  138. package/callbacks/subscriptions/postSacrifice.ts +43 -0
  139. package/callbacks/subscriptions/postSlotAnimationChanged.ts +40 -0
  140. package/callbacks/subscriptions/postSlotDestroyed.ts +55 -0
  141. package/callbacks/subscriptions/postSlotInit.ts +32 -0
  142. package/callbacks/subscriptions/postSlotRender.ts +32 -0
  143. package/callbacks/subscriptions/postSlotUpdate.ts +32 -0
  144. package/callbacks/subscriptions/postSpikesRender.ts +35 -0
  145. package/callbacks/subscriptions/postSpikesUpdate.ts +35 -0
  146. package/callbacks/subscriptions/postTNTRender.ts +35 -0
  147. package/callbacks/subscriptions/postTNTUpdate.ts +35 -0
  148. package/callbacks/subscriptions/postTearInitLate.ts +32 -0
  149. package/callbacks/subscriptions/postTearInitVeryLate.ts +32 -0
  150. package/callbacks/subscriptions/postTransformation.ts +40 -0
  151. package/callbacks/subscriptions/postTrinketBreak.ts +38 -0
  152. package/callbacks/subscriptions/preBerserkDeath.d.ts +1 -1
  153. package/callbacks/subscriptions/preBerserkDeath.ts +42 -0
  154. package/callbacks/subscriptions/preCustomRevive.d.ts +1 -1
  155. package/callbacks/subscriptions/preCustomRevive.ts +46 -0
  156. package/callbacks/subscriptions/preItemPickup.ts +64 -0
  157. package/callbacks/subscriptions/preNewLevel.ts +24 -0
  158. package/classes/DefaultMap.ts +174 -0
  159. package/classes/ModUpgraded.d.ts +3 -3
  160. package/classes/ModUpgraded.lua +3 -6
  161. package/classes/ModUpgraded.ts +77 -0
  162. package/constants.ts +162 -0
  163. package/constantsFirstLast.ts +217 -0
  164. package/enums/AmbushType.ts +4 -0
  165. package/enums/HealthType.ts +16 -0
  166. package/enums/ModCallbackCustom.d.ts +20 -18
  167. package/enums/ModCallbackCustom.ts +1278 -0
  168. package/enums/PocketItemType.ts +8 -0
  169. package/enums/SerializationType.ts +5 -0
  170. package/enums/SlotDestructionType.ts +4 -0
  171. package/enums/private/CopyableIsaacAPIClassType.ts +7 -0
  172. package/enums/private/SaveDataKey.ts +14 -0
  173. package/enums/private/SerializationBrand.ts +42 -0
  174. package/features/characterHealthConversion.lua +2 -9
  175. package/features/characterHealthConversion.ts +111 -0
  176. package/features/characterStats.ts +61 -0
  177. package/features/debugDisplay/debugDisplay.ts +221 -0
  178. package/features/debugDisplay/exports.ts +368 -0
  179. package/features/debugDisplay/v.ts +65 -0
  180. package/features/deployJSONRoom.ts +743 -0
  181. package/features/disableInputs.ts +193 -0
  182. package/features/disableSound.ts +77 -0
  183. package/features/extraConsoleCommands/commandsDisplay.ts +290 -0
  184. package/features/extraConsoleCommands/commandsSubroutines.lua +1 -1
  185. package/features/extraConsoleCommands/commandsSubroutines.ts +139 -0
  186. package/features/extraConsoleCommands/init.ts +334 -0
  187. package/features/extraConsoleCommands/listCommands.ts +1299 -0
  188. package/features/extraConsoleCommands/v.ts +14 -0
  189. package/features/fadeInRemover.ts +60 -0
  190. package/features/fastReset.ts +75 -0
  191. package/features/forgottenSwitch.ts +50 -0
  192. package/features/getCollectibleItemPoolType.ts +66 -0
  193. package/features/persistentEntities.ts +183 -0
  194. package/features/playerInventory.ts +133 -0
  195. package/features/ponyDetection.ts +74 -0
  196. package/features/preventCollectibleRotation.ts +115 -0
  197. package/features/runInNFrames.ts +148 -0
  198. package/features/saveDataManager/constants.ts +4 -0
  199. package/features/saveDataManager/exports.ts +229 -0
  200. package/features/saveDataManager/load.ts +99 -0
  201. package/features/saveDataManager/main.ts +195 -0
  202. package/features/saveDataManager/maps.ts +13 -0
  203. package/features/saveDataManager/merge.ts +194 -0
  204. package/features/saveDataManager/save.ts +74 -0
  205. package/features/saveDataManager/serializationBrand.ts +16 -0
  206. package/features/sirenHelpers.ts +129 -0
  207. package/features/taintedLazarusPlayers.ts +113 -0
  208. package/featuresInitialized.ts +20 -0
  209. package/functions/ambush.ts +47 -0
  210. package/functions/array.ts +410 -0
  211. package/functions/benchmark.ts +36 -0
  212. package/functions/bitwise.ts +24 -0
  213. package/functions/bombs.ts +12 -0
  214. package/functions/boss.ts +227 -0
  215. package/functions/cacheFlag.ts +12 -0
  216. package/functions/cards.lua +1 -1
  217. package/functions/cards.ts +271 -0
  218. package/functions/challenges.ts +13 -0
  219. package/functions/character.ts +126 -0
  220. package/functions/charge.ts +237 -0
  221. package/functions/chargeBar.ts +67 -0
  222. package/functions/collectibleCacheFlag.ts +90 -0
  223. package/functions/collectibleSet.ts +56 -0
  224. package/functions/collectibleTag.ts +89 -0
  225. package/functions/collectibles.ts +659 -0
  226. package/functions/color.d.ts +1 -1
  227. package/functions/color.lua +0 -7
  228. package/functions/color.ts +128 -0
  229. package/functions/debug.lua +2 -2
  230. package/functions/debug.ts +68 -0
  231. package/functions/deepCopy.lua +46 -51
  232. package/functions/deepCopy.ts +535 -0
  233. package/functions/deepCopyTests.ts +386 -0
  234. package/functions/direction.ts +49 -0
  235. package/functions/doors.lua +1 -2
  236. package/functions/doors.ts +347 -0
  237. package/functions/easing.ts +182 -0
  238. package/functions/eden.ts +47 -0
  239. package/functions/effects.ts +20 -0
  240. package/functions/entity.ts +439 -0
  241. package/functions/entitySpecific.ts +889 -0
  242. package/functions/entityTypes.ts +6 -0
  243. package/functions/enums.ts +146 -0
  244. package/functions/familiars.ts +106 -0
  245. package/functions/flag.ts +165 -0
  246. package/functions/flying.ts +117 -0
  247. package/functions/globals.d.ts +3 -3
  248. package/functions/globals.lua +8 -2
  249. package/functions/globals.ts +242 -0
  250. package/functions/gridEntity.ts +511 -0
  251. package/functions/gridEntitySpecific.ts +112 -0
  252. package/functions/input.ts +139 -0
  253. package/functions/isaacAPIClass.ts +67 -0
  254. package/functions/jsonHelpers.ts +45 -0
  255. package/functions/jsonRoom.ts +100 -0
  256. package/functions/kColor.d.ts +1 -1
  257. package/functions/kColor.lua +0 -7
  258. package/functions/kColor.ts +129 -0
  259. package/functions/language.ts +13 -0
  260. package/functions/level.ts +31 -0
  261. package/functions/log.ts +720 -0
  262. package/functions/map.ts +56 -0
  263. package/functions/math.ts +149 -0
  264. package/functions/mergeTests.ts +288 -0
  265. package/functions/npc.ts +148 -0
  266. package/functions/pickupVariants.ts +60 -0
  267. package/functions/pickups.ts +499 -0
  268. package/functions/pills.lua +1 -1
  269. package/functions/pills.ts +205 -0
  270. package/functions/player.lua +0 -6
  271. package/functions/player.ts +1060 -0
  272. package/functions/playerDataStructures.ts +150 -0
  273. package/functions/playerHealth.d.ts +2 -0
  274. package/functions/playerHealth.lua +73 -39
  275. package/functions/playerHealth.ts +382 -0
  276. package/functions/playerIndex.ts +195 -0
  277. package/functions/pocketItems.ts +149 -0
  278. package/functions/positionVelocity.ts +188 -0
  279. package/functions/random.ts +77 -0
  280. package/functions/revive.ts +201 -0
  281. package/functions/rng.d.ts +1 -1
  282. package/functions/rng.lua +0 -7
  283. package/functions/rng.ts +172 -0
  284. package/functions/roomData.ts +199 -0
  285. package/functions/roomGrid.ts +109 -0
  286. package/functions/roomShape.ts +80 -0
  287. package/functions/rooms.lua +1 -3
  288. package/functions/rooms.ts +648 -0
  289. package/functions/run.ts +36 -0
  290. package/functions/saveFile.ts +128 -0
  291. package/functions/seeds.ts +19 -0
  292. package/functions/serialization.lua +0 -3
  293. package/functions/serialization.ts +91 -0
  294. package/functions/set.ts +95 -0
  295. package/functions/sound.ts +9 -0
  296. package/functions/spawnCollectible.ts +104 -0
  297. package/functions/sprite.ts +107 -0
  298. package/functions/stage.ts +125 -0
  299. package/functions/string.ts +47 -0
  300. package/functions/table.ts +189 -0
  301. package/functions/tears.ts +32 -0
  302. package/functions/transformations.lua +1 -3
  303. package/functions/transformations.ts +131 -0
  304. package/functions/trinketCacheFlag.ts +60 -0
  305. package/functions/trinketGive.ts +157 -0
  306. package/functions/trinkets.ts +215 -0
  307. package/functions/tstlClass.ts +157 -0
  308. package/functions/types.ts +36 -0
  309. package/functions/ui.ts +138 -0
  310. package/functions/utils.d.ts +0 -37
  311. package/functions/utils.lua +0 -35
  312. package/functions/utils.ts +189 -0
  313. package/functions/vector.d.ts +1 -1
  314. package/functions/vector.lua +0 -7
  315. package/functions/vector.ts +126 -0
  316. package/index.ts +172 -0
  317. package/initCustomCallbacks.ts +132 -0
  318. package/initFeatures.ts +39 -0
  319. package/interfaces/AddCallbackParameterCustom.ts +188 -0
  320. package/interfaces/ChargeBarSprites.ts +12 -0
  321. package/interfaces/JSONDoor.d.ts +4 -4
  322. package/interfaces/JSONDoor.ts +13 -0
  323. package/interfaces/JSONEntity.d.ts +5 -5
  324. package/interfaces/JSONEntity.ts +16 -0
  325. package/interfaces/JSONRoom.d.ts +9 -9
  326. package/interfaces/JSONRoom.ts +36 -0
  327. package/interfaces/JSONRooms.ts +12 -0
  328. package/interfaces/JSONSpawn.d.ts +3 -3
  329. package/interfaces/JSONSpawn.ts +14 -0
  330. package/interfaces/PlayerHealth.ts +16 -0
  331. package/interfaces/PocketItemDescription.ts +9 -0
  332. package/interfaces/SaveData.ts +29 -0
  333. package/interfaces/TrinketSituation.ts +9 -0
  334. package/interfaces/private/TSTLClassMetatable.ts +8 -0
  335. package/maps/PHDPillConversions.ts +21 -0
  336. package/maps/cardMap.ts +209 -0
  337. package/maps/characterMap.ts +87 -0
  338. package/maps/collectibleDescriptionMap.ts +732 -0
  339. package/maps/collectibleNameMap.ts +731 -0
  340. package/maps/defaultPlayerStatMap.ts +17 -0
  341. package/maps/falsePHDPillConversions.ts +35 -0
  342. package/maps/gridEntityTypeToBrokenStateMap.ts +50 -0
  343. package/maps/gridEntityXMLMap.ts +176 -0
  344. package/maps/pillEffectMap.ts +88 -0
  345. package/maps/roomShapeToTopLeftWallGridIndexMap.ts +18 -0
  346. package/maps/roomTypeMap.ts +40 -0
  347. package/maps/trinketDescriptionMap.ts +200 -0
  348. package/maps/trinketNameMap.ts +198 -0
  349. package/objects/LRoomShapeToRectangles.ts +44 -0
  350. package/objects/callbackRegisterFunctions.ts +187 -0
  351. package/objects/cardDescriptions.ts +105 -0
  352. package/objects/cardNames.ts +105 -0
  353. package/objects/cardTypes.ts +104 -0
  354. package/objects/challengeNames.ts +52 -0
  355. package/objects/characterNames.ts +48 -0
  356. package/objects/coinSubTypeToValue.ts +14 -0
  357. package/objects/colors.ts +16 -0
  358. package/objects/directionNames.ts +11 -0
  359. package/objects/directionToDegrees.ts +11 -0
  360. package/objects/directionToVector.ts +12 -0
  361. package/objects/doorSlotFlagToDoorSlot.ts +16 -0
  362. package/objects/doorSlotToDirection.ts +14 -0
  363. package/objects/isaacAPIClassTypeToBrand.ts +11 -0
  364. package/objects/isaacAPIClassTypeToCopyFunction.ts +18 -0
  365. package/objects/languageNames.ts +13 -0
  366. package/objects/oppositeDoorSlots.ts +15 -0
  367. package/objects/pillEffectClasses.ts +63 -0
  368. package/objects/pillEffectNames.ts +57 -0
  369. package/objects/pillEffectTypes.ts +62 -0
  370. package/objects/roomShapeBounds.ts +71 -0
  371. package/objects/roomShapeLayoutSizes.ts +45 -0
  372. package/objects/roomShapeToBottomRightPosition.ts +25 -0
  373. package/objects/roomShapeToDoorSlots.ts +83 -0
  374. package/objects/roomShapeToDoorSlotsToGridIndexDelta.ts +127 -0
  375. package/objects/roomShapeToGridWidth.ts +21 -0
  376. package/objects/roomShapeToTopLeftPosition.ts +26 -0
  377. package/objects/roomShapeVolumes.ts +38 -0
  378. package/objects/roomTypeNames.ts +36 -0
  379. package/objects/serializedIsaacAPIClassTypeToIdentityFunction.ts +14 -0
  380. package/objects/stageTypeToLetter.ts +15 -0
  381. package/objects/transformationNames.d.ts +0 -1
  382. package/objects/transformationNames.lua +0 -1
  383. package/objects/transformationNames.ts +18 -0
  384. package/package.json +2 -2
  385. package/patchErrorFunctions.ts +92 -0
  386. package/sets/LRoomShapesSet.ts +8 -0
  387. package/sets/bossSets.ts +470 -0
  388. package/sets/charactersThatStartWithAnActiveItemSet.ts +16 -0
  389. package/sets/charactersWithBlackHeartFromEternalHeartSet.ts +7 -0
  390. package/sets/charactersWithFreeDevilDealsSet.ts +4 -0
  391. package/sets/charactersWithNoRedHeartsSet.ts +17 -0
  392. package/sets/charactersWithNoSoulHeartsSet.ts +14 -0
  393. package/sets/chestPickupVariantsSet.ts +16 -0
  394. package/sets/familiarsThatShootPlayerTearsSet.ts +13 -0
  395. package/sets/lostStyleCharactersSet.ts +13 -0
  396. package/sets/mineShaftRoomSubTypesSet.ts +10 -0
  397. package/sets/redHeartSubTypesSet.ts +7 -0
  398. package/sets/sinEntityTypesSet.ts +11 -0
  399. package/sets/singleUseActiveCollectibleTypesSet.ts +13 -0
  400. package/sets/storyBossesSet.ts +17 -0
  401. package/types/AnyEntity.ts +12 -0
  402. package/types/AwaitingTextInput.d.ts +2 -0
  403. package/types/CollectibleIndex.d.ts +1 -1
  404. package/types/CollectibleIndex.ts +16 -0
  405. package/types/PickingUpItem.d.ts +3 -3
  406. package/types/PickingUpItem.ts +89 -0
  407. package/types/PlayerIndex.d.ts +1 -1
  408. package/types/PlayerIndex.ts +13 -0
  409. package/types/private/IsaacAPIClass.d.ts +1 -1
  410. package/types/private/IsaacAPIClass.ts +3 -0
  411. package/types/private/SerializedIsaacAPIClass.d.ts +1 -1
  412. package/types/private/SerializedIsaacAPIClass.ts +3 -0
  413. package/types/private/TSTLClass.d.ts +1 -1
  414. package/types/private/TSTLClass.ts +3 -0
  415. package/upgradeMod.d.ts +2 -2
  416. package/upgradeMod.lua +2 -2
  417. package/upgradeMod.ts +55 -0
@@ -0,0 +1,193 @@
1
+ import {
2
+ ButtonAction,
3
+ InputHook,
4
+ ModCallback,
5
+ } from "isaac-typescript-definitions";
6
+ import { errorIfFeaturesNotInitialized } from "../featuresInitialized";
7
+ import { getMoveActions, getShootActions } from "../functions/input";
8
+ import { saveDataManager } from "./saveDataManager/exports";
9
+
10
+ const FEATURE_NAME = "input disabler";
11
+
12
+ const v = {
13
+ run: {
14
+ /** Indexed by the requesting feature key. */
15
+ disableInputsWithWhitelistMap: new Map<
16
+ string,
17
+ Set<ButtonAction> | ReadonlySet<ButtonAction>
18
+ >(),
19
+
20
+ /** Indexed by the requesting feature key. */
21
+ enableInputsWithBlacklistMap: new Map<
22
+ string,
23
+ Set<ButtonAction> | ReadonlySet<ButtonAction>
24
+ >(),
25
+ },
26
+ };
27
+
28
+ /** @internal */
29
+ export function disableInputsInit(mod: Mod): void {
30
+ saveDataManager("disableInputs", v);
31
+
32
+ mod.AddCallback(
33
+ ModCallback.INPUT_ACTION,
34
+ isActionPressed,
35
+ InputHook.IS_ACTION_PRESSED, // 0
36
+ );
37
+
38
+ mod.AddCallback(
39
+ ModCallback.INPUT_ACTION,
40
+ isActionTriggered,
41
+ InputHook.IS_ACTION_TRIGGERED, // 1
42
+ );
43
+
44
+ mod.AddCallback(
45
+ ModCallback.INPUT_ACTION,
46
+ getActionValue,
47
+ InputHook.GET_ACTION_VALUE, // 2
48
+ );
49
+ }
50
+
51
+ // InputHook.IS_ACTION_PRESSED (0)
52
+ function isActionPressed(
53
+ _entity: Entity | undefined,
54
+ _inputHook: InputHook,
55
+ buttonAction: ButtonAction,
56
+ ) {
57
+ return getReturnValue(buttonAction, true);
58
+ }
59
+
60
+ // InputHook.IS_ACTION_TRIGGERED (1)
61
+ function isActionTriggered(
62
+ _entity: Entity | undefined,
63
+ _inputHook: InputHook,
64
+ buttonAction: ButtonAction,
65
+ ) {
66
+ return getReturnValue(buttonAction, true);
67
+ }
68
+
69
+ // InputHook.GET_ACTION_VALUE (2)
70
+ function getActionValue(
71
+ _entity: Entity | undefined,
72
+ _inputHook: InputHook,
73
+ buttonAction: ButtonAction,
74
+ ) {
75
+ return getReturnValue(buttonAction, false);
76
+ }
77
+
78
+ function getReturnValue(buttonAction: ButtonAction, booleanCallback: boolean) {
79
+ const disableValue = booleanCallback ? false : 0;
80
+
81
+ for (const whitelist of v.run.disableInputsWithWhitelistMap.values()) {
82
+ if (!whitelist.has(buttonAction)) {
83
+ return disableValue;
84
+ }
85
+ }
86
+
87
+ for (const blacklist of v.run.enableInputsWithBlacklistMap.values()) {
88
+ if (blacklist.has(buttonAction)) {
89
+ return disableValue;
90
+ }
91
+ }
92
+
93
+ return undefined;
94
+ }
95
+
96
+ /**
97
+ * Helper function to enable all inputs. Use this function to set things back to normal after having
98
+ * used one of the other helper functions to disable inputs.
99
+ *
100
+ * @param key The name of the mod feature that is requesting the enable/disable. This is needed so
101
+ * that multiple mod features can work in tandem.
102
+ */
103
+ export function enableAllInputs(key: string): void {
104
+ errorIfFeaturesNotInitialized(FEATURE_NAME);
105
+
106
+ v.run.disableInputsWithWhitelistMap.delete(key);
107
+ v.run.enableInputsWithBlacklistMap.delete(key);
108
+ }
109
+
110
+ /**
111
+ * Helper function to disable all inputs. This is useful because `EntityPlayer.ControlsEnabled` can
112
+ * be changed by the game under certain conditions.
113
+ *
114
+ * Use the `enableAllInputs` helper function to set things back to normal.
115
+ *
116
+ * @param key The name of the mod feature that is requesting the enable/disable. This is needed so
117
+ * that multiple mod features can work in tandem.
118
+ */
119
+ export function disableAllInputs(key: string): void {
120
+ errorIfFeaturesNotInitialized(FEATURE_NAME);
121
+
122
+ v.run.disableInputsWithWhitelistMap.set(key, new Set());
123
+ v.run.enableInputsWithBlacklistMap.delete(key);
124
+ }
125
+
126
+ /**
127
+ * Helper function to enable all inputs besides the ones provided. This is useful because
128
+ * `EntityPlayer.ControlsEnabled` can be changed by the game under certain conditions.
129
+ *
130
+ * Use the `enableAllInputs` helper function to set things back to normal.
131
+ *
132
+ * @param key The name of the mod feature that is requesting the enable/disable. This is needed so
133
+ * that multiple mod features can work in tandem.
134
+ * @param blacklist A set of ButtonActions to disallow.
135
+ */
136
+ export function enableAllInputsExceptFor(
137
+ key: string,
138
+ blacklist: Set<ButtonAction> | ReadonlySet<ButtonAction>,
139
+ ): void {
140
+ errorIfFeaturesNotInitialized(FEATURE_NAME);
141
+
142
+ v.run.disableInputsWithWhitelistMap.delete(key);
143
+ v.run.enableInputsWithBlacklistMap.set(key, blacklist);
144
+ }
145
+
146
+ /**
147
+ * Helper function to disable all inputs besides the ones provided. This is useful because
148
+ * `EntityPlayer.ControlsEnabled` can be changed by the game under certain conditions.
149
+ *
150
+ * Use the `enableAllInputs` helper function to set things back to normal.
151
+ *
152
+ * @param key The name of the mod feature that is requesting the enable/disable. This is needed so
153
+ * that multiple mod features can work in tandem.
154
+ * @param whitelist A set of ButtonActions to allow.
155
+ */
156
+ export function disableAllInputsExceptFor(
157
+ key: string,
158
+ whitelist: Set<ButtonAction>,
159
+ ): void {
160
+ errorIfFeaturesNotInitialized(FEATURE_NAME);
161
+
162
+ v.run.disableInputsWithWhitelistMap.set(key, whitelist);
163
+ v.run.enableInputsWithBlacklistMap.delete(key);
164
+ }
165
+
166
+ /**
167
+ * Helper function to disable only the inputs used for moving the character (or moving the cursor in
168
+ * the UI). This is useful because `EntityPlayer.ControlsEnabled` can be changed by the game under
169
+ * certain conditions.
170
+ *
171
+ * Use the `enableAllInputs` helper function to set things back to normal.
172
+ *
173
+ * @param key The name of the mod feature that is requesting the enable/disable. This is needed so
174
+ * that multiple mod features can work in tandem.
175
+ */
176
+ export function disableMovementInputs(key: string): void {
177
+ const moveActions = getMoveActions();
178
+ enableAllInputsExceptFor(key, moveActions);
179
+ }
180
+
181
+ /**
182
+ * Helper function to disable only the inputs used for shooting tears. This is useful because
183
+ * `EntityPlayer.ControlsEnabled` can be changed by the game under certain conditions.
184
+ *
185
+ * Use the `enableAllInputs` helper function to set things back to normal.
186
+ *
187
+ * @param key The name of the mod feature that is requesting the enable/disable. This is needed so
188
+ * that multiple mod features can work in tandem.
189
+ */
190
+ export function disableShootingInputs(key: string): void {
191
+ const shootActions = getShootActions();
192
+ enableAllInputsExceptFor(key, shootActions);
193
+ }
@@ -0,0 +1,77 @@
1
+ import { ModCallback } from "isaac-typescript-definitions";
2
+ import { musicManager } from "../cachedClasses";
3
+ import { errorIfFeaturesNotInitialized } from "../featuresInitialized";
4
+ import { stopAllSoundEffects } from "../functions/sound";
5
+ import { saveDataManager } from "./saveDataManager/exports";
6
+
7
+ const FEATURE_NAME = "sound disabler";
8
+
9
+ let musicWasEnabled = false;
10
+
11
+ const v = {
12
+ run: {
13
+ disableSoundSet: new Set<string>(),
14
+ },
15
+ };
16
+
17
+ /** @internal */
18
+ export function disableSoundsInit(mod: Mod): void {
19
+ saveDataManager("disableSounds", v);
20
+
21
+ mod.AddCallback(ModCallback.POST_RENDER, postRender);
22
+ }
23
+
24
+ // ModCallback.POST_RENDER (2)
25
+ function postRender() {
26
+ if (v.run.disableSoundSet.size === 0) {
27
+ return;
28
+ }
29
+
30
+ stopAllSoundEffects();
31
+ }
32
+
33
+ /**
34
+ * Helper function to stop muting all sound effects and music.
35
+ *
36
+ * Use this function to set things back to normal after having used `disableAllSounds`.
37
+ *
38
+ * @param key The name of the mod feature that is requesting the enable/disable. This is needed so
39
+ * that multiple mod features can work in tandem.
40
+ */
41
+ export function enableAllSound(key: string): void {
42
+ errorIfFeaturesNotInitialized(FEATURE_NAME);
43
+
44
+ if (!v.run.disableSoundSet.has(key)) {
45
+ return;
46
+ }
47
+ v.run.disableSoundSet.delete(key);
48
+
49
+ if (v.run.disableSoundSet.size === 0 && musicWasEnabled) {
50
+ musicManager.Enable();
51
+ }
52
+
53
+ // Stop all sound effects that were initialized prior to enabling sounds (in case there was a
54
+ // sound played played previously on this render frame).
55
+ stopAllSoundEffects();
56
+ }
57
+
58
+ /**
59
+ * Helper function to disable all sound effects and music (by constantly musting them).
60
+ *
61
+ * Use the `enableAllSounds` helper function to set things back to normal.
62
+ *
63
+ * @param key The name of the mod feature that is requesting the enable/disable. This is needed so
64
+ * that multiple mod features can work in tandem.
65
+ */
66
+ export function disableAllSound(key: string): void {
67
+ errorIfFeaturesNotInitialized(FEATURE_NAME);
68
+
69
+ if (v.run.disableSoundSet.size === 0) {
70
+ musicWasEnabled = musicManager.IsEnabled();
71
+ }
72
+
73
+ v.run.disableSoundSet.add(key);
74
+
75
+ // Stop all sound effects that were initialized prior to disabling sounds.
76
+ stopAllSoundEffects();
77
+ }
@@ -0,0 +1,290 @@
1
+ import {
2
+ toggleBombDisplay,
3
+ toggleDoorDisplay,
4
+ toggleEffectDisplay,
5
+ toggleFamiliarDisplay,
6
+ toggleKnifeDisplay,
7
+ toggleLaserDisplay,
8
+ toggleNPCDisplay,
9
+ togglePickupDisplay,
10
+ togglePitDisplay,
11
+ togglePlayerDisplay,
12
+ togglePoopDisplay,
13
+ togglePressurePlateDisplay,
14
+ toggleProjectileDisplay,
15
+ toggleRockDisplay,
16
+ toggleSlotDisplay,
17
+ toggleSpikesDisplay,
18
+ toggleTearDisplay,
19
+ toggleTNTDisplay,
20
+ } from "../debugDisplay/exports";
21
+
22
+ /**
23
+ * Toggles custom text to appear next to every bomb. Useful for debugging.
24
+ *
25
+ * By default, the entity ID will be displayed. Use the `setBombDisplay` helper function to assign
26
+ * the text that you want to appear.
27
+ */
28
+ export function bombDisplay(): void {
29
+ toggleBombDisplay();
30
+ }
31
+
32
+ /** Alias for the "bombDisplay" command. */
33
+ export function bombsDisplay(): void {
34
+ bombDisplay();
35
+ }
36
+
37
+ /**
38
+ * Toggles custom text to appear next to every door. Useful for debugging.
39
+ *
40
+ * By default, the grid entity ID will be displayed. Use the `setDoorDisplay` helper function to
41
+ * assign the text that you want to appear.
42
+ */
43
+ export function doorDisplay(): void {
44
+ toggleDoorDisplay();
45
+ }
46
+
47
+ /** Alias for the "doorDisplay" command. */
48
+ export function doorsDisplay(): void {
49
+ doorDisplay();
50
+ }
51
+
52
+ /**
53
+ * Toggles custom text to appear next to every effect. Useful for debugging.
54
+ *
55
+ * By default, the entity ID will be displayed. Use the `setEffectDisplay` helper function to assign
56
+ * the text that you want to appear.
57
+ */
58
+ export function effectDisplay(): void {
59
+ toggleEffectDisplay();
60
+ }
61
+
62
+ /** Alias for the "effectDisplay" command. */
63
+ export function effectsDisplay(): void {
64
+ effectDisplay();
65
+ }
66
+
67
+ /**
68
+ * Toggles custom text to appear next to every familiar. Useful for debugging.
69
+ *
70
+ * By default, the entity ID will be displayed. Use the `setFamiliarDisplay` helper function to
71
+ * assign the text that you want to appear.
72
+ */
73
+ export function familiarDisplay(): void {
74
+ toggleFamiliarDisplay();
75
+ }
76
+
77
+ /** Alias for the "familiarDisplay" command. */
78
+ export function familiarsDisplay(): void {
79
+ familiarDisplay();
80
+ }
81
+
82
+ /**
83
+ * Toggles custom text to appear next to every knife. Useful for debugging.
84
+ *
85
+ * By default, the entity ID will be displayed. Use the `setKnifeDisplay` helper function to assign
86
+ * the text that you want to appear.
87
+ */
88
+ export function knifeDisplay(): void {
89
+ toggleKnifeDisplay();
90
+ }
91
+
92
+ /** Alias for the "knifeDisplay" command. */
93
+ export function knivesDisplay(): void {
94
+ knifeDisplay();
95
+ }
96
+
97
+ /**
98
+ * Toggles custom text to appear next to every laser. Useful for debugging.
99
+ *
100
+ * By default, the entity ID will be displayed. Use the `setLaserDisplay` helper function to assign
101
+ * the text that you want to appear.
102
+ */
103
+ export function laserDisplay(): void {
104
+ toggleLaserDisplay();
105
+ }
106
+
107
+ /** Alias for the "laserDisplay" command. */
108
+ export function lasersDisplay(): void {
109
+ laserDisplay();
110
+ }
111
+
112
+ /**
113
+ * Toggles custom text to appear next to every NPC. Useful for debugging.
114
+ *
115
+ * By default, the entity ID will be displayed. Use the `setNPCDisplay` helper function to assign
116
+ * the text that you want to appear.
117
+ */
118
+ export function npcDisplay(): void {
119
+ toggleNPCDisplay();
120
+ }
121
+
122
+ /** Alias for the "npcDisplay" command. */
123
+ export function npcsDisplay(): void {
124
+ npcDisplay();
125
+ }
126
+
127
+ /**
128
+ * Toggles custom text to appear next to every pickup. Useful for debugging.
129
+ *
130
+ * By default, the entity ID will be displayed. Use the `setPickupDisplay` helper function to assign
131
+ * the text that you want to appear.
132
+ */
133
+ export function pickupDisplay(): void {
134
+ togglePickupDisplay();
135
+ }
136
+
137
+ /** Alias for the "pickupDisplay" command. */
138
+ export function pickupsDisplay(): void {
139
+ pickupDisplay();
140
+ }
141
+
142
+ /**
143
+ * Toggles custom text to appear next to every pit. Useful for debugging.
144
+ *
145
+ * By default, the grid entity ID will be displayed. Use the `setPitDisplay` helper function to
146
+ * assign the text that you want to appear.
147
+ */
148
+ export function pitDisplay(): void {
149
+ togglePitDisplay();
150
+ }
151
+
152
+ /** Alias for the "pitDisplay" command. */
153
+ export function pitsDisplay(): void {
154
+ pitDisplay();
155
+ }
156
+
157
+ /**
158
+ * Toggles custom text to appear next to every player. Useful for debugging.
159
+ *
160
+ * By default, the entity ID will be displayed. Use the `setPlayerDisplay` helper function to assign
161
+ * the text that you want to appear.
162
+ */
163
+ export function playerDisplay(): void {
164
+ togglePlayerDisplay();
165
+ }
166
+
167
+ /** Alias for the "playerDisplay" command. */
168
+ export function playersDisplay(): void {
169
+ playerDisplay();
170
+ }
171
+
172
+ /**
173
+ * Toggles custom text to appear next to every poop. Useful for debugging.
174
+ *
175
+ * By default, the grid entity ID will be displayed. Use the `setPoopDisplay` helper function to
176
+ * assign the text that you want to appear.
177
+ */
178
+ export function poopDisplay(): void {
179
+ togglePoopDisplay();
180
+ }
181
+
182
+ /** Alias for the "poopDisplay" command. */
183
+ export function poopsDisplay(): void {
184
+ poopDisplay();
185
+ }
186
+
187
+ /**
188
+ * Toggles custom text to appear next to every pressure plate. Useful for debugging.
189
+ *
190
+ * By default, the grid entity ID will be displayed. Use the `setPressurePlateDisplay` helper
191
+ * function to assign the text that you want to appear.
192
+ */
193
+ export function pressurePlateDisplay(): void {
194
+ togglePressurePlateDisplay();
195
+ }
196
+
197
+ /** Alias for the "pressurePlateDisplay" command. */
198
+ export function pressurePlatesDisplay(): void {
199
+ pressurePlateDisplay();
200
+ }
201
+
202
+ /**
203
+ * Toggles custom text to appear next to every projectile. Useful for debugging.
204
+ *
205
+ * By default, the entity ID will be displayed. Use the `setProjectileDisplay` helper function to
206
+ * assign the text that you want to appear.
207
+ */
208
+ export function projectileDisplay(): void {
209
+ toggleProjectileDisplay();
210
+ }
211
+
212
+ /** Alias for the "projectileDisplay" command. */
213
+ export function projectilesDisplay(): void {
214
+ projectileDisplay();
215
+ }
216
+
217
+ /**
218
+ * Toggles custom text to appear next to every rock. Useful for debugging.
219
+ *
220
+ * By default, the grid entity ID will be displayed. Use the `setRockDisplay` helper function to
221
+ * assign the text that you want to appear.
222
+ */
223
+ export function rockDisplay(): void {
224
+ toggleRockDisplay();
225
+ }
226
+
227
+ /** Alias for the "rockDisplay" command. */
228
+ export function rocksDisplay(): void {
229
+ rockDisplay();
230
+ }
231
+
232
+ /**
233
+ * Toggles custom text to appear next to every slot. Useful for debugging.
234
+ *
235
+ * By default, the entity ID will be displayed. Use the `setSlotDisplay` helper function to assign
236
+ * the text that you want to appear.
237
+ */
238
+ export function slotDisplay(): void {
239
+ toggleSlotDisplay();
240
+ }
241
+
242
+ /** Alias for the "slotDisplay" command. */
243
+ export function slotsDisplay(): void {
244
+ slotDisplay();
245
+ }
246
+
247
+ /** Alias for the "spikesDisplay" command. */
248
+ export function spikeDisplay(): void {
249
+ spikesDisplay();
250
+ }
251
+
252
+ /**
253
+ * Toggles custom text to appear next to every spikes. Useful for debugging.
254
+ *
255
+ * By default, the grid entity ID will be displayed. Use the `setSpikesDisplay` helper function to
256
+ * assign the text that you want to appear.
257
+ */
258
+ export function spikesDisplay(): void {
259
+ toggleSpikesDisplay();
260
+ }
261
+
262
+ /**
263
+ * Toggles custom text to appear next to every tear. Useful for debugging.
264
+ *
265
+ * By default, the entity ID will be displayed. Use the `setTearDisplay` helper function to assign
266
+ * the text that you want to appear.
267
+ */
268
+ export function tearDisplay(): void {
269
+ toggleTearDisplay();
270
+ }
271
+
272
+ /** Alias for the "tearDisplay" command. */
273
+ export function tearsDisplay(): void {
274
+ tearDisplay();
275
+ }
276
+
277
+ /**
278
+ * Toggles custom text to appear next to every TNT. Useful for debugging.
279
+ *
280
+ * By default, the grid entity ID will be displayed. Use the `setTNTDisplay` helper function to
281
+ * assign the text that you want to appear.
282
+ */
283
+ export function tntDisplay(): void {
284
+ toggleTNTDisplay();
285
+ }
286
+
287
+ /** Alias for the "tntDisplay" command. */
288
+ export function tntsDisplay(): void {
289
+ tntDisplay();
290
+ }
@@ -108,7 +108,7 @@ function ____exports.spawnTrapdoorOrCrawlspace(self, trapdoor)
108
108
  end
109
109
  function ____exports.warpToRoomType(self, roomType)
110
110
  local roomTypeName = ROOM_TYPE_NAMES[roomType]
111
- if roomTypeName == nil or roomTypeName == DEFAULT_ROOM_TYPE_NAME then
111
+ if roomTypeName == DEFAULT_ROOM_TYPE_NAME then
112
112
  printConsole(
113
113
  nil,
114
114
  "Invalid room type: " .. tostring(roomType)
@@ -0,0 +1,139 @@
1
+ import {
2
+ Direction,
3
+ EntityType,
4
+ GridEntityType,
5
+ GridRoom,
6
+ RoomType,
7
+ } from "isaac-typescript-definitions";
8
+ import { game } from "../../cachedClasses";
9
+ import { HealthType } from "../../enums/HealthType";
10
+ import { directionToVector } from "../../functions/direction";
11
+ import { spawnGridWithVariant } from "../../functions/gridEntity";
12
+ import { logEntities, logGridEntities } from "../../functions/log";
13
+ import { addPlayerHealthType } from "../../functions/playerHealth";
14
+ import { getRoomData, getRoomDescriptor } from "../../functions/roomData";
15
+ import { changeRoom, getRoomGridIndexesForType } from "../../functions/rooms";
16
+ import { printConsole } from "../../functions/utils";
17
+ import {
18
+ DEFAULT_ROOM_TYPE_NAME,
19
+ ROOM_TYPE_NAMES,
20
+ } from "../../objects/roomTypeNames";
21
+
22
+ const DEFAULT_MOVE_UNITS = 0.5;
23
+
24
+ export function addHeart(params: string, healthType: HealthType): void {
25
+ let numHearts = healthType === HealthType.MAX_HEARTS ? 2 : 1;
26
+ if (params !== "") {
27
+ const num = tonumber(params);
28
+ if (num === undefined) {
29
+ printConsole("That is an invalid amount of hearts to add.");
30
+ return;
31
+ }
32
+
33
+ numHearts = num;
34
+ }
35
+
36
+ const player = Isaac.GetPlayer();
37
+ addPlayerHealthType(player, healthType, numHearts);
38
+ }
39
+
40
+ export function devilAngel(useDevil: boolean): void {
41
+ const level = game.GetLevel();
42
+
43
+ const devilAngelRoomData = getRoomData(GridRoom.DEVIL);
44
+ if (devilAngelRoomData !== undefined) {
45
+ const roomType = devilAngelRoomData.Type;
46
+ const conflictingType = useDevil ? RoomType.ANGEL : RoomType.DEVIL;
47
+ if (roomType === conflictingType) {
48
+ // Delete the room data, which will allow the `Level.InitializeDevilAngelRoom` method to work.
49
+ const roomDescriptor = getRoomDescriptor(GridRoom.DEVIL);
50
+ roomDescriptor.Data = undefined;
51
+ }
52
+ }
53
+
54
+ if (useDevil) {
55
+ level.InitializeDevilAngelRoom(false, true);
56
+ } else {
57
+ level.InitializeDevilAngelRoom(true, false);
58
+ }
59
+
60
+ changeRoom(GridRoom.DEVIL);
61
+ }
62
+
63
+ export function listEntities(
64
+ params: string,
65
+ includeBackgroundEffects: boolean,
66
+ ): void {
67
+ let entityTypeFilter: EntityType | undefined;
68
+ if (params !== "") {
69
+ entityTypeFilter = tonumber(params);
70
+ if (entityTypeFilter === undefined) {
71
+ printConsole("That is an invalid entity type to filter by.");
72
+ return;
73
+ }
74
+ }
75
+
76
+ logEntities(includeBackgroundEffects, entityTypeFilter);
77
+ printConsole('Logged the entities in the room to the "log.txt" file.');
78
+ }
79
+
80
+ export function listGridEntities(params: string, includeWalls: boolean): void {
81
+ let gridEntityTypeFilter: GridEntityType | undefined;
82
+ if (params !== "") {
83
+ gridEntityTypeFilter = tonumber(params);
84
+ if (gridEntityTypeFilter === undefined) {
85
+ printConsole("That is an invalid grid entity type to filter by.");
86
+ return;
87
+ }
88
+ }
89
+
90
+ logGridEntities(includeWalls, gridEntityTypeFilter);
91
+ printConsole('Logged the grid entities in the room to the "log.txt" file.');
92
+ }
93
+
94
+ export function movePlayer(params: string, direction: Direction): void {
95
+ let amount = DEFAULT_MOVE_UNITS;
96
+ if (params !== "") {
97
+ const num = tonumber(params);
98
+ if (num === undefined) {
99
+ printConsole("That is an invalid amount of units to move.");
100
+ return;
101
+ }
102
+
103
+ amount = num;
104
+ }
105
+
106
+ const player = Isaac.GetPlayer();
107
+ const vector = directionToVector(direction);
108
+ const modifiedVector = vector.mul(amount);
109
+ player.Position = player.Position.add(modifiedVector);
110
+ }
111
+
112
+ export function spawnTrapdoorOrCrawlspace(trapdoor: boolean): void {
113
+ const room = game.GetRoom();
114
+ const player = Isaac.GetPlayer();
115
+ const position = room.FindFreeTilePosition(player.Position, 0);
116
+ const gridIndex = room.GetGridIndex(position);
117
+ const gridEntityType = trapdoor
118
+ ? GridEntityType.TRAPDOOR
119
+ : GridEntityType.CRAWL_SPACE;
120
+
121
+ spawnGridWithVariant(gridEntityType, 0, gridIndex);
122
+ }
123
+
124
+ export function warpToRoomType(roomType: RoomType): void {
125
+ const roomTypeName = ROOM_TYPE_NAMES[roomType];
126
+ if (roomTypeName === DEFAULT_ROOM_TYPE_NAME) {
127
+ printConsole(`Invalid room type: ${roomType}`);
128
+ }
129
+
130
+ const gridIndexes = getRoomGridIndexesForType(roomType);
131
+ const firstGridIndex = gridIndexes[0];
132
+ if (firstGridIndex === undefined) {
133
+ printConsole(`There are no ${roomTypeName}s on this floor.`);
134
+ return;
135
+ }
136
+
137
+ changeRoom(firstGridIndex);
138
+ printConsole(`Warped to room type: ${roomTypeName} (${roomType})`);
139
+ }