isaacscript-common 4.0.1-dev.0 → 4.0.4

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 (378) hide show
  1. package/callbacks/postCursedTeleport.lua +2 -1
  2. package/callbacks/postEsauJr.lua +2 -1
  3. package/callbacks/postFlip.lua +4 -3
  4. package/callbacks/postItemDischarged.lua +4 -3
  5. package/callbacks/postNewRoomEarly.lua +2 -1
  6. package/callbacks/postSacrifice.lua +3 -2
  7. package/callbacks/postTrinketBreak.lua +3 -2
  8. package/callbacks/reorderedCallbacks.lua +1 -0
  9. package/classes/ModUpgraded.d.ts +5 -1
  10. package/classes/ModUpgraded.lua +2 -2
  11. package/features/playerInventory.lua +1 -0
  12. package/functions/player.lua +9 -14
  13. package/package.json +2 -2
  14. package/cachedClasses.ts +0 -39
  15. package/callbacks/customRevive.ts +0 -215
  16. package/callbacks/itemPickup.ts +0 -101
  17. package/callbacks/postAmbush.ts +0 -73
  18. package/callbacks/postBombExploded.ts +0 -26
  19. package/callbacks/postBombInitLate.ts +0 -36
  20. package/callbacks/postBoneSwing.ts +0 -64
  21. package/callbacks/postCollectibleInitFirst.ts +0 -40
  22. package/callbacks/postCursedTeleport.ts +0 -183
  23. package/callbacks/postCustomDoorEnter.ts +0 -292
  24. package/callbacks/postDiceRoomActivated.ts +0 -60
  25. package/callbacks/postDoorRender.ts +0 -26
  26. package/callbacks/postDoorUpdate.ts +0 -26
  27. package/callbacks/postEffectInitLate.ts +0 -36
  28. package/callbacks/postEffectStateChanged.ts +0 -43
  29. package/callbacks/postEsauJr.ts +0 -107
  30. package/callbacks/postFamiliarInitLate.ts +0 -36
  31. package/callbacks/postFamiliarStateChanged.ts +0 -43
  32. package/callbacks/postFlip.ts +0 -88
  33. package/callbacks/postGreedModeWave.ts +0 -41
  34. package/callbacks/postGridEntity.ts +0 -164
  35. package/callbacks/postGridEntityCollision.ts +0 -69
  36. package/callbacks/postGridEntityRender.ts +0 -26
  37. package/callbacks/postHolyMantleRemoved.ts +0 -55
  38. package/callbacks/postItemDischarged.ts +0 -149
  39. package/callbacks/postKnifeInitLate.ts +0 -36
  40. package/callbacks/postLaserInitLate.ts +0 -36
  41. package/callbacks/postNPCInitLate.ts +0 -36
  42. package/callbacks/postNPCStateChanged.ts +0 -42
  43. package/callbacks/postNewRoomEarly.ts +0 -90
  44. package/callbacks/postPickupCollect.ts +0 -48
  45. package/callbacks/postPickupInitFirst.ts +0 -70
  46. package/callbacks/postPickupInitLate.ts +0 -36
  47. package/callbacks/postPickupStateChanged.ts +0 -43
  48. package/callbacks/postPitRender.ts +0 -26
  49. package/callbacks/postPitUpdate.ts +0 -26
  50. package/callbacks/postPlayerChangeHealth.ts +0 -62
  51. package/callbacks/postPlayerChangeType.ts +0 -56
  52. package/callbacks/postPlayerCollectible.ts +0 -113
  53. package/callbacks/postPlayerFatalDamage.ts +0 -141
  54. package/callbacks/postPlayerInitLate.ts +0 -37
  55. package/callbacks/postPlayerReordered.ts +0 -142
  56. package/callbacks/postPoopRender.ts +0 -26
  57. package/callbacks/postPoopUpdate.ts +0 -26
  58. package/callbacks/postPressurePlateRender.ts +0 -26
  59. package/callbacks/postPressurePlateUpdate.ts +0 -26
  60. package/callbacks/postProjectileInitLate.ts +0 -36
  61. package/callbacks/postPurchase.ts +0 -64
  62. package/callbacks/postRockRender.ts +0 -26
  63. package/callbacks/postRockUpdate.ts +0 -26
  64. package/callbacks/postRoomClearChanged.ts +0 -57
  65. package/callbacks/postSacrifice.ts +0 -62
  66. package/callbacks/postSlotDestroyed.ts +0 -92
  67. package/callbacks/postSlotInitUpdate.ts +0 -68
  68. package/callbacks/postSlotRender.ts +0 -69
  69. package/callbacks/postSpikesRender.ts +0 -26
  70. package/callbacks/postSpikesUpdate.ts +0 -26
  71. package/callbacks/postTNTRender.ts +0 -26
  72. package/callbacks/postTNTUpdate.ts +0 -26
  73. package/callbacks/postTearInitLate.ts +0 -36
  74. package/callbacks/postTearInitVeryLate.ts +0 -41
  75. package/callbacks/postTransformation.ts +0 -59
  76. package/callbacks/postTrinketBreak.ts +0 -110
  77. package/callbacks/preBerserkDeath.ts +0 -49
  78. package/callbacks/preNewLevel.ts +0 -55
  79. package/callbacks/reorderedCallbacks.ts +0 -166
  80. package/callbacks/subscriptions/postAmbushFinished.ts +0 -32
  81. package/callbacks/subscriptions/postAmbushStarted.ts +0 -32
  82. package/callbacks/subscriptions/postBombInitLate.ts +0 -32
  83. package/callbacks/subscriptions/postBoneExploded.ts +0 -32
  84. package/callbacks/subscriptions/postBoneSwing.ts +0 -24
  85. package/callbacks/subscriptions/postCollectibleInitFirst.ts +0 -37
  86. package/callbacks/subscriptions/postCursedTeleport.ts +0 -24
  87. package/callbacks/subscriptions/postCustomDoorEnter.ts +0 -45
  88. package/callbacks/subscriptions/postCustomRevive.ts +0 -36
  89. package/callbacks/subscriptions/postDiceRoomActivated.ts +0 -38
  90. package/callbacks/subscriptions/postDoorRender.ts +0 -35
  91. package/callbacks/subscriptions/postDoorUpdate.ts +0 -35
  92. package/callbacks/subscriptions/postEffectInitLate.ts +0 -32
  93. package/callbacks/subscriptions/postEffectStateChanged.ts +0 -40
  94. package/callbacks/subscriptions/postEsauJr.ts +0 -24
  95. package/callbacks/subscriptions/postFamiliarInitLate.ts +0 -32
  96. package/callbacks/subscriptions/postFamiliarStateChanged.ts +0 -40
  97. package/callbacks/subscriptions/postFirstEsauJr.ts +0 -24
  98. package/callbacks/subscriptions/postFirstFlip.ts +0 -24
  99. package/callbacks/subscriptions/postFlip.ts +0 -22
  100. package/callbacks/subscriptions/postGameStartedReordered.ts +0 -24
  101. package/callbacks/subscriptions/postGreedModeWave.ts +0 -24
  102. package/callbacks/subscriptions/postGridEntityBroken.ts +0 -51
  103. package/callbacks/subscriptions/postGridEntityCollision.ts +0 -54
  104. package/callbacks/subscriptions/postGridEntityInit.ts +0 -51
  105. package/callbacks/subscriptions/postGridEntityRemove.ts +0 -52
  106. package/callbacks/subscriptions/postGridEntityRender.ts +0 -51
  107. package/callbacks/subscriptions/postGridEntityStateChanged.ts +0 -55
  108. package/callbacks/subscriptions/postGridEntityUpdate.ts +0 -51
  109. package/callbacks/subscriptions/postHolyMantleRemoved.ts +0 -48
  110. package/callbacks/subscriptions/postItemDischarged.ts +0 -43
  111. package/callbacks/subscriptions/postItemPickup.ts +0 -64
  112. package/callbacks/subscriptions/postKnifeInitLate.ts +0 -32
  113. package/callbacks/subscriptions/postLaserInitLate.ts +0 -32
  114. package/callbacks/subscriptions/postNPCInitLate.ts +0 -32
  115. package/callbacks/subscriptions/postNPCStateChanged.ts +0 -42
  116. package/callbacks/subscriptions/postNewLevelReordered.ts +0 -22
  117. package/callbacks/subscriptions/postNewRoomEarly.ts +0 -22
  118. package/callbacks/subscriptions/postNewRoomReordered.ts +0 -22
  119. package/callbacks/subscriptions/postPEffectUpdateReordered.ts +0 -40
  120. package/callbacks/subscriptions/postPickupCollect.ts +0 -35
  121. package/callbacks/subscriptions/postPickupInitFirst.ts +0 -32
  122. package/callbacks/subscriptions/postPickupInitLate.ts +0 -32
  123. package/callbacks/subscriptions/postPickupStateChanged.ts +0 -40
  124. package/callbacks/subscriptions/postPitRender.ts +0 -35
  125. package/callbacks/subscriptions/postPitUpdate.ts +0 -35
  126. package/callbacks/subscriptions/postPlayerChangeHealth.ts +0 -49
  127. package/callbacks/subscriptions/postPlayerChangeType.ts +0 -40
  128. package/callbacks/subscriptions/postPlayerCollectibleAdded.ts +0 -38
  129. package/callbacks/subscriptions/postPlayerCollectibleRemoved.ts +0 -38
  130. package/callbacks/subscriptions/postPlayerFatalDamage.ts +0 -68
  131. package/callbacks/subscriptions/postPlayerInitLate.ts +0 -40
  132. package/callbacks/subscriptions/postPlayerInitReordered.ts +0 -40
  133. package/callbacks/subscriptions/postPlayerRenderReordered.ts +0 -40
  134. package/callbacks/subscriptions/postPlayerUpdateReordered.ts +0 -40
  135. package/callbacks/subscriptions/postPoopRender.ts +0 -35
  136. package/callbacks/subscriptions/postPoopUpdate.ts +0 -35
  137. package/callbacks/subscriptions/postPressurePlateRender.ts +0 -37
  138. package/callbacks/subscriptions/postPressurePlateUpdate.ts +0 -37
  139. package/callbacks/subscriptions/postProjectileInitLate.ts +0 -35
  140. package/callbacks/subscriptions/postPurchase.ts +0 -31
  141. package/callbacks/subscriptions/postRockRender.ts +0 -35
  142. package/callbacks/subscriptions/postRockUpdate.ts +0 -35
  143. package/callbacks/subscriptions/postRoomClearChanged.ts +0 -30
  144. package/callbacks/subscriptions/postSacrifice.ts +0 -43
  145. package/callbacks/subscriptions/postSlotAnimationChanged.ts +0 -40
  146. package/callbacks/subscriptions/postSlotDestroyed.ts +0 -55
  147. package/callbacks/subscriptions/postSlotInit.ts +0 -32
  148. package/callbacks/subscriptions/postSlotRender.ts +0 -32
  149. package/callbacks/subscriptions/postSlotUpdate.ts +0 -32
  150. package/callbacks/subscriptions/postSpikesRender.ts +0 -35
  151. package/callbacks/subscriptions/postSpikesUpdate.ts +0 -35
  152. package/callbacks/subscriptions/postTNTRender.ts +0 -35
  153. package/callbacks/subscriptions/postTNTUpdate.ts +0 -35
  154. package/callbacks/subscriptions/postTearInitLate.ts +0 -32
  155. package/callbacks/subscriptions/postTearInitVeryLate.ts +0 -32
  156. package/callbacks/subscriptions/postTransformation.ts +0 -40
  157. package/callbacks/subscriptions/postTrinketBreak.ts +0 -38
  158. package/callbacks/subscriptions/preBerserkDeath.ts +0 -42
  159. package/callbacks/subscriptions/preCustomRevive.ts +0 -46
  160. package/callbacks/subscriptions/preItemPickup.ts +0 -64
  161. package/callbacks/subscriptions/preNewLevel.ts +0 -24
  162. package/classes/DefaultMap.ts +0 -174
  163. package/classes/ModUpgraded.ts +0 -77
  164. package/constants.ts +0 -162
  165. package/constantsFirstLast.ts +0 -217
  166. package/enums/AmbushType.ts +0 -4
  167. package/enums/HealthType.ts +0 -16
  168. package/enums/ModCallbackCustom.ts +0 -1278
  169. package/enums/PocketItemType.ts +0 -8
  170. package/enums/SerializationType.ts +0 -5
  171. package/enums/SlotDestructionType.ts +0 -4
  172. package/enums/private/CopyableIsaacAPIClassType.ts +0 -7
  173. package/enums/private/SaveDataKey.ts +0 -14
  174. package/enums/private/SerializationBrand.ts +0 -42
  175. package/features/characterHealthConversion.ts +0 -111
  176. package/features/characterStats.ts +0 -61
  177. package/features/debugDisplay/debugDisplay.ts +0 -221
  178. package/features/debugDisplay/exports.ts +0 -368
  179. package/features/debugDisplay/v.ts +0 -65
  180. package/features/deployJSONRoom.ts +0 -743
  181. package/features/disableInputs.ts +0 -193
  182. package/features/disableSound.ts +0 -77
  183. package/features/extraConsoleCommands/commandsDisplay.ts +0 -290
  184. package/features/extraConsoleCommands/commandsSubroutines.ts +0 -139
  185. package/features/extraConsoleCommands/init.ts +0 -334
  186. package/features/extraConsoleCommands/listCommands.ts +0 -1299
  187. package/features/extraConsoleCommands/v.ts +0 -14
  188. package/features/fadeInRemover.ts +0 -60
  189. package/features/fastReset.ts +0 -75
  190. package/features/forgottenSwitch.ts +0 -50
  191. package/features/getCollectibleItemPoolType.ts +0 -66
  192. package/features/persistentEntities.ts +0 -183
  193. package/features/playerInventory.ts +0 -133
  194. package/features/ponyDetection.ts +0 -74
  195. package/features/preventCollectibleRotation.ts +0 -115
  196. package/features/runInNFrames.ts +0 -148
  197. package/features/saveDataManager/constants.ts +0 -4
  198. package/features/saveDataManager/exports.ts +0 -229
  199. package/features/saveDataManager/load.ts +0 -99
  200. package/features/saveDataManager/main.ts +0 -195
  201. package/features/saveDataManager/maps.ts +0 -13
  202. package/features/saveDataManager/merge.ts +0 -194
  203. package/features/saveDataManager/save.ts +0 -74
  204. package/features/saveDataManager/serializationBrand.ts +0 -16
  205. package/features/sirenHelpers.ts +0 -129
  206. package/features/taintedLazarusPlayers.ts +0 -113
  207. package/featuresInitialized.ts +0 -20
  208. package/functions/ambush.ts +0 -47
  209. package/functions/array.ts +0 -410
  210. package/functions/benchmark.ts +0 -36
  211. package/functions/bitwise.ts +0 -24
  212. package/functions/bombs.ts +0 -12
  213. package/functions/boss.ts +0 -227
  214. package/functions/cacheFlag.ts +0 -12
  215. package/functions/cards.ts +0 -271
  216. package/functions/challenges.ts +0 -13
  217. package/functions/character.ts +0 -126
  218. package/functions/charge.ts +0 -237
  219. package/functions/chargeBar.ts +0 -67
  220. package/functions/collectibleCacheFlag.ts +0 -90
  221. package/functions/collectibleSet.ts +0 -56
  222. package/functions/collectibleTag.ts +0 -89
  223. package/functions/collectibles.ts +0 -659
  224. package/functions/color.ts +0 -128
  225. package/functions/debug.ts +0 -68
  226. package/functions/deepCopy.ts +0 -535
  227. package/functions/deepCopyTests.ts +0 -386
  228. package/functions/direction.ts +0 -49
  229. package/functions/doors.ts +0 -347
  230. package/functions/easing.ts +0 -182
  231. package/functions/eden.ts +0 -47
  232. package/functions/effects.ts +0 -20
  233. package/functions/entity.ts +0 -439
  234. package/functions/entitySpecific.ts +0 -889
  235. package/functions/entityTypes.ts +0 -6
  236. package/functions/enums.ts +0 -146
  237. package/functions/familiars.ts +0 -106
  238. package/functions/flag.ts +0 -165
  239. package/functions/flying.ts +0 -117
  240. package/functions/globals.ts +0 -242
  241. package/functions/gridEntity.ts +0 -511
  242. package/functions/gridEntitySpecific.ts +0 -112
  243. package/functions/input.ts +0 -139
  244. package/functions/isaacAPIClass.ts +0 -67
  245. package/functions/jsonHelpers.ts +0 -45
  246. package/functions/jsonRoom.ts +0 -100
  247. package/functions/kColor.ts +0 -129
  248. package/functions/language.ts +0 -13
  249. package/functions/level.ts +0 -31
  250. package/functions/log.ts +0 -720
  251. package/functions/map.ts +0 -56
  252. package/functions/math.ts +0 -149
  253. package/functions/mergeTests.ts +0 -288
  254. package/functions/npc.ts +0 -148
  255. package/functions/pickupVariants.ts +0 -60
  256. package/functions/pickups.ts +0 -499
  257. package/functions/pills.ts +0 -205
  258. package/functions/player.ts +0 -1060
  259. package/functions/playerDataStructures.ts +0 -150
  260. package/functions/playerHealth.ts +0 -382
  261. package/functions/playerIndex.ts +0 -195
  262. package/functions/pocketItems.ts +0 -149
  263. package/functions/positionVelocity.ts +0 -188
  264. package/functions/random.ts +0 -77
  265. package/functions/revive.ts +0 -201
  266. package/functions/rng.ts +0 -172
  267. package/functions/roomData.ts +0 -199
  268. package/functions/roomGrid.ts +0 -109
  269. package/functions/roomShape.ts +0 -80
  270. package/functions/rooms.ts +0 -648
  271. package/functions/run.ts +0 -36
  272. package/functions/saveFile.ts +0 -128
  273. package/functions/seeds.ts +0 -19
  274. package/functions/serialization.ts +0 -91
  275. package/functions/set.ts +0 -95
  276. package/functions/sound.ts +0 -9
  277. package/functions/spawnCollectible.ts +0 -104
  278. package/functions/sprite.ts +0 -107
  279. package/functions/stage.ts +0 -125
  280. package/functions/string.ts +0 -47
  281. package/functions/table.ts +0 -189
  282. package/functions/tears.ts +0 -32
  283. package/functions/transformations.ts +0 -131
  284. package/functions/trinketCacheFlag.ts +0 -60
  285. package/functions/trinketGive.ts +0 -157
  286. package/functions/trinkets.ts +0 -215
  287. package/functions/tstlClass.ts +0 -157
  288. package/functions/types.ts +0 -36
  289. package/functions/ui.ts +0 -138
  290. package/functions/utils.ts +0 -189
  291. package/functions/vector.ts +0 -126
  292. package/index.ts +0 -172
  293. package/initCustomCallbacks.ts +0 -132
  294. package/initFeatures.ts +0 -39
  295. package/interfaces/AddCallbackParameterCustom.ts +0 -188
  296. package/interfaces/ChargeBarSprites.ts +0 -12
  297. package/interfaces/JSONDoor.ts +0 -13
  298. package/interfaces/JSONEntity.ts +0 -16
  299. package/interfaces/JSONRoom.ts +0 -36
  300. package/interfaces/JSONRooms.ts +0 -12
  301. package/interfaces/JSONSpawn.ts +0 -14
  302. package/interfaces/PlayerHealth.ts +0 -16
  303. package/interfaces/PocketItemDescription.ts +0 -9
  304. package/interfaces/SaveData.ts +0 -29
  305. package/interfaces/TrinketSituation.ts +0 -9
  306. package/interfaces/private/TSTLClassMetatable.ts +0 -8
  307. package/maps/PHDPillConversions.ts +0 -21
  308. package/maps/cardMap.ts +0 -209
  309. package/maps/characterMap.ts +0 -87
  310. package/maps/collectibleDescriptionMap.ts +0 -732
  311. package/maps/collectibleNameMap.ts +0 -731
  312. package/maps/defaultPlayerStatMap.ts +0 -17
  313. package/maps/falsePHDPillConversions.ts +0 -35
  314. package/maps/gridEntityTypeToBrokenStateMap.ts +0 -50
  315. package/maps/gridEntityXMLMap.ts +0 -176
  316. package/maps/pillEffectMap.ts +0 -88
  317. package/maps/roomShapeToTopLeftWallGridIndexMap.ts +0 -18
  318. package/maps/roomTypeMap.ts +0 -40
  319. package/maps/trinketDescriptionMap.ts +0 -200
  320. package/maps/trinketNameMap.ts +0 -198
  321. package/objects/LRoomShapeToRectangles.ts +0 -44
  322. package/objects/callbackRegisterFunctions.ts +0 -187
  323. package/objects/cardDescriptions.ts +0 -105
  324. package/objects/cardNames.ts +0 -105
  325. package/objects/cardTypes.ts +0 -104
  326. package/objects/challengeNames.ts +0 -52
  327. package/objects/characterNames.ts +0 -48
  328. package/objects/coinSubTypeToValue.ts +0 -14
  329. package/objects/colors.ts +0 -16
  330. package/objects/directionNames.ts +0 -11
  331. package/objects/directionToDegrees.ts +0 -11
  332. package/objects/directionToVector.ts +0 -12
  333. package/objects/doorSlotFlagToDoorSlot.ts +0 -16
  334. package/objects/doorSlotToDirection.ts +0 -14
  335. package/objects/isaacAPIClassTypeToBrand.ts +0 -11
  336. package/objects/isaacAPIClassTypeToCopyFunction.ts +0 -18
  337. package/objects/languageNames.ts +0 -13
  338. package/objects/oppositeDoorSlots.ts +0 -15
  339. package/objects/pillEffectClasses.ts +0 -63
  340. package/objects/pillEffectNames.ts +0 -57
  341. package/objects/pillEffectTypes.ts +0 -62
  342. package/objects/roomShapeBounds.ts +0 -71
  343. package/objects/roomShapeLayoutSizes.ts +0 -45
  344. package/objects/roomShapeToBottomRightPosition.ts +0 -25
  345. package/objects/roomShapeToDoorSlots.ts +0 -83
  346. package/objects/roomShapeToDoorSlotsToGridIndexDelta.ts +0 -127
  347. package/objects/roomShapeToGridWidth.ts +0 -21
  348. package/objects/roomShapeToTopLeftPosition.ts +0 -26
  349. package/objects/roomShapeVolumes.ts +0 -38
  350. package/objects/roomTypeNames.ts +0 -36
  351. package/objects/serializedIsaacAPIClassTypeToIdentityFunction.ts +0 -14
  352. package/objects/stageTypeToLetter.ts +0 -15
  353. package/objects/transformationNames.ts +0 -18
  354. package/patchErrorFunctions.ts +0 -92
  355. package/sets/LRoomShapesSet.ts +0 -8
  356. package/sets/bossSets.ts +0 -470
  357. package/sets/charactersThatStartWithAnActiveItemSet.ts +0 -16
  358. package/sets/charactersWithBlackHeartFromEternalHeartSet.ts +0 -7
  359. package/sets/charactersWithFreeDevilDealsSet.ts +0 -4
  360. package/sets/charactersWithNoRedHeartsSet.ts +0 -17
  361. package/sets/charactersWithNoSoulHeartsSet.ts +0 -14
  362. package/sets/chestPickupVariantsSet.ts +0 -16
  363. package/sets/familiarsThatShootPlayerTearsSet.ts +0 -13
  364. package/sets/lostStyleCharactersSet.ts +0 -13
  365. package/sets/mineShaftRoomSubTypesSet.ts +0 -10
  366. package/sets/redHeartSubTypesSet.ts +0 -7
  367. package/sets/sinEntityTypesSet.ts +0 -11
  368. package/sets/singleUseActiveCollectibleTypesSet.ts +0 -13
  369. package/sets/storyBossesSet.ts +0 -17
  370. package/types/AnyEntity.ts +0 -12
  371. package/types/AwaitingTextInput.d.ts +0 -2
  372. package/types/CollectibleIndex.ts +0 -16
  373. package/types/PickingUpItem.ts +0 -89
  374. package/types/PlayerIndex.ts +0 -13
  375. package/types/private/IsaacAPIClass.ts +0 -3
  376. package/types/private/SerializedIsaacAPIClass.ts +0 -3
  377. package/types/private/TSTLClass.ts +0 -3
  378. package/upgradeMod.ts +0 -55
