isaacscript-common 3.17.0 → 4.0.2

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 (425) 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.lua +2 -1
  11. package/callbacks/postCursedTeleport.ts +185 -0
  12. package/callbacks/postCustomDoorEnter.lua +0 -7
  13. package/callbacks/postCustomDoorEnter.ts +292 -0
  14. package/callbacks/postDiceRoomActivated.ts +60 -0
  15. package/callbacks/postDoorRender.ts +26 -0
  16. package/callbacks/postDoorUpdate.ts +26 -0
  17. package/callbacks/postEffectInitLate.ts +36 -0
  18. package/callbacks/postEffectStateChanged.ts +43 -0
  19. package/callbacks/postEsauJr.lua +2 -1
  20. package/callbacks/postEsauJr.ts +109 -0
  21. package/callbacks/postFamiliarInitLate.ts +36 -0
  22. package/callbacks/postFamiliarStateChanged.ts +43 -0
  23. package/callbacks/postFlip.lua +4 -3
  24. package/callbacks/postFlip.ts +90 -0
  25. package/callbacks/postGreedModeWave.ts +41 -0
  26. package/callbacks/postGridEntity.ts +164 -0
  27. package/callbacks/postGridEntityCollision.ts +69 -0
  28. package/callbacks/postGridEntityRender.ts +26 -0
  29. package/callbacks/postHolyMantleRemoved.ts +55 -0
  30. package/callbacks/postItemDischarged.lua +4 -3
  31. package/callbacks/postItemDischarged.ts +154 -0
  32. package/callbacks/postKnifeInitLate.ts +36 -0
  33. package/callbacks/postLaserInitLate.ts +36 -0
  34. package/callbacks/postNPCInitLate.ts +36 -0
  35. package/callbacks/postNPCStateChanged.ts +42 -0
  36. package/callbacks/postNewRoomEarly.lua +2 -1
  37. package/callbacks/postNewRoomEarly.ts +96 -0
  38. package/callbacks/postPickupCollect.ts +48 -0
  39. package/callbacks/postPickupInitFirst.ts +70 -0
  40. package/callbacks/postPickupInitLate.ts +36 -0
  41. package/callbacks/postPickupStateChanged.ts +43 -0
  42. package/callbacks/postPitRender.ts +26 -0
  43. package/callbacks/postPitUpdate.ts +26 -0
  44. package/callbacks/postPlayerChangeHealth.ts +62 -0
  45. package/callbacks/postPlayerChangeType.ts +56 -0
  46. package/callbacks/postPlayerCollectible.ts +113 -0
  47. package/callbacks/postPlayerFatalDamage.ts +141 -0
  48. package/callbacks/postPlayerInitLate.ts +37 -0
  49. package/callbacks/postPlayerReordered.ts +142 -0
  50. package/callbacks/postPoopRender.ts +26 -0
  51. package/callbacks/postPoopUpdate.ts +26 -0
  52. package/callbacks/postPressurePlateRender.ts +26 -0
  53. package/callbacks/postPressurePlateUpdate.ts +26 -0
  54. package/callbacks/postProjectileInitLate.ts +36 -0
  55. package/callbacks/postPurchase.ts +64 -0
  56. package/callbacks/postRockRender.ts +26 -0
  57. package/callbacks/postRockUpdate.ts +26 -0
  58. package/callbacks/postRoomClearChanged.ts +57 -0
  59. package/callbacks/postSacrifice.lua +3 -2
  60. package/callbacks/postSacrifice.ts +64 -0
  61. package/callbacks/postSlotDestroyed.ts +92 -0
  62. package/callbacks/postSlotInitUpdate.ts +68 -0
  63. package/callbacks/postSlotRender.ts +69 -0
  64. package/callbacks/postSpikesRender.ts +26 -0
  65. package/callbacks/postSpikesUpdate.ts +26 -0
  66. package/callbacks/postTNTRender.ts +26 -0
  67. package/callbacks/postTNTUpdate.ts +26 -0
  68. package/callbacks/postTearInitLate.ts +36 -0
  69. package/callbacks/postTearInitVeryLate.ts +41 -0
  70. package/callbacks/postTransformation.ts +59 -0
  71. package/callbacks/postTrinketBreak.lua +3 -2
  72. package/callbacks/postTrinketBreak.ts +112 -0
  73. package/callbacks/preBerserkDeath.ts +49 -0
  74. package/callbacks/preNewLevel.ts +55 -0
  75. package/callbacks/reorderedCallbacks.lua +1 -0
  76. package/callbacks/reorderedCallbacks.ts +168 -0
  77. package/callbacks/subscriptions/postAmbushFinished.ts +32 -0
  78. package/callbacks/subscriptions/postAmbushStarted.ts +32 -0
  79. package/callbacks/subscriptions/postBombInitLate.ts +32 -0
  80. package/callbacks/subscriptions/postBoneExploded.ts +32 -0
  81. package/callbacks/subscriptions/postBoneSwing.ts +24 -0
  82. package/callbacks/subscriptions/postCollectibleInitFirst.ts +37 -0
  83. package/callbacks/subscriptions/postCursedTeleport.ts +24 -0
  84. package/callbacks/subscriptions/postCustomDoorEnter.ts +45 -0
  85. package/callbacks/subscriptions/postCustomRevive.ts +36 -0
  86. package/callbacks/subscriptions/postDiceRoomActivated.ts +38 -0
  87. package/callbacks/subscriptions/postDoorRender.ts +35 -0
  88. package/callbacks/subscriptions/postDoorUpdate.ts +35 -0
  89. package/callbacks/subscriptions/postEffectInitLate.ts +32 -0
  90. package/callbacks/subscriptions/postEffectStateChanged.ts +40 -0
  91. package/callbacks/subscriptions/postEsauJr.ts +24 -0
  92. package/callbacks/subscriptions/postFamiliarInitLate.ts +32 -0
  93. package/callbacks/subscriptions/postFamiliarStateChanged.ts +40 -0
  94. package/callbacks/subscriptions/postFirstEsauJr.ts +24 -0
  95. package/callbacks/subscriptions/postFirstFlip.ts +24 -0
  96. package/callbacks/subscriptions/postFlip.ts +22 -0
  97. package/callbacks/subscriptions/postGameStartedReordered.ts +24 -0
  98. package/callbacks/subscriptions/postGreedModeWave.ts +24 -0
  99. package/callbacks/subscriptions/postGridEntityBroken.ts +51 -0
  100. package/callbacks/subscriptions/postGridEntityCollision.ts +54 -0
  101. package/callbacks/subscriptions/postGridEntityInit.ts +51 -0
  102. package/callbacks/subscriptions/postGridEntityRemove.ts +52 -0
  103. package/callbacks/subscriptions/postGridEntityRender.ts +51 -0
  104. package/callbacks/subscriptions/postGridEntityStateChanged.ts +55 -0
  105. package/callbacks/subscriptions/postGridEntityUpdate.ts +51 -0
  106. package/callbacks/subscriptions/postHolyMantleRemoved.ts +48 -0
  107. package/callbacks/subscriptions/postItemDischarged.ts +43 -0
  108. package/callbacks/subscriptions/postItemPickup.ts +64 -0
  109. package/callbacks/subscriptions/postKnifeInitLate.ts +32 -0
  110. package/callbacks/subscriptions/postLaserInitLate.ts +32 -0
  111. package/callbacks/subscriptions/postNPCInitLate.ts +32 -0
  112. package/callbacks/subscriptions/postNPCStateChanged.ts +42 -0
  113. package/callbacks/subscriptions/postNewLevelReordered.ts +22 -0
  114. package/callbacks/subscriptions/postNewRoomEarly.ts +22 -0
  115. package/callbacks/subscriptions/postNewRoomReordered.ts +22 -0
  116. package/callbacks/subscriptions/postPEffectUpdateReordered.ts +40 -0
  117. package/callbacks/subscriptions/postPickupCollect.ts +35 -0
  118. package/callbacks/subscriptions/postPickupInitFirst.ts +32 -0
  119. package/callbacks/subscriptions/postPickupInitLate.ts +32 -0
  120. package/callbacks/subscriptions/postPickupStateChanged.ts +40 -0
  121. package/callbacks/subscriptions/postPitRender.ts +35 -0
  122. package/callbacks/subscriptions/postPitUpdate.ts +35 -0
  123. package/callbacks/subscriptions/postPlayerChangeHealth.ts +49 -0
  124. package/callbacks/subscriptions/postPlayerChangeType.ts +40 -0
  125. package/callbacks/subscriptions/postPlayerCollectibleAdded.d.ts +2 -3
  126. package/callbacks/subscriptions/postPlayerCollectibleAdded.lua +2 -7
  127. package/callbacks/subscriptions/postPlayerCollectibleAdded.ts +38 -0
  128. package/callbacks/subscriptions/postPlayerCollectibleRemoved.d.ts +2 -3
  129. package/callbacks/subscriptions/postPlayerCollectibleRemoved.lua +2 -7
  130. package/callbacks/subscriptions/postPlayerCollectibleRemoved.ts +38 -0
  131. package/callbacks/subscriptions/postPlayerFatalDamage.d.ts +1 -1
  132. package/callbacks/subscriptions/postPlayerFatalDamage.ts +68 -0
  133. package/callbacks/subscriptions/postPlayerInitLate.ts +40 -0
  134. package/callbacks/subscriptions/postPlayerInitReordered.ts +40 -0
  135. package/callbacks/subscriptions/postPlayerRenderReordered.ts +40 -0
  136. package/callbacks/subscriptions/postPlayerUpdateReordered.ts +40 -0
  137. package/callbacks/subscriptions/postPoopRender.ts +35 -0
  138. package/callbacks/subscriptions/postPoopUpdate.ts +35 -0
  139. package/callbacks/subscriptions/postPressurePlateRender.ts +37 -0
  140. package/callbacks/subscriptions/postPressurePlateUpdate.ts +37 -0
  141. package/callbacks/subscriptions/postProjectileInitLate.ts +35 -0
  142. package/callbacks/subscriptions/postPurchase.ts +31 -0
  143. package/callbacks/subscriptions/postRockRender.ts +35 -0
  144. package/callbacks/subscriptions/postRockUpdate.ts +35 -0
  145. package/callbacks/subscriptions/postRoomClearChanged.ts +30 -0
  146. package/callbacks/subscriptions/postSacrifice.ts +43 -0
  147. package/callbacks/subscriptions/postSlotAnimationChanged.ts +40 -0
  148. package/callbacks/subscriptions/postSlotDestroyed.ts +55 -0
  149. package/callbacks/subscriptions/postSlotInit.ts +32 -0
  150. package/callbacks/subscriptions/postSlotRender.ts +32 -0
  151. package/callbacks/subscriptions/postSlotUpdate.ts +32 -0
  152. package/callbacks/subscriptions/postSpikesRender.ts +35 -0
  153. package/callbacks/subscriptions/postSpikesUpdate.ts +35 -0
  154. package/callbacks/subscriptions/postTNTRender.ts +35 -0
  155. package/callbacks/subscriptions/postTNTUpdate.ts +35 -0
  156. package/callbacks/subscriptions/postTearInitLate.ts +32 -0
  157. package/callbacks/subscriptions/postTearInitVeryLate.ts +32 -0
  158. package/callbacks/subscriptions/postTransformation.ts +40 -0
  159. package/callbacks/subscriptions/postTrinketBreak.ts +38 -0
  160. package/callbacks/subscriptions/preBerserkDeath.d.ts +1 -1
  161. package/callbacks/subscriptions/preBerserkDeath.ts +42 -0
  162. package/callbacks/subscriptions/preCustomRevive.d.ts +1 -1
  163. package/callbacks/subscriptions/preCustomRevive.ts +46 -0
  164. package/callbacks/subscriptions/preItemPickup.ts +64 -0
  165. package/callbacks/subscriptions/preNewLevel.ts +24 -0
  166. package/classes/DefaultMap.ts +174 -0
  167. package/classes/ModUpgraded.d.ts +8 -4
  168. package/classes/ModUpgraded.lua +5 -8
  169. package/classes/ModUpgraded.ts +84 -0
  170. package/constants.ts +162 -0
  171. package/constantsFirstLast.ts +217 -0
  172. package/enums/AmbushType.ts +4 -0
  173. package/enums/HealthType.ts +16 -0
  174. package/enums/ModCallbackCustom.d.ts +20 -18
  175. package/enums/ModCallbackCustom.ts +1278 -0
  176. package/enums/PocketItemType.ts +8 -0
  177. package/enums/SerializationType.ts +5 -0
  178. package/enums/SlotDestructionType.ts +4 -0
  179. package/enums/private/CopyableIsaacAPIClassType.ts +7 -0
  180. package/enums/private/SaveDataKey.ts +14 -0
  181. package/enums/private/SerializationBrand.ts +42 -0
  182. package/features/characterHealthConversion.lua +2 -9
  183. package/features/characterHealthConversion.ts +111 -0
  184. package/features/characterStats.ts +61 -0
  185. package/features/debugDisplay/debugDisplay.ts +221 -0
  186. package/features/debugDisplay/exports.ts +368 -0
  187. package/features/debugDisplay/v.ts +65 -0
  188. package/features/deployJSONRoom.ts +743 -0
  189. package/features/disableInputs.ts +193 -0
  190. package/features/disableSound.ts +77 -0
  191. package/features/extraConsoleCommands/commandsDisplay.ts +290 -0
  192. package/features/extraConsoleCommands/commandsSubroutines.lua +1 -1
  193. package/features/extraConsoleCommands/commandsSubroutines.ts +139 -0
  194. package/features/extraConsoleCommands/init.ts +334 -0
  195. package/features/extraConsoleCommands/listCommands.ts +1299 -0
  196. package/features/extraConsoleCommands/v.ts +14 -0
  197. package/features/fadeInRemover.ts +60 -0
  198. package/features/fastReset.ts +75 -0
  199. package/features/forgottenSwitch.ts +50 -0
  200. package/features/getCollectibleItemPoolType.ts +66 -0
  201. package/features/persistentEntities.ts +183 -0
  202. package/features/playerInventory.lua +1 -0
  203. package/features/playerInventory.ts +135 -0
  204. package/features/ponyDetection.ts +74 -0
  205. package/features/preventCollectibleRotation.ts +115 -0
  206. package/features/runInNFrames.ts +148 -0
  207. package/features/saveDataManager/constants.ts +4 -0
  208. package/features/saveDataManager/exports.ts +229 -0
  209. package/features/saveDataManager/load.ts +99 -0
  210. package/features/saveDataManager/main.ts +195 -0
  211. package/features/saveDataManager/maps.ts +13 -0
  212. package/features/saveDataManager/merge.ts +194 -0
  213. package/features/saveDataManager/save.ts +74 -0
  214. package/features/saveDataManager/serializationBrand.ts +16 -0
  215. package/features/sirenHelpers.ts +129 -0
  216. package/features/taintedLazarusPlayers.ts +113 -0
  217. package/featuresInitialized.ts +20 -0
  218. package/functions/ambush.ts +47 -0
  219. package/functions/array.ts +410 -0
  220. package/functions/benchmark.ts +36 -0
  221. package/functions/bitwise.ts +24 -0
  222. package/functions/bombs.ts +12 -0
  223. package/functions/boss.ts +227 -0
  224. package/functions/cacheFlag.ts +12 -0
  225. package/functions/cards.lua +1 -1
  226. package/functions/cards.ts +271 -0
  227. package/functions/challenges.ts +13 -0
  228. package/functions/character.ts +126 -0
  229. package/functions/charge.ts +237 -0
  230. package/functions/chargeBar.ts +67 -0
  231. package/functions/collectibleCacheFlag.ts +90 -0
  232. package/functions/collectibleSet.ts +56 -0
  233. package/functions/collectibleTag.ts +89 -0
  234. package/functions/collectibles.ts +659 -0
  235. package/functions/color.d.ts +1 -1
  236. package/functions/color.lua +0 -7
  237. package/functions/color.ts +128 -0
  238. package/functions/debug.lua +2 -2
  239. package/functions/debug.ts +68 -0
  240. package/functions/deepCopy.lua +46 -51
  241. package/functions/deepCopy.ts +535 -0
  242. package/functions/deepCopyTests.ts +386 -0
  243. package/functions/direction.ts +49 -0
  244. package/functions/doors.lua +1 -2
  245. package/functions/doors.ts +347 -0
  246. package/functions/easing.ts +182 -0
  247. package/functions/eden.ts +47 -0
  248. package/functions/effects.ts +20 -0
  249. package/functions/entity.ts +439 -0
  250. package/functions/entitySpecific.ts +889 -0
  251. package/functions/entityTypes.ts +6 -0
  252. package/functions/enums.ts +146 -0
  253. package/functions/familiars.ts +106 -0
  254. package/functions/flag.ts +165 -0
  255. package/functions/flying.ts +117 -0
  256. package/functions/globals.d.ts +3 -3
  257. package/functions/globals.lua +8 -2
  258. package/functions/globals.ts +242 -0
  259. package/functions/gridEntity.ts +511 -0
  260. package/functions/gridEntitySpecific.ts +112 -0
  261. package/functions/input.ts +139 -0
  262. package/functions/isaacAPIClass.ts +67 -0
  263. package/functions/jsonHelpers.ts +45 -0
  264. package/functions/jsonRoom.ts +100 -0
  265. package/functions/kColor.d.ts +1 -1
  266. package/functions/kColor.lua +0 -7
  267. package/functions/kColor.ts +129 -0
  268. package/functions/language.ts +13 -0
  269. package/functions/level.ts +31 -0
  270. package/functions/log.ts +720 -0
  271. package/functions/map.ts +56 -0
  272. package/functions/math.ts +149 -0
  273. package/functions/mergeTests.ts +288 -0
  274. package/functions/npc.ts +148 -0
  275. package/functions/pickupVariants.ts +60 -0
  276. package/functions/pickups.ts +499 -0
  277. package/functions/pills.lua +1 -1
  278. package/functions/pills.ts +205 -0
  279. package/functions/player.lua +9 -20
  280. package/functions/player.ts +1056 -0
  281. package/functions/playerDataStructures.ts +150 -0
  282. package/functions/playerHealth.lua +28 -39
  283. package/functions/playerHealth.ts +382 -0
  284. package/functions/playerIndex.ts +195 -0
  285. package/functions/pocketItems.ts +149 -0
  286. package/functions/positionVelocity.ts +188 -0
  287. package/functions/random.ts +77 -0
  288. package/functions/revive.ts +201 -0
  289. package/functions/rng.d.ts +1 -1
  290. package/functions/rng.lua +0 -7
  291. package/functions/rng.ts +172 -0
  292. package/functions/roomData.ts +199 -0
  293. package/functions/roomGrid.ts +109 -0
  294. package/functions/roomShape.ts +80 -0
  295. package/functions/rooms.lua +1 -3
  296. package/functions/rooms.ts +648 -0
  297. package/functions/run.ts +36 -0
  298. package/functions/saveFile.ts +128 -0
  299. package/functions/seeds.ts +19 -0
  300. package/functions/serialization.lua +0 -3
  301. package/functions/serialization.ts +91 -0
  302. package/functions/set.ts +95 -0
  303. package/functions/sound.ts +9 -0
  304. package/functions/spawnCollectible.ts +104 -0
  305. package/functions/sprite.ts +107 -0
  306. package/functions/stage.ts +125 -0
  307. package/functions/string.ts +47 -0
  308. package/functions/table.ts +189 -0
  309. package/functions/tears.ts +32 -0
  310. package/functions/transformations.lua +1 -3
  311. package/functions/transformations.ts +131 -0
  312. package/functions/trinketCacheFlag.ts +60 -0
  313. package/functions/trinketGive.ts +157 -0
  314. package/functions/trinkets.ts +215 -0
  315. package/functions/tstlClass.ts +157 -0
  316. package/functions/types.ts +36 -0
  317. package/functions/ui.ts +138 -0
  318. package/functions/utils.d.ts +0 -37
  319. package/functions/utils.lua +0 -35
  320. package/functions/utils.ts +189 -0
  321. package/functions/vector.d.ts +1 -1
  322. package/functions/vector.lua +0 -7
  323. package/functions/vector.ts +126 -0
  324. package/index.ts +172 -0
  325. package/initCustomCallbacks.ts +132 -0
  326. package/initFeatures.ts +39 -0
  327. package/interfaces/AddCallbackParameterCustom.ts +188 -0
  328. package/interfaces/ChargeBarSprites.ts +12 -0
  329. package/interfaces/JSONDoor.d.ts +4 -4
  330. package/interfaces/JSONDoor.ts +13 -0
  331. package/interfaces/JSONEntity.d.ts +5 -5
  332. package/interfaces/JSONEntity.ts +16 -0
  333. package/interfaces/JSONRoom.d.ts +9 -9
  334. package/interfaces/JSONRoom.ts +36 -0
  335. package/interfaces/JSONRooms.ts +12 -0
  336. package/interfaces/JSONSpawn.d.ts +3 -3
  337. package/interfaces/JSONSpawn.ts +14 -0
  338. package/interfaces/PlayerHealth.ts +16 -0
  339. package/interfaces/PocketItemDescription.ts +9 -0
  340. package/interfaces/SaveData.ts +29 -0
  341. package/interfaces/TrinketSituation.ts +9 -0
  342. package/interfaces/private/TSTLClassMetatable.ts +8 -0
  343. package/maps/PHDPillConversions.ts +21 -0
  344. package/maps/cardMap.ts +209 -0
  345. package/maps/characterMap.ts +87 -0
  346. package/maps/collectibleDescriptionMap.ts +732 -0
  347. package/maps/collectibleNameMap.ts +731 -0
  348. package/maps/defaultPlayerStatMap.ts +17 -0
  349. package/maps/falsePHDPillConversions.ts +35 -0
  350. package/maps/gridEntityTypeToBrokenStateMap.ts +50 -0
  351. package/maps/gridEntityXMLMap.ts +176 -0
  352. package/maps/pillEffectMap.ts +88 -0
  353. package/maps/roomShapeToTopLeftWallGridIndexMap.ts +18 -0
  354. package/maps/roomTypeMap.ts +40 -0
  355. package/maps/trinketDescriptionMap.ts +200 -0
  356. package/maps/trinketNameMap.ts +198 -0
  357. package/objects/LRoomShapeToRectangles.ts +44 -0
  358. package/objects/callbackRegisterFunctions.ts +187 -0
  359. package/objects/cardDescriptions.ts +105 -0
  360. package/objects/cardNames.ts +105 -0
  361. package/objects/cardTypes.ts +104 -0
  362. package/objects/challengeNames.ts +52 -0
  363. package/objects/characterNames.ts +48 -0
  364. package/objects/coinSubTypeToValue.ts +14 -0
  365. package/objects/colors.ts +16 -0
  366. package/objects/directionNames.ts +11 -0
  367. package/objects/directionToDegrees.ts +11 -0
  368. package/objects/directionToVector.ts +12 -0
  369. package/objects/doorSlotFlagToDoorSlot.ts +16 -0
  370. package/objects/doorSlotToDirection.ts +14 -0
  371. package/objects/isaacAPIClassTypeToBrand.ts +11 -0
  372. package/objects/isaacAPIClassTypeToCopyFunction.ts +18 -0
  373. package/objects/languageNames.ts +13 -0
  374. package/objects/oppositeDoorSlots.ts +15 -0
  375. package/objects/pillEffectClasses.ts +63 -0
  376. package/objects/pillEffectNames.ts +57 -0
  377. package/objects/pillEffectTypes.ts +62 -0
  378. package/objects/roomShapeBounds.ts +71 -0
  379. package/objects/roomShapeLayoutSizes.ts +45 -0
  380. package/objects/roomShapeToBottomRightPosition.ts +25 -0
  381. package/objects/roomShapeToDoorSlots.ts +83 -0
  382. package/objects/roomShapeToDoorSlotsToGridIndexDelta.ts +127 -0
  383. package/objects/roomShapeToGridWidth.ts +21 -0
  384. package/objects/roomShapeToTopLeftPosition.ts +26 -0
  385. package/objects/roomShapeVolumes.ts +38 -0
  386. package/objects/roomTypeNames.ts +36 -0
  387. package/objects/serializedIsaacAPIClassTypeToIdentityFunction.ts +14 -0
  388. package/objects/stageTypeToLetter.ts +15 -0
  389. package/objects/transformationNames.d.ts +0 -1
  390. package/objects/transformationNames.lua +0 -1
  391. package/objects/transformationNames.ts +18 -0
  392. package/package.json +2 -2
  393. package/patchErrorFunctions.ts +92 -0
  394. package/sets/LRoomShapesSet.ts +8 -0
  395. package/sets/bossSets.ts +470 -0
  396. package/sets/charactersThatStartWithAnActiveItemSet.ts +16 -0
  397. package/sets/charactersWithBlackHeartFromEternalHeartSet.ts +7 -0
  398. package/sets/charactersWithFreeDevilDealsSet.ts +4 -0
  399. package/sets/charactersWithNoRedHeartsSet.ts +17 -0
  400. package/sets/charactersWithNoSoulHeartsSet.ts +14 -0
  401. package/sets/chestPickupVariantsSet.ts +16 -0
  402. package/sets/familiarsThatShootPlayerTearsSet.ts +13 -0
  403. package/sets/lostStyleCharactersSet.ts +13 -0
  404. package/sets/mineShaftRoomSubTypesSet.ts +10 -0
  405. package/sets/redHeartSubTypesSet.ts +7 -0
  406. package/sets/sinEntityTypesSet.ts +11 -0
  407. package/sets/singleUseActiveCollectibleTypesSet.ts +13 -0
  408. package/sets/storyBossesSet.ts +17 -0
  409. package/types/AnyEntity.ts +12 -0
  410. package/types/AwaitingTextInput.d.ts +2 -0
  411. package/types/CollectibleIndex.d.ts +1 -1
  412. package/types/CollectibleIndex.ts +16 -0
  413. package/types/PickingUpItem.d.ts +3 -3
  414. package/types/PickingUpItem.ts +89 -0
  415. package/types/PlayerIndex.d.ts +1 -1
  416. package/types/PlayerIndex.ts +13 -0
  417. package/types/private/IsaacAPIClass.d.ts +1 -1
  418. package/types/private/IsaacAPIClass.ts +3 -0
  419. package/types/private/SerializedIsaacAPIClass.d.ts +1 -1
  420. package/types/private/SerializedIsaacAPIClass.ts +3 -0
  421. package/types/private/TSTLClass.d.ts +1 -1
  422. package/types/private/TSTLClass.ts +3 -0
  423. package/upgradeMod.d.ts +2 -2
  424. package/upgradeMod.lua +2 -2
  425. package/upgradeMod.ts +55 -0
