isaacscript-common 4.0.3 → 4.0.6

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 (370) hide show
  1. package/callbacks/postPlayerCollectible.lua +4 -2
  2. package/functions/collectibleSet.d.ts +37 -2
  3. package/functions/collectibleSet.lua +62 -15
  4. package/functions/player.lua +3 -4
  5. package/package.json +2 -2
  6. package/cachedClasses.ts +0 -39
  7. package/callbacks/customRevive.ts +0 -215
  8. package/callbacks/itemPickup.ts +0 -101
  9. package/callbacks/postAmbush.ts +0 -73
  10. package/callbacks/postBombExploded.ts +0 -26
  11. package/callbacks/postBombInitLate.ts +0 -36
  12. package/callbacks/postBoneSwing.ts +0 -64
  13. package/callbacks/postCollectibleInitFirst.ts +0 -40
  14. package/callbacks/postCursedTeleport.ts +0 -185
  15. package/callbacks/postCustomDoorEnter.ts +0 -292
  16. package/callbacks/postDiceRoomActivated.ts +0 -60
  17. package/callbacks/postDoorRender.ts +0 -26
  18. package/callbacks/postDoorUpdate.ts +0 -26
  19. package/callbacks/postEffectInitLate.ts +0 -36
  20. package/callbacks/postEffectStateChanged.ts +0 -43
  21. package/callbacks/postEsauJr.ts +0 -109
  22. package/callbacks/postFamiliarInitLate.ts +0 -36
  23. package/callbacks/postFamiliarStateChanged.ts +0 -43
  24. package/callbacks/postFlip.ts +0 -90
  25. package/callbacks/postGreedModeWave.ts +0 -41
  26. package/callbacks/postGridEntity.ts +0 -164
  27. package/callbacks/postGridEntityCollision.ts +0 -69
  28. package/callbacks/postGridEntityRender.ts +0 -26
  29. package/callbacks/postHolyMantleRemoved.ts +0 -55
  30. package/callbacks/postItemDischarged.ts +0 -154
  31. package/callbacks/postKnifeInitLate.ts +0 -36
  32. package/callbacks/postLaserInitLate.ts +0 -36
  33. package/callbacks/postNPCInitLate.ts +0 -36
  34. package/callbacks/postNPCStateChanged.ts +0 -42
  35. package/callbacks/postNewRoomEarly.ts +0 -96
  36. package/callbacks/postPickupCollect.ts +0 -48
  37. package/callbacks/postPickupInitFirst.ts +0 -70
  38. package/callbacks/postPickupInitLate.ts +0 -36
  39. package/callbacks/postPickupStateChanged.ts +0 -43
  40. package/callbacks/postPitRender.ts +0 -26
  41. package/callbacks/postPitUpdate.ts +0 -26
  42. package/callbacks/postPlayerChangeHealth.ts +0 -62
  43. package/callbacks/postPlayerChangeType.ts +0 -56
  44. package/callbacks/postPlayerCollectible.ts +0 -113
  45. package/callbacks/postPlayerFatalDamage.ts +0 -141
  46. package/callbacks/postPlayerInitLate.ts +0 -37
  47. package/callbacks/postPlayerReordered.ts +0 -142
  48. package/callbacks/postPoopRender.ts +0 -26
  49. package/callbacks/postPoopUpdate.ts +0 -26
  50. package/callbacks/postPressurePlateRender.ts +0 -26
  51. package/callbacks/postPressurePlateUpdate.ts +0 -26
  52. package/callbacks/postProjectileInitLate.ts +0 -36
  53. package/callbacks/postPurchase.ts +0 -64
  54. package/callbacks/postRockRender.ts +0 -26
  55. package/callbacks/postRockUpdate.ts +0 -26
  56. package/callbacks/postRoomClearChanged.ts +0 -57
  57. package/callbacks/postSacrifice.ts +0 -64
  58. package/callbacks/postSlotDestroyed.ts +0 -92
  59. package/callbacks/postSlotInitUpdate.ts +0 -68
  60. package/callbacks/postSlotRender.ts +0 -69
  61. package/callbacks/postSpikesRender.ts +0 -26
  62. package/callbacks/postSpikesUpdate.ts +0 -26
  63. package/callbacks/postTNTRender.ts +0 -26
  64. package/callbacks/postTNTUpdate.ts +0 -26
  65. package/callbacks/postTearInitLate.ts +0 -36
  66. package/callbacks/postTearInitVeryLate.ts +0 -41
  67. package/callbacks/postTransformation.ts +0 -59
  68. package/callbacks/postTrinketBreak.ts +0 -112
  69. package/callbacks/preBerserkDeath.ts +0 -49
  70. package/callbacks/preNewLevel.ts +0 -55
  71. package/callbacks/reorderedCallbacks.ts +0 -168
  72. package/callbacks/subscriptions/postAmbushFinished.ts +0 -32
  73. package/callbacks/subscriptions/postAmbushStarted.ts +0 -32
  74. package/callbacks/subscriptions/postBombInitLate.ts +0 -32
  75. package/callbacks/subscriptions/postBoneExploded.ts +0 -32
  76. package/callbacks/subscriptions/postBoneSwing.ts +0 -24
  77. package/callbacks/subscriptions/postCollectibleInitFirst.ts +0 -37
  78. package/callbacks/subscriptions/postCursedTeleport.ts +0 -24
  79. package/callbacks/subscriptions/postCustomDoorEnter.ts +0 -45
  80. package/callbacks/subscriptions/postCustomRevive.ts +0 -36
  81. package/callbacks/subscriptions/postDiceRoomActivated.ts +0 -38
  82. package/callbacks/subscriptions/postDoorRender.ts +0 -35
  83. package/callbacks/subscriptions/postDoorUpdate.ts +0 -35
  84. package/callbacks/subscriptions/postEffectInitLate.ts +0 -32
  85. package/callbacks/subscriptions/postEffectStateChanged.ts +0 -40
  86. package/callbacks/subscriptions/postEsauJr.ts +0 -24
  87. package/callbacks/subscriptions/postFamiliarInitLate.ts +0 -32
  88. package/callbacks/subscriptions/postFamiliarStateChanged.ts +0 -40
  89. package/callbacks/subscriptions/postFirstEsauJr.ts +0 -24
  90. package/callbacks/subscriptions/postFirstFlip.ts +0 -24
  91. package/callbacks/subscriptions/postFlip.ts +0 -22
  92. package/callbacks/subscriptions/postGameStartedReordered.ts +0 -24
  93. package/callbacks/subscriptions/postGreedModeWave.ts +0 -24
  94. package/callbacks/subscriptions/postGridEntityBroken.ts +0 -51
  95. package/callbacks/subscriptions/postGridEntityCollision.ts +0 -54
  96. package/callbacks/subscriptions/postGridEntityInit.ts +0 -51
  97. package/callbacks/subscriptions/postGridEntityRemove.ts +0 -52
  98. package/callbacks/subscriptions/postGridEntityRender.ts +0 -51
  99. package/callbacks/subscriptions/postGridEntityStateChanged.ts +0 -55
  100. package/callbacks/subscriptions/postGridEntityUpdate.ts +0 -51
  101. package/callbacks/subscriptions/postHolyMantleRemoved.ts +0 -48
  102. package/callbacks/subscriptions/postItemDischarged.ts +0 -43
  103. package/callbacks/subscriptions/postItemPickup.ts +0 -64
  104. package/callbacks/subscriptions/postKnifeInitLate.ts +0 -32
  105. package/callbacks/subscriptions/postLaserInitLate.ts +0 -32
  106. package/callbacks/subscriptions/postNPCInitLate.ts +0 -32
  107. package/callbacks/subscriptions/postNPCStateChanged.ts +0 -42
  108. package/callbacks/subscriptions/postNewLevelReordered.ts +0 -22
  109. package/callbacks/subscriptions/postNewRoomEarly.ts +0 -22
  110. package/callbacks/subscriptions/postNewRoomReordered.ts +0 -22
  111. package/callbacks/subscriptions/postPEffectUpdateReordered.ts +0 -40
  112. package/callbacks/subscriptions/postPickupCollect.ts +0 -35
  113. package/callbacks/subscriptions/postPickupInitFirst.ts +0 -32
  114. package/callbacks/subscriptions/postPickupInitLate.ts +0 -32
  115. package/callbacks/subscriptions/postPickupStateChanged.ts +0 -40
  116. package/callbacks/subscriptions/postPitRender.ts +0 -35
  117. package/callbacks/subscriptions/postPitUpdate.ts +0 -35
  118. package/callbacks/subscriptions/postPlayerChangeHealth.ts +0 -49
  119. package/callbacks/subscriptions/postPlayerChangeType.ts +0 -40
  120. package/callbacks/subscriptions/postPlayerCollectibleAdded.ts +0 -38
  121. package/callbacks/subscriptions/postPlayerCollectibleRemoved.ts +0 -38
  122. package/callbacks/subscriptions/postPlayerFatalDamage.ts +0 -68
  123. package/callbacks/subscriptions/postPlayerInitLate.ts +0 -40
  124. package/callbacks/subscriptions/postPlayerInitReordered.ts +0 -40
  125. package/callbacks/subscriptions/postPlayerRenderReordered.ts +0 -40
  126. package/callbacks/subscriptions/postPlayerUpdateReordered.ts +0 -40
  127. package/callbacks/subscriptions/postPoopRender.ts +0 -35
  128. package/callbacks/subscriptions/postPoopUpdate.ts +0 -35
  129. package/callbacks/subscriptions/postPressurePlateRender.ts +0 -37
  130. package/callbacks/subscriptions/postPressurePlateUpdate.ts +0 -37
  131. package/callbacks/subscriptions/postProjectileInitLate.ts +0 -35
  132. package/callbacks/subscriptions/postPurchase.ts +0 -31
  133. package/callbacks/subscriptions/postRockRender.ts +0 -35
  134. package/callbacks/subscriptions/postRockUpdate.ts +0 -35
  135. package/callbacks/subscriptions/postRoomClearChanged.ts +0 -30
  136. package/callbacks/subscriptions/postSacrifice.ts +0 -43
  137. package/callbacks/subscriptions/postSlotAnimationChanged.ts +0 -40
  138. package/callbacks/subscriptions/postSlotDestroyed.ts +0 -55
  139. package/callbacks/subscriptions/postSlotInit.ts +0 -32
  140. package/callbacks/subscriptions/postSlotRender.ts +0 -32
  141. package/callbacks/subscriptions/postSlotUpdate.ts +0 -32
  142. package/callbacks/subscriptions/postSpikesRender.ts +0 -35
  143. package/callbacks/subscriptions/postSpikesUpdate.ts +0 -35
  144. package/callbacks/subscriptions/postTNTRender.ts +0 -35
  145. package/callbacks/subscriptions/postTNTUpdate.ts +0 -35
  146. package/callbacks/subscriptions/postTearInitLate.ts +0 -32
  147. package/callbacks/subscriptions/postTearInitVeryLate.ts +0 -32
  148. package/callbacks/subscriptions/postTransformation.ts +0 -40
  149. package/callbacks/subscriptions/postTrinketBreak.ts +0 -38
  150. package/callbacks/subscriptions/preBerserkDeath.ts +0 -42
  151. package/callbacks/subscriptions/preCustomRevive.ts +0 -46
  152. package/callbacks/subscriptions/preItemPickup.ts +0 -64
  153. package/callbacks/subscriptions/preNewLevel.ts +0 -24
  154. package/classes/DefaultMap.ts +0 -174
  155. package/classes/ModUpgraded.ts +0 -84
  156. package/constants.ts +0 -162
  157. package/constantsFirstLast.ts +0 -217
  158. package/enums/AmbushType.ts +0 -4
  159. package/enums/HealthType.ts +0 -16
  160. package/enums/ModCallbackCustom.ts +0 -1278
  161. package/enums/PocketItemType.ts +0 -8
  162. package/enums/SerializationType.ts +0 -5
  163. package/enums/SlotDestructionType.ts +0 -4
  164. package/enums/private/CopyableIsaacAPIClassType.ts +0 -7
  165. package/enums/private/SaveDataKey.ts +0 -14
  166. package/enums/private/SerializationBrand.ts +0 -42
  167. package/features/characterHealthConversion.ts +0 -111
  168. package/features/characterStats.ts +0 -61
  169. package/features/debugDisplay/debugDisplay.ts +0 -221
  170. package/features/debugDisplay/exports.ts +0 -368
  171. package/features/debugDisplay/v.ts +0 -65
  172. package/features/deployJSONRoom.ts +0 -743
  173. package/features/disableInputs.ts +0 -193
  174. package/features/disableSound.ts +0 -77
  175. package/features/extraConsoleCommands/commandsDisplay.ts +0 -290
  176. package/features/extraConsoleCommands/commandsSubroutines.ts +0 -139
  177. package/features/extraConsoleCommands/init.ts +0 -334
  178. package/features/extraConsoleCommands/listCommands.ts +0 -1299
  179. package/features/extraConsoleCommands/v.ts +0 -14
  180. package/features/fadeInRemover.ts +0 -60
  181. package/features/fastReset.ts +0 -75
  182. package/features/forgottenSwitch.ts +0 -50
  183. package/features/getCollectibleItemPoolType.ts +0 -66
  184. package/features/persistentEntities.ts +0 -183
  185. package/features/playerInventory.ts +0 -135
  186. package/features/ponyDetection.ts +0 -74
  187. package/features/preventCollectibleRotation.ts +0 -115
  188. package/features/runInNFrames.ts +0 -148
  189. package/features/saveDataManager/constants.ts +0 -4
  190. package/features/saveDataManager/exports.ts +0 -229
  191. package/features/saveDataManager/load.ts +0 -99
  192. package/features/saveDataManager/main.ts +0 -195
  193. package/features/saveDataManager/maps.ts +0 -13
  194. package/features/saveDataManager/merge.ts +0 -194
  195. package/features/saveDataManager/save.ts +0 -74
  196. package/features/saveDataManager/serializationBrand.ts +0 -16
  197. package/features/sirenHelpers.ts +0 -129
  198. package/features/taintedLazarusPlayers.ts +0 -113
  199. package/featuresInitialized.ts +0 -20
  200. package/functions/ambush.ts +0 -47
  201. package/functions/array.ts +0 -410
  202. package/functions/benchmark.ts +0 -36
  203. package/functions/bitwise.ts +0 -24
  204. package/functions/bombs.ts +0 -12
  205. package/functions/boss.ts +0 -227
  206. package/functions/cacheFlag.ts +0 -12
  207. package/functions/cards.ts +0 -271
  208. package/functions/challenges.ts +0 -13
  209. package/functions/character.ts +0 -126
  210. package/functions/charge.ts +0 -237
  211. package/functions/chargeBar.ts +0 -67
  212. package/functions/collectibleCacheFlag.ts +0 -90
  213. package/functions/collectibleSet.ts +0 -56
  214. package/functions/collectibleTag.ts +0 -89
  215. package/functions/collectibles.ts +0 -659
  216. package/functions/color.ts +0 -128
  217. package/functions/debug.ts +0 -68
  218. package/functions/deepCopy.ts +0 -535
  219. package/functions/deepCopyTests.ts +0 -386
  220. package/functions/direction.ts +0 -49
  221. package/functions/doors.ts +0 -347
  222. package/functions/easing.ts +0 -182
  223. package/functions/eden.ts +0 -47
  224. package/functions/effects.ts +0 -20
  225. package/functions/entity.ts +0 -439
  226. package/functions/entitySpecific.ts +0 -889
  227. package/functions/entityTypes.ts +0 -6
  228. package/functions/enums.ts +0 -146
  229. package/functions/familiars.ts +0 -106
  230. package/functions/flag.ts +0 -165
  231. package/functions/flying.ts +0 -117
  232. package/functions/globals.ts +0 -242
  233. package/functions/gridEntity.ts +0 -511
  234. package/functions/gridEntitySpecific.ts +0 -112
  235. package/functions/input.ts +0 -139
  236. package/functions/isaacAPIClass.ts +0 -67
  237. package/functions/jsonHelpers.ts +0 -45
  238. package/functions/jsonRoom.ts +0 -100
  239. package/functions/kColor.ts +0 -129
  240. package/functions/language.ts +0 -13
  241. package/functions/level.ts +0 -31
  242. package/functions/log.ts +0 -720
  243. package/functions/map.ts +0 -56
  244. package/functions/math.ts +0 -149
  245. package/functions/mergeTests.ts +0 -288
  246. package/functions/npc.ts +0 -148
  247. package/functions/pickupVariants.ts +0 -60
  248. package/functions/pickups.ts +0 -499
  249. package/functions/pills.ts +0 -205
  250. package/functions/player.ts +0 -1056
  251. package/functions/playerDataStructures.ts +0 -150
  252. package/functions/playerHealth.ts +0 -382
  253. package/functions/playerIndex.ts +0 -195
  254. package/functions/pocketItems.ts +0 -149
  255. package/functions/positionVelocity.ts +0 -188
  256. package/functions/random.ts +0 -77
  257. package/functions/revive.ts +0 -201
  258. package/functions/rng.ts +0 -172
  259. package/functions/roomData.ts +0 -199
  260. package/functions/roomGrid.ts +0 -109
  261. package/functions/roomShape.ts +0 -80
  262. package/functions/rooms.ts +0 -648
  263. package/functions/run.ts +0 -36
  264. package/functions/saveFile.ts +0 -128
  265. package/functions/seeds.ts +0 -19
  266. package/functions/serialization.ts +0 -91
  267. package/functions/set.ts +0 -95
  268. package/functions/sound.ts +0 -9
  269. package/functions/spawnCollectible.ts +0 -104
  270. package/functions/sprite.ts +0 -107
  271. package/functions/stage.ts +0 -125
  272. package/functions/string.ts +0 -47
  273. package/functions/table.ts +0 -189
  274. package/functions/tears.ts +0 -32
  275. package/functions/transformations.ts +0 -131
  276. package/functions/trinketCacheFlag.ts +0 -60
  277. package/functions/trinketGive.ts +0 -157
  278. package/functions/trinkets.ts +0 -215
  279. package/functions/tstlClass.ts +0 -157
  280. package/functions/types.ts +0 -36
  281. package/functions/ui.ts +0 -138
  282. package/functions/utils.ts +0 -189
  283. package/functions/vector.ts +0 -126
  284. package/index.ts +0 -172
  285. package/initCustomCallbacks.ts +0 -132
  286. package/initFeatures.ts +0 -39
  287. package/interfaces/AddCallbackParameterCustom.ts +0 -188
  288. package/interfaces/ChargeBarSprites.ts +0 -12
  289. package/interfaces/JSONDoor.ts +0 -13
  290. package/interfaces/JSONEntity.ts +0 -16
  291. package/interfaces/JSONRoom.ts +0 -36
  292. package/interfaces/JSONRooms.ts +0 -12
  293. package/interfaces/JSONSpawn.ts +0 -14
  294. package/interfaces/PlayerHealth.ts +0 -16
  295. package/interfaces/PocketItemDescription.ts +0 -9
  296. package/interfaces/SaveData.ts +0 -29
  297. package/interfaces/TrinketSituation.ts +0 -9
  298. package/interfaces/private/TSTLClassMetatable.ts +0 -8
  299. package/maps/PHDPillConversions.ts +0 -21
  300. package/maps/cardMap.ts +0 -209
  301. package/maps/characterMap.ts +0 -87
  302. package/maps/collectibleDescriptionMap.ts +0 -732
  303. package/maps/collectibleNameMap.ts +0 -731
  304. package/maps/defaultPlayerStatMap.ts +0 -17
  305. package/maps/falsePHDPillConversions.ts +0 -35
  306. package/maps/gridEntityTypeToBrokenStateMap.ts +0 -50
  307. package/maps/gridEntityXMLMap.ts +0 -176
  308. package/maps/pillEffectMap.ts +0 -88
  309. package/maps/roomShapeToTopLeftWallGridIndexMap.ts +0 -18
  310. package/maps/roomTypeMap.ts +0 -40
  311. package/maps/trinketDescriptionMap.ts +0 -200
  312. package/maps/trinketNameMap.ts +0 -198
  313. package/objects/LRoomShapeToRectangles.ts +0 -44
  314. package/objects/callbackRegisterFunctions.ts +0 -187
  315. package/objects/cardDescriptions.ts +0 -105
  316. package/objects/cardNames.ts +0 -105
  317. package/objects/cardTypes.ts +0 -104
  318. package/objects/challengeNames.ts +0 -52
  319. package/objects/characterNames.ts +0 -48
  320. package/objects/coinSubTypeToValue.ts +0 -14
  321. package/objects/colors.ts +0 -16
  322. package/objects/directionNames.ts +0 -11
  323. package/objects/directionToDegrees.ts +0 -11
  324. package/objects/directionToVector.ts +0 -12
  325. package/objects/doorSlotFlagToDoorSlot.ts +0 -16
  326. package/objects/doorSlotToDirection.ts +0 -14
  327. package/objects/isaacAPIClassTypeToBrand.ts +0 -11
  328. package/objects/isaacAPIClassTypeToCopyFunction.ts +0 -18
  329. package/objects/languageNames.ts +0 -13
  330. package/objects/oppositeDoorSlots.ts +0 -15
  331. package/objects/pillEffectClasses.ts +0 -63
  332. package/objects/pillEffectNames.ts +0 -57
  333. package/objects/pillEffectTypes.ts +0 -62
  334. package/objects/roomShapeBounds.ts +0 -71
  335. package/objects/roomShapeLayoutSizes.ts +0 -45
  336. package/objects/roomShapeToBottomRightPosition.ts +0 -25
  337. package/objects/roomShapeToDoorSlots.ts +0 -83
  338. package/objects/roomShapeToDoorSlotsToGridIndexDelta.ts +0 -127
  339. package/objects/roomShapeToGridWidth.ts +0 -21
  340. package/objects/roomShapeToTopLeftPosition.ts +0 -26
  341. package/objects/roomShapeVolumes.ts +0 -38
  342. package/objects/roomTypeNames.ts +0 -36
  343. package/objects/serializedIsaacAPIClassTypeToIdentityFunction.ts +0 -14
  344. package/objects/stageTypeToLetter.ts +0 -15
  345. package/objects/transformationNames.ts +0 -18
  346. package/patchErrorFunctions.ts +0 -92
  347. package/sets/LRoomShapesSet.ts +0 -8
  348. package/sets/bossSets.ts +0 -470
  349. package/sets/charactersThatStartWithAnActiveItemSet.ts +0 -16
  350. package/sets/charactersWithBlackHeartFromEternalHeartSet.ts +0 -7
  351. package/sets/charactersWithFreeDevilDealsSet.ts +0 -4
  352. package/sets/charactersWithNoRedHeartsSet.ts +0 -17
  353. package/sets/charactersWithNoSoulHeartsSet.ts +0 -14
  354. package/sets/chestPickupVariantsSet.ts +0 -16
  355. package/sets/familiarsThatShootPlayerTearsSet.ts +0 -13
  356. package/sets/lostStyleCharactersSet.ts +0 -13
  357. package/sets/mineShaftRoomSubTypesSet.ts +0 -10
  358. package/sets/redHeartSubTypesSet.ts +0 -7
  359. package/sets/sinEntityTypesSet.ts +0 -11
  360. package/sets/singleUseActiveCollectibleTypesSet.ts +0 -13
  361. package/sets/storyBossesSet.ts +0 -17
  362. package/types/AnyEntity.ts +0 -12
  363. package/types/AwaitingTextInput.d.ts +0 -2
  364. package/types/CollectibleIndex.ts +0 -16
  365. package/types/PickingUpItem.ts +0 -89
  366. package/types/PlayerIndex.ts +0 -13
  367. package/types/private/IsaacAPIClass.ts +0 -3
  368. package/types/private/SerializedIsaacAPIClass.ts +0 -3
  369. package/types/private/TSTLClass.ts +0 -3
  370. package/upgradeMod.ts +0 -55
