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,45 @@
1
+ import { Direction, DoorSlot } from "isaac-typescript-definitions";
2
+
3
+ export type PostCustomDoorEnterRegisterParameters = [
4
+ callback: (
5
+ player: EntityPlayer,
6
+ effectVariant: int,
7
+ doorSlot: DoorSlot,
8
+ direction: Direction,
9
+ ) => void,
10
+ effectVariant?: int,
11
+ ];
12
+
13
+ const subscriptions: PostCustomDoorEnterRegisterParameters[] = [];
14
+
15
+ /** @internal */
16
+ export function postCustomDoorEnterHasSubscriptions(): boolean {
17
+ return subscriptions.length > 0;
18
+ }
19
+
20
+ /** @internal */
21
+ export function postCustomDoorEnterRegister(
22
+ ...args: PostCustomDoorEnterRegisterParameters
23
+ ): void {
24
+ subscriptions.push(args);
25
+ }
26
+
27
+ /** @internal */
28
+ export function postCustomDoorEnterFire(
29
+ player: EntityPlayer,
30
+ effectVariant: int,
31
+ doorSlot: DoorSlot,
32
+ direction: Direction,
33
+ ): void {
34
+ for (const [callback, callbackEffectVariant] of subscriptions) {
35
+ // Handle the optional 2nd callback argument.
36
+ if (
37
+ callbackEffectVariant !== undefined &&
38
+ callbackEffectVariant !== effectVariant
39
+ ) {
40
+ continue;
41
+ }
42
+
43
+ callback(player, effectVariant, doorSlot, direction);
44
+ }
45
+ }
@@ -0,0 +1,36 @@
1
+ export type PostCustomReviveRegisterParameters = [
2
+ callback: (player: EntityPlayer, revivalType: int) => void,
3
+ revivalType?: int,
4
+ ];
5
+
6
+ const subscriptions: PostCustomReviveRegisterParameters[] = [];
7
+
8
+ /** @internal */
9
+ export function postCustomReviveHasSubscriptions(): boolean {
10
+ return subscriptions.length > 0;
11
+ }
12
+
13
+ /** @internal */
14
+ export function postCustomReviveRegister(
15
+ ...args: PostCustomReviveRegisterParameters
16
+ ): void {
17
+ subscriptions.push(args);
18
+ }
19
+
20
+ /** @internal */
21
+ export function postCustomReviveFire(
22
+ player: EntityPlayer,
23
+ revivalType: int,
24
+ ): void {
25
+ for (const [callback, callbackRevivalType] of subscriptions) {
26
+ // Handle the optional 2nd callback argument.
27
+ if (
28
+ callbackRevivalType !== undefined &&
29
+ callbackRevivalType !== revivalType
30
+ ) {
31
+ continue;
32
+ }
33
+
34
+ callback(player, revivalType);
35
+ }
36
+ }
@@ -0,0 +1,38 @@
1
+ import { DiceFloorSubType } from "isaac-typescript-definitions";
2
+
3
+ export type PostDiceRoomActivatedRegisterParameters = [
4
+ callback: (player: EntityPlayer, diceFloorSubType: DiceFloorSubType) => void,
5
+ diceFloorSubType?: DiceFloorSubType,
6
+ ];
7
+
8
+ const subscriptions: PostDiceRoomActivatedRegisterParameters[] = [];
9
+
10
+ /** @internal */
11
+ export function postDiceRoomActivatedHasSubscriptions(): boolean {
12
+ return subscriptions.length > 0;
13
+ }
14
+
15
+ /** @internal */
16
+ export function postDiceRoomActivatedRegister(
17
+ ...args: PostDiceRoomActivatedRegisterParameters
18
+ ): void {
19
+ subscriptions.push(args);
20
+ }
21
+
22
+ /** @internal */
23
+ export function postDiceRoomActivatedFire(
24
+ player: EntityPlayer,
25
+ diceFloorSubType: DiceFloorSubType,
26
+ ): void {
27
+ for (const [callback, callbackDiceFloorSubType] of subscriptions) {
28
+ // Handle the optional 2nd callback argument.
29
+ if (
30
+ callbackDiceFloorSubType !== undefined &&
31
+ callbackDiceFloorSubType !== diceFloorSubType
32
+ ) {
33
+ continue;
34
+ }
35
+
36
+ callback(player, diceFloorSubType);
37
+ }
38
+ }
@@ -0,0 +1,35 @@
1
+ export type PostDoorRenderRegisterParameters = [
2
+ callback: (door: GridEntityDoor) => void,
3
+ gridEntityVariant?: int,
4
+ ];
5
+
6
+ const subscriptions: PostDoorRenderRegisterParameters[] = [];
7
+
8
+ /** @internal */
9
+ export function postDoorRenderHasSubscriptions(): boolean {
10
+ return subscriptions.length > 0;
11
+ }
12
+
13
+ /** @internal */
14
+ export function postDoorRenderRegister(
15
+ ...args: PostDoorRenderRegisterParameters
16
+ ): void {
17
+ subscriptions.push(args);
18
+ }
19
+
20
+ /** @internal */
21
+ export function postDoorRenderFire(door: GridEntityDoor): void {
22
+ const gridEntityVariant = door.GetVariant();
23
+
24
+ for (const [callback, callbackGridEntityVariant] of subscriptions) {
25
+ // Handle the optional 2nd callback argument.
26
+ if (
27
+ callbackGridEntityVariant !== undefined &&
28
+ callbackGridEntityVariant !== gridEntityVariant
29
+ ) {
30
+ continue;
31
+ }
32
+
33
+ callback(door);
34
+ }
35
+ }
@@ -0,0 +1,35 @@
1
+ export type PostDoorUpdateRegisterParameters = [
2
+ callback: (door: GridEntityDoor) => void,
3
+ gridEntityVariant?: int,
4
+ ];
5
+
6
+ const subscriptions: PostDoorUpdateRegisterParameters[] = [];
7
+
8
+ /** @internal */
9
+ export function postDoorUpdateHasSubscriptions(): boolean {
10
+ return subscriptions.length > 0;
11
+ }
12
+
13
+ /** @internal */
14
+ export function postDoorUpdateRegister(
15
+ ...args: PostDoorUpdateRegisterParameters
16
+ ): void {
17
+ subscriptions.push(args);
18
+ }
19
+
20
+ /** @internal */
21
+ export function postDoorUpdateFire(door: GridEntityDoor): void {
22
+ const gridEntityVariant = door.GetVariant();
23
+
24
+ for (const [callback, callbackGridEntityVariant] of subscriptions) {
25
+ // Handle the optional 2nd callback argument.
26
+ if (
27
+ callbackGridEntityVariant !== undefined &&
28
+ callbackGridEntityVariant !== gridEntityVariant
29
+ ) {
30
+ continue;
31
+ }
32
+
33
+ callback(door);
34
+ }
35
+ }
@@ -0,0 +1,32 @@
1
+ import { EffectVariant } from "isaac-typescript-definitions";
2
+
3
+ export type PostEffectInitLateRegisterParameters = [
4
+ callback: (effect: EntityEffect) => void,
5
+ effectVariant?: EffectVariant,
6
+ ];
7
+
8
+ const subscriptions: PostEffectInitLateRegisterParameters[] = [];
9
+
10
+ /** @internal */
11
+ export function postEffectInitLateHasSubscriptions(): boolean {
12
+ return subscriptions.length > 0;
13
+ }
14
+
15
+ /** @internal */
16
+ export function postEffectInitLateRegister(
17
+ ...args: PostEffectInitLateRegisterParameters
18
+ ): void {
19
+ subscriptions.push(args);
20
+ }
21
+
22
+ /** @internal */
23
+ export function postEffectInitLateFire(effect: EntityEffect): void {
24
+ for (const [callback, effectVariant] of subscriptions) {
25
+ // Handle the optional 2nd callback argument.
26
+ if (effectVariant !== undefined && effectVariant !== effect.Variant) {
27
+ continue;
28
+ }
29
+
30
+ callback(effect);
31
+ }
32
+ }
@@ -0,0 +1,40 @@
1
+ import { EffectVariant } from "isaac-typescript-definitions";
2
+
3
+ export type PostEffectStateChangedRegisterParameters = [
4
+ callback: (
5
+ effect: EntityEffect,
6
+ previousState: int,
7
+ currentState: int,
8
+ ) => void,
9
+ effectVariant?: EffectVariant,
10
+ ];
11
+
12
+ const subscriptions: PostEffectStateChangedRegisterParameters[] = [];
13
+
14
+ /** @internal */
15
+ export function postEffectStateChangedHasSubscriptions(): boolean {
16
+ return subscriptions.length > 0;
17
+ }
18
+
19
+ /** @internal */
20
+ export function postEffectStateChangedRegister(
21
+ ...args: PostEffectStateChangedRegisterParameters
22
+ ): void {
23
+ subscriptions.push(args);
24
+ }
25
+
26
+ /** @internal */
27
+ export function postEffectStateChangedFire(
28
+ effect: EntityEffect,
29
+ previousState: int,
30
+ currentState: int,
31
+ ): void {
32
+ for (const [callback, effectVariant] of subscriptions) {
33
+ // Handle the optional 2nd callback argument.
34
+ if (effectVariant !== undefined && effectVariant !== effect.Variant) {
35
+ continue;
36
+ }
37
+
38
+ callback(effect, previousState, currentState);
39
+ }
40
+ }
@@ -0,0 +1,24 @@
1
+ export type PostEsauJrRegisterParameters = [
2
+ callback: (player: EntityPlayer) => void,
3
+ ];
4
+
5
+ const subscriptions: PostEsauJrRegisterParameters[] = [];
6
+
7
+ /** @internal */
8
+ export function postEsauJrHasSubscriptions(): boolean {
9
+ return subscriptions.length > 0;
10
+ }
11
+
12
+ /** @internal */
13
+ export function postEsauJrRegister(
14
+ ...args: PostEsauJrRegisterParameters
15
+ ): void {
16
+ subscriptions.push(args);
17
+ }
18
+
19
+ /** @internal */
20
+ export function postEsauJrFire(player: EntityPlayer): void {
21
+ for (const [callback] of subscriptions) {
22
+ callback(player);
23
+ }
24
+ }
@@ -0,0 +1,32 @@
1
+ import { FamiliarVariant } from "isaac-typescript-definitions";
2
+
3
+ export type PostFamiliarInitLateRegisterParameters = [
4
+ callback: (familiar: EntityFamiliar) => void,
5
+ familiarVariant?: FamiliarVariant,
6
+ ];
7
+
8
+ const subscriptions: PostFamiliarInitLateRegisterParameters[] = [];
9
+
10
+ /** @internal */
11
+ export function postFamiliarInitLateHasSubscriptions(): boolean {
12
+ return subscriptions.length > 0;
13
+ }
14
+
15
+ /** @internal */
16
+ export function postFamiliarInitLateRegister(
17
+ ...args: PostFamiliarInitLateRegisterParameters
18
+ ): void {
19
+ subscriptions.push(args);
20
+ }
21
+
22
+ /** @internal */
23
+ export function postFamiliarInitLateFire(familiar: EntityFamiliar): void {
24
+ for (const [callback, familiarVariant] of subscriptions) {
25
+ // Handle the optional 2nd callback argument.
26
+ if (familiarVariant !== undefined && familiarVariant !== familiar.Variant) {
27
+ continue;
28
+ }
29
+
30
+ callback(familiar);
31
+ }
32
+ }
@@ -0,0 +1,40 @@
1
+ import { FamiliarVariant } from "isaac-typescript-definitions";
2
+
3
+ export type PostFamiliarStateChangedRegisterParameters = [
4
+ callback: (
5
+ familiar: EntityFamiliar,
6
+ previousState: int,
7
+ currentState: int,
8
+ ) => void,
9
+ familiarVariant?: FamiliarVariant,
10
+ ];
11
+
12
+ const subscriptions: PostFamiliarStateChangedRegisterParameters[] = [];
13
+
14
+ /** @internal */
15
+ export function postFamiliarStateChangedHasSubscriptions(): boolean {
16
+ return subscriptions.length > 0;
17
+ }
18
+
19
+ /** @internal */
20
+ export function postFamiliarStateChangedRegister(
21
+ ...args: PostFamiliarStateChangedRegisterParameters
22
+ ): void {
23
+ subscriptions.push(args);
24
+ }
25
+
26
+ /** @internal */
27
+ export function postFamiliarStateChangedFire(
28
+ familiar: EntityFamiliar,
29
+ previousState: int,
30
+ currentState: int,
31
+ ): void {
32
+ for (const [callback, familiarVariant] of subscriptions) {
33
+ // Handle the optional 2nd callback argument.
34
+ if (familiarVariant !== undefined && familiarVariant !== familiar.Variant) {
35
+ continue;
36
+ }
37
+
38
+ callback(familiar, previousState, currentState);
39
+ }
40
+ }
@@ -0,0 +1,24 @@
1
+ export type PostFirstEsauJrRegisterParameters = [
2
+ callback: (player: EntityPlayer) => void,
3
+ ];
4
+
5
+ const subscriptions: PostFirstEsauJrRegisterParameters[] = [];
6
+
7
+ /** @internal */
8
+ export function postFirstEsauJrHasSubscriptions(): boolean {
9
+ return subscriptions.length > 0;
10
+ }
11
+
12
+ /** @internal */
13
+ export function postFirstEsauJrRegister(
14
+ ...args: PostFirstEsauJrRegisterParameters
15
+ ): void {
16
+ subscriptions.push(args);
17
+ }
18
+
19
+ /** @internal */
20
+ export function postFirstEsauJrFire(player: EntityPlayer): void {
21
+ for (const [callback] of subscriptions) {
22
+ callback(player);
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ export type PostFirstFlipRegisterParameters = [
2
+ callback: (player: EntityPlayer) => void,
3
+ ];
4
+
5
+ const subscriptions: PostFirstFlipRegisterParameters[] = [];
6
+
7
+ /** @internal */
8
+ export function postFirstFlipHasSubscriptions(): boolean {
9
+ return subscriptions.length > 0;
10
+ }
11
+
12
+ /** @internal */
13
+ export function postFirstFlipRegister(
14
+ ...args: PostFirstFlipRegisterParameters
15
+ ): void {
16
+ subscriptions.push(args);
17
+ }
18
+
19
+ /** @internal */
20
+ export function postFirstFlipFire(player: EntityPlayer): void {
21
+ for (const [callback] of subscriptions) {
22
+ callback(player);
23
+ }
24
+ }
@@ -0,0 +1,22 @@
1
+ export type PostFlipRegisterParameters = [
2
+ callback: (player: EntityPlayer) => void,
3
+ ];
4
+
5
+ const subscriptions: PostFlipRegisterParameters[] = [];
6
+
7
+ /** @internal */
8
+ export function postFlipHasSubscriptions(): boolean {
9
+ return subscriptions.length > 0;
10
+ }
11
+
12
+ /** @internal */
13
+ export function postFlipRegister(...args: PostFlipRegisterParameters): void {
14
+ subscriptions.push(args);
15
+ }
16
+
17
+ /** @internal */
18
+ export function postFlipFire(player: EntityPlayer): void {
19
+ for (const [callback] of subscriptions) {
20
+ callback(player);
21
+ }
22
+ }
@@ -0,0 +1,24 @@
1
+ export type PostGameStartedReorderedRegisterParameters = [
2
+ callback: (isContinued: boolean) => void,
3
+ ];
4
+
5
+ const subscriptions: PostGameStartedReorderedRegisterParameters[] = [];
6
+
7
+ /** @internal */
8
+ export function postGameStartedReorderedHasSubscriptions(): boolean {
9
+ return subscriptions.length > 0;
10
+ }
11
+
12
+ /** @internal */
13
+ export function postGameStartedReorderedRegister(
14
+ ...args: PostGameStartedReorderedRegisterParameters
15
+ ): void {
16
+ subscriptions.push(args);
17
+ }
18
+
19
+ /** @internal */
20
+ export function postGameStartedReorderedFire(isContinued: boolean): void {
21
+ for (const [callback] of subscriptions) {
22
+ callback(isContinued);
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ export type PostGreedModeWaveRegisterParameters = [
2
+ callback: (oldWave: int, newWave: int) => void,
3
+ ];
4
+
5
+ const subscriptions: PostGreedModeWaveRegisterParameters[] = [];
6
+
7
+ /** @internal */
8
+ export function postGreedModeWaveHasSubscriptions(): boolean {
9
+ return subscriptions.length > 0;
10
+ }
11
+
12
+ /** @internal */
13
+ export function postGreedModeWaveRegister(
14
+ ...args: PostGreedModeWaveRegisterParameters
15
+ ): void {
16
+ subscriptions.push(args);
17
+ }
18
+
19
+ /** @internal */
20
+ export function postGreedModeWaveFire(oldWave: int, newWave: int): void {
21
+ for (const [callback] of subscriptions) {
22
+ callback(oldWave, newWave);
23
+ }
24
+ }
@@ -0,0 +1,51 @@
1
+ import { GridEntityType } from "isaac-typescript-definitions";
2
+
3
+ export type PostGridEntityBrokenRegisterParameters = [
4
+ callback: (gridEntity: GridEntity) => void,
5
+ gridEntityType?: GridEntityType,
6
+ gridEntityVariant?: int,
7
+ ];
8
+
9
+ const subscriptions: PostGridEntityBrokenRegisterParameters[] = [];
10
+
11
+ /** @internal */
12
+ export function postGridEntityBrokenHasSubscriptions(): boolean {
13
+ return subscriptions.length > 0;
14
+ }
15
+
16
+ /** @internal */
17
+ export function postGridEntityBrokenRegister(
18
+ ...args: PostGridEntityBrokenRegisterParameters
19
+ ): void {
20
+ subscriptions.push(args);
21
+ }
22
+
23
+ /** @internal */
24
+ export function postGridEntityBrokenFire(gridEntity: GridEntity): void {
25
+ const gridEntityType = gridEntity.GetType();
26
+ const gridEntityVariant = gridEntity.GetVariant();
27
+
28
+ for (const [
29
+ callback,
30
+ callbackGridEntityType,
31
+ callbackGridEntityVariant,
32
+ ] of subscriptions) {
33
+ // Handle the optional 2nd callback argument.
34
+ if (
35
+ callbackGridEntityType !== undefined &&
36
+ callbackGridEntityType !== gridEntityType
37
+ ) {
38
+ continue;
39
+ }
40
+
41
+ // Handle the optional 3rd callback argument.
42
+ if (
43
+ callbackGridEntityVariant !== undefined &&
44
+ callbackGridEntityVariant !== gridEntityVariant
45
+ ) {
46
+ continue;
47
+ }
48
+
49
+ callback(gridEntity);
50
+ }
51
+ }
@@ -0,0 +1,54 @@
1
+ import { GridEntityType } from "isaac-typescript-definitions";
2
+
3
+ export type PostGridEntityCollisionRegisterParameters = [
4
+ callback: (gridEntity: GridEntity, entity: Entity) => void,
5
+ gridEntityType?: GridEntityType,
6
+ gridEntityVariant?: int,
7
+ ];
8
+
9
+ const subscriptions: PostGridEntityCollisionRegisterParameters[] = [];
10
+
11
+ /** @internal */
12
+ export function postGridEntityCollisionHasSubscriptions(): boolean {
13
+ return subscriptions.length > 0;
14
+ }
15
+
16
+ /** @internal */
17
+ export function postGridEntityCollisionRegister(
18
+ ...args: PostGridEntityCollisionRegisterParameters
19
+ ): void {
20
+ subscriptions.push(args);
21
+ }
22
+
23
+ /** @internal */
24
+ export function postGridEntityCollisionFire(
25
+ gridEntity: GridEntity,
26
+ entity: Entity,
27
+ ): void {
28
+ const gridEntityType = gridEntity.GetType();
29
+ const gridEntityVariant = gridEntity.GetVariant();
30
+
31
+ for (const [
32
+ callback,
33
+ callbackGridEntityType,
34
+ callbackGridEntityVariant,
35
+ ] of subscriptions) {
36
+ // Handle the optional 2nd callback argument.
37
+ if (
38
+ callbackGridEntityType !== undefined &&
39
+ callbackGridEntityType !== gridEntityType
40
+ ) {
41
+ continue;
42
+ }
43
+
44
+ // Handle the optional 3rd callback argument.
45
+ if (
46
+ callbackGridEntityVariant !== undefined &&
47
+ callbackGridEntityVariant !== gridEntityVariant
48
+ ) {
49
+ continue;
50
+ }
51
+
52
+ callback(gridEntity, entity);
53
+ }
54
+ }
@@ -0,0 +1,51 @@
1
+ import { GridEntityType } from "isaac-typescript-definitions";
2
+
3
+ export type PostGridEntityInitRegisterParameters = [
4
+ callback: (gridEntity: GridEntity) => void,
5
+ gridEntityType?: GridEntityType,
6
+ gridEntityVariant?: int,
7
+ ];
8
+
9
+ const subscriptions: PostGridEntityInitRegisterParameters[] = [];
10
+
11
+ /** @internal */
12
+ export function postGridEntityInitHasSubscriptions(): boolean {
13
+ return subscriptions.length > 0;
14
+ }
15
+
16
+ /** @internal */
17
+ export function postGridEntityInitRegister(
18
+ ...args: PostGridEntityInitRegisterParameters
19
+ ): void {
20
+ subscriptions.push(args);
21
+ }
22
+
23
+ /** @internal */
24
+ export function postGridEntityInitFire(gridEntity: GridEntity): void {
25
+ const gridEntityType = gridEntity.GetType();
26
+ const gridEntityVariant = gridEntity.GetVariant();
27
+
28
+ for (const [
29
+ callback,
30
+ callbackGridEntityType,
31
+ callbackGridEntityVariant,
32
+ ] of subscriptions) {
33
+ // Handle the optional 2nd callback argument.
34
+ if (
35
+ callbackGridEntityType !== undefined &&
36
+ callbackGridEntityType !== gridEntityType
37
+ ) {
38
+ continue;
39
+ }
40
+
41
+ // Handle the optional 3rd callback argument.
42
+ if (
43
+ callbackGridEntityVariant !== undefined &&
44
+ callbackGridEntityVariant !== gridEntityVariant
45
+ ) {
46
+ continue;
47
+ }
48
+
49
+ callback(gridEntity);
50
+ }
51
+ }