@@ -0,0 +1,128 @@
1
+ import { SerializationBrand } from "../enums/private/SerializationBrand";
2
+ import { SerializationType } from "../enums/SerializationType";
3
+ import { isaacAPIClassEquals, isIsaacAPIClassOfType } from "./isaacAPIClass";
4
+ import { copyValuesToTable, getNumbersFromTable, tableHasKeys } from "./table";
5
+ import { isTable } from "./types";
6
+
7
+ type SerializedColor = LuaTable<string, unknown> & {
8
+ readonly __serializedColorBrand: unique symbol;
9
+ };
10
+
11
+ interface CopyColorReturn {
12
+ [SerializationType.NONE]: Color;
13
+ [SerializationType.SERIALIZE]: SerializedColor;
14
+ [SerializationType.DESERIALIZE]: Color;
15
+ }
16
+
17
+ const KEYS = ["R", "G", "B", "A", "RO", "GO", "BO"];
18
+ const OBJECT_NAME = "Color";
19
+
20
+ export function colorEquals(color1: Color, color2: Color): boolean {
21
+ return isaacAPIClassEquals(color1, color2, KEYS);
22
+ }
23
+
24
+ /**
25
+ * Helper function to copy a `Color` object.
26
+ *
27
+ * @param color The Color object to copy. In the case of deserialization, this will actually be a
28
+ * Lua table instead of an instantiated Color class.
29
+ * @param serializationType Default is `SerializationType.NONE`.
30
+ */
31
+ export function copyColor<
32
+ C extends Color | SerializedColor,
33
+ S extends SerializationType,
34
+ >(color: C, serializationType: S): CopyColorReturn[S];
35
+ export function copyColor<C extends Color | SerializedColor>(
36
+ color: C,
37
+ ): CopyColorReturn[SerializationType.NONE];
38
+ export function copyColor(
39
+ color: Color | SerializedColor,
40
+ serializationType = SerializationType.NONE,
41
+ ): CopyColorReturn[keyof CopyColorReturn] {
42
+ switch (serializationType) {
43
+ case SerializationType.NONE: {
44
+ if (!isColor(color)) {
45
+ error(
46
+ `Failed to copy a ${OBJECT_NAME} object since the provided object was not a userdata ${OBJECT_NAME} class.`,
47
+ );
48
+ }
49
+
50
+ return Color(
51
+ color.R,
52
+ color.G,
53
+ color.B,
54
+ color.A,
55
+ color.RO,
56
+ color.GO,
57
+ color.BO,
58
+ );
59
+ }
60
+
61
+ case SerializationType.SERIALIZE: {
62
+ if (!isColor(color)) {
63
+ error(
64
+ `Failed to serialize a ${OBJECT_NAME} object since the provided object was not a userdata ${OBJECT_NAME} class.`,
65
+ );
66
+ }
67
+
68
+ const colorTable = new LuaTable<string, unknown>();
69
+ copyValuesToTable(color, KEYS, colorTable);
70
+ colorTable.set(SerializationBrand.COLOR, "");
71
+ return colorTable as SerializedColor;
72
+ }
73
+
74
+ case SerializationType.DESERIALIZE: {
75
+ if (!isTable(color)) {
76
+ error(
77
+ `Failed to deserialize a ${OBJECT_NAME} object since the provided object was not a Lua table.`,
78
+ );
79
+ }
80
+
81
+ const [r, g, b, a, ro, go, bo] = getNumbersFromTable(
82
+ color as LuaTable<string, unknown>,
83
+ OBJECT_NAME,
84
+ ...KEYS,
85
+ );
86
+
87
+ if (r === undefined) {
88
+ error(
89
+ `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: r`,
90
+ );
91
+ }
92
+ if (g === undefined) {
93
+ error(
94
+ `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: g`,
95
+ );
96
+ }
97
+ if (b === undefined) {
98
+ error(
99
+ `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: b`,
100
+ );
101
+ }
102
+
103
+ return Color(r, g, b, a, ro, go, bo);
104
+ }
105
+ }
106
+ }
107
+
108
+ /** Returns `Color(1, 1, 1)`. */
109
+ export function getDefaultColor(): Color {
110
+ return Color(1, 1, 1);
111
+ }
112
+
113
+ /** Helper function to check if something is an instantiated Color object. */
114
+ export function isColor(object: unknown): object is Color {
115
+ return isIsaacAPIClassOfType(object, OBJECT_NAME);
116
+ }
117
+
118
+ /**
119
+ * Used to determine is the given table is a serialized `Color` object created by the save data
120
+ * manager and/or the `deepCopy` function.
121
+ */
122
+ export function isSerializedColor(object: unknown): object is SerializedColor {
123
+ if (!isTable(object)) {
124
+ return false;
125
+ }
126
+
127
+ return tableHasKeys(object, ...KEYS) && object.has(SerializationBrand.COLOR);
128
+ }
@@ -24,7 +24,7 @@ end
24
24
  -- This function uses the `package` global variable as a proxy to determine if the "--luadebug" flag