@@ -1,139 +0,0 @@
1
- import {
2
- ButtonAction,
3
- Controller,
4
- ControllerIndex,
5
- Keyboard,
6
- } from "isaac-typescript-definitions";
7
- import { MAX_NUM_INPUTS } from "../constants";
8
- import { copySet } from "./set";
9
- import { trimPrefix } from "./string";
10
- import { erange } from "./utils";
11
-
12
- const MODIFIER_KEYS: readonly Keyboard[] = [
13
- Keyboard.LEFT_SHIFT, // 340
14
- Keyboard.LEFT_CONTROL, // 341
15
- Keyboard.LEFT_ALT, // 342
16
- Keyboard.LEFT_SUPER, // 343
17
- Keyboard.RIGHT_SHIFT, // 344
18
- Keyboard.RIGHT_CONTROL, // 345
19
- Keyboard.RIGHT_ALT, // 346
20
- Keyboard.RIGHT_SUPER, // 347
21
- ];
22
-
23
- const MOVEMENT_ACTIONS: readonly ButtonAction[] = [
24
- ButtonAction.LEFT, // 0
25
- ButtonAction.RIGHT, // 1
26
- ButtonAction.UP, // 2
27
- ButtonAction.DOWN, // 3
28
- ];
29
-
30
- const MOVEMENT_ACTIONS_SET: ReadonlySet<ButtonAction> = new Set(
31
- MOVEMENT_ACTIONS,
32
- );
33
-
34
- const SHOOTING_ACTIONS: readonly ButtonAction[] = [
35
- ButtonAction.SHOOT_LEFT, // 4
36
- ButtonAction.SHOOT_RIGHT, // 5
37
- ButtonAction.SHOOT_UP, // 6
38
- ButtonAction.SHOOT_DOWN, // 7
39
- ];
40
-
41
- const SHOOTING_ACTIONS_SET: ReadonlySet<ButtonAction> = new Set(
42
- SHOOTING_ACTIONS,
43
- );
44
-
45
- /** Helper function to get the enum name for the specified `Controller` value. */
46
- export function controllerToString(controller: Controller): string {
47
- const key = Controller[controller];
48
- if (key === undefined) {
49
- return "unknown";
50
- }
51
-
52
- return trimPrefix(key, "BUTTON_");
53
- }
54
-
55
- export function getMoveActions(): Set<ButtonAction> {
56
- return copySet(MOVEMENT_ACTIONS_SET);
57
- }
58
-
59
- export function getShootActions(): Set<ButtonAction> {
60
- return copySet(SHOOTING_ACTIONS_SET);
61
- }
62
-
63
- /** Iterates over all inputs to determine if a particular button is pressed (i.e. held down). */
64
- export function isActionPressedOnAnyInput(buttonAction: ButtonAction): boolean {
65
- const validInputs = erange(MAX_NUM_INPUTS);
66
- return validInputs.some((input) =>
67
- Input.IsActionPressed(buttonAction, input),
68
- );
69
- }
70
-
71
- /**
72
- * Iterates over all inputs to determine if a particular button is triggered (i.e. held down and
73
- * then released).
74
- */
75
- export function isActionTriggeredOnAnyInput(
76
- buttonAction: ButtonAction,
77
- ): boolean {
78
- const validInputs = erange(MAX_NUM_INPUTS);
79
- return validInputs.some((input) =>
80
- Input.IsActionTriggered(buttonAction, input),
81
- );
82
- }
83
-
84
- /**
85
- * Helper function to see if a particular keyboard key is being pressed down by the player.
86
- *
87
- * This function is variadic, meaning you can pass as many keyboard values as you want to check for.
88
- * This function will return true if any of the values are pressed.
89
- */
90
- export function isKeyboardPressed(...keys: Keyboard[]): boolean {
91
- return keys.some((key) =>
92
- Input.IsButtonPressed(key, ControllerIndex.KEYBOARD),
93
- );
94
- }
95
-
96
- /**
97
- * Helper function to check if one or more modifier keys are being pressed down on the keyboard.
98
- *
99
- * A modifier key is defined as shift, control, alt, or Windows.
100
- */
101
- export function isModifierKeyPressed(): boolean {
102
- return isKeyboardPressed(...MODIFIER_KEYS);
103
- }
104
-
105
- export function isMoveAction(buttonAction: ButtonAction): boolean {
106
- return MOVEMENT_ACTIONS_SET.has(buttonAction);
107
- }
108
-
109
- export function isMoveActionPressedOnAnyInput(): boolean {
110
- return MOVEMENT_ACTIONS.some((moveAction) =>
111
- isActionPressedOnAnyInput(moveAction),
112
- );
113
- }
114
-
115
- export function isMoveActionTriggeredOnAnyInput(): boolean {
116
- return MOVEMENT_ACTIONS.some((moveAction) =>
117
- isActionTriggeredOnAnyInput(moveAction),
118
- );
119
- }
120
-
121
- export function isShootAction(buttonAction: ButtonAction): boolean {
122
- return SHOOTING_ACTIONS_SET.has(buttonAction);
123
- }
124
-
125
- export function isShootActionPressedOnAnyInput(): boolean {
126
- return SHOOTING_ACTIONS.some((shootAction) =>
127
- isActionPressedOnAnyInput(shootAction),
128
- );
129
- }
130
-
131
- export function isShootActionTriggeredOnAnyInput(): boolean {
132
- return SHOOTING_ACTIONS.some((shootAction) =>
133
- isActionTriggeredOnAnyInput(shootAction),
134
- );
135
- }
136
-
137
- export function keyboardToString(keyboard: Keyboard): string {
138
- return Keyboard[keyboard] ?? "unknown";
139
- }
@@ -1,67 +0,0 @@
1
- import { IsaacAPIClass } from "../types/private/IsaacAPIClass";
2
- import { isString, isUserdata } from "./types";
3
-
4
- /**
5
- * Helper function to get the name of a class from the Isaac API. This is contained within the
6
- * "__type" metatable key.
7
- *
8
- * For example, a `Vector` class is has a name of "Vector".
9
- *
10
- * Returns undefined if the object is not of type `userdata` or if the "__type" metatable key does
11
- * not exist.
12
- */
13
- export function getIsaacAPIClassName(object: unknown): string | undefined {
14
- if (!isUserdata(object)) {
15
- return undefined;
16
- }
17
-
18
- const metatable = getmetatable(object) as
19
- | LuaTable<AnyNotNil, unknown>
20
- | undefined;
21
- if (metatable === undefined) {
22
- return undefined;
23
- }
24
-
25
- const classType = metatable.get("__type");
26
- if (!isString(classType)) {
27
- return undefined;
28
- }
29
-
30
- return classType;
31
- }
32
-
33
- /**
34
- * Helper function to check if something is an instantiated class from the Isaac API. (All classes
35
- * from the Isaac API have a type of "userdata" in Lua with a metatable key of "__type" equal to the
36
- * name of the class.)
37
- */
38
- export function isIsaacAPIClass(object: unknown): object is IsaacAPIClass {
39
- const isaacAPIClassType = getIsaacAPIClassName(object);
40
- return isaacAPIClassType !== undefined;
41
- }
42
-
43
- export function isIsaacAPIClassOfType(
44
- object: unknown,
45
- classType: string,
46
- ): boolean {
47
- const isaacAPIClassType = getIsaacAPIClassName(object);
48
- return (
49
- isaacAPIClassType === classType ||
50
- isaacAPIClassType === `const ${classType}`
51
- );
52
- }
53
-
54
- /**
55
- * Helper function to check if an instantiated Isaac API class is equal to another one of the same
56
- * type. You must provide the list of keys to check for.
57
- */
58
- export function isaacAPIClassEquals(
59
- object1: unknown,
60
- object2: unknown,
61
- keys: string[],
62
- ): boolean {
63
- const table1 = object1 as LuaTable<AnyNotNil, unknown>;
64
- const table2 = object2 as LuaTable<AnyNotNil, unknown>;
65
-
66
- return keys.every((key) => table1.get(key) === table2.get(key));
67
- }
@@ -1,45 +0,0 @@
1
- import * as json from "json";
2
- import { logError } from "./log";
3
-
4
- function tryDecode(this: void, jsonString: string) {
5
- return json.decode(jsonString) as LuaTable;
6
- }
7
-
8
- function tryEncode(this: void, luaTable: unknown) {
9
- return json.encode(luaTable);
10
- }
11
-
12
- /**
13
- * Converts a JSON string to a Lua table.
14
- *
15
- * In most cases, this function will be used for reading data from a "save#.dat" file. If decoding
16
- * fails, it will return a blank Lua table instead of throwing an error. (This allows execution to
17
- * continue in cases where users have no current save data or have manually removed their existing
18
- * save data.)
19
- */
20
- export function jsonDecode(jsonString: string): LuaTable<AnyNotNil, unknown> {
21
- const [ok, luaTableOrErrMsg] = pcall(tryDecode, jsonString);
22
- if (!ok) {
23
- // Instead of throwing an error, continue execution of the callback.
24
- logError(`Failed to convert the JSON string to a Lua table: ${jsonString}`);
25
- return new LuaTable();
26
- }
27
-
28
- return luaTableOrErrMsg;
29
- }
30
-
31
- /**
32
- * Converts a Lua table to a JSON string.
33
- *
34
- * In most cases, this function will be used for writing data to a "save#.dat" file. If encoding
35
- * fails, it will throw an error to prevent writing a blank string or corrupted data to a user's
36
- * "save#.dat" file.
37
- */
38
- export function jsonEncode(luaTable: unknown): string {
39
- const [ok, jsonStringOrErrMsg] = pcall(tryEncode, luaTable);
40
- if (!ok) {
41
- error(`Failed to convert the Lua table to JSON: ${jsonStringOrErrMsg}`);
42
- }
43
-
44
- return jsonStringOrErrMsg;
45
- }
@@ -1,100 +0,0 @@
1
- import { JSONRoom } from "../interfaces/JSONRoom";
2
- import { sumArray } from "./array";
3
- import { log } from "./log";
4
- import { getRandomFloat } from "./random";
5
- import { getRandomSeed } from "./rng";
6
-
7
- export function getJSONRoomOfVariant(
8
- jsonRooms: JSONRoom[],
9
- variant: int,
10
- ): JSONRoom | undefined {
11
- const jsonRoomsOfVariant = jsonRooms.filter((jsonRoom) => {
12
- const roomVariantString = jsonRoom.$.variant;
13
- const roomVariant = tonumber(roomVariantString);
14
- return roomVariant === variant;
15
- });
16
-
17
- // The room variant acts as an ID for the room. We assume that there should only be a single room
18
- // per variant.
19
- if (jsonRoomsOfVariant.length === 0) {
20
- return undefined;
21
- }
22
-
23
- if (jsonRoomsOfVariant.length === 1) {
24
- return jsonRoomsOfVariant[0];
25
- }
26
-
27
- return error(
28
- `Found ${jsonRoomsOfVariant.length} JSON rooms with a variant of ${variant}, when there should only be 1.`,
29
- );
30
- }
31
-
32
- export function getJSONRoomsOfSubType(
33
- jsonRooms: JSONRoom[],
34
- subType: int,
35
- ): JSONRoom[] {
36
- return jsonRooms.filter((jsonRoom) => {
37
- const roomSubTypeString = jsonRoom.$.subtype;
38
- const roomSubType = tonumber(roomSubTypeString);
39
- return roomSubType === subType;
40
- });
41
- }
42
-
43
- /**
44
- * Helper function to get a random JSON room from an array of JSON rooms.
45
- *
46
- * Note that this function does not simply choose a random element in the provided array; it will
47
- * properly account for each room weight using the algorithm from:
48
- * https://stackoverflow.com/questions/1761626/weighted-random-numbers
49
- */
50
- export function getRandomJSONRoom(
51
- jsonRooms: JSONRoom[],
52
- seedOrRNG: Seed | RNG = getRandomSeed(),
53
- verbose = false,
54
- ): JSONRoom {
55
- const totalWeight = getTotalWeightOfJSONRooms(jsonRooms);
56
- if (verbose) {
57
- log(`Total weight of the JSON rooms provided: ${totalWeight}`);
58
- }
59
-
60
- const chosenWeight = getRandomFloat(0, totalWeight, seedOrRNG);
61
- if (verbose) {
62
- log(`Randomly chose weight for JSON room: ${chosenWeight}`);
63
- }
64
-
65
- return getJSONRoomWithChosenWeight(jsonRooms, chosenWeight);
66
- }
67
-
68
- function getTotalWeightOfJSONRooms(jsonRooms: JSONRoom[]) {
69
- const weights = jsonRooms.map((jsonRoom) => {
70
- const roomWeightString = jsonRoom.$.weight;
71
- const roomWeight = tonumber(roomWeightString);
72
- if (roomWeight === undefined) {
73
- error(`Failed to parse the weight of a JSON room: ${roomWeightString}.`);
74
- }
75
- return roomWeight;
76
- });
77
-
78
- return sumArray(weights);
79
- }
80
-
81
- function getJSONRoomWithChosenWeight(
82
- jsonRooms: JSONRoom[],
83
- chosenWeight: float,
84
- ) {
85
- for (const jsonRoom of jsonRooms) {
86
- const roomWeightString = jsonRoom.$.weight;
87
- const roomWeight = tonumber(roomWeightString);
88
- if (roomWeight === undefined) {
89
- error(`Failed to parse the weight of a JSON room: ${roomWeightString}`);
90
- }
91
-
92
- if (chosenWeight < roomWeight) {
93
- return jsonRoom;
94
- }
95
-
96
- chosenWeight -= roomWeight;
97
- }
98
-
99
- return error(`Failed to get a JSON room with chosen weight: ${chosenWeight}`);
100
- }
@@ -1,129 +0,0 @@
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 SerializedKColor = LuaTable<string, unknown> & {
8
- readonly __serializedKColorBrand: unique symbol;
9
- };
10
-
11
- interface CopyKColorReturn {
12
- [SerializationType.NONE]: KColor;
13
- [SerializationType.SERIALIZE]: SerializedKColor;
14
- [SerializationType.DESERIALIZE]: KColor;
15
- }
16
-
17
- const KEYS = ["Red", "Green", "Blue", "Alpha"];
18
- const OBJECT_NAME = "KColor";
19
-
20
- /**
21
- * Helper function to copy a `KColor` object.
22
- *
23
- * @param kColor The KColor object to copy. In the case of deserialization, this will actually be a
24
- * Lua table instead of an instantiated KColor class.
25
- * @param serializationType Default is `SerializationType.NONE`.
26
- */
27
- export function copyKColor<
28
- K extends KColor | SerializedKColor,
29
- S extends SerializationType,
30
- >(kColor: K, serializationType: S): CopyKColorReturn[S];
31
- export function copyKColor<K extends KColor | SerializedKColor>(
32
- kColor: K,
33
- ): CopyKColorReturn[SerializationType.NONE];
34
- export function copyKColor(
35
- kColor: KColor | SerializedKColor,
36
- serializationType = SerializationType.NONE,
37
- ): CopyKColorReturn[keyof CopyKColorReturn] {
38
- switch (serializationType) {
39
- case SerializationType.NONE: {
40
- if (!isKColor(kColor)) {
41
- error(
42
- `Failed to copy a ${OBJECT_NAME} object since the provided object was not a userdata ${OBJECT_NAME} class.`,
43
- );
44
- }
45
-
46
- return KColor(kColor.Red, kColor.Green, kColor.Blue, kColor.Alpha);
47
- }
48
-
49
- case SerializationType.SERIALIZE: {
50
- if (!isKColor(kColor)) {
51
- error(
52
- `Failed to serialize a ${OBJECT_NAME} object since the provided object was not a userdata ${OBJECT_NAME} class.`,
53
- );
54
- }
55
-
56
- const kColorTable = new LuaTable<string, unknown>();
57
- copyValuesToTable(kColor, KEYS, kColorTable);
58
- kColorTable.set(SerializationBrand.K_COLOR, "");
59
- return kColorTable as SerializedKColor;
60
- }
61
-
62
- case SerializationType.DESERIALIZE: {
63
- if (!isTable(kColor)) {
64
- error(
65
- `Failed to deserialize a ${OBJECT_NAME} object since the provided object was not a Lua table.`,
66
- );
67
- }
68
-
69
- const [r, g, b, a] = getNumbersFromTable(
70
- kColor as LuaTable<string, unknown>,
71
- OBJECT_NAME,
72
- ...KEYS,
73
- );
74
-
75
- if (r === undefined) {
76
- error(
77
- `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: r`,
78
- );
79
- }
80
- if (g === undefined) {
81
- error(
82
- `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: g`,
83
- );
84
- }
85
- if (b === undefined) {
86
- error(
87
- `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: b`,
88
- );
89
- }
90
- if (a === undefined) {
91
- error(
92
- `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: a`,
93
- );
94
- }
95
-
96
- return KColor(r, g, b, a);
97
- }
98
- }
99
- }
100
-
101
- /** Returns `KColor(1, 1, 1, 1)`. */
102
- export function getDefaultKColor(): KColor {
103
- return KColor(1, 1, 1, 1);
104
- }
105
-
106
- /** Helper function to check if something is an instantiated KColor object. */
107
- export function isKColor(object: unknown): object is KColor {
108
- return isIsaacAPIClassOfType(object, OBJECT_NAME);
109
- }
110
-
111
- /**
112
- * Used to determine is the given table is a serialized `KColor` object created by the save data
113
- * manager and/or the `deepCopy` function.
114
- */
115
- export function isSerializedKColor(
116
- object: unknown,
117
- ): object is SerializedKColor {
118
- if (!isTable(object)) {
119
- return false;
120
- }
121
-
122
- return (
123
- tableHasKeys(object, ...KEYS) && object.has(SerializationBrand.K_COLOR)
124
- );
125
- }
126
-
127
- export function kColorEquals(kColor1: KColor, kColor2: KColor): boolean {
128
- return isaacAPIClassEquals(kColor1, kColor2, KEYS);
129
- }
@@ -1,13 +0,0 @@
1
- import { LANGUAGE_NAMES } from "../objects/languageNames";
2
-
3
- /**
4
- * Helper function to convert the language abbreviation from `Options.Language` to the "full"
5
- * language name.
6
- *
7
- * For example, if the current language is set to Korean, `Options.Language` will be set to "kr",
8
- * and this function will return "Korean".
9
- */
10
- export function getLanguageName(): string {
11
- const languageAbbreviation = Options.Language;
12
- return LANGUAGE_NAMES[languageAbbreviation];
13
- }
@@ -1,31 +0,0 @@
1
- import { DoorSlot } from "isaac-typescript-definitions";
2
- import { game } from "../cachedClasses";
3
- import { getEnumValues } from "./enums";
4
- import {
5
- getNumRooms,
6
- getRooms,
7
- isDoorSlotValidAtGridIndexForRedRoom,
8
- } from "./rooms";
9
-
10
- export function fillLevelWithRedRooms(): void {
11
- const level = game.GetLevel();
12
-
13
- let numRooms: int;
14
- do {
15
- const rooms = getRooms();
16
- numRooms = rooms.length;
17
-
18
- for (const roomDescriptor of rooms) {
19
- for (const doorSlot of getEnumValues(DoorSlot)) {
20
- if (
21
- isDoorSlotValidAtGridIndexForRedRoom(
22
- doorSlot,
23
- roomDescriptor.GridIndex,
24
- )
25
- ) {
26
- level.MakeRedRoomDoor(roomDescriptor.GridIndex, doorSlot);
27
- }
28
- }
29
- }
30
- } while (numRooms !== getNumRooms());
31
- }