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
@@ -30,10 +30,11 @@ function hasSubscriptions(self)
30
30
  end
31
31
  function entityTakeDmgPlayer(self, tookDamage, _damageAmount, damageFlags, _damageSource, _damageCountdownFrames)
32
32
  if not hasSubscriptions(nil) then
33
- return
33
+ return nil
34
34
  end
35
35
  incrementNumSacrifices(nil, damageFlags)
36
36
  setDamageFrame(nil, tookDamage, damageFlags)
37
+ return nil
37
38
  end
38
39
  function setDamageFrame(self, tookDamage, damageFlags)
39
40
  local gameFrameCount = game:GetFrameCount()
@@ -52,11 +52,12 @@ function getPlayerWithControllerIndex(self, controllerIndex)
52
52
  end
53
53
  function useItemEsauJr(self, _collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData)
54
54
  if not hasSubscriptions(nil) then
55
- return
55
+ return nil
56
56
  end
57
57
  local gameFrameCount = game:GetFrameCount()
58
58
  v.run.usedEsauJrFrame = gameFrameCount + 1
59
59
  v.run.usedEsauJrControllerIndex = player.ControllerIndex
60
+ return nil
60
61
  end
61
62
  v = {run = {usedEsauJrFrame = nil, usedEsauJrControllerIndex = nil, usedEsauJrAtLeastOnce = false}}
62
63
  ---
@@ -22,20 +22,21 @@ function hasSubscriptions(self)
22
22
  end
23
23
  function useItemFlip(self, _collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData)
24
24
  if not hasSubscriptions(nil) then
25
- return
25
+ return nil
26
26
  end
27
27
  if not isTaintedLazarus(nil, player) then
28
- return
28
+ return nil
29
29
  end
30
30
  local newLazarus = getNewLazarus(nil, player)
31
31
  if newLazarus == nil then
32
- return
32
+ return nil
33
33
  end
34
34
  if not v.run.usedFlipAtLeastOnce then
35
35
  v.run.usedFlipAtLeastOnce = true
36
36
  postFirstFlipFire(nil, newLazarus)
37
37
  end
38
38
  postFlipFire(nil, newLazarus)
39
+ return nil
39
40
  end
40
41
  function getNewLazarus(self, oldLazarus)
41
42
  local oldCharacter = oldLazarus:GetPlayerType()
@@ -65,17 +65,18 @@ function playerRecentlyCollidedWithBulb(self, player)
65
65
  end
66
66
  function preNPCCollisionSucker(self, npc, collider)
67
67
  if not hasSubscriptions(nil) then
68
- return
68
+ return nil
69
69
  end
70
70
  if npc.Variant ~= SuckerVariant.BULB then
71
- return
71
+ return nil
72
72
  end
73
73
  local player = collider:ToPlayer()
74
74
  if player == nil then
75
- return
75
+ return nil
76
76
  end
77
77
  local gameFrameCount = game:GetFrameCount()
78
78
  mapSetPlayer(nil, v.room.playersBulbLastCollisionFrame, player, gameFrameCount)
79
+ return nil
79
80
  end