25
25
  -- is enabled or not.
26
26
  function ____exports.isLuaDebugEnabled(self)
27
- return package ~= nil
27
+ return _G.package ~= nil
28
28
  end
29
29
  --- Helper function to print a stack trace to the "log.txt" file, similar to JavaScript's
30
30
  -- `console.trace` function.
@@ -36,7 +36,7 @@ function ____exports.traceback(self)
36
36
  log(tracebackOutput)
37
37
  end
38
38
  local function setDebugFunctionsGlobal(self)
39
- if debug == nil and sandboxGetTraceback == nil then
39
+ if _G.debug == nil and sandboxGetTraceback == nil then
40
40
  return
41
41
  end
42
42
  local globals = _G
@@ -0,0 +1,68 @@
1
+ import { log } from "./log";
2
+
3
+ /**
4
+ * Helper function to get a stack trace.
5
+ *
6
+ * This will only work if the `--luadebug` launch option is enabled or the Racing+ sandbox is
7
+ * enabled.
8
+ */
9
+ export function getTraceback(): string {
10
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
11
+ if (debug !== undefined) {
12
+ // The --luadebug launch flag is enabled.
13
+ return debug.traceback();
14
+ }
15
+
16
+ if (sandboxGetTraceback !== undefined) {
17
+ return sandboxGetTraceback();
18
+ }
19
+
20
+ return 'stack traceback:\n(the "--luadebug" flag is not enabled)';
21
+ }
22
+
23
+ /**
24
+ * Players can boot the game with an launch option called "--luadebug", which will enable additional
25
+ * functionality that is considered to be unsafe. For more information about this flag, see the
26
+ * wiki: https://bindingofisaacrebirth.fandom.com/wiki/Launch_Options
27
+ *
28
+ * When this flag is enabled, the global environment will be slightly different. The differences are
29
+ * documented here: https://wofsauge.github.io/IsaacDocs/rep/Globals.html
30
+ *
31
+ * This function uses the `package` global variable as a proxy to determine if the "--luadebug" flag
32
+ * is enabled or not.
33
+ */
34
+ export function isLuaDebugEnabled(): boolean {
35
+ // "package" is not always defined like the Lua definitions imply.
36
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
37
+ return _G.package !== undefined;
38
+ }
39
+
40
+ /**
41
+ * Helper function to print a stack trace to the "log.txt" file, similar to JavaScript's
42
+ * `console.trace` function.
43
+ *
44
+ * This will only work if the `--luadebug` launch option is enabled or the Racing+ sandbox is
45
+ * enabled.
46
+ */
47
+ export function traceback(): void {
48
+ const tracebackOutput = getTraceback();
49
+ log(tracebackOutput);
50
+ }
51
+
52
+ function setDebugFunctionsGlobal() {
53
+ // "debug" is not always defined like the Lua definitions imply.
54
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
55
+ if (_G.debug === undefined && sandboxGetTraceback === undefined) {
56
+ return;
57
+ }
58
+
59
+ const globals = _G as Record<string, unknown>;
60
+
61
+ globals["getTraceback"] = getTraceback;
62
+ globals["traceback"] = traceback;
63
+ }
64
+
65
+ // If the debug functions will provide useful output, make them global by default.
66
+ if (isLuaDebugEnabled() || sandboxGetTraceback !== undefined) {
67
+ setDebugFunctionsGlobal();
68
+ }
@@ -6,7 +6,7 @@ local __TS__Iterator = ____lualib.__TS__Iterator
6
6
  local __TS__ArraySort = ____lualib.__TS__ArraySort
