isaacscript-common 25.3.0 → 25.4.0

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 (259) hide show
  1. package/dist/index.rollup.d.ts +11 -2
  2. package/dist/isaacscript-common.lua +779 -684
  3. package/dist/src/classes/callbacks/PostAmbushFinished.d.ts.map +1 -1
  4. package/dist/src/classes/callbacks/PostAmbushFinished.lua +4 -3
  5. package/dist/src/classes/callbacks/PostAmbushStarted.d.ts.map +1 -1
  6. package/dist/src/classes/callbacks/PostAmbushStarted.lua +4 -3
  7. package/dist/src/classes/callbacks/PostBombInitLate.d.ts.map +1 -1
  8. package/dist/src/classes/callbacks/PostBombInitLate.lua +6 -5
  9. package/dist/src/classes/callbacks/PostBoneSwing.d.ts.map +1 -1
  10. package/dist/src/classes/callbacks/PostBoneSwing.lua +5 -4
  11. package/dist/src/classes/callbacks/PostCollectibleEmpty.d.ts.map +1 -1
  12. package/dist/src/classes/callbacks/PostCollectibleEmpty.lua +6 -5
  13. package/dist/src/classes/callbacks/PostCollectibleInitFirst.d.ts.map +1 -1
  14. package/dist/src/classes/callbacks/PostCollectibleInitFirst.lua +6 -5
  15. package/dist/src/classes/callbacks/PostCursedTeleport.d.ts.map +1 -1
  16. package/dist/src/classes/callbacks/PostCursedTeleport.lua +14 -13
  17. package/dist/src/classes/callbacks/PostDiceRoomActivated.d.ts.map +1 -1
  18. package/dist/src/classes/callbacks/PostDiceRoomActivated.lua +4 -3
  19. package/dist/src/classes/callbacks/PostEffectInitLate.d.ts.map +1 -1
  20. package/dist/src/classes/callbacks/PostEffectInitLate.lua +6 -5
  21. package/dist/src/classes/callbacks/PostEffectStateChanged.d.ts.map +1 -1
  22. package/dist/src/classes/callbacks/PostEffectStateChanged.lua +8 -7
  23. package/dist/src/classes/callbacks/PostFamiliarInitLate.d.ts.map +1 -1
  24. package/dist/src/classes/callbacks/PostFamiliarInitLate.lua +6 -5
  25. package/dist/src/classes/callbacks/PostFamiliarStateChanged.d.ts.map +1 -1
  26. package/dist/src/classes/callbacks/PostFamiliarStateChanged.lua +8 -7
  27. package/dist/src/classes/callbacks/PostGameStartedReordered.d.ts +2 -0
  28. package/dist/src/classes/callbacks/PostGameStartedReordered.d.ts.map +1 -1
  29. package/dist/src/classes/callbacks/PostGameStartedReordered.lua +3 -0
  30. package/dist/src/classes/callbacks/PostGameStartedReorderedLast.d.ts +2 -0
  31. package/dist/src/classes/callbacks/PostGameStartedReorderedLast.d.ts.map +1 -1
  32. package/dist/src/classes/callbacks/PostGameStartedReorderedLast.lua +3 -0
  33. package/dist/src/classes/callbacks/PostGreedModeWave.d.ts.map +1 -1
  34. package/dist/src/classes/callbacks/PostGreedModeWave.lua +4 -3
  35. package/dist/src/classes/callbacks/PostHolyMantleRemoved.d.ts.map +1 -1
  36. package/dist/src/classes/callbacks/PostHolyMantleRemoved.lua +5 -4
  37. package/dist/src/classes/callbacks/PostItemDischarge.d.ts.map +1 -1
  38. package/dist/src/classes/callbacks/PostItemDischarge.lua +20 -19
  39. package/dist/src/classes/callbacks/PostKeyboardChanged.d.ts.map +1 -1
  40. package/dist/src/classes/callbacks/PostKeyboardChanged.lua +8 -7
  41. package/dist/src/classes/callbacks/PostKnifeInitLate.d.ts.map +1 -1
  42. package/dist/src/classes/callbacks/PostKnifeInitLate.lua +6 -5
  43. package/dist/src/classes/callbacks/PostLaserInitLate.d.ts.map +1 -1
  44. package/dist/src/classes/callbacks/PostLaserInitLate.lua +6 -5
  45. package/dist/src/classes/callbacks/PostNPCInitLate.d.ts.map +1 -1
  46. package/dist/src/classes/callbacks/PostNPCInitLate.lua +6 -5
  47. package/dist/src/classes/callbacks/PostNPCStateChanged.d.ts.map +1 -1
  48. package/dist/src/classes/callbacks/PostNPCStateChanged.lua +8 -7
  49. package/dist/src/classes/callbacks/PostPickupCollect.d.ts.map +1 -1
  50. package/dist/src/classes/callbacks/PostPickupCollect.lua +6 -5
  51. package/dist/src/classes/callbacks/PostPickupInitLate.d.ts.map +1 -1
  52. package/dist/src/classes/callbacks/PostPickupInitLate.lua +6 -5
  53. package/dist/src/classes/callbacks/PostPickupStateChanged.d.ts.map +1 -1
  54. package/dist/src/classes/callbacks/PostPickupStateChanged.lua +8 -7
  55. package/dist/src/classes/callbacks/PostPlayerChangeHealth.d.ts.map +1 -1
  56. package/dist/src/classes/callbacks/PostPlayerChangeHealth.lua +8 -7
  57. package/dist/src/classes/callbacks/PostPlayerChangeStat.d.ts.map +1 -1
  58. package/dist/src/classes/callbacks/PostPlayerChangeStat.lua +8 -7
  59. package/dist/src/classes/callbacks/PostPlayerChangeType.d.ts.map +1 -1
  60. package/dist/src/classes/callbacks/PostPlayerChangeType.lua +8 -7
  61. package/dist/src/classes/callbacks/PostPlayerFatalDamage.d.ts.map +1 -1
  62. package/dist/src/classes/callbacks/PostPlayerFatalDamage.lua +6 -5
  63. package/dist/src/classes/callbacks/PostPlayerInitLate.d.ts.map +1 -1
  64. package/dist/src/classes/callbacks/PostPlayerInitLate.lua +6 -5
  65. package/dist/src/classes/callbacks/PostProjectileInitLate.d.ts.map +1 -1
  66. package/dist/src/classes/callbacks/PostProjectileInitLate.lua +6 -5
  67. package/dist/src/classes/callbacks/PostPurchase.d.ts.map +1 -1
  68. package/dist/src/classes/callbacks/PostPurchase.lua +5 -4
  69. package/dist/src/classes/callbacks/PostRoomClearChanged.d.ts.map +1 -1
  70. package/dist/src/classes/callbacks/PostRoomClearChanged.lua +5 -4
  71. package/dist/src/classes/callbacks/PostSacrifice.d.ts.map +1 -1
  72. package/dist/src/classes/callbacks/PostSacrifice.lua +5 -4
  73. package/dist/src/classes/callbacks/PostTearInitLate.d.ts.map +1 -1
  74. package/dist/src/classes/callbacks/PostTearInitLate.lua +6 -5
  75. package/dist/src/classes/callbacks/PostTearInitVeryLate.d.ts.map +1 -1
  76. package/dist/src/classes/callbacks/PostTearInitVeryLate.lua +6 -5
  77. package/dist/src/classes/callbacks/PostTransformation.d.ts.map +1 -1
  78. package/dist/src/classes/callbacks/PostTransformation.lua +8 -7
  79. package/dist/src/classes/callbacks/PostTrinketBreak.d.ts.map +1 -1
  80. package/dist/src/classes/callbacks/PostTrinketBreak.lua +9 -8
  81. package/dist/src/classes/callbacks/PreNewLevel.d.ts.map +1 -1
  82. package/dist/src/classes/callbacks/PreNewLevel.lua +4 -3
  83. package/dist/src/classes/features/callbackLogic/CustomGridEntities.d.ts.map +1 -1
  84. package/dist/src/classes/features/callbackLogic/CustomGridEntities.lua +21 -20
  85. package/dist/src/classes/features/callbackLogic/CustomRevive.d.ts.map +1 -1
  86. package/dist/src/classes/features/callbackLogic/CustomRevive.lua +18 -17
  87. package/dist/src/classes/features/callbackLogic/EsauJrDetection.d.ts.map +1 -1
  88. package/dist/src/classes/features/callbackLogic/EsauJrDetection.lua +11 -10
  89. package/dist/src/classes/features/callbackLogic/FlipDetection.d.ts.map +1 -1
  90. package/dist/src/classes/features/callbackLogic/FlipDetection.lua +4 -3
  91. package/dist/src/classes/features/callbackLogic/GridEntityCollisionDetection.d.ts.map +1 -1
  92. package/dist/src/classes/features/callbackLogic/GridEntityCollisionDetection.lua +8 -7
  93. package/dist/src/classes/features/callbackLogic/GridEntityUpdateDetection.d.ts.map +1 -1
  94. package/dist/src/classes/features/callbackLogic/GridEntityUpdateDetection.lua +9 -8
  95. package/dist/src/classes/features/callbackLogic/ItemPickupDetection.d.ts.map +1 -1
  96. package/dist/src/classes/features/callbackLogic/ItemPickupDetection.lua +7 -6
  97. package/dist/src/classes/features/callbackLogic/PickupChangeDetection.d.ts.map +1 -1
  98. package/dist/src/classes/features/callbackLogic/PickupChangeDetection.lua +11 -10
  99. package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.d.ts.map +1 -1
  100. package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.lua +20 -19
  101. package/dist/src/classes/features/callbackLogic/PlayerReorderedCallbacks.d.ts.map +1 -1
  102. package/dist/src/classes/features/callbackLogic/PlayerReorderedCallbacks.lua +15 -14
  103. package/dist/src/classes/features/callbackLogic/SlotDestroyedDetection.d.ts.map +1 -1
  104. package/dist/src/classes/features/callbackLogic/SlotDestroyedDetection.lua +6 -5
  105. package/dist/src/classes/features/callbackLogic/SlotRenderDetection.d.ts.map +1 -1
  106. package/dist/src/classes/features/callbackLogic/SlotRenderDetection.lua +15 -14
  107. package/dist/src/classes/features/callbackLogic/SlotUpdateDetection.d.ts.map +1 -1
  108. package/dist/src/classes/features/callbackLogic/SlotUpdateDetection.lua +6 -5
  109. package/dist/src/classes/features/other/CollectibleItemPoolType.d.ts.map +1 -1
  110. package/dist/src/classes/features/other/CollectibleItemPoolType.lua +6 -5
  111. package/dist/src/classes/features/other/CustomItemPools.d.ts.map +1 -1
  112. package/dist/src/classes/features/other/CustomItemPools.lua +6 -5
  113. package/dist/src/classes/features/other/CustomPickups.d.ts.map +1 -1
  114. package/dist/src/classes/features/other/CustomStages.d.ts.map +1 -1
  115. package/dist/src/classes/features/other/CustomStages.lua +17 -26
  116. package/dist/src/classes/features/other/CustomTrapdoors.d.ts.map +1 -1
  117. package/dist/src/classes/features/other/CustomTrapdoors.lua +36 -35
  118. package/dist/src/classes/features/other/DisableAllSound.d.ts.map +1 -1
  119. package/dist/src/classes/features/other/DisableAllSound.lua +10 -9
  120. package/dist/src/classes/features/other/DisableInputs.d.ts.map +1 -1
  121. package/dist/src/classes/features/other/DisableInputs.lua +21 -20
  122. package/dist/src/classes/features/other/ExtraConsoleCommands.lua +19 -19
  123. package/dist/src/classes/features/other/NoSirenSteal.d.ts.map +1 -1
  124. package/dist/src/classes/features/other/NoSirenSteal.lua +5 -4
  125. package/dist/src/classes/features/other/Pause.d.ts.map +1 -1
  126. package/dist/src/classes/features/other/Pause.lua +20 -19
  127. package/dist/src/classes/features/other/PersistentEntities.d.ts.map +1 -1
  128. package/dist/src/classes/features/other/PersistentEntities.lua +20 -19
  129. package/dist/src/classes/features/other/PickupIndexCreation.d.ts.map +1 -1
  130. package/dist/src/classes/features/other/PickupIndexCreation.lua +29 -28
  131. package/dist/src/classes/features/other/PlayerInventory.d.ts.map +1 -1
  132. package/dist/src/classes/features/other/PlayerInventory.lua +9 -8
  133. package/dist/src/classes/features/other/PonyDetection.d.ts.map +1 -1
  134. package/dist/src/classes/features/other/PonyDetection.lua +8 -7
  135. package/dist/src/classes/features/other/PressInput.d.ts.map +1 -1
  136. package/dist/src/classes/features/other/PressInput.lua +7 -6
  137. package/dist/src/classes/features/other/PreventChildEntities.d.ts.map +1 -1
  138. package/dist/src/classes/features/other/PreventChildEntities.lua +7 -6
  139. package/dist/src/classes/features/other/PreventCollectibleRotation.d.ts.map +1 -1
  140. package/dist/src/classes/features/other/PreventCollectibleRotation.lua +7 -6
  141. package/dist/src/classes/features/other/PreventGridEntityRespawn.d.ts.map +1 -1
  142. package/dist/src/classes/features/other/PreventGridEntityRespawn.lua +16 -15
  143. package/dist/src/classes/features/other/RoomClearFrame.d.ts.map +1 -1
  144. package/dist/src/classes/features/other/RoomClearFrame.lua +6 -5
  145. package/dist/src/classes/features/other/RoomHistory.d.ts.map +1 -1
  146. package/dist/src/classes/features/other/RoomHistory.lua +9 -8
  147. package/dist/src/classes/features/other/RunInNFrames.d.ts.map +1 -1
  148. package/dist/src/classes/features/other/RunInNFrames.lua +14 -13
  149. package/dist/src/classes/features/other/RunNextRoom.d.ts.map +1 -1
  150. package/dist/src/classes/features/other/RunNextRoom.lua +6 -5
  151. package/dist/src/classes/features/other/SaveDataManager.d.ts +1 -0
  152. package/dist/src/classes/features/other/SaveDataManager.d.ts.map +1 -1
  153. package/dist/src/classes/features/other/SaveDataManager.lua +12 -0
  154. package/dist/src/classes/features/other/StageHistory.d.ts.map +1 -1
  155. package/dist/src/classes/features/other/StageHistory.lua +7 -6
  156. package/dist/src/classes/features/other/TaintedLazarusPlayers.d.ts.map +1 -1
  157. package/dist/src/classes/features/other/TaintedLazarusPlayers.lua +18 -17
  158. package/dist/src/classes/features/other/customStages/streakText.d.ts +3 -25
  159. package/dist/src/classes/features/other/customStages/streakText.d.ts.map +1 -1
  160. package/dist/src/classes/features/other/customStages/streakText.lua +16 -26
  161. package/dist/src/classes/features/other/customStages/v.d.ts +25 -0
  162. package/dist/src/classes/features/other/customStages/v.d.ts.map +1 -0
  163. package/dist/src/classes/features/other/customStages/v.lua +16 -0
  164. package/dist/src/classes/features/other/customStages/versusScreen.d.ts +2 -8
  165. package/dist/src/classes/features/other/customStages/versusScreen.d.ts.map +1 -1
  166. package/dist/src/classes/features/other/customStages/versusScreen.lua +6 -4
  167. package/dist/src/enums/ModCallbackCustom.d.ts +6 -0
  168. package/dist/src/enums/ModCallbackCustom.d.ts.map +1 -1
  169. package/dist/src/interfaces/SaveData.d.ts.map +1 -1
  170. package/dist/src/interfaces/private/AddCallbackParametersCustom.d.ts +4 -2
  171. package/dist/src/interfaces/private/AddCallbackParametersCustom.d.ts.map +1 -1
  172. package/dist/src/shouldFire.d.ts +1 -0
  173. package/dist/src/shouldFire.d.ts.map +1 -1
  174. package/dist/src/shouldFire.lua +5 -0
  175. package/package.json +1 -1
  176. package/src/classes/callbacks/PostAmbushFinished.ts +9 -7
  177. package/src/classes/callbacks/PostAmbushStarted.ts +9 -7
  178. package/src/classes/callbacks/PostBombInitLate.ts +9 -7
  179. package/src/classes/callbacks/PostBoneSwing.ts +9 -7
  180. package/src/classes/callbacks/PostCollectibleEmpty.ts +9 -7
  181. package/src/classes/callbacks/PostCollectibleInitFirst.ts +9 -7
  182. package/src/classes/callbacks/PostCursedTeleport.ts +20 -24
  183. package/src/classes/callbacks/PostDiceRoomActivated.ts +9 -7
  184. package/src/classes/callbacks/PostEffectInitLate.ts +9 -7
  185. package/src/classes/callbacks/PostEffectStateChanged.ts +9 -7
  186. package/src/classes/callbacks/PostFamiliarInitLate.ts +9 -7
  187. package/src/classes/callbacks/PostFamiliarStateChanged.ts +9 -7
  188. package/src/classes/callbacks/PostGameStartedReordered.ts +3 -0
  189. package/src/classes/callbacks/PostGameStartedReorderedLast.ts +3 -0
  190. package/src/classes/callbacks/PostGreedModeWave.ts +9 -7
  191. package/src/classes/callbacks/PostHolyMantleRemoved.ts +9 -7
  192. package/src/classes/callbacks/PostItemDischarge.ts +21 -27
  193. package/src/classes/callbacks/PostKeyboardChanged.ts +11 -9
  194. package/src/classes/callbacks/PostKnifeInitLate.ts +9 -7
  195. package/src/classes/callbacks/PostLaserInitLate.ts +9 -7
  196. package/src/classes/callbacks/PostNPCInitLate.ts +9 -7
  197. package/src/classes/callbacks/PostNPCStateChanged.ts +11 -12
  198. package/src/classes/callbacks/PostPickupCollect.ts +9 -7
  199. package/src/classes/callbacks/PostPickupInitLate.ts +9 -7
  200. package/src/classes/callbacks/PostPickupStateChanged.ts +9 -7
  201. package/src/classes/callbacks/PostPlayerChangeHealth.ts +10 -8
  202. package/src/classes/callbacks/PostPlayerChangeStat.ts +11 -10
  203. package/src/classes/callbacks/PostPlayerChangeType.ts +13 -11
  204. package/src/classes/callbacks/PostPlayerFatalDamage.ts +10 -8
  205. package/src/classes/callbacks/PostPlayerInitLate.ts +9 -7
  206. package/src/classes/callbacks/PostProjectileInitLate.ts +9 -7
  207. package/src/classes/callbacks/PostPurchase.ts +11 -9
  208. package/src/classes/callbacks/PostRoomClearChanged.ts +10 -8
  209. package/src/classes/callbacks/PostSacrifice.ts +9 -7
  210. package/src/classes/callbacks/PostTearInitLate.ts +9 -7
  211. package/src/classes/callbacks/PostTearInitVeryLate.ts +9 -7
  212. package/src/classes/callbacks/PostTransformation.ts +12 -10
  213. package/src/classes/callbacks/PostTrinketBreak.ts +12 -16
  214. package/src/classes/callbacks/PreNewLevel.ts +9 -7
  215. package/src/classes/features/callbackLogic/CustomGridEntities.ts +23 -21
  216. package/src/classes/features/callbackLogic/CustomRevive.ts +26 -27
  217. package/src/classes/features/callbackLogic/EsauJrDetection.ts +19 -17
  218. package/src/classes/features/callbackLogic/FlipDetection.ts +10 -8
  219. package/src/classes/features/callbackLogic/GridEntityCollisionDetection.ts +11 -9
  220. package/src/classes/features/callbackLogic/GridEntityUpdateDetection.ts +13 -12
  221. package/src/classes/features/callbackLogic/ItemPickupDetection.ts +10 -8
  222. package/src/classes/features/callbackLogic/PickupChangeDetection.ts +12 -10
  223. package/src/classes/features/callbackLogic/PlayerCollectibleDetection.ts +21 -27
  224. package/src/classes/features/callbackLogic/PlayerReorderedCallbacks.ts +22 -29
  225. package/src/classes/features/callbackLogic/SlotDestroyedDetection.ts +9 -7
  226. package/src/classes/features/callbackLogic/SlotRenderDetection.ts +15 -13
  227. package/src/classes/features/callbackLogic/SlotUpdateDetection.ts +9 -7
  228. package/src/classes/features/other/CollectibleItemPoolType.ts +9 -7
  229. package/src/classes/features/other/CustomItemPools.ts +9 -7
  230. package/src/classes/features/other/CustomPickups.ts +0 -1
  231. package/src/classes/features/other/CustomStages.ts +16 -44
  232. package/src/classes/features/other/CustomTrapdoors.ts +53 -54
  233. package/src/classes/features/other/DisableAllSound.ts +13 -11
  234. package/src/classes/features/other/DisableInputs.ts +39 -37
  235. package/src/classes/features/other/ExtraConsoleCommands.ts +19 -19
  236. package/src/classes/features/other/NoSirenSteal.ts +11 -9
  237. package/src/classes/features/other/Pause.ts +21 -19
  238. package/src/classes/features/other/PersistentEntities.ts +33 -31
  239. package/src/classes/features/other/PickupIndexCreation.ts +35 -33
  240. package/src/classes/features/other/PlayerInventory.ts +14 -12
  241. package/src/classes/features/other/PonyDetection.ts +11 -9
  242. package/src/classes/features/other/PressInput.ts +11 -9
  243. package/src/classes/features/other/PreventChildEntities.ts +10 -8
  244. package/src/classes/features/other/PreventCollectibleRotation.ts +20 -18
  245. package/src/classes/features/other/PreventGridEntityRespawn.ts +18 -18
  246. package/src/classes/features/other/RoomClearFrame.ts +12 -10
  247. package/src/classes/features/other/RoomHistory.ts +13 -11
  248. package/src/classes/features/other/RunInNFrames.ts +19 -17
  249. package/src/classes/features/other/RunNextRoom.ts +10 -8
  250. package/src/classes/features/other/SaveDataManager.ts +11 -0
  251. package/src/classes/features/other/StageHistory.ts +11 -9
  252. package/src/classes/features/other/TaintedLazarusPlayers.ts +31 -30
  253. package/src/classes/features/other/customStages/streakText.ts +14 -44
  254. package/src/classes/features/other/customStages/v.ts +31 -0
  255. package/src/classes/features/other/customStages/versusScreen.ts +2 -10
  256. package/src/enums/ModCallbackCustom.ts +6 -0
  257. package/src/interfaces/SaveData.ts +0 -1
  258. package/src/interfaces/private/AddCallbackParametersCustom.ts +2 -0
  259. package/src/shouldFire.ts +10 -0