@@ -1,26 +0,0 @@
1
- import { ModCallback } from "isaac-typescript-definitions";
2
- import { getDoors } from "../functions/doors";
3
- import {
4
- postDoorRenderFire,
5
- postDoorRenderHasSubscriptions,
6
- } from "./subscriptions/postDoorRender";
7
-
8
- /** @internal */
9
- export function postDoorRenderInit(mod: Mod): void {
10
- mod.AddCallback(ModCallback.POST_RENDER, postRender); // 2
11
- }
12
-
13
- function hasSubscriptions() {
14
- return postDoorRenderHasSubscriptions();
15
- }
16
-
17
- // ModCallback.POST_RENDER (2)
18
- function postRender() {
19
- if (!hasSubscriptions()) {
20
- return;
21
- }
22
-
23
- for (const doors of getDoors()) {
24
- postDoorRenderFire(doors);
25
- }
26
- }
@@ -1,26 +0,0 @@
1
- import { ModCallback } from "isaac-typescript-definitions";
2
- import { getDoors } from "../functions/doors";
3
- import {
4
- postDoorUpdateFire,
5
- postDoorUpdateHasSubscriptions,
6
- } from "./subscriptions/postDoorUpdate";
7
-
8
- /** @internal */
9
- export function postDoorUpdateInit(mod: Mod): void {
10
- mod.AddCallback(ModCallback.POST_UPDATE, postUpdate); // 1
11
- }
12
-
13
- function hasSubscriptions() {
14
- return postDoorUpdateHasSubscriptions();
15
- }
16
-
17
- // ModCallback.POST_UPDATE (1)
18
- function postUpdate() {
19
- if (!hasSubscriptions()) {
20
- return;
21
- }
22
-
23
- for (const doors of getDoors()) {
24
- postDoorUpdateFire(doors);
25
- }
26
- }
@@ -1,36 +0,0 @@
1
- import { ModCallback } from "isaac-typescript-definitions";
2
- import { saveDataManager } from "../features/saveDataManager/exports";
3
- import {
4
- postEffectInitLateFire,
5
- postEffectInitLateHasSubscriptions,
6
- } from "./subscriptions/postEffectInitLate";
7
-
8
- const v = {
9
- room: {
10
- firedSet: new Set<PtrHash>(),
11
- },
12
- };
13
-
14
- /** @internal */
15
- export function postEffectInitLateInit(mod: Mod): void {
16
- saveDataManager("postEffectInitLate", v, hasSubscriptions);
17
-
18
- mod.AddCallback(ModCallback.POST_EFFECT_UPDATE, postEffectUpdate); // 55
19
- }
20
-
21
- function hasSubscriptions() {
22
- return postEffectInitLateHasSubscriptions();
23
- }
24
-
25
- // ModCallback.POST_EFFECT_UPDATE (55)
26
- function postEffectUpdate(effect: EntityEffect) {
27
- if (!hasSubscriptions()) {
28
- return;
29
- }
30
-
31
- const index = GetPtrHash(effect);
32
- if (!v.room.firedSet.has(index)) {
33
- v.room.firedSet.add(index);
34
- postEffectInitLateFire(effect);
35
- }
36
- }
@@ -1,43 +0,0 @@
1
- import { ModCallback } from "isaac-typescript-definitions";
2
- import { DefaultMap } from "../classes/DefaultMap";
3
- import { saveDataManager } from "../features/saveDataManager/exports";
4
- import {
5
- postEffectStateChangedFire,
6
- postEffectStateChangedHasSubscriptions,
7
- } from "./subscriptions/postEffectStateChanged";
8
-
9
- const v = {
10
- run: {
11
- effectStateMap: new DefaultMap<PtrHash, int, [int]>((state) => state),
12
- },
13
- };
14
-
15
- /** @internal */
16
- export function postEffectStateChangedInit(mod: Mod): void {
17
- saveDataManager("postEffectStateChanged", v, hasSubscriptions);
18
-
19
- mod.AddCallback(ModCallback.POST_EFFECT_UPDATE, postEffectUpdate); // 55
20
- }
21
-
22
- function hasSubscriptions() {
23
- return postEffectStateChangedHasSubscriptions();
24
- }
25
-
26
- // ModCallback.POST_EFFECT_UPDATE (55)
27
- function postEffectUpdate(effect: EntityEffect) {
28
- if (!hasSubscriptions()) {
29
- return;
30
- }
31
-
32
- const ptrHash = GetPtrHash(effect);
33
- const previousState = v.run.effectStateMap.getAndSetDefault(
34
- ptrHash,
35
- effect.State,
36
- );
37
- const currentState = effect.State;
38
- v.run.effectStateMap.set(ptrHash, currentState);
39
-
40
- if (previousState !== currentState) {
41
- postEffectStateChangedFire(effect, previousState, currentState);
42
- }
43
- }
@@ -1,109 +0,0 @@
1
- // This provides the logic for:
2
- // - POST_ESAU_JR
3
- // - POST_FIRST_ESAU_JR
4
-
5
- import {
6
- CollectibleType,
7
- ControllerIndex,
8
- ModCallback,
9
- UseFlag,
10
- } from "isaac-typescript-definitions";
11
- import { game } from "../cachedClasses";
12
- import { saveDataManager } from "../features/saveDataManager/exports";
13
- import { getPlayers } from "../functions/playerIndex";
14
- import {
15
- postEsauJrFire,
16
- postEsauJrHasSubscriptions,
17
- } from "./subscriptions/postEsauJr";
18
- import {
19
- postFirstEsauJrFire,
20
- postFirstEsauJrHasSubscriptions,
21
- } from "./subscriptions/postFirstEsauJr";
22
-
23
- const v = {
24
- run: {
25
- usedEsauJrFrame: null as int | null,
26
- usedEsauJrControllerIndex: null as ControllerIndex | null,
27
- usedEsauJrAtLeastOnce: false,
28
- },
29
- };
30
-
31
- /** @internal */
32
- export function postEsauJrCallbacksInit(mod: Mod): void {
33
- saveDataManager("postEsauJr", v, hasSubscriptions);
34
-
35
- mod.AddCallback(ModCallback.POST_UPDATE, postUpdate); // 1
36
- mod.AddCallback(
37
- ModCallback.POST_USE_ITEM,
38
- useItemEsauJr,
39
- CollectibleType.ESAU_JR,
40
- ); // 3
41
- }
42
-
43
- function hasSubscriptions() {
44
- return postEsauJrHasSubscriptions() || postFirstEsauJrHasSubscriptions();
45
- }
46
-
47
- // ModCallback.POST_UPDATE (1)
48
- function postUpdate() {
49
- if (!hasSubscriptions()) {
50
- return;
51
- }
52
-
53
- const gameFrameCount = game.GetFrameCount();
54
-
55
- // Check to see if it is the frame after the player has used Esau Jr.
56
- if (
57
- v.run.usedEsauJrFrame === null ||
58
- gameFrameCount < v.run.usedEsauJrFrame + 1
59
- ) {
60
- return;
61
- }
62
- v.run.usedEsauJrFrame = null;
63
-
64
- // Find the player corresponding to the player who used Esau Jr. a frame ago (via matching the
65
- // ControllerIndex).
66
- if (v.run.usedEsauJrControllerIndex === null) {
67
- return;
68
- }
69
- const player = getPlayerWithControllerIndex(v.run.usedEsauJrControllerIndex);
70
- v.run.usedEsauJrControllerIndex = null;
71
- if (player === undefined) {
72
- return;
73
- }
74
-
75
- if (!v.run.usedEsauJrAtLeastOnce) {
76
- v.run.usedEsauJrAtLeastOnce = true;
77
- postFirstEsauJrFire(player);
78
- }
79
-
80
- postEsauJrFire(player);
81
- }
82
-
83
- function getPlayerWithControllerIndex(controllerIndex: ControllerIndex) {
84
- const players = getPlayers();
85
- return players.find((player) => player.ControllerIndex === controllerIndex);
86
- }
87
-
88
- // ModCallback.POST_USE_ITEM (3)
89
- // CollectibleType.ESAU_JR (703)
90
- function useItemEsauJr(
91
- _collectibleType: CollectibleType,
92
- _rng: RNG,
93
- player: EntityPlayer,
94
- _useFlags: BitFlags<UseFlag>,
95
- _activeSlot: int,
96
- _customVarData: int,
97
- ): boolean | undefined {
98
- if (!hasSubscriptions()) {
99
- return undefined;
100
- }
101
-
102
- const gameFrameCount = game.GetFrameCount();
103
-
104
- // The player only changes to Esau Jr. on the frame after the item is used.
105
- v.run.usedEsauJrFrame = gameFrameCount + 1;
106
- v.run.usedEsauJrControllerIndex = player.ControllerIndex;
107
-
108
- return undefined;
109
- }
@@ -1,36 +0,0 @@
1
- import { ModCallback } from "isaac-typescript-definitions";
2
- import { saveDataManager } from "../features/saveDataManager/exports";
3
- import {
4
- postFamiliarInitLateFire,
5
- postFamiliarInitLateHasSubscriptions,
6
- } from "./subscriptions/postFamiliarInitLate";
7
-
8
- const v = {
9
- run: {
10
- firedSet: new Set<PtrHash>(),
11
- },
12
- };
13
-
14
- /** @internal */
15
- export function postFamiliarInitLateInit(mod: Mod): void {
16
- saveDataManager("postFamiliarInitLate", v, hasSubscriptions);
17
-
18
- mod.AddCallback(ModCallback.POST_FAMILIAR_UPDATE, postFamiliarUpdate); // 6
19
- }
20
-
21
- function hasSubscriptions() {
22
- return postFamiliarInitLateHasSubscriptions();
23
- }
24
-
25
- // ModCallback.POST_FAMILIAR_UPDATE (6)
26
- function postFamiliarUpdate(familiar: EntityFamiliar) {
27
- if (!hasSubscriptions()) {
28
- return;
29
- }
30
-
31
- const index = GetPtrHash(familiar);
32
- if (!v.run.firedSet.has(index)) {
33
- v.run.firedSet.add(index);
34
- postFamiliarInitLateFire(familiar);
35
- }
36
- }
@@ -1,43 +0,0 @@
1
- import { ModCallback } from "isaac-typescript-definitions";
2
- import { DefaultMap } from "../classes/DefaultMap";
3
- import { saveDataManager } from "../features/saveDataManager/exports";
4
- import {
5
- postFamiliarStateChangedFire,
6
- postFamiliarStateChangedHasSubscriptions,
7
- } from "./subscriptions/postFamiliarStateChanged";
8
-
9
- const v = {
10
- run: {
11
- familiarStateMap: new DefaultMap<PtrHash, int, [int]>((state) => state),
12
- },
13
- };
14
-
15
- /** @internal */
16
- export function postFamiliarStateChangedInit(mod: Mod): void {
17
- saveDataManager("postFamiliarStateChanged", v, hasSubscriptions);
18
-
19
- mod.AddCallback(ModCallback.POST_FAMILIAR_UPDATE, postFamiliarUpdate); // 6
20
- }
21
-
22
- function hasSubscriptions() {
23
- return postFamiliarStateChangedHasSubscriptions();
24
- }
25
-
26
- // ModCallback.POST_FAMILIAR_UPDATE (6)
27
- function postFamiliarUpdate(familiar: EntityFamiliar) {
28
- if (!hasSubscriptions()) {
29
- return;
30
- }
31
-
32
- const ptrHash = GetPtrHash(familiar);
33
- const previousState = v.run.familiarStateMap.getAndSetDefault(
34
- ptrHash,
35
- familiar.State,
36
- );
37
- const currentState = familiar.State;
38
- v.run.familiarStateMap.set(ptrHash, currentState);
39
-
40
- if (previousState !== currentState) {
41
- postFamiliarStateChangedFire(familiar, previousState, currentState);
42
- }
43
- }
@@ -1,90 +0,0 @@
1
- // This provides the logic for:
2
- // - POST_FLIP
3
- // - POST_FIRST_FLIP
4
-
5
- import {
6
- CollectibleType,
7
- ModCallback,
8
- PlayerType,
9
- UseFlag,
10
- } from "isaac-typescript-definitions";
11
- import { saveDataManager } from "../features/saveDataManager/exports";
12
- import { getPlayersOfType, isTaintedLazarus } from "../functions/player";
13
- import {
14
- postFirstFlipFire,
15
- postFirstFlipHasSubscriptions,
16
- } from "./subscriptions/postFirstFlip";
17
- import {
18
- postFlipFire,
19
- postFlipHasSubscriptions,
20
- } from "./subscriptions/postFlip";
21
-
22
- const v = {
23
- run: {
24
- usedFlipAtLeastOnce: false,
25
- },
26
- };
27
-
28
- /** @internal */
29
- export function postFlipCallbacksInit(mod: Mod): void {
30
- saveDataManager("postFlip", v, hasSubscriptions);
31
-
32
- mod.AddCallback(ModCallback.POST_USE_ITEM, useItemFlip, CollectibleType.FLIP); // 3
33
- }
34
-
35
- function hasSubscriptions() {
36
- return postFlipHasSubscriptions() || postFirstFlipHasSubscriptions();
37
- }
38
-
39
- // ModCallback.POST_USE_ITEM (3)
40
- // CollectibleType.FLIP (711)
41
- function useItemFlip(
42
- _collectibleType: CollectibleType,
43
- _rng: RNG,
44
- player: EntityPlayer,
45
- _useFlags: BitFlags<UseFlag>,
46
- _activeSlot: int,
47
- _customVarData: int,
48
- ): boolean | undefined {
49
- if (!hasSubscriptions()) {
50
- return undefined;
51
- }
52
-
53
- if (!isTaintedLazarus(player)) {
54
- return undefined;
55
- }
56
-
57
- // The player passed as part of the callback will be the old Lazarus that used the Flip item. We
58
- // pass the new Lazarus to the callback subscribers.
59
- const newLazarus = getNewLazarus(player);
60
- if (newLazarus === undefined) {
61
- return undefined;
62
- }
63
-
64
- if (!v.run.usedFlipAtLeastOnce) {
65
- v.run.usedFlipAtLeastOnce = true;
66
- postFirstFlipFire(newLazarus);
67
- }
68
-
69
- postFlipFire(newLazarus);
70
-
71
- return undefined;
72
- }
73
-
74
- function getNewLazarus(oldLazarus: EntityPlayer) {
75
- const oldCharacter = oldLazarus.GetPlayerType();
76
-
77
- let newCharacter: PlayerType;
78
- if (oldCharacter === PlayerType.LAZARUS_B) {
79
- newCharacter = PlayerType.LAZARUS_2_B;
80
- } else if (oldCharacter === PlayerType.LAZARUS_2_B) {
81
- newCharacter = PlayerType.LAZARUS_B;
82
- } else {
83
- error("Failed to determine the character in the postFlip callback.");
84
- }
85
-
86
- const playersOfType = getPlayersOfType(newCharacter);
87
- return playersOfType.find(
88
- (player) => player.FrameCount === oldLazarus.FrameCount,
89
- );
90
- }
@@ -1,41 +0,0 @@
1
- import { ModCallback } from "isaac-typescript-definitions";
2
- import { game } from "../cachedClasses";
3
- import { ModUpgraded } from "../classes/ModUpgraded";
4
- import { saveDataManager } from "../features/saveDataManager/exports";
5
- import {
6
- postGreedModeWaveFire,
7
- postGreedModeWaveHasSubscriptions,
8
- } from "./subscriptions/postGreedModeWave";
9
-
10
- const v = {
11
- run: {
12
- currentGreedWave: 0,
13
- },
14
- };
15
-
16
- /** @internal */
17
- export function postGreedModeWaveInit(mod: ModUpgraded): void {
18
- saveDataManager("postModeGreedWave", v, hasSubscriptions);
19
-
20
- mod.AddCallback(ModCallback.POST_UPDATE, postUpdate); // 1
21
- }
22
-
23
- function hasSubscriptions() {
24
- return postGreedModeWaveHasSubscriptions();
25
- }
26
-
27
- // ModCallback.POST_UPDATE (1)
28
- function postUpdate() {
29
- if (!hasSubscriptions()) {
30
- return;
31
- }
32
-
33
- const level = game.GetLevel();
34
- const newWave = level.GreedModeWave;
35
- const oldWave = v.run.currentGreedWave;
36
- v.run.currentGreedWave = newWave;
37
-
38
- if (newWave > oldWave) {
39
- postGreedModeWaveFire(oldWave, newWave);
40
- }
41
- }
@@ -1,164 +0,0 @@
1
- // This provides the logic for the following callbacks:
2
- // - PostGridEntityInit
3
- // - PostGridEntityUpdate
4
- // - PostGridEntityRemove
5
- // - PostGridEntityStateChanged
6
- // - PostGridEntityBroken
7
-
8
- import { GridEntityType, ModCallback } from "isaac-typescript-definitions";
9
- import { ModUpgraded } from "../classes/ModUpgraded";
10
- import { ModCallbackCustom } from "../enums/ModCallbackCustom";
11
- import { saveDataManager } from "../features/saveDataManager/exports";
12
- import {
13
- getGridEntitiesMap,
14
- isGridEntityBroken,
15
- } from "../functions/gridEntity";
16
- import {
17
- postGridEntityBrokenFire,
18
- postGridEntityBrokenHasSubscriptions,
19
- } from "./subscriptions/postGridEntityBroken";
20
- import {
21
- postGridEntityInitFire,
22
- postGridEntityInitHasSubscriptions,
23
- } from "./subscriptions/postGridEntityInit";
24
- import {
25
- postGridEntityRemoveFire,
26
- postGridEntityRemoveHasSubscriptions,
27
- } from "./subscriptions/postGridEntityRemove";
28
- import {
29
- postGridEntityStateChangedFire,
30
- postGridEntityStateChangedHasSubscriptions,
31
- } from "./subscriptions/postGridEntityStateChanged";
32
- import {
33
- postGridEntityUpdateFire,
34
- postGridEntityUpdateHasSubscriptions,
35
- } from "./subscriptions/postGridEntityUpdate";
36
-
37
- type GridEntityTuple = [
38
- gridEntityType: GridEntityType,
39
- gridEntityVariant: int,
40
- state: int,
41
- ];
42
-
43
- const v = {
44
- room: {
45
- /** Indexed by grid index. */
46
- initializedGridEntities: new Map<int, GridEntityTuple>(),
47
- },
48
- };
49
-
50
- /** @internal */
51
- export function postGridEntityCallbacksInit(mod: ModUpgraded): void {
52
- saveDataManager("postGridEntity", v, hasSubscriptions);
53
-
54
- mod.AddCallback(ModCallback.POST_UPDATE, postUpdate); // 1
55
- mod.AddCallbackCustom(
56
- ModCallbackCustom.POST_NEW_ROOM_REORDERED,
57
- postNewRoomReordered,
58
- );
59
- }
60
-
61
- function hasSubscriptions() {
62
- return (
63
- postGridEntityInitHasSubscriptions() ||
64
- postGridEntityUpdateHasSubscriptions() ||
65
- postGridEntityRemoveHasSubscriptions() ||
66
- postGridEntityStateChangedHasSubscriptions() ||
67
- postGridEntityBrokenHasSubscriptions()
68
- );
69
- }
70
-
71
- // ModCallback.POST_UPDATE (1)
72
- function postUpdate() {
73
- if (!hasSubscriptions()) {
74
- return;
75
- }
76
-
77
- const gridEntitiesMap = getGridEntitiesMap();
78
-
79
- // We check for removed grid entities first so that grid entities that change type will count as
80
- // being removed and fire the PostGridEntityRemoved callback.
81
- checkGridEntitiesRemoved(gridEntitiesMap);
82
-
83
- for (const [gridIndex, gridEntity] of gridEntitiesMap.entries()) {
84
- checkGridEntityStateChanged(gridIndex, gridEntity);
85
- checkNewGridEntity(gridIndex, gridEntity);
86
- postGridEntityUpdateFire(gridEntity);
87
- }
88
- }
89
-
90
- function checkGridEntitiesRemoved(gridEntitiesMap: Map<int, GridEntity>) {
91
- for (const [
92
- gridIndex,
93
- gridEntityTuple,
94
- ] of v.room.initializedGridEntities.entries()) {
95
- const [storedGridEntityType, storedGridEntityVariant] = gridEntityTuple;
96
- const gridEntity = gridEntitiesMap.get(gridIndex);
97
- if (
98
- gridEntity === undefined ||
99
- gridEntity.GetType() !== storedGridEntityType
100
- ) {
101
- v.room.initializedGridEntities.delete(gridIndex);
102
- postGridEntityRemoveFire(
103
- gridIndex,
104
- storedGridEntityType,
105
- storedGridEntityVariant,
106
- );
107
- }
108
- }
109
- }
110
-
111
- function checkGridEntityStateChanged(gridIndex: int, gridEntity: GridEntity) {
112
- const gridEntityTuple = v.room.initializedGridEntities.get(gridIndex);
113
- if (gridEntityTuple === undefined) {
114
- // This grid entity did not exist a frame ago; we don't want to fire the state changed callback
115
- // on the first frame that it exists.
116
- return;
117
- }
118
-
119
- const [_gridEntityType, _gridEntityVariant, oldState] = gridEntityTuple;
120
- const newState = gridEntity.State;
121
- if (oldState !== newState) {
122
- updateTupleInMap(gridEntity);
123
- postGridEntityStateChangedFire(gridEntity, oldState, newState);
124
-
125
- if (isGridEntityBroken(gridEntity)) {
126
- postGridEntityBrokenFire(gridEntity);
127
- }
128
- }
129
- }
130
-
131
- function checkNewGridEntity(gridIndex: int, gridEntity: GridEntity) {
132
- const gridEntityType = gridEntity.GetType();
133
- const gridEntityTuple = v.room.initializedGridEntities.get(gridIndex);
134
-
135
- if (gridEntityTuple === undefined || gridEntityTuple[0] !== gridEntityType) {
136
- updateTupleInMap(gridEntity);
137
- postGridEntityInitFire(gridEntity);
138
- }
139
- }
140
-
141
- function updateTupleInMap(gridEntity: GridEntity) {
142
- const gridEntityType = gridEntity.GetType();
143
- const gridEntityVariant = gridEntity.GetVariant();
144
- const gridIndex = gridEntity.GetGridIndex();
145
- const newTuple: GridEntityTuple = [
146
- gridEntityType,
147
- gridEntityVariant,
148
- gridEntity.State,
149
- ];
150
- v.room.initializedGridEntities.set(gridIndex, newTuple);
151
- }
152
-
153
- // ModCallbackCustom.POST_NEW_ROOM_REORDERED
154
- function postNewRoomReordered() {
155
- if (!hasSubscriptions()) {
156
- return;
157
- }
158
-
159
- const gridEntitiesMap = getGridEntitiesMap();
160
-
161
- for (const [gridIndex, gridEntity] of gridEntitiesMap.entries()) {
162
- checkNewGridEntity(gridIndex, gridEntity);
163
- }
164
- }
@@ -1,69 +0,0 @@
1
- import { GridCollisionClass, ModCallback } from "isaac-typescript-definitions";
2
- import { DefaultMap } from "../classes/DefaultMap";
3
- import { saveDataManager } from "../features/saveDataManager/exports";
4
- import {
5
- getCollidingEntitiesWithGridEntity,
6
- getGridEntities,
7
- } from "../functions/gridEntity";
8
- import {
9
- postGridEntityCollisionFire,
10
- postGridEntityCollisionHasSubscriptions,
11
- } from "./subscriptions/postGridEntityCollision";
12
-
13
- const v = {
14
- room: {
15
- /** Indexed by grid entity pointer hash. */
16
- collidingEntitiesMap: new DefaultMap<PtrHash, Set<PtrHash>>(
17
- () => new Set(),
18
- ),
19
- },
20
- };
21
-
22
- /** @internal */
23
- export function postGridEntityCollisionInit(mod: Mod): void {
24
- saveDataManager("postGridEntityCollision", v, hasSubscriptions);
25
-
26
- mod.AddCallback(ModCallback.POST_UPDATE, postUpdate); // 1
27
- }
28
-
29
- function hasSubscriptions() {
30
- return postGridEntityCollisionHasSubscriptions();
31
- }
32
-
33
- // ModCallback.POST_UPDATE (1)
34
- function postUpdate() {
35
- if (!hasSubscriptions()) {
36
- return;
37
- }
38
-
39
- const gridEntities = getGridEntities();
40
- const gridEntitiesWithCollision = gridEntities.filter(
41
- (gridEntity) => gridEntity.CollisionClass !== GridCollisionClass.NONE,
42
- );
43
- for (const gridEntity of gridEntitiesWithCollision) {
44
- const gridEntityPtrHash = GetPtrHash(gridEntity);
45
- const oldCollidingEntities =
46
- v.room.collidingEntitiesMap.getAndSetDefault(gridEntityPtrHash);
47
-
48
- // Check for new colliding entities.
49
- const collidingEntities = getCollidingEntitiesWithGridEntity(gridEntity);
50
- for (const entity of collidingEntities) {
51
- const entityPtrHash = GetPtrHash(entity);
52
- if (!oldCollidingEntities.has(entityPtrHash)) {
53
- oldCollidingEntities.add(entityPtrHash);
54
- postGridEntityCollisionFire(gridEntity, entity);
55
- }
56
- }
57
-
58
- // Remove old colliding entities.
59
- const collidingEntitiesPtrHashes = collidingEntities.map((entity) =>
60
- GetPtrHash(entity),
61
- );
62
- const collidingEntitiesPtrHashSet = new Set(collidingEntitiesPtrHashes);
63
- for (const oldCollidingEntityPtrHash of oldCollidingEntities.values()) {
64
- if (!collidingEntitiesPtrHashSet.has(oldCollidingEntityPtrHash)) {
65
- oldCollidingEntities.delete(oldCollidingEntityPtrHash);
66
- }
67
- }
68
- }
69
- }