7
7
  local __TS__ArraySome = ____lualib.__TS__ArraySome
8
8
  local ____exports = {}
9
- local deepCopyTable, deepCopyDefaultMap, deepCopyMap, deepCopySet, deepCopyTSTLClass, deepCopyArray, deepCopyNormalLuaTable, getCopiedEntries, checkMetatable, deepCopyUserdata, COPYABLE_ISAAC_API_CLASS_TYPES_SET
9
+ local deepCopyTable, deepCopyDefaultMap, getNewDefaultMap, deepCopyMap, deepCopySet, deepCopyTSTLClass, deepCopyArray, deepCopyNormalLuaTable, getCopiedEntries, checkMetatable, deepCopyUserdata, COPYABLE_ISAAC_API_CLASS_TYPES_SET
10
10
  local ____DefaultMap = require("classes.DefaultMap")
11
11
  local DefaultMap = ____DefaultMap.DefaultMap
12
12
  local ____CopyableIsaacAPIClassType = require("enums.private.CopyableIsaacAPIClassType")
@@ -43,7 +43,6 @@ local ____types = require("functions.types")
43
43
  local isNumber = ____types.isNumber
44
44
  local isPrimitive = ____types.isPrimitive
45
45
  local ____utils = require("functions.utils")
46
- local ensureAllCases = ____utils.ensureAllCases
47
46
  local getTraversalDescription = ____utils.getTraversalDescription
48
47
  local twoDimensionalSort = ____utils.twoDimensionalSort
49
48
  --- `deepCopy` is a semi-generic deep cloner. It will recursively copy all of the values so that none
@@ -119,11 +118,6 @@ function ____exports.deepCopy(self, value, serializationType, traversalDescripti
119
118
  return deepCopyUserdata(nil, value, serializationType, traversalDescription)
120
119
  end
121
120
  end
122
- do
123
- do
124
- return ensureAllCases(nil, valueType)
125
- end
126
- end
127
121
  until true
128
122
  end
129
123
  function deepCopyTable(self, luaTable, serializationType, traversalDescription)
@@ -163,48 +157,16 @@ function deepCopyDefaultMap(self, defaultMap, serializationType, traversalDescri
163
157
  ____isDefaultMap_result_0 = nil
164
158
  end
165
159
  local constructorArg = ____isDefaultMap_result_0
166
- local newDefaultMap
167
- repeat
168
- local ____switch23 = serializationType
169
- local ____cond23 = ____switch23 == SerializationType.NONE
170
- if ____cond23 then
171
- do
172
- newDefaultMap = __TS__New(DefaultMap, constructorArg)
173
- break
174
- end
175
- end
176
- ____cond23 = ____cond23 or ____switch23 == SerializationType.SERIALIZE
177
- if ____cond23 then
178
- do
179
- if not isPrimitive(nil, constructorArg) then
180
- return deepCopyMap(nil, defaultMap, serializationType, traversalDescription)
181
- end
182
- newDefaultMap = {}
183
- newDefaultMap[SerializationBrand.DEFAULT_MAP] = ""
184
- newDefaultMap[SerializationBrand.DEFAULT_MAP_VALUE] = constructorArg
185
- break
186
- end
187
- end
188
- ____cond23 = ____cond23 or ____switch23 == SerializationType.DESERIALIZE
189
- if ____cond23 then
190
- do
191
- if isDefaultMap(nil, defaultMap) then
192
- error(("The deep copy function failed to deserialize a default map of \"" .. traversalDescription) .. "\", since it was not a Lua table.")
193
- end
194
- local defaultMapValue = defaultMap[SerializationBrand.DEFAULT_MAP_VALUE]
195
- if defaultMapValue == nil then
196
- error((("The deep copy function failed to deserialize a default map of \"" .. traversalDescription) .. "\", since there was no serialization brand of: ") .. SerializationBrand.DEFAULT_MAP_VALUE)
197
- end
198
- newDefaultMap = __TS__New(DefaultMap, defaultMapValue)
199
- break
200
- end
201
- end
202
- do
203
- do
204
- return ensureAllCases(nil, serializationType)
205
- end
206
- end
207
- until true
160
+ if serializationType == SerializationType.SERIALIZE and not isPrimitive(nil, constructorArg) then
161
+ return deepCopyMap(nil, defaultMap, serializationType, traversalDescription)
162
+ end
163
+ local newDefaultMap = getNewDefaultMap(
164
+ nil,
165
+ defaultMap,
166
+ serializationType,
167
+ traversalDescription,
168
+ constructorArg
169
+ )
208
170
  local ____getCopiedEntries_result_1 = getCopiedEntries(nil, defaultMap, serializationType, traversalDescription)
209
171
  local entries = ____getCopiedEntries_result_1.entries
210
172
  local convertedNumberKeysToStrings = ____getCopiedEntries_result_1.convertedNumberKeysToStrings
@@ -226,6 +188,39 @@ function deepCopyDefaultMap(self, defaultMap, serializationType, traversalDescri
226
188
  end
227
189
  return newDefaultMap
228
190
  end
191
+ function getNewDefaultMap(self, defaultMap, serializationType, traversalDescription, constructorArg)
192
+ repeat
193
+ local ____switch31 = serializationType
194
+ local ____cond31 = ____switch31 == SerializationType.NONE
195
+ if ____cond31 then
196
+ do
197
+ return __TS__New(DefaultMap, constructorArg)
198
+ end
199
+ end
200
+ ____cond31 = ____cond31 or ____switch31 == SerializationType.SERIALIZE
201
+ if ____cond31 then
202
+ do
203
+ local newDefaultMap = {}
204
+ newDefaultMap[SerializationBrand.DEFAULT_MAP] = ""
205
+ newDefaultMap[SerializationBrand.DEFAULT_MAP_VALUE] = constructorArg
206
+ return newDefaultMap
207
+ end
208
+ end
209
+ ____cond31 = ____cond31 or ____switch31 == SerializationType.DESERIALIZE
210
+ if ____cond31 then
211
+ do
212
+ if isDefaultMap(nil, defaultMap) then
213
+ error(("The deep copy function failed to deserialize a default map of \"" .. traversalDescription) .. "\", since it was not a Lua table.")
214
+ end
215
+ local defaultMapValue = defaultMap[SerializationBrand.DEFAULT_MAP_VALUE]
216
+ if defaultMapValue == nil then
217
+ error((("The deep copy function failed to deserialize a default map of \"" .. traversalDescription) .. "\", since there was no serialization brand of: ") .. SerializationBrand.DEFAULT_MAP_VALUE)
218
+ end
219
+ return __TS__New(DefaultMap, defaultMapValue)
220
+ end
221
+ end
222
+ until true
223
+ end
229
224
  function deepCopyMap(self, map, serializationType, traversalDescription)
230
225
  local newMap
231
226
  if serializationType == SerializationType.SERIALIZE then
@@ -358,14 +353,14 @@ function getCopiedEntries(self, object, serializationType, traversalDescription)
358
353
  local value = ____value[2]
359
354
  do
360
355
  if isSerializationBrand(nil, key) then
361
- goto __continue79
356
+ goto __continue78
362
357
  end
363
358
  traversalDescription = getTraversalDescription(nil, key, traversalDescription)
364
359
  local newValue = ____exports.deepCopy(nil, value, serializationType, traversalDescription)
365
360
  local keyToUse = convertNumberKeysToStrings and tostring(key) or key
366
361
  copiedEntries[#copiedEntries + 1] = {keyToUse, newValue}
367
362
  end
368
- ::__continue79::
363
+ ::__continue78::
369
364
  end
370
365
  return {entries = copiedEntries, convertedNumberKeysToStrings = convertNumberKeysToStrings}
371
366
  end