@@ -3,12 +3,14 @@ import { ModCallbackCustom } from "../../enums/ModCallbackCustom";
3
3
  import { shouldFireNPC } from "../../shouldFire";
4
4
  import { CustomCallback } from "../private/CustomCallback";
5
5
 
6
+ const v = {
7
+ room: {
8
+ firedSet: new Set<PtrHash>(),
9
+ },
10
+ };
11
+
6
12
  export class PostNPCInitLate extends CustomCallback<ModCallbackCustom.POST_NPC_INIT_LATE> {
7
- public override v = {
8
- room: {
9
- firedSet: new Set<PtrHash>(),
10
- },
11
- };
13
+ public override v = v;
12
14
 
13
15
  constructor() {
14
16
  super();
@@ -24,8 +26,8 @@ export class PostNPCInitLate extends CustomCallback<ModCallbackCustom.POST_NPC_I
24
26
  // ModCallback.POST_NPC_UPDATE (0)
25
27
  private postNPCUpdate = (npc: EntityNPC) => {
26
28
  const index = GetPtrHash(npc);
27
- if (!this.v.room.firedSet.has(index)) {
28
- this.v.room.firedSet.add(index);
29
+ if (!v.room.firedSet.has(index)) {
30
+ v.room.firedSet.add(index);
29
31
  this.fire(npc);
30
32
  }
31
33
  };
@@ -4,14 +4,16 @@ import { shouldFireNPC } from "../../shouldFire";
4
4
  import { DefaultMap } from "../DefaultMap";
5
5
  import { CustomCallback } from "../private/CustomCallback";
6
6
 
7
+ const v = {
8
+ run: {
9
+ stateMap: new DefaultMap<PtrHash, NpcState, [NpcState]>(
10
+ (state) => state, // eslint-disable-line isaacscript/strict-enums
11
+ ),
12
+ },
13
+ };
14
+
7
15
  export class PostNPCStateChanged extends CustomCallback<ModCallbackCustom.POST_NPC_STATE_CHANGED> {
8
- public override v = {
9
- run: {
10
- stateMap: new DefaultMap<PtrHash, NpcState, [NpcState]>(
11
- (state) => state, // eslint-disable-line isaacscript/strict-enums
12
- ),
13
- },
14
- };
16
+ public override v = v;
15
17
 
16
18
  constructor() {
17
19
  super();
@@ -27,12 +29,9 @@ export class PostNPCStateChanged extends CustomCallback<ModCallbackCustom.POST_N
27
29
  // ModCallback.POST_NPC_UPDATE (0)
28
30
  private postNPCUpdate = (npc: EntityNPC) => {
29
31
  const ptrHash = GetPtrHash(npc);
30
- const previousState = this.v.run.stateMap.getAndSetDefault(
31
- ptrHash,
32
- npc.State,
33
- );
32
+ const previousState = v.run.stateMap.getAndSetDefault(ptrHash, npc.State);
34
33
  const currentState = npc.State;
35
- this.v.run.stateMap.set(ptrHash, currentState);
34
+ v.run.stateMap.set(ptrHash, currentState);
36
35
 
37
36
  if (previousState !== currentState) {
38
37
  this.fire(npc, previousState, currentState);
@@ -4,12 +4,14 @@ import { getClosestPlayer } from "../../functions/players";
4
4
  import { shouldFirePickup } from "../../shouldFire";
5
5
  import { CustomCallback } from "../private/CustomCallback";
6
6
 
7
+ const v = {
8
+ room: {
9
+ firedSet: new Set<PtrHash>(),
10
+ },
11
+ };
12
+
7
13
  export class PostPickupCollect extends CustomCallback<ModCallbackCustom.POST_PICKUP_COLLECT> {
8
- public override v = {
9
- room: {
10
- firedSet: new Set<PtrHash>(),
11
- },
12
- };
14
+ public override v = v;
13
15
 
14
16
  constructor() {
15
17
  super();
@@ -31,8 +33,8 @@ export class PostPickupCollect extends CustomCallback<ModCallbackCustom.POST_PIC
31
33
  }
32
34
 
33
35
  const index = GetPtrHash(pickup);
34
- if (!this.v.room.firedSet.has(index)) {
35
- this.v.room.firedSet.add(index);
36
+ if (!v.room.firedSet.has(index)) {
37
+ v.room.firedSet.add(index);
36
38
 
37
39
  const player = getClosestPlayer(pickup.Position);
38
40
  this.fire(pickup, player);
@@ -3,12 +3,14 @@ import { ModCallbackCustom } from "../../enums/ModCallbackCustom";
3
3
  import { shouldFirePickup } from "../../shouldFire";
4
4
  import { CustomCallback } from "../private/CustomCallback";
5
5
 
6
+ const v = {
7
+ room: {
8
+ firedSet: new Set<PtrHash>(),
9
+ },
10
+ };
11
+
6
12
  export class PostPickupInitLate extends CustomCallback<ModCallbackCustom.POST_PICKUP_INIT_LATE> {
7
- public override v = {
8
- room: {
9
- firedSet: new Set<PtrHash>(),
10
- },
11
- };
13
+ public override v = v;
12
14
 
13
15
  constructor() {
14
16
  super();
@@ -24,8 +26,8 @@ export class PostPickupInitLate extends CustomCallback<ModCallbackCustom.POST_PI
24
26
  // ModCallback.POST_PICKUP_UPDATE (35)
25
27
  private postPickupUpdate = (pickup: EntityPickup) => {
26
28
  const index = GetPtrHash(pickup);
27
- if (!this.v.room.firedSet.has(index)) {
28
- this.v.room.firedSet.add(index);
29
+ if (!v.room.firedSet.has(index)) {
30
+ v.room.firedSet.add(index);
29
31
  this.fire(pickup);
30
32
  }
31
33
  };
@@ -4,12 +4,14 @@ import { shouldFirePickup } from "../../shouldFire";
4
4
  import { DefaultMap } from "../DefaultMap";
5
5
  import { CustomCallback } from "../private/CustomCallback";
6
6
 
7
+ const v = {
8
+ run: {
9
+ stateMap: new DefaultMap<PtrHash, int, [int]>((state) => state),
10
+ },
11
+ };
12
+
7
13
  export class PostPickupStateChanged extends CustomCallback<ModCallbackCustom.POST_PICKUP_STATE_CHANGED> {
8
- public override v = {
9
- run: {
10
- stateMap: new DefaultMap<PtrHash, int, [int]>((state) => state),
11
- },
12
- };
14
+ public override v = v;
13
15
 
14
16
  constructor() {
15
17
  super();
@@ -25,12 +27,12 @@ export class PostPickupStateChanged extends CustomCallback<ModCallbackCustom.POS
25
27
  // ModCallback.POST_PICKUP_UPDATE (35)
26
28
  private postPickupUpdate = (pickup: EntityPickup) => {
27
29
  const ptrHash = GetPtrHash(pickup);
28
- const previousState = this.v.run.stateMap.getAndSetDefault(
30
+ const previousState = v.run.stateMap.getAndSetDefault(
29
31
  ptrHash,
30
32
  pickup.State,
31
33
  );
32
34
  const currentState = pickup.State;
33
- this.v.run.stateMap.set(ptrHash, currentState);
35
+ v.run.stateMap.set(ptrHash, currentState);
34
36
 
35
37
  if (previousState !== currentState) {
36
38
  this.fire(pickup, previousState, currentState);
@@ -8,14 +8,16 @@ import { PlayerIndex } from "../../types/PlayerIndex";
8
8
  import { DefaultMap } from "../DefaultMap";
9
9
  import { CustomCallback } from "../private/CustomCallback";
10
10
 
11
+ const v = {
12
+ run: {
13
+ playersHealthMap: new DefaultMap<PlayerIndex, Map<HealthType, int>>(
14
+ () => new Map(),
15
+ ),
16
+ },
17
+ };
18
+
11
19
  export class PostPlayerChangeHealth extends CustomCallback<ModCallbackCustom.POST_PLAYER_CHANGE_HEALTH> {
12
- public override v = {
13
- run: {
14
- playersHealthMap: new DefaultMap<PlayerIndex, Map<HealthType, int>>(
15
- () => new Map(),
16
- ),
17
- },
18
- };
20
+ public override v = v;
19
21
 
20
22
  constructor() {
21
23
  super();
@@ -37,7 +39,7 @@ export class PostPlayerChangeHealth extends CustomCallback<ModCallbackCustom.POS
37
39
  // the player switches between the two.
38
40
  const playerIndex = getPlayerIndex(player, true);
39
41
  const playerHealthMap =
40
- this.v.run.playersHealthMap.getAndSetDefault(playerIndex);
42
+ v.run.playersHealthMap.getAndSetDefault(playerIndex);
41
43
 
42
44
  for (const healthType of HEALTH_TYPE_VALUES) {
43
45
  const storedHealthValue = playerHealthMap.get(healthType);
@@ -13,15 +13,17 @@ import { PossibleStatType } from "../../types/PossibleStatType";
13
13
  import { DefaultMap } from "../DefaultMap";
14
14
  import { CustomCallback } from "../private/CustomCallback";
15
15
 
16
+ const v = {
17
+ run: {
18
+ playersStatMap: new DefaultMap<
19
+ PlayerIndex,
20
+ Map<StatType, PossibleStatType>
21
+ >(() => new Map()),
22
+ },
23
+ };
24
+
16
25
  export class PostPlayerChangeStat extends CustomCallback<ModCallbackCustom.POST_PLAYER_CHANGE_STAT> {
17
- public override v = {
18
- run: {
19
- playersStatMap: new DefaultMap<
20
- PlayerIndex,
21
- Map<StatType, PossibleStatType>
22
- >(() => new Map()),
23
- },
24
- };
26
+ public override v = v;
25
27
 
26
28
  constructor() {
27
29
  super();
@@ -42,8 +44,7 @@ export class PostPlayerChangeStat extends CustomCallback<ModCallbackCustom.POST_
42
44
  // we don't differentiate between The Forgotten and The Soul, the callback will fire every time
43
45
  // the player switches between the two.
44
46
  const playerIndex = getPlayerIndex(player, true);
45
- const playerStatMap =
46
- this.v.run.playersStatMap.getAndSetDefault(playerIndex);
47
+ const playerStatMap = v.run.playersStatMap.getAndSetDefault(playerIndex);
47
48
 
48
49
  for (const statType of STAT_TYPE_VALUES) {
49
50
  const storedStatValue = playerStatMap.get(statType);
@@ -9,16 +9,18 @@ import { PlayerIndex } from "../../types/PlayerIndex";
9
9
  import { DefaultMap } from "../DefaultMap";
10
10
  import { CustomCallback } from "../private/CustomCallback";
11
11
 
12
+ const v = {
13
+ run: {
14
+ playersCharacterMap: new DefaultMap<
15
+ PlayerIndex,
16
+ PlayerType,
17
+ [character: PlayerType]
18
+ >((character: PlayerType) => character), // eslint-disable-line isaacscript/strict-enums
19
+ },
20
+ };
21
+
12
22
  export class PostPlayerChangeType extends CustomCallback<ModCallbackCustom.POST_PLAYER_CHANGE_TYPE> {
13
- public override v = {
14
- run: {
15
- playersCharacterMap: new DefaultMap<
16
- PlayerIndex,
17
- PlayerType,
18
- [character: PlayerType]
19
- >((character: PlayerType) => character), // eslint-disable-line isaacscript/strict-enums
20
- },
21
- };
23
+ public override v = v;
22
24
 
23
25
  constructor() {
24
26
  super();
@@ -37,12 +39,12 @@ export class PostPlayerChangeType extends CustomCallback<ModCallbackCustom.POST_
37
39
  private postPEffectReordered = (player: EntityPlayer) => {
38
40
  const character = player.GetPlayerType();
39
41
  const storedCharacter = defaultMapGetPlayer(
40
- this.v.run.playersCharacterMap,
42
+ v.run.playersCharacterMap,
41
43
  player,
42
44
  character,
43
45
  );
44
46
  if (character !== storedCharacter) {
45
- mapSetPlayer(this.v.run.playersCharacterMap, player, character);
47
+ mapSetPlayer(v.run.playersCharacterMap, player, character);
46
48
  this.fire(player, storedCharacter, character);
47
49
  }
48
50
  };
@@ -23,13 +23,15 @@ import { shouldFirePlayer } from "../../shouldFire";
23
23
  import { PlayerIndex } from "../../types/PlayerIndex";
24
24
  import { CustomCallback } from "../private/CustomCallback";
25
25
 
26
+ const v = {
27
+ run: {
28
+ /** Needed to detect if Glass Cannon will kill the player or not. */
29
+ playersLastDamageGameFrame: new Map<PlayerIndex, int>(),
30
+ },
31
+ };
32
+
26
33
  export class PostPlayerFatalDamage extends CustomCallback<ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE> {
27
- public override v = {
28
- run: {
29
- /** Needed to detect if Glass Cannon will kill the player or not. */
30
- playersLastDamageGameFrame: new Map<PlayerIndex, int>(),
31
- },
32
- };
34
+ public override v = v;
33
35
 
34
36
  constructor() {
35
37
  super();
@@ -100,10 +102,10 @@ export class PostPlayerFatalDamage extends CustomCallback<ModCallbackCustom.POST
100
102
 
101
103
  const gameFrameCount = game.GetFrameCount();
102
104
  const lastDamageGameFrame = mapGetPlayer(
103
- this.v.run.playersLastDamageGameFrame,
105
+ v.run.playersLastDamageGameFrame,
104
106
  player,
105
107
  );
106
- mapSetPlayer(this.v.run.playersLastDamageGameFrame, player, gameFrameCount);
108
+ mapSetPlayer(v.run.playersLastDamageGameFrame, player, gameFrameCount);
107
109
 
108
110
  // If the player has a revival item such as Dead Cat, this will not be fatal damage.
109
111
  if (willPlayerRevive(player)) {
@@ -7,12 +7,14 @@ import { shouldFirePlayer } from "../../shouldFire";
7
7
  import { PlayerIndex } from "../../types/PlayerIndex";
8
8
  import { CustomCallback } from "../private/CustomCallback";
9
9
 
10
+ const v = {
11
+ run: {
12
+ playersFiredSet: new Set<PlayerIndex>(),
13
+ },
14
+ };
15
+
10
16
  export class PostPlayerInitLate extends CustomCallback<ModCallbackCustom.POST_PLAYER_INIT_LATE> {
11
- public override v = {
12
- run: {
13
- playersFiredSet: new Set<PlayerIndex>(),
14
- },
15
- };
17
+ public override v = v;
16
18
 
17
19
  constructor() {
18
20
  super();
@@ -29,8 +31,8 @@ export class PostPlayerInitLate extends CustomCallback<ModCallbackCustom.POST_PL
29
31
 
30
32
  // ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED
31
33
  private postPEffectUpdateReordered = (player: EntityPlayer) => {
32
- if (!setHasPlayer(this.v.run.playersFiredSet, player)) {
33
- setAddPlayer(this.v.run.playersFiredSet, player);
34
+ if (!setHasPlayer(v.run.playersFiredSet, player)) {
35
+ setAddPlayer(v.run.playersFiredSet, player);
34
36
  this.fire(player);
35
37
  }
36
38
  };
@@ -3,12 +3,14 @@ import { ModCallbackCustom } from "../../enums/ModCallbackCustom";
3
3
  import { shouldFireProjectile } from "../../shouldFire";
4
4
  import { CustomCallback } from "../private/CustomCallback";
5
5
 
6
+ const v = {
7
+ room: {
8
+ firedSet: new Set<PtrHash>(),
9
+ },
10
+ };
11
+
6
12
  export class PostProjectileInitLate extends CustomCallback<ModCallbackCustom.POST_PROJECTILE_INIT_LATE> {
7
- public override v = {
8
- room: {
9
- firedSet: new Set<PtrHash>(),
10
- },
11
- };
13
+ public override v = v;
12
14
 
13
15
  constructor() {
14
16
  super();
@@ -24,8 +26,8 @@ export class PostProjectileInitLate extends CustomCallback<ModCallbackCustom.POS
24
26
  // ModCallback.POST_PROJECTILE_UPDATE (44)
25
27
  private postProjectileUpdate = (projectile: EntityProjectile): void => {
26
28
  const ptrHash = GetPtrHash(projectile);
27
- if (!this.v.room.firedSet.has(ptrHash)) {
28
- this.v.room.firedSet.add(ptrHash);
29
+ if (!v.room.firedSet.has(ptrHash)) {
30
+ v.room.firedSet.add(ptrHash);
29
31
  this.fire(projectile);
30
32
  }
31
33
  };
@@ -14,14 +14,16 @@ import {
14
14
 
15
15
  type T = ModCallbackCustom.POST_PURCHASE;
16
16
 
17
+ const v = {
18
+ room: {
19
+ playersHoldingItemOnLastFrameMap: new DefaultMap<PlayerIndex, boolean>(
20
+ false,
21
+ ),
22
+ },
23
+ };
24
+
17
25
  export class PostPurchase extends CustomCallback<T> {
18
- public override v = {
19
- room: {
20
- playersHoldingItemOnLastFrameMap: new DefaultMap<PlayerIndex, boolean>(
21
- false,
22
- ),
23
- },
24
- };
26
+ public override v = v;
25
27
 
26
28
  constructor() {
27
29
  super();
@@ -53,11 +55,11 @@ export class PostPurchase extends CustomCallback<T> {
53
55
  private postPEffectUpdateReordered = (player: EntityPlayer) => {
54
56
  const isHoldingItem = player.IsHoldingItem();
55
57
  const wasHoldingItemOnLastFrame = defaultMapGetPlayer(
56
- this.v.room.playersHoldingItemOnLastFrameMap,
58
+ v.room.playersHoldingItemOnLastFrameMap,
57
59
  player,
58
60
  );
59
61
  mapSetPlayer(
60
- this.v.room.playersHoldingItemOnLastFrameMap,
62
+ v.room.playersHoldingItemOnLastFrameMap,
61
63
  player,
62
64
  isHoldingItem,
63
65
  );
@@ -9,12 +9,14 @@ import {
9
9
 
10
10
  type T = ModCallbackCustom.POST_ROOM_CLEAR_CHANGED;
11
11
 
12
+ const v = {
13
+ room: {
14
+ cleared: false,
15
+ },
16
+ };
17
+
12
18
  export class PostRoomClearChanged extends CustomCallback<T> {
13
- public override v = {
14
- room: {
15
- cleared: false,
16
- },
17
- };
19
+ public override v = v;
18
20
 
19
21
  constructor() {
20
22
  super();
@@ -44,8 +46,8 @@ export class PostRoomClearChanged extends CustomCallback<T> {
44
46
  const room = game.GetRoom();
45
47
  const roomClear = room.IsClear();
46
48
 
47
- if (roomClear !== this.v.room.cleared) {
48
- this.v.room.cleared = roomClear;
49
+ if (roomClear !== v.room.cleared) {
50
+ v.room.cleared = roomClear;
49
51
  this.fire(roomClear);
50
52
  }
51
53
  };
@@ -55,6 +57,6 @@ export class PostRoomClearChanged extends CustomCallback<T> {
55
57
  const room = game.GetRoom();
56
58
  const roomClear = room.IsClear();
57
59
 
58
- this.v.room.cleared = roomClear;
60
+ v.room.cleared = roomClear;
59
61
  };
60
62
  }
@@ -5,12 +5,14 @@ import { hasFlag } from "../../functions/flag";
5
5
  import { shouldFirePlayer } from "../../shouldFire";
6
6
  import { CustomCallback } from "../private/CustomCallback";
7
7
 
8
+ const v = {
9
+ level: {
10
+ numSacrifices: 0,
11
+ },
12
+ };
13
+
8
14
  export class PostSacrifice extends CustomCallback<ModCallbackCustom.POST_SACRIFICE> {
9
- public override v = {
10
- level: {
11
- numSacrifices: 0,
12
- },
13
- };
15
+ public override v = v;
14
16
 
15
17
  constructor() {
16
18
  super();
@@ -35,8 +37,8 @@ export class PostSacrifice extends CustomCallback<ModCallbackCustom.POST_SACRIFI
35
37
  const isSpikeDamage = hasFlag(damageFlags, DamageFlag.SPIKES);
36
38
 
37
39
  if (roomType === RoomType.SACRIFICE && isSpikeDamage) {
38
- this.v.level.numSacrifices++;
39
- this.fire(player, this.v.level.numSacrifices);
40
+ v.level.numSacrifices++;
41
+ this.fire(player, v.level.numSacrifices);
40
42
  }
41
43
 
42
44
  return undefined;
@@ -3,12 +3,14 @@ import { ModCallbackCustom } from "../../enums/ModCallbackCustom";
3
3
  import { shouldFireTear } from "../../shouldFire";
4
4
  import { CustomCallback } from "../private/CustomCallback";
5
5
 
6
+ const v = {
7
+ room: {
8
+ firedSet: new Set<PtrHash>(),
9
+ },
10
+ };
11
+
6
12
  export class PostTearInitLate extends CustomCallback<ModCallbackCustom.POST_TEAR_INIT_LATE> {
7
- public override v = {
8
- room: {
9
- firedSet: new Set<PtrHash>(),
10
- },
11
- };
13
+ public override v = v;
12
14
 
13
15
  constructor() {
14
16
  super();
@@ -24,8 +26,8 @@ export class PostTearInitLate extends CustomCallback<ModCallbackCustom.POST_TEAR
24
26
  // ModCallback.POST_TEAR_UPDATE (40)
25
27
  private postTearUpdate = (tear: EntityTear): void => {
26
28
  const ptrHash = GetPtrHash(tear);
27
- if (!this.v.room.firedSet.has(ptrHash)) {
28
- this.v.room.firedSet.add(ptrHash);
29
+ if (!v.room.firedSet.has(ptrHash)) {
30
+ v.room.firedSet.add(ptrHash);
29
31
  this.fire(tear);
30
32
  }
31
33
  };
@@ -3,12 +3,14 @@ import { ModCallbackCustom } from "../../enums/ModCallbackCustom";
3
3
  import { shouldFireTear } from "../../shouldFire";
4
4
  import { CustomCallback } from "../private/CustomCallback";
5
5
 
6
+ const v = {
7
+ room: {
8
+ firedSet: new Set<PtrHash>(),
9
+ },
10
+ };
11
+
6
12
  export class PostTearInitVeryLate extends CustomCallback<ModCallbackCustom.POST_TEAR_INIT_VERY_LATE> {
7
- public override v = {
8
- room: {
9
- firedSet: new Set<PtrHash>(),
10
- },
11
- };
13
+ public override v = v;
12
14
 
13
15
  constructor() {
14
16
  super();
@@ -29,8 +31,8 @@ export class PostTearInitVeryLate extends CustomCallback<ModCallbackCustom.POST_
29
31
  }
30
32
 
31
33
  const index = GetPtrHash(tear);
32
- if (!this.v.room.firedSet.has(index)) {
33
- this.v.room.firedSet.add(index);
34
+ if (!v.room.firedSet.has(index)) {
35
+ v.room.firedSet.add(index);
34
36
  this.fire(tear);
35
37
  }
36
38
  };
@@ -12,16 +12,18 @@ import {
12
12
 
13
13
  type T = ModCallbackCustom.POST_TRANSFORMATION;
14
14
 
15
+ const v = {
16
+ run: {
17
+ // We cannot use a nested `DefaultMap` here.
18
+ playersTransformationsMap: new DefaultMap<
19
+ PlayerIndex,
20
+ Map<PlayerForm, boolean>
21
+ >(() => new Map()),
22
+ },
23
+ };
24
+
15
25
  export class PostTransformation extends CustomCallback<T> {
16
- public override v = {
17
- run: {
18
- // We cannot use a nested `DefaultMap` here.
19
- playersTransformationsMap: new DefaultMap<
20
- PlayerIndex,
21
- Map<PlayerForm, boolean>
22
- >(() => new Map()),
23
- },
24
- };
26
+ public override v = v;
25
27
 
26
28
  constructor() {
27
29
  super();
@@ -49,7 +51,7 @@ export class PostTransformation extends CustomCallback<T> {
49
51
  // ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED
50
52
  private postPEffectUpdateReordered = (player: EntityPlayer) => {
51
53
  const playerTransformationsMap = defaultMapGetPlayer(
52
- this.v.run.playersTransformationsMap,
54
+ v.run.playersTransformationsMap,
53
55
  player,
54
56
  );
55
57
 
@@ -16,15 +16,17 @@ const TRINKETS_THAT_CAN_BREAK = [
16
16
  TrinketType.WALNUT,
17
17
  ] as const;
18
18
 
19
+ const v = {
20
+ run: {
21
+ // We cannot use a nested `DefaultMap` here.
22
+ playersTrinketMap: new DefaultMap<PlayerIndex, Map<TrinketType, int>>(
23
+ () => new Map(),
24
+ ),
25
+ },
26
+ };
27
+
19
28
  export class PostTrinketBreak extends CustomCallback<ModCallbackCustom.POST_TRINKET_BREAK> {
20
- public override v = {
21
- run: {
22
- // We cannot use a nested `DefaultMap` here.
23
- playersTrinketMap: new DefaultMap<PlayerIndex, Map<TrinketType, int>>(
24
- () => new Map(),
25
- ),
26
- },
27
- };
29
+ public override v = v;
28
30
 
29
31
  constructor() {
30
32
  super();
@@ -48,10 +50,7 @@ export class PostTrinketBreak extends CustomCallback<ModCallbackCustom.POST_TRIN
48
50
  _source: EntityRef,
49
51
  _countdownFrames: int,
50
52
  ): boolean | undefined => {
51
- const trinketMap = defaultMapGetPlayer(
52
- this.v.run.playersTrinketMap,
53
- player,
54
- );
53
+ const trinketMap = defaultMapGetPlayer(v.run.playersTrinketMap, player);
55
54
 
56
55
  for (const trinketType of TRINKETS_THAT_CAN_BREAK) {
57
56
  const numTrinketsHeld = player.GetTrinketMultiplier(trinketType);
@@ -86,10 +85,7 @@ export class PostTrinketBreak extends CustomCallback<ModCallbackCustom.POST_TRIN
86
85
  // ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED
87
86
  private postPEffectUpdateReordered = (player: EntityPlayer) => {
88
87
  // On every frame, keep track of how many trinkets we have.
89
- const trinketMap = defaultMapGetPlayer(
90
- this.v.run.playersTrinketMap,
91
- player,
92
- );
88
+ const trinketMap = defaultMapGetPlayer(v.run.playersTrinketMap, player);
93
89
 
94
90
  for (const trinketType of TRINKETS_THAT_CAN_BREAK) {
95
91
  const numTrinkets = player.GetTrinketMultiplier(trinketType);
@@ -10,12 +10,14 @@ const TRAVELING_TO_NEXT_FLOOR_ANIMATIONS = new ReadonlySet<string>([
10
10
  "LightTravel",
11
11
  ]);
12
12
 
13
+ const v = {
14
+ run: {
15
+ firedOnStage: null as int | null,
16
+ },
17
+ };
18
+
13
19
  export class PreNewLevel extends CustomCallback<ModCallbackCustom.PRE_NEW_LEVEL> {
14
- public override v = {
15
- run: {
16
- firedOnStage: null as int | null,
17
- },
18
- };
20
+ public override v = v;
19
21
 
20
22
  constructor() {
21
23
  super();
@@ -29,7 +31,7 @@ export class PreNewLevel extends CustomCallback<ModCallbackCustom.PRE_NEW_LEVEL>
29
31
  // ModCallback.POST_PLAYER_RENDER (32)
30
32
  private postPlayerRender = (player: EntityPlayer) => {
31
33
  const effectiveStage = getEffectiveStage();
32
- if (effectiveStage === this.v.run.firedOnStage) {
34
+ if (effectiveStage === v.run.firedOnStage) {
33
35
  return;
34
36
  }
35
37
 
@@ -45,7 +47,7 @@ export class PreNewLevel extends CustomCallback<ModCallbackCustom.PRE_NEW_LEVEL>
45
47
  const frame = sprite.GetFrame();
46
48
  const finalFrame = getLastFrameOfAnimation(sprite);
47
49
  if (frame === finalFrame) {
48
- this.v.run.firedOnStage = effectiveStage;
50
+ v.run.firedOnStage = effectiveStage;
49
51
  this.fire(player);
50
52
  }
51
53
  };