80
81
  v = {
81
82
  run = {
@@ -24,9 +24,10 @@ function postNewRoom(self)
24
24
  end
25
25
  function preEntitySpawn(self)
26
26
  if not hasSubscriptions(nil) then
27
- return
27
+ return nil
28
28
  end
29
29
  checkRoomChanged(nil)
30
+ return nil
30
31
  end
31
32
  function checkRoomChanged(self)
32
33
  local room = game:GetRoom()
@@ -19,11 +19,11 @@ function hasSubscriptions(self)
19
19
  end
20
20
  function entityTakeDmgPlayer(self, tookDamage, _damageAmount, damageFlags, _damageSource, _damageCountdownFrames)
21
21
  if not hasSubscriptions(nil) then
22
- return
22
+ return nil
23
23
  end
24
24
  local player = tookDamage:ToPlayer()
25
25
  if player == nil then
26
- return
26
+ return nil
27
27
  end
28
28
  local room = game:GetRoom()
29
29
  local roomType = room:GetType()
@@ -33,6 +33,7 @@ function entityTakeDmgPlayer(self, tookDamage, _damageAmount, damageFlags, _dama
33
33
  ____v_level_0[____numSacrifices_1] = ____v_level_0[____numSacrifices_1] + 1
34
34
  postSacrificeFire(nil, player, v.level.numSacrifices)
35
35
  end
36
+ return nil
36
37
  end
37
38
  v = {level = {numSacrifices = 0}}
38
39
  ---
@@ -23,11 +23,11 @@ function hasSubscriptions(self)
23
23
  end
24
24
  function entityTakeDmgPlayer(self, tookDamage, _damageAmount, _damageFlags, _damageSource, _damageCountdownFrames)
25
25
  if not hasSubscriptions(nil) then
26
- return
26
+ return nil
27
27
  end
28
28
  local player = tookDamage:ToPlayer()
29
29
  if player == nil then
30
- return
30
+ return nil
31
31
  end
32
32
  local trinketMap = defaultMapGetPlayer(nil, v.run.playersTrinketMap, player)
33
33
  for ____, trinketType in ipairs(TRINKETS_THAT_CAN_BREAK) do
@@ -46,6 +46,7 @@ function entityTakeDmgPlayer(self, tookDamage, _damageAmount, _damageFlags, _dam
46
46
  end
47
47
  ::__continue8::
48
48
  end
49
+ return nil
49
50
  end
50
51
  function postPEffectUpdateReordered(self, player)
51
52
  if not hasSubscriptions(nil) then
@@ -19,6 +19,7 @@ function hasSubscriptions(self)
19
19
  end
20
20
  function useItemGlowingHourGlass(self)
21
21
  usedGlowingHourGlass = true
22
+ return nil
22
23
  end
23
24
  function postGameStartedVanilla(self, isContinued)
24
25
  if not hasSubscriptions(nil) then
@@ -16,7 +16,11 @@ export declare class ModUpgraded implements Mod {
16
16
  AddCallback<T extends ModCallback>(modCallback: T, ...args: AddCallbackParameter[T]): void;
17
17
  HasData(): boolean;
18
18
  LoadData(): string;
19
- RemoveCallback(callbackID: ModCallback, callback: () => void): void;
19
+ /**
20
+ * This method does not care about the tertiary argument. Regardless of the conditions of how you
21
+ * registered the callback, it will be removed.
22
+ */
23
+ RemoveCallback<T extends ModCallback>(modCallback: T, callback: AddCallbackParameter[T][0]): void;
20
24
  RemoveData(): void;
21
25
  SaveData(data: string): void;
22
26
  AddCallbackCustom<T extends ModCallbackCustom>(modCallbackCustom: T, ...args: AddCallbackParameterCustom[T]): void;
@@ -24,8 +24,8 @@ end
24
24
  function ModUpgraded.prototype.LoadData(self)
25
25
  return self.Mod:LoadData()
26
26
  end
27
- function ModUpgraded.prototype.RemoveCallback(self, callbackID, callback)
28
- self.Mod:RemoveCallback(callbackID, callback)
27
+ function ModUpgraded.prototype.RemoveCallback(self, modCallback, callback)
28
+ self.Mod:RemoveCallback(modCallback, callback)
29
29
  end
30
30
  function ModUpgraded.prototype.RemoveData(self)
31
31
  self.Mod:RemoveData()
@@ -51,6 +51,7 @@ function resetInventory(self, player)
51
51
  end
52
52
  function useItemD4(self, _collectibleType, _rng, player)
53
53
  resetInventory(nil, player)
54
+ return nil
54
55
  end
55
56
  function postGameStarted(self)
56
57
  for ____, player in ipairs(getAllPlayers(nil)) do
@@ -203,11 +203,6 @@ function ____exports.addStat(self, player, cacheFlag, amount)
203
203
  break
204
204
  end
205
205
  end
206
- do
207
- do
208
- break
209
- end
210
- end
211
206
  until true
212
207
  end
213
208
  function ____exports.addTrinketCostume(self, player, trinketType)
@@ -749,9 +744,9 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
749
744
  itemPool:RemoveCollectible(collectibleType)
750
745
  end
751
746
  repeat
752
- local ____switch124 = activeSlot
753
- local ____cond124 = ____switch124 == ActiveSlot.PRIMARY
754
- if ____cond124 then
747
+ local ____switch123 = activeSlot
748
+ local ____cond123 = ____switch123 == ActiveSlot.PRIMARY
749
+ if ____cond123 then
755
750
  do
756
751
  if primaryCollectibleType ~= CollectibleType.NULL then
757
752
  player:RemoveCollectible(primaryCollectibleType)
@@ -760,8 +755,8 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
760
755
  break
761
756
  end
762
757
  end
763
- ____cond124 = ____cond124 or ____switch124 == ActiveSlot.SECONDARY
764
- if ____cond124 then
758
+ ____cond123 = ____cond123 or ____switch123 == ActiveSlot.SECONDARY
759
+ if ____cond123 then
765
760
  do
766
761
  if primaryCollectibleType ~= CollectibleType.NULL then
767
762
  player:RemoveCollectible(primaryCollectibleType)
@@ -776,16 +771,16 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
776
771
  break
777
772
  end
778
773
  end
779
- ____cond124 = ____cond124 or ____switch124 == ActiveSlot.POCKET
780
- if ____cond124 then
774
+ ____cond123 = ____cond123 or ____switch123 == ActiveSlot.POCKET
775
+ if ____cond123 then
781
776
  do
782
777
  player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
783
778
  player:SetActiveCharge(charge, activeSlot)
784
779
  break
785
780
  end
786
781
  end
787
- ____cond124 = ____cond124 or ____switch124 == ActiveSlot.POCKET_SINGLE_USE
788
- if ____cond124 then
782
+ ____cond123 = ____cond123 or ____switch123 == ActiveSlot.POCKET_SINGLE_USE
783
+ if ____cond123 then
789
784
  do
790
785
  player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
791
786
  break
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "4.0.1-dev.0",
3
+ "version": "4.0.4",
4
4
  "description": "Helper functions and features for IsaacScript mods.",
5
5
  "keywords": [
6
6
  "isaac",
@@ -22,6 +22,6 @@
22
22
  "main": "index",
23
23
  "types": "index.d.ts",
24
24
  "dependencies": {
25
- "isaac-typescript-definitions": "^3.0.3"
25
+ "isaac-typescript-definitions": "^3.0.6"
26
26
  }
27
27
  }
package/cachedClasses.ts DELETED
@@ -1,39 +0,0 @@
1
- /**
2
- * A cached version of the class returned from the `Game()` constructor.
3
- *
4
- * Use this instead of invoking the constructor again for a miniscule performance increase.
5
- *
6
- * Caching the results of this constructor is safe, but caching other classes (like `Level` or
7
- * `Room`) is not safe and can lead to the game crashing in certain situations.
8
- */
9
- export const game = Game();
10
-
11
- /**
12
- * A cached version of the class returned from the `Isaac.GetItemConfig()` constructor.
13
- *
14
- * Use this instead of invoking the constructor again for a miniscule performance increase.
15
- *
16
- * Caching the results of this constructor is safe, but caching other classes (like `Level` or
17
- * `Room`) is not safe and can lead to the game crashing in certain situations.
18
- */
19
- export const itemConfig = Isaac.GetItemConfig();
20
-
21
- /**
22
- * A cached version of the class returned from the `MusicManager()` constructor.
23
- *
24
- * Use this instead of invoking the constructor again for a miniscule performance increase.
25
- *
26
- * Caching the results of this constructor is safe, but caching other classes (like `Level` or
27
- * `Room`) is not safe and can lead to the game crashing in certain situations.
28
- */
29
- export const musicManager = MusicManager();
30
-
31
- /**
32
- * A cached version of the class returned from the `SFXManager()` constructor.
33
- *
34
- * Use this instead of invoking the constructor again for a miniscule performance increase.
35
- *
36
- * Caching the results of this constructor is safe, but caching other classes (like `Level` or
37
- * `Room`) is not safe and can lead to the game crashing in certain situations.
38
- */
39
- export const sfxManager = SFXManager();
@@ -1,215 +0,0 @@
1
- // This provides the logic for:
2
- // - PRE_CUSTOM_REVIVE
3
- // - POST_CUSTOM_REVIVE
4
-
5
- import {
6
- CollectibleType,
7
- FamiliarVariant,
8
- ModCallback,
9
- PlayerType,
10
- SoundEffect,
11
- } from "isaac-typescript-definitions";
12
- import { sfxManager } from "../cachedClasses";
13
- import { ModUpgraded } from "../classes/ModUpgraded";
14
- import { ModCallbackCustom } from "../enums/ModCallbackCustom";
15
- import { runNextGameFrame } from "../features/runInNFrames";
16
- import { saveDataManager } from "../features/saveDataManager/exports";
17
- import { removeCollectibleFromItemTracker } from "../functions/collectibles";
18
- import { removeAllFamiliars } from "../functions/entitySpecific";
19
- import { log, logError } from "../functions/log";
20
- import { isCharacter } from "../functions/player";
21
- import { getPlayerFromIndex, getPlayerIndex } from "../functions/playerIndex";
22
- import { PlayerIndex } from "../types/PlayerIndex";
23
- import {
24
- postCustomReviveFire,
25
- postCustomReviveHasSubscriptions,
26
- } from "./subscriptions/postCustomRevive";
27
- import {
28
- preCustomReviveFire,
29
- preCustomReviveHasSubscriptions,
30
- } from "./subscriptions/preCustomRevive";
31
-
32
- const DEBUG = false;
33
-
34
- enum CustomReviveState {
35
- DISABLED,
36
-
37
- /**
38
- * We can't immediately jump to waiting for an item animation because it is possible for a player
39
- * to be holding an item above their head as they are dying (e.g. with Razor Blade).
40
- */
41
- WAITING_FOR_ROOM_TRANSITION,
42
-
43
- WAITING_FOR_ITEM_ANIMATION,
44
- }
45
-
46
- const v = {
47
- run: {
48
- state: CustomReviveState.DISABLED,
49
- revivalType: null as int | null,
50
- dyingPlayerIndex: null as PlayerIndex | null,
51
- },
52
- };
53
-
54
- /** @internal */
55
- export function customReviveCallbacksInit(mod: ModUpgraded): void {
56
- saveDataManager("customRevive", v, hasSubscriptions);
57
-
58
- mod.AddCallback(ModCallback.POST_RENDER, postRender); // 2
59
- mod.AddCallbackCustom(
60
- ModCallbackCustom.POST_NEW_ROOM_REORDERED,
61
- postNewRoomReordered,
62
- );
63
- mod.AddCallbackCustom(
64
- ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED,
65
- postPEffectUpdateReordered,
66
- );
67
- mod.AddCallbackCustom(
68
- ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE,
69
- postPlayerFatalDamage,
70
- );
71
- mod.AddCallbackCustom(ModCallbackCustom.PRE_BERSERK_DEATH, preBerserkDeath);
72
- }
73
-
74
- function hasSubscriptions() {
75
- return (
76
- preCustomReviveHasSubscriptions() || postCustomReviveHasSubscriptions()
77
- );
78
- }
79
-
80
- // ModCallback.POST_RENDER (2)
81
- function postRender() {
82
- if (v.run.state !== CustomReviveState.WAITING_FOR_ITEM_ANIMATION) {
83
- return;
84
- }
85
-
86
- // The 1-up sound will fire before the item holding animation begins, so we mute it on every
87
- // render frame.
88
- sfxManager.Stop(SoundEffect.ONE_UP);
89
- }
90
-
91
- // ModCallbackCustom.POST_NEW_ROOM_REORDERED
92
- function postNewRoomReordered() {
93
- if (v.run.state !== CustomReviveState.WAITING_FOR_ROOM_TRANSITION) {
94
- return;
95
- }
96
-
97
- v.run.state = CustomReviveState.WAITING_FOR_ITEM_ANIMATION;
98
- logStateChanged();
99
- }
100
-
101
- // ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED
102
- function postPEffectUpdateReordered(player: EntityPlayer) {
103
- checkWaitingForItemAnimation(player);
104
- }
105
-
106
- function checkWaitingForItemAnimation(player: EntityPlayer) {
107
- if (v.run.state !== CustomReviveState.WAITING_FOR_ITEM_ANIMATION) {
108
- return;
109
- }
110
-
111
- if (v.run.dyingPlayerIndex === null) {
112
- return;
113
- }
114
-
115
- const playerIndex = getPlayerIndex(player);
116
- if (playerIndex !== v.run.dyingPlayerIndex) {
117
- return;
118
- }
119
-
120
- let playerToCheckHoldingItem = player;
121
- if (isCharacter(player, PlayerType.THE_SOUL_B)) {
122
- const forgottenBody = player.GetOtherTwin();
123
- if (forgottenBody !== undefined) {
124
- playerToCheckHoldingItem = forgottenBody;
125
- }
126
- }
127
-
128
- if (!playerToCheckHoldingItem.IsHoldingItem()) {
129
- return;
130
- }
131
-
132
- // The player is now playing the animation where they hold the 1-Up item overhead. The
133
- // `EntityPlayer.StopExtraAnimation` method will not work to stop this animation. End-users are
134
- // expected to play a new animation in the PostCustomRevive callback, which will overwrite the
135
- // 1-Up animation.
136
-
137
- if (v.run.revivalType !== null) {
138
- postCustomReviveFire(playerToCheckHoldingItem, v.run.revivalType);
139
- }
140
-
141
- v.run.state = CustomReviveState.DISABLED;
142
- v.run.revivalType = null;
143
- v.run.dyingPlayerIndex = null;
144
- logStateChanged();
145
- }
146
-
147
- // ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE
148
- function postPlayerFatalDamage(player: EntityPlayer): boolean | undefined {
149
- if (!hasSubscriptions()) {
150
- return undefined;
151
- }
152
-
153
- playerIsAboutToDie(player);
154
- return undefined;
155
- }
156
-
157
- // ModCallbackCustom.PRE_BERSERK_DEATH
158
- function preBerserkDeath(player: EntityPlayer) {
159
- if (!hasSubscriptions()) {
160
- return;
161
- }
162
-
163
- playerIsAboutToDie(player);
164
- }
165
-
166
- /**
167
- * The player is about to die, which will immediately delete the save data for the run. To prevent
168
- * this from happening, we grant the 1-Up item.
169
- */
170
- function playerIsAboutToDie(player: EntityPlayer) {
171
- const revivalType = preCustomReviveFire(player);
172
- if (revivalType === undefined) {
173
- return;
174
- }
175
-
176
- v.run.state = CustomReviveState.WAITING_FOR_ROOM_TRANSITION;
177
- v.run.revivalType = revivalType;
178
- v.run.dyingPlayerIndex = getPlayerIndex(player);
179
- logStateChanged();
180
-
181
- player.AddCollectible(CollectibleType.ONE_UP, 0, false);
182
- removeAllFamiliars(FamiliarVariant.ONE_UP);
183
- removeCollectibleFromItemTracker(CollectibleType.ONE_UP);
184
-
185
- // The player should always be dead one frame from now. If they are not, then something has gone
186
- // wrong, probably with the `isDamageToPlayerFatal` function. Since end-user code is already
187
- // assuming that a custom revive is occurring, explicitly kill the player.
188
- const playerIndex = getPlayerIndex(player);
189
- runNextGameFrame(() => {
190
- const futurePlayer = getPlayerFromIndex(playerIndex);
191
- if (futurePlayer === undefined) {
192
- return;
193
- }
194
-
195
- if (futurePlayer.IsDead()) {
196
- return;
197
- }
198
-
199
- logError(
200
- "The player is still alive after initializing a custom revive. Explicitly killing the player.",
201
- );
202
- futurePlayer.Kill();
203
- });
204
- }
205
-
206
- function logStateChanged() {
207
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
208
- if (DEBUG) {
209
- log(
210
- `Custom revive state changed: ${CustomReviveState[v.run.state]} (${
211
- v.run.state
212
- })`,
213
- );
214
- }
215
- }
@@ -1,101 +0,0 @@
1
- // This provides the logic for:
2
- // - PRE_ITEM_PICKUP
3
- // - POST_ITEM_PICKUP
4
-
5
- import {
6
- CollectibleType,
7
- ItemType,
8
- TrinketType,
9
- } from "isaac-typescript-definitions";
10
- import { DefaultMap } from "../classes/DefaultMap";
11
- import { ModUpgraded } from "../classes/ModUpgraded";
12
- import { ModCallbackCustom } from "../enums/ModCallbackCustom";
13
- import { saveDataManager } from "../features/saveDataManager/exports";
14
- import { defaultMapGetPlayer } from "../functions/playerDataStructures";
15
- import {
16
- newPickingUpItem,
17
- PickingUpItem,
18
- resetPickingUpItem,
19
- } from "../types/PickingUpItem";
20
- import { PlayerIndex } from "../types/PlayerIndex";
21
- import {
22
- postItemPickupFire,
23
- postItemPickupHasSubscriptions,
24
- } from "./subscriptions/postItemPickup";
25
- import {
26
- preItemPickupFire,
27
- preItemPickupHasSubscriptions,
28
- } from "./subscriptions/preItemPickup";
29
-
30
- const v = {
31
- run: {
32
- playersPickingUpItemMap: new DefaultMap<PlayerIndex, PickingUpItem>(() =>
33
- newPickingUpItem(),
34
- ),
35
- },
36
- };
37
-
38
- /** @internal */
39
- export function itemPickupCallbacksInit(mod: ModUpgraded): void {
40
- saveDataManager("itemPickup", v, hasSubscriptions);
41
-
42
- mod.AddCallbackCustom(
43
- ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED,
44
- postPEffectUpdateReordered,
45
- );
46
- }
47
-
48
- function hasSubscriptions() {
49
- return preItemPickupHasSubscriptions() || postItemPickupHasSubscriptions();
50
- }
51
-
52
- // ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED
53
- function postPEffectUpdateReordered(player: EntityPlayer) {
54
- if (!hasSubscriptions()) {
55
- return;
56
- }
57
-
58
- const pickingUpItem = defaultMapGetPlayer(
59
- v.run.playersPickingUpItemMap,
60
- player,
61
- );
62
-
63
- if (player.IsItemQueueEmpty()) {
64
- queueEmpty(player, pickingUpItem);
65
- // If a player enters a room with a trinket next to the entrance, the player will pick up the
66
- // trinket, but it will not become queued (it will be deposited into their inventory
67
- // immediately). Since we don't know what type of item the player is holding, don't account for
68
- // this bug.
69
- } else {
70
- queueNotEmpty(player, pickingUpItem);
71
- }
72
- }
73
-
74
- function queueEmpty(player: EntityPlayer, pickingUpItem: PickingUpItem) {
75
- // eslint-disable-next-line isaacscript/strict-enums
76
- if (pickingUpItem.itemType === ItemType.NULL || pickingUpItem.subType === 0) {
77
- return;
78
- }
79
-
80
- postItemPickupFire(player, pickingUpItem);
81
- resetPickingUpItem(pickingUpItem);
82
- }
83
-
84
- function queueNotEmpty(player: EntityPlayer, pickingUpItem: PickingUpItem) {
85
- const queuedItem = player.QueuedItem.Item;
86
- if (queuedItem === undefined || queuedItem.Type === ItemType.NULL) {
87
- // This should never happen, since the `EntityPlayer.IsItemQueueEmpty` method returned true.
88
- return;
89
- }
90
-
91
- if (
92
- queuedItem.Type !== pickingUpItem.itemType ||
93
- queuedItem.ID !== pickingUpItem.subType
94
- ) {
95
- // Record which item we are picking up.
96
- pickingUpItem.itemType = queuedItem.Type;
97
- pickingUpItem.subType = queuedItem.ID as CollectibleType | TrinketType;
98
-
99
- preItemPickupFire(player, pickingUpItem);
100
- }
101
- }
@@ -1,73 +0,0 @@
1
- // This provides the logic for:
2
- // - POST_AMBUSH_STARTED
3
- // - POST_AMBUSH_FINISHED
4
-
5
- import { ModCallback, RoomType } from "isaac-typescript-definitions";
6
- import { game } from "../cachedClasses";
7
- import { AmbushType } from "../enums/AmbushType";
8
- import { saveDataManager } from "../features/saveDataManager/exports";
9
- import { getRoomType } from "../functions/roomData";
10
- import {
11
- postAmbushFinishedFire,
12
- postAmbushFinishedHasSubscriptions,
13
- } from "./subscriptions/postAmbushFinished";
14
- import {
15
- postAmbushStartedFire,
16
- postAmbushStartedHasSubscriptions,
17
- } from "./subscriptions/postAmbushStarted";
18
-
19
- const v = {
20
- room: {
21
- ambushActive: false,
22
- ambushDone: false,
23
- },
24
- };
25
-
26
- /** @internal */
27
- export function postAmbushCallbacksInit(mod: Mod): void {
28
- saveDataManager("postAmbushCallbacks", v, hasSubscriptions);
29
-
30
- mod.AddCallback(ModCallback.POST_UPDATE, postUpdate); // 1
31
- }
32
-
33
- function hasSubscriptions() {
34
- return (
35
- postAmbushStartedHasSubscriptions() || postAmbushFinishedHasSubscriptions()
36
- );
37
- }
38
-
39
- // ModCallback.POST_UPDATE (1)
40
- function postUpdate() {
41
- if (!hasSubscriptions()) {
42
- return;
43
- }
44
-
45
- const room = game.GetRoom();
46
-
47
- if (!v.room.ambushActive) {
48
- const ambushActive = room.IsAmbushActive();
49
- if (ambushActive) {
50
- v.room.ambushActive = true;
51
-
52
- const ambushType = getAmbushType();
53
- postAmbushStartedFire(ambushType);
54
- }
55
- }
56
-
57
- if (!v.room.ambushDone) {
58
- const ambushDone = room.IsAmbushDone();
59
- if (ambushDone) {
60
- v.room.ambushDone = true;
61
-
62
- const ambushType = getAmbushType();
63
- postAmbushFinishedFire(ambushType);
64
- }
65
- }
66
- }
67
-
68
- function getAmbushType(): AmbushType {
69
- const roomType = getRoomType();
70
- return roomType === RoomType.BOSS_RUSH
71
- ? AmbushType.BOSS_RUSH
72
- : AmbushType.CHALLENGE_ROOM;
73
- }