isaacscript-common 17.9.0 → 18.1.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.
package/dist/index.d.ts CHANGED
@@ -3836,6 +3836,9 @@ export declare type FunctionTuple = [name: string, func: AnyFunction];
3836
3836
  */
3837
3837
  export declare const game: Game;
3838
3838
 
3839
+ /** Game frames are what is returned by the `Game.GetFrameCount` method. */
3840
+ export declare const GAME_FRAMES_PER_MINUTE: number;
3841
+
3839
3842
  /** Game frames are what is returned by the `Game.GetFrameCount` method. */
3840
3843
  export declare const GAME_FRAMES_PER_SECOND = 30;
3841
3844
 
@@ -11283,16 +11286,6 @@ export declare function newChargeBarSprites(maxCharges: int): ChargeBarSprites;
11283
11286
  */
11284
11287
  export declare function newCollectibleSprite(collectibleType: CollectibleType): Sprite;
11285
11288
 
11286
- /**
11287
- * Helper function for creating objects that represent a mapping of an enum value to some other
11288
- * value in a type-safe way.
11289
- *
11290
- * This function will ensure that the provided object has a key for each value in the enum.
11291
- *
11292
- * After the `satisfies` operator is released in TypeScript 4.9, this function should be deleted.
11293
- */
11294
- export declare function newObjectWithEnumKeys<Enum extends number | string, T extends Record<Enum, unknown>>(theEnum: Record<string, Enum>, obj: T): T;
11295
-
11296
11289
  export declare function newPickingUpItem(): PickingUpItem;
11297
11290
 
11298
11291
  /** Returns a `PlayerHealth` object with all zeros. */
@@ -12677,6 +12670,9 @@ export declare function removeTrinketCostume(player: EntityPlayer, trinketType:
12677
12670
  */
12678
12671
  export declare function removeUrnRewards(gridEntity: GridEntity): void;
12679
12672
 
12673
+ /** Render frames are what is returned by the `Isaac.GetFrameCount` method. */
12674
+ export declare const RENDER_FRAMES_PER_MINUTE: number;
12675
+
12680
12676
  /** Render frames are what is returned by the `Isaac.GetFrameCount` method. */
12681
12677
  export declare const RENDER_FRAMES_PER_SECOND = 60;
12682
12678
 
@@ -1,6 +1,6 @@
1
1
  --[[
2
2
 
3
- isaacscript-common 17.9.0
3
+ isaacscript-common 18.1.0
4
4
 
5
5
  This is the "isaacscript-common" library, which was created with the IsaacScript tool.
6
6
 
@@ -15351,9 +15351,6 @@ end
15351
15351
  function ____exports.isVanillaConsoleCommand(self, commandName)
15352
15352
  return CONSOLE_COMMANDS_SET:has(commandName)
15353
15353
  end
15354
- function ____exports.newObjectWithEnumKeys(self, theEnum, obj)
15355
- return obj
15356
- end
15357
15354
  function ____exports.printConsole(self, msg)
15358
15355
  Isaac.ConsoleOutput(msg .. "\n")
15359
15356
  end
@@ -16926,8 +16923,10 @@ ____exports.EGGY_STATE_FRAME_OF_FINAL_SPIDER = 45
16926
16923
  ____exports.EMPTY_PNG_PATH = "gfx/none.png"
16927
16924
  ____exports.FIRST_GLITCHED_COLLECTIBLE_TYPE = asCollectibleType(nil, (1 << 32) - 1)
16928
16925
  ____exports.GAME_FRAMES_PER_SECOND = 30
16926
+ ____exports.GAME_FRAMES_PER_MINUTE = ____exports.GAME_FRAMES_PER_SECOND * 60
16929
16927
  ____exports.ITEM_CONFIG_CARD_TYPES_FOR_CARDS = __TS__New(Set, {ItemConfigCardType.TAROT, ItemConfigCardType.SUIT, ItemConfigCardType.SPECIAL, ItemConfigCardType.TAROT_REVERSE})
16930
16928
  ____exports.RENDER_FRAMES_PER_SECOND = 60
16929
+ ____exports.RENDER_FRAMES_PER_MINUTE = ____exports.RENDER_FRAMES_PER_SECOND * 60
16931
16930
  ____exports.GRID_INDEX_CENTER_OF_1X1_ROOM = 67
16932
16931
  ____exports.LEVEL_GRID_COLUMN_HEIGHT = 13
16933
16932
  ____exports.LEVEL_GRID_ROW_WIDTH = 13
@@ -30890,6 +30889,10 @@ do
30890
30889
  local PreNPCUpdateFilter = ____PreNPCUpdateFilter.PreNPCUpdateFilter
30891
30890
  ____exports.PreNPCUpdateFilter = PreNPCUpdateFilter
30892
30891
  end
30892
+ return ____exports
30893
+ end,
30894
+ ["src.types.AnyClass"] = function(...)
30895
+ local ____exports = {}
30893
30896
  return ____exports
30894
30897
  end,
30895
30898
  ["src.callbacks"] = function(...)
@@ -30901,9 +30904,7 @@ local ____ModCallbackCustom = require("src.enums.ModCallbackCustom")
30901
30904
  local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
30902
30905
  local ____enums = require("src.functions.enums")
30903
30906
  local getEnumValues = ____enums.getEnumValues
30904
- local ____utils = require("src.functions.utils")
30905
- local newObjectWithEnumKeys = ____utils.newObjectWithEnumKeys
30906
- local MOD_CALLBACK_CUSTOM_TO_CLASS = newObjectWithEnumKeys(nil, ModCallbackCustom, {
30907
+ local MOD_CALLBACK_CUSTOM_TO_CLASS = {
30907
30908
  [ModCallbackCustom.ENTITY_TAKE_DMG_FILTER] = cc.EntityTakeDmgFilter,
30908
30909
  [ModCallbackCustom.POST_AMBUSH_FINISHED] = cc.PostAmbushFinished,
30909
30910
  [ModCallbackCustom.POST_AMBUSH_STARTED] = cc.PostAmbushStarted,
@@ -31004,7 +31005,7 @@ local MOD_CALLBACK_CUSTOM_TO_CLASS = newObjectWithEnumKeys(nil, ModCallbackCusto
31004
31005
  [ModCallbackCustom.PRE_NEW_LEVEL] = cc.PreNewLevel,
31005
31006
  [ModCallbackCustom.PRE_NPC_COLLISION_FILTER] = cc.PreNPCCollisionFilter,
31006
31007
  [ModCallbackCustom.PRE_NPC_UPDATE_FILTER] = cc.PreNPCUpdateFilter
31007
- })
31008
+ }
31008
31009
  function ____exports.getCallbacks(self)
31009
31010
  local instantiatedClasses = {}
31010
31011
  for ____, modCallbackCustom in ipairs(getEnumValues(nil, ModCallbackCustom)) do
@@ -34540,10 +34541,6 @@ return ____exports
34540
34541
  ["src.classes.features.other.saveDataManager.constants"] = function(...)
34541
34542
  local ____exports = {}
34542
34543
  ____exports.SAVE_DATA_MANAGER_DEBUG = false
34543
- return ____exports
34544
- end,
34545
- ["src.types.AnyClass"] = function(...)
34546
- local ____exports = {}
34547
34544
  return ____exports
34548
34545
  end,
34549
34546
  ["src.objects.isaacAPIClassTypeToBrand"] = function(...)
@@ -48716,7 +48713,6 @@ local ISCFeature = ____ISCFeature.ISCFeature
48716
48713
  local ____ModCallbackCustom = require("src.enums.ModCallbackCustom")
48717
48714
  local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
48718
48715
  local ____utils = require("src.functions.utils")
48719
- local newObjectWithEnumKeys = ____utils.newObjectWithEnumKeys
48720
48716
  local validateInterfaceMatchesEnum = ____utils.validateInterfaceMatchesEnum
48721
48717
  validateInterfaceMatchesEnum(nil)
48722
48718
  function ____exports.getFeatures(self, mod, callbacks)
@@ -48756,92 +48752,89 @@ function ____exports.getFeatures(self, mod, callbacks)
48756
48752
  runNextRoom,
48757
48753
  stageHistory
48758
48754
  )
48759
- return newObjectWithEnumKeys(
48760
- nil,
48761
- ISCFeature,
48762
- {
48763
- [ISCFeature.CUSTOM_REVIVE] = __TS__New(CustomRevive, callbacks[ModCallbackCustom.PRE_CUSTOM_REVIVE], callbacks[ModCallbackCustom.POST_CUSTOM_REVIVE], runInNFrames),
48764
- [ISCFeature.ESAU_JR_DETECTION] = __TS__New(EsauJrDetection, callbacks[ModCallbackCustom.POST_ESAU_JR], callbacks[ModCallbackCustom.POST_FIRST_ESAU_JR]),
48765
- [ISCFeature.FLIP_DETECTION] = __TS__New(FlipDetection, callbacks[ModCallbackCustom.POST_FLIP], callbacks[ModCallbackCustom.POST_FIRST_FLIP]),
48766
- [ISCFeature.GRID_ENTITY_COLLISION_DETECTION] = __TS__New(GridEntityCollisionDetection, callbacks[ModCallbackCustom.POST_GRID_ENTITY_COLLISION], callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_COLLISION], customGridEntities),
48767
- [ISCFeature.GRID_ENTITY_UPDATE_DETECTION] = __TS__New(
48768
- GridEntityUpdateDetection,
48769
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_INIT],
48770
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_INIT],
48771
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_UPDATE],
48772
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE],
48773
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_REMOVE],
48774
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_REMOVE],
48775
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_STATE_CHANGED],
48776
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_STATE_CHANGED],
48777
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_BROKEN],
48778
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_BROKEN],
48779
- customGridEntities
48780
- ),
48781
- [ISCFeature.GRID_ENTITY_RENDER_DETECTION] = __TS__New(GridEntityRenderDetection, callbacks[ModCallbackCustom.POST_GRID_ENTITY_RENDER], callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER], customGridEntities),
48782
- [ISCFeature.GAME_REORDERED_CALLBACKS] = gameReorderedCallbacks,
48783
- [ISCFeature.ITEM_PICKUP_DETECTION] = __TS__New(ItemPickupDetection, callbacks[ModCallbackCustom.POST_ITEM_PICKUP], callbacks[ModCallbackCustom.PRE_ITEM_PICKUP]),
48784
- [ISCFeature.PLAYER_COLLECTIBLE_DETECTION] = __TS__New(
48785
- PlayerCollectibleDetection,
48786
- callbacks[ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED],
48787
- callbacks[ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED],
48788
- moddedElementSets,
48789
- runInNFrames
48790
- ),
48791
- [ISCFeature.PLAYER_REORDERED_CALLBACKS] = __TS__New(PlayerReorderedCallbacks, callbacks[ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED], callbacks[ModCallbackCustom.POST_PLAYER_RENDER_REORDERED], callbacks[ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED]),
48792
- [ISCFeature.SLOT_RENDER_DETECTION] = __TS__New(SlotRenderDetection, callbacks[ModCallbackCustom.POST_SLOT_RENDER], callbacks[ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED]),
48793
- [ISCFeature.SLOT_UPDATE_DETECTION] = __TS__New(SlotUpdateDetection, callbacks[ModCallbackCustom.POST_SLOT_INIT], callbacks[ModCallbackCustom.POST_SLOT_UPDATE]),
48794
- [ISCFeature.CHARACTER_HEALTH_CONVERSION] = __TS__New(CharacterHealthConversion),
48795
- [ISCFeature.CHARACTER_STATS] = __TS__New(CharacterStats),
48796
- [ISCFeature.COLLECTIBLE_ITEM_POOL_TYPE] = __TS__New(CollectibleItemPoolType, pickupIndexCreation),
48797
- [ISCFeature.CUSTOM_GRID_ENTITIES] = customGridEntities,
48798
- [ISCFeature.CUSTOM_ITEM_POOLS] = __TS__New(CustomItemPools),
48799
- [ISCFeature.CUSTOM_HOTKEYS] = __TS__New(CustomHotkeys),
48800
- [ISCFeature.CUSTOM_PICKUPS] = __TS__New(CustomPickups),
48801
- [ISCFeature.CUSTOM_STAGES] = __TS__New(
48802
- CustomStages,
48803
- customGridEntities,
48804
- customTrapdoors,
48805
- disableAllSound,
48806
- gameReorderedCallbacks,
48807
- pause,
48808
- runInNFrames
48809
- ),
48810
- [ISCFeature.CUSTOM_TRAPDOORS] = customTrapdoors,
48811
- [ISCFeature.DEBUG_DISPLAY] = __TS__New(DebugDisplay, mod),
48812
- [ISCFeature.DEPLOY_JSON_ROOM] = __TS__New(DeployJSONRoom, preventGridEntityRespawn, spawnCollectible),
48813
- [ISCFeature.DISABLE_ALL_SOUND] = disableAllSound,
48814
- [ISCFeature.DISABLE_INPUTS] = disableInputs,
48815
- [ISCFeature.FADE_IN_REMOVER] = __TS__New(FadeInRemover),
48816
- [ISCFeature.FAST_RESET] = __TS__New(FastReset),
48817
- [ISCFeature.FLYING_DETECTION] = __TS__New(FlyingDetection, moddedElementSets),
48818
- [ISCFeature.FORGOTTEN_SWITCH] = __TS__New(ForgottenSwitch, pressInput),
48819
- [ISCFeature.EXTRA_CONSOLE_COMMANDS] = __TS__New(ExtraConsoleCommands),
48820
- [ISCFeature.ITEM_POOL_DETECTION] = itemPoolDetection,
48821
- [ISCFeature.MODDED_ELEMENT_DETECTION] = moddedElementDetection,
48822
- [ISCFeature.MODDED_ELEMENT_SETS] = moddedElementSets,
48823
- [ISCFeature.NO_SIREN_STEAL] = __TS__New(NoSirenSteal),
48824
- [ISCFeature.PAUSE] = pause,
48825
- [ISCFeature.PERSISTENT_ENTITIES] = __TS__New(PersistentEntities, roomHistory),
48826
- [ISCFeature.PICKUP_INDEX_CREATION] = pickupIndexCreation,
48827
- [ISCFeature.PLAYER_INVENTORY] = __TS__New(PlayerInventory),
48828
- [ISCFeature.PONY_DETECTION] = ponyDetection,
48829
- [ISCFeature.PRESS_INPUT] = pressInput,
48830
- [ISCFeature.PREVENT_CHILD_ENTITIES] = __TS__New(PreventChildEntities),
48831
- [ISCFeature.PREVENT_COLLECTIBLE_ROTATION] = preventCollectibleRotation,
48832
- [ISCFeature.PREVENT_GRID_ENTITY_RESPAWN] = preventGridEntityRespawn,
48833
- [ISCFeature.ROOM_CLEAR_FRAME] = roomClearFrame,
48834
- [ISCFeature.ROOM_HISTORY] = roomHistory,
48835
- [ISCFeature.RUN_IN_N_FRAMES] = runInNFrames,
48836
- [ISCFeature.RUN_NEXT_ROOM] = runNextRoom,
48837
- [ISCFeature.SAVE_DATA_MANAGER] = saveDataManager,
48838
- [ISCFeature.SPAWN_ALT_ROCK_REWARDS] = __TS__New(SpawnRockAltRewards, itemPoolDetection),
48839
- [ISCFeature.SPAWN_COLLECTIBLE] = spawnCollectible,
48840
- [ISCFeature.STAGE_HISTORY] = stageHistory,
48841
- [ISCFeature.START_AMBUSH] = __TS__New(StartAmbush, runInNFrames),
48842
- [ISCFeature.TAINTED_LAZARUS_PLAYERS] = __TS__New(TaintedLazarusPlayers)
48843
- }
48844
- )
48755
+ local features = {
48756
+ [ISCFeature.CUSTOM_REVIVE] = __TS__New(CustomRevive, callbacks[ModCallbackCustom.PRE_CUSTOM_REVIVE], callbacks[ModCallbackCustom.POST_CUSTOM_REVIVE], runInNFrames),
48757
+ [ISCFeature.ESAU_JR_DETECTION] = __TS__New(EsauJrDetection, callbacks[ModCallbackCustom.POST_ESAU_JR], callbacks[ModCallbackCustom.POST_FIRST_ESAU_JR]),
48758
+ [ISCFeature.FLIP_DETECTION] = __TS__New(FlipDetection, callbacks[ModCallbackCustom.POST_FLIP], callbacks[ModCallbackCustom.POST_FIRST_FLIP]),
48759
+ [ISCFeature.GRID_ENTITY_COLLISION_DETECTION] = __TS__New(GridEntityCollisionDetection, callbacks[ModCallbackCustom.POST_GRID_ENTITY_COLLISION], callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_COLLISION], customGridEntities),
48760
+ [ISCFeature.GRID_ENTITY_UPDATE_DETECTION] = __TS__New(
48761
+ GridEntityUpdateDetection,
48762
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_INIT],
48763
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_INIT],
48764
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_UPDATE],
48765
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE],
48766
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_REMOVE],
48767
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_REMOVE],
48768
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_STATE_CHANGED],
48769
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_STATE_CHANGED],
48770
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_BROKEN],
48771
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_BROKEN],
48772
+ customGridEntities
48773
+ ),
48774
+ [ISCFeature.GRID_ENTITY_RENDER_DETECTION] = __TS__New(GridEntityRenderDetection, callbacks[ModCallbackCustom.POST_GRID_ENTITY_RENDER], callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER], customGridEntities),
48775
+ [ISCFeature.GAME_REORDERED_CALLBACKS] = gameReorderedCallbacks,
48776
+ [ISCFeature.ITEM_PICKUP_DETECTION] = __TS__New(ItemPickupDetection, callbacks[ModCallbackCustom.POST_ITEM_PICKUP], callbacks[ModCallbackCustom.PRE_ITEM_PICKUP]),
48777
+ [ISCFeature.PLAYER_COLLECTIBLE_DETECTION] = __TS__New(
48778
+ PlayerCollectibleDetection,
48779
+ callbacks[ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED],
48780
+ callbacks[ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED],
48781
+ moddedElementSets,
48782
+ runInNFrames
48783
+ ),
48784
+ [ISCFeature.PLAYER_REORDERED_CALLBACKS] = __TS__New(PlayerReorderedCallbacks, callbacks[ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED], callbacks[ModCallbackCustom.POST_PLAYER_RENDER_REORDERED], callbacks[ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED]),
48785
+ [ISCFeature.SLOT_RENDER_DETECTION] = __TS__New(SlotRenderDetection, callbacks[ModCallbackCustom.POST_SLOT_RENDER], callbacks[ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED]),
48786
+ [ISCFeature.SLOT_UPDATE_DETECTION] = __TS__New(SlotUpdateDetection, callbacks[ModCallbackCustom.POST_SLOT_INIT], callbacks[ModCallbackCustom.POST_SLOT_UPDATE]),
48787
+ [ISCFeature.CHARACTER_HEALTH_CONVERSION] = __TS__New(CharacterHealthConversion),
48788
+ [ISCFeature.CHARACTER_STATS] = __TS__New(CharacterStats),
48789
+ [ISCFeature.COLLECTIBLE_ITEM_POOL_TYPE] = __TS__New(CollectibleItemPoolType, pickupIndexCreation),
48790
+ [ISCFeature.CUSTOM_GRID_ENTITIES] = customGridEntities,
48791
+ [ISCFeature.CUSTOM_ITEM_POOLS] = __TS__New(CustomItemPools),
48792
+ [ISCFeature.CUSTOM_HOTKEYS] = __TS__New(CustomHotkeys),
48793
+ [ISCFeature.CUSTOM_PICKUPS] = __TS__New(CustomPickups),
48794
+ [ISCFeature.CUSTOM_STAGES] = __TS__New(
48795
+ CustomStages,
48796
+ customGridEntities,
48797
+ customTrapdoors,
48798
+ disableAllSound,
48799
+ gameReorderedCallbacks,
48800
+ pause,
48801
+ runInNFrames
48802
+ ),
48803
+ [ISCFeature.CUSTOM_TRAPDOORS] = customTrapdoors,
48804
+ [ISCFeature.DEBUG_DISPLAY] = __TS__New(DebugDisplay, mod),
48805
+ [ISCFeature.DEPLOY_JSON_ROOM] = __TS__New(DeployJSONRoom, preventGridEntityRespawn, spawnCollectible),
48806
+ [ISCFeature.DISABLE_ALL_SOUND] = disableAllSound,
48807
+ [ISCFeature.DISABLE_INPUTS] = disableInputs,
48808
+ [ISCFeature.FADE_IN_REMOVER] = __TS__New(FadeInRemover),
48809
+ [ISCFeature.FAST_RESET] = __TS__New(FastReset),
48810
+ [ISCFeature.FLYING_DETECTION] = __TS__New(FlyingDetection, moddedElementSets),
48811
+ [ISCFeature.FORGOTTEN_SWITCH] = __TS__New(ForgottenSwitch, pressInput),
48812
+ [ISCFeature.EXTRA_CONSOLE_COMMANDS] = __TS__New(ExtraConsoleCommands),
48813
+ [ISCFeature.ITEM_POOL_DETECTION] = itemPoolDetection,
48814
+ [ISCFeature.MODDED_ELEMENT_DETECTION] = moddedElementDetection,
48815
+ [ISCFeature.MODDED_ELEMENT_SETS] = moddedElementSets,
48816
+ [ISCFeature.NO_SIREN_STEAL] = __TS__New(NoSirenSteal),
48817
+ [ISCFeature.PAUSE] = pause,
48818
+ [ISCFeature.PERSISTENT_ENTITIES] = __TS__New(PersistentEntities, roomHistory),
48819
+ [ISCFeature.PICKUP_INDEX_CREATION] = pickupIndexCreation,
48820
+ [ISCFeature.PLAYER_INVENTORY] = __TS__New(PlayerInventory),
48821
+ [ISCFeature.PONY_DETECTION] = ponyDetection,
48822
+ [ISCFeature.PRESS_INPUT] = pressInput,
48823
+ [ISCFeature.PREVENT_CHILD_ENTITIES] = __TS__New(PreventChildEntities),
48824
+ [ISCFeature.PREVENT_COLLECTIBLE_ROTATION] = preventCollectibleRotation,
48825
+ [ISCFeature.PREVENT_GRID_ENTITY_RESPAWN] = preventGridEntityRespawn,
48826
+ [ISCFeature.ROOM_CLEAR_FRAME] = roomClearFrame,
48827
+ [ISCFeature.ROOM_HISTORY] = roomHistory,
48828
+ [ISCFeature.RUN_IN_N_FRAMES] = runInNFrames,
48829
+ [ISCFeature.RUN_NEXT_ROOM] = runNextRoom,
48830
+ [ISCFeature.SAVE_DATA_MANAGER] = saveDataManager,
48831
+ [ISCFeature.SPAWN_ALT_ROCK_REWARDS] = __TS__New(SpawnRockAltRewards, itemPoolDetection),
48832
+ [ISCFeature.SPAWN_COLLECTIBLE] = spawnCollectible,
48833
+ [ISCFeature.STAGE_HISTORY] = stageHistory,
48834
+ [ISCFeature.START_AMBUSH] = __TS__New(StartAmbush, runInNFrames),
48835
+ [ISCFeature.TAINTED_LAZARUS_PLAYERS] = __TS__New(TaintedLazarusPlayers)
48836
+ }
48837
+ return features
48845
48838
  end
48846
48839
  return ____exports
48847
48840
  end,
@@ -102,7 +102,7 @@ declare const MOD_CALLBACK_CUSTOM_TO_CLASS: {
102
102
  readonly 99: typeof cc.PreNPCUpdateFilter;
103
103
  };
104
104
  export type ModCallbackCustomToClass = {
105
- readonly [Key in keyof typeof MOD_CALLBACK_CUSTOM_TO_CLASS]: InstanceType<typeof MOD_CALLBACK_CUSTOM_TO_CLASS[Key]>;
105
+ readonly [Key in keyof typeof MOD_CALLBACK_CUSTOM_TO_CLASS]: InstanceType<(typeof MOD_CALLBACK_CUSTOM_TO_CLASS)[Key]>;
106
106
  };
107
107
  export declare function getCallbacks(): ModCallbackCustomToClass;
108
108
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"callbacks.d.ts","sourceRoot":"","sources":["../../src/callbacks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAKxC,QAAA,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkHvB,CAAC;AAEZ,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,GAAG,IAAI,MAAM,OAAO,4BAA4B,GAAG,YAAY,CACvE,OAAO,4BAA4B,CAAC,GAAG,CAAC,CACzC;CACF,CAAC;AAEF,wBAAgB,YAAY,IAAI,wBAAwB,CASvD"}
1
+ {"version":3,"file":"callbacks.d.ts","sourceRoot":"","sources":["../../src/callbacks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAMxC,QAAA,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkH8B,CAAC;AAEjE,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,GAAG,IAAI,MAAM,OAAO,4BAA4B,GAAG,YAAY,CACvE,CAAC,OAAO,4BAA4B,CAAC,CAAC,GAAG,CAAC,CAC3C;CACF,CAAC;AAEF,wBAAgB,YAAY,IAAI,wBAAwB,CASvD"}
@@ -6,9 +6,7 @@ local ____ModCallbackCustom = require("src.enums.ModCallbackCustom")
6
6
  local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
7
7
  local ____enums = require("src.functions.enums")
8
8
  local getEnumValues = ____enums.getEnumValues
9
- local ____utils = require("src.functions.utils")
10
- local newObjectWithEnumKeys = ____utils.newObjectWithEnumKeys
11
- local MOD_CALLBACK_CUSTOM_TO_CLASS = newObjectWithEnumKeys(nil, ModCallbackCustom, {
9
+ local MOD_CALLBACK_CUSTOM_TO_CLASS = {
12
10
  [ModCallbackCustom.ENTITY_TAKE_DMG_FILTER] = cc.EntityTakeDmgFilter,
13
11
  [ModCallbackCustom.POST_AMBUSH_FINISHED] = cc.PostAmbushFinished,
14
12
  [ModCallbackCustom.POST_AMBUSH_STARTED] = cc.PostAmbushStarted,
@@ -109,7 +107,7 @@ local MOD_CALLBACK_CUSTOM_TO_CLASS = newObjectWithEnumKeys(nil, ModCallbackCusto
109
107
  [ModCallbackCustom.PRE_NEW_LEVEL] = cc.PreNewLevel,
110
108
  [ModCallbackCustom.PRE_NPC_COLLISION_FILTER] = cc.PreNPCCollisionFilter,
111
109
  [ModCallbackCustom.PRE_NPC_UPDATE_FILTER] = cc.PreNPCUpdateFilter
112
- })
110
+ }
113
111
  function ____exports.getCallbacks(self)
114
112
  local instantiatedClasses = {}
115
113
  for ____, modCallbackCustom in ipairs(getEnumValues(nil, ModCallbackCustom)) do
@@ -50,10 +50,14 @@ export declare const EMPTY_PNG_PATH = "gfx/none.png";
50
50
  export declare const FIRST_GLITCHED_COLLECTIBLE_TYPE: import("isaac-typescript-definitions").CollectibleType;
51
51
  /** Game frames are what is returned by the `Game.GetFrameCount` method. */
52
52
  export declare const GAME_FRAMES_PER_SECOND = 30;
53
+ /** Game frames are what is returned by the `Game.GetFrameCount` method. */
54
+ export declare const GAME_FRAMES_PER_MINUTE: number;
53
55
  /** The set of all `ItemConfigCardType` values that are not a rune or special object. */
54
56
  export declare const ITEM_CONFIG_CARD_TYPES_FOR_CARDS: Set<ItemConfigCardType>;
55
57
  /** Render frames are what is returned by the `Isaac.GetFrameCount` method. */
56
58
  export declare const RENDER_FRAMES_PER_SECOND = 60;
59
+ /** Render frames are what is returned by the `Isaac.GetFrameCount` method. */
60
+ export declare const RENDER_FRAMES_PER_MINUTE: number;
57
61
  export declare const GRID_INDEX_CENTER_OF_1X1_ROOM = 67;
58
62
  /**
59
63
  * The floor is represented by a 13x13 grid. Room indexes start at 0. The first column is
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAClB,YAAY,EAEb,MAAM,8BAA8B,CAAC;AAMtC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;;;EAI7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iCAAiC,SAAS,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,4CAA4C,CAAC;AAE7E,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,iGAAiG;AACjG,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAE5D,gGAAgG;AAChG,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C;;;;;;GAMG;AAEH,eAAO,MAAM,+BAA+B,wDAAmC,CAAC;AAEhF,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,wFAAwF;AACxF,eAAO,MAAM,gCAAgC,yBAK3C,CAAC;AAEH,8EAA8E;AAC9E,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,6DAA6D;AAC7D,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,iFAAiF;AACjF,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,eAAO,MAAM,wBAAwB,QAA6B,CAAC;AAEnE,yFAAyF;AACzF,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,cAAc,IAAM,CAAC;AAElC,yCAAyC;AACzC,eAAO,MAAM,uCAAuC,QAAmB,CAAC;AAExE,iCAAiC;AACjC,eAAO,MAAM,sCAAsC,QAAmB,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,gCAAgC,QAAmB,CAAC;AAEjE,+EAA+E;AAC/E,eAAO,MAAM,iCAAiC,SAAS,CAAC;AAExD,eAAO,MAAM,cAAc,QAA+B,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAyB,CAAC;AAExD,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,sBAAsB,QAA8B,CAAC;AAElE,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,6FAA6F;AAC7F,eAAO,MAAM,gDAAgD,QAAQ,CAAC;AAEtE,4CAA4C;AAC5C,eAAO,MAAM,8BAA8B,QAA4B,CAAC;AAExE;;;GAGG;AACH,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAgB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAgB,CAAC;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAkB,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAsB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"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"}
@@ -51,10 +51,14 @@ ____exports.EMPTY_PNG_PATH = "gfx/none.png"
51
51
  ____exports.FIRST_GLITCHED_COLLECTIBLE_TYPE = asCollectibleType(nil, (1 << 32) - 1)
52
52
  --- Game frames are what is returned by the `Game.GetFrameCount` method.
53
53
  ____exports.GAME_FRAMES_PER_SECOND = 30
54
+ --- Game frames are what is returned by the `Game.GetFrameCount` method.
55
+ ____exports.GAME_FRAMES_PER_MINUTE = ____exports.GAME_FRAMES_PER_SECOND * 60
54
56
  --- The set of all `ItemConfigCardType` values that are not a rune or special object.
55
57
  ____exports.ITEM_CONFIG_CARD_TYPES_FOR_CARDS = __TS__New(Set, {ItemConfigCardType.TAROT, ItemConfigCardType.SUIT, ItemConfigCardType.SPECIAL, ItemConfigCardType.TAROT_REVERSE})
56
58
  --- Render frames are what is returned by the `Isaac.GetFrameCount` method.
57
59
  ____exports.RENDER_FRAMES_PER_SECOND = 60
60
+ --- Render frames are what is returned by the `Isaac.GetFrameCount` method.
61
+ ____exports.RENDER_FRAMES_PER_MINUTE = ____exports.RENDER_FRAMES_PER_SECOND * 60
58
62
  ____exports.GRID_INDEX_CENTER_OF_1X1_ROOM = 67
59
63
  --- The floor is represented by a 13x13 grid. Room indexes start at 0. The first column is
60
64
  -- represented by grid indexes 0, 13, 26, and so on.
@@ -1 +1 @@
1
- {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/features.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/features.ts"],"names":[],"mappings":"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"}
@@ -112,7 +112,6 @@ local ISCFeature = ____ISCFeature.ISCFeature
112
112
  local ____ModCallbackCustom = require("src.enums.ModCallbackCustom")
113
113
  local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
114
114
  local ____utils = require("src.functions.utils")
115
- local newObjectWithEnumKeys = ____utils.newObjectWithEnumKeys
116
115
  local validateInterfaceMatchesEnum = ____utils.validateInterfaceMatchesEnum
117
116
  validateInterfaceMatchesEnum(nil)
118
117
  function ____exports.getFeatures(self, mod, callbacks)
@@ -152,91 +151,88 @@ function ____exports.getFeatures(self, mod, callbacks)
152
151
  runNextRoom,
153
152
  stageHistory
154
153
  )
155
- return newObjectWithEnumKeys(
156
- nil,
157
- ISCFeature,
158
- {
159
- [ISCFeature.CUSTOM_REVIVE] = __TS__New(CustomRevive, callbacks[ModCallbackCustom.PRE_CUSTOM_REVIVE], callbacks[ModCallbackCustom.POST_CUSTOM_REVIVE], runInNFrames),
160
- [ISCFeature.ESAU_JR_DETECTION] = __TS__New(EsauJrDetection, callbacks[ModCallbackCustom.POST_ESAU_JR], callbacks[ModCallbackCustom.POST_FIRST_ESAU_JR]),
161
- [ISCFeature.FLIP_DETECTION] = __TS__New(FlipDetection, callbacks[ModCallbackCustom.POST_FLIP], callbacks[ModCallbackCustom.POST_FIRST_FLIP]),
162
- [ISCFeature.GRID_ENTITY_COLLISION_DETECTION] = __TS__New(GridEntityCollisionDetection, callbacks[ModCallbackCustom.POST_GRID_ENTITY_COLLISION], callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_COLLISION], customGridEntities),
163
- [ISCFeature.GRID_ENTITY_UPDATE_DETECTION] = __TS__New(
164
- GridEntityUpdateDetection,
165
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_INIT],
166
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_INIT],
167
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_UPDATE],
168
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE],
169
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_REMOVE],
170
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_REMOVE],
171
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_STATE_CHANGED],
172
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_STATE_CHANGED],
173
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_BROKEN],
174
- callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_BROKEN],
175
- customGridEntities
176
- ),
177
- [ISCFeature.GRID_ENTITY_RENDER_DETECTION] = __TS__New(GridEntityRenderDetection, callbacks[ModCallbackCustom.POST_GRID_ENTITY_RENDER], callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER], customGridEntities),
178
- [ISCFeature.GAME_REORDERED_CALLBACKS] = gameReorderedCallbacks,
179
- [ISCFeature.ITEM_PICKUP_DETECTION] = __TS__New(ItemPickupDetection, callbacks[ModCallbackCustom.POST_ITEM_PICKUP], callbacks[ModCallbackCustom.PRE_ITEM_PICKUP]),
180
- [ISCFeature.PLAYER_COLLECTIBLE_DETECTION] = __TS__New(
181
- PlayerCollectibleDetection,
182
- callbacks[ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED],
183
- callbacks[ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED],
184
- moddedElementSets,
185
- runInNFrames
186
- ),
187
- [ISCFeature.PLAYER_REORDERED_CALLBACKS] = __TS__New(PlayerReorderedCallbacks, callbacks[ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED], callbacks[ModCallbackCustom.POST_PLAYER_RENDER_REORDERED], callbacks[ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED]),
188
- [ISCFeature.SLOT_RENDER_DETECTION] = __TS__New(SlotRenderDetection, callbacks[ModCallbackCustom.POST_SLOT_RENDER], callbacks[ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED]),
189
- [ISCFeature.SLOT_UPDATE_DETECTION] = __TS__New(SlotUpdateDetection, callbacks[ModCallbackCustom.POST_SLOT_INIT], callbacks[ModCallbackCustom.POST_SLOT_UPDATE]),
190
- [ISCFeature.CHARACTER_HEALTH_CONVERSION] = __TS__New(CharacterHealthConversion),
191
- [ISCFeature.CHARACTER_STATS] = __TS__New(CharacterStats),
192
- [ISCFeature.COLLECTIBLE_ITEM_POOL_TYPE] = __TS__New(CollectibleItemPoolType, pickupIndexCreation),
193
- [ISCFeature.CUSTOM_GRID_ENTITIES] = customGridEntities,
194
- [ISCFeature.CUSTOM_ITEM_POOLS] = __TS__New(CustomItemPools),
195
- [ISCFeature.CUSTOM_HOTKEYS] = __TS__New(CustomHotkeys),
196
- [ISCFeature.CUSTOM_PICKUPS] = __TS__New(CustomPickups),
197
- [ISCFeature.CUSTOM_STAGES] = __TS__New(
198
- CustomStages,
199
- customGridEntities,
200
- customTrapdoors,
201
- disableAllSound,
202
- gameReorderedCallbacks,
203
- pause,
204
- runInNFrames
205
- ),
206
- [ISCFeature.CUSTOM_TRAPDOORS] = customTrapdoors,
207
- [ISCFeature.DEBUG_DISPLAY] = __TS__New(DebugDisplay, mod),
208
- [ISCFeature.DEPLOY_JSON_ROOM] = __TS__New(DeployJSONRoom, preventGridEntityRespawn, spawnCollectible),
209
- [ISCFeature.DISABLE_ALL_SOUND] = disableAllSound,
210
- [ISCFeature.DISABLE_INPUTS] = disableInputs,
211
- [ISCFeature.FADE_IN_REMOVER] = __TS__New(FadeInRemover),
212
- [ISCFeature.FAST_RESET] = __TS__New(FastReset),
213
- [ISCFeature.FLYING_DETECTION] = __TS__New(FlyingDetection, moddedElementSets),
214
- [ISCFeature.FORGOTTEN_SWITCH] = __TS__New(ForgottenSwitch, pressInput),
215
- [ISCFeature.EXTRA_CONSOLE_COMMANDS] = __TS__New(ExtraConsoleCommands),
216
- [ISCFeature.ITEM_POOL_DETECTION] = itemPoolDetection,
217
- [ISCFeature.MODDED_ELEMENT_DETECTION] = moddedElementDetection,
218
- [ISCFeature.MODDED_ELEMENT_SETS] = moddedElementSets,
219
- [ISCFeature.NO_SIREN_STEAL] = __TS__New(NoSirenSteal),
220
- [ISCFeature.PAUSE] = pause,
221
- [ISCFeature.PERSISTENT_ENTITIES] = __TS__New(PersistentEntities, roomHistory),
222
- [ISCFeature.PICKUP_INDEX_CREATION] = pickupIndexCreation,
223
- [ISCFeature.PLAYER_INVENTORY] = __TS__New(PlayerInventory),
224
- [ISCFeature.PONY_DETECTION] = ponyDetection,
225
- [ISCFeature.PRESS_INPUT] = pressInput,
226
- [ISCFeature.PREVENT_CHILD_ENTITIES] = __TS__New(PreventChildEntities),
227
- [ISCFeature.PREVENT_COLLECTIBLE_ROTATION] = preventCollectibleRotation,
228
- [ISCFeature.PREVENT_GRID_ENTITY_RESPAWN] = preventGridEntityRespawn,
229
- [ISCFeature.ROOM_CLEAR_FRAME] = roomClearFrame,
230
- [ISCFeature.ROOM_HISTORY] = roomHistory,
231
- [ISCFeature.RUN_IN_N_FRAMES] = runInNFrames,
232
- [ISCFeature.RUN_NEXT_ROOM] = runNextRoom,
233
- [ISCFeature.SAVE_DATA_MANAGER] = saveDataManager,
234
- [ISCFeature.SPAWN_ALT_ROCK_REWARDS] = __TS__New(SpawnRockAltRewards, itemPoolDetection),
235
- [ISCFeature.SPAWN_COLLECTIBLE] = spawnCollectible,
236
- [ISCFeature.STAGE_HISTORY] = stageHistory,
237
- [ISCFeature.START_AMBUSH] = __TS__New(StartAmbush, runInNFrames),
238
- [ISCFeature.TAINTED_LAZARUS_PLAYERS] = __TS__New(TaintedLazarusPlayers)
239
- }
240
- )
154
+ local features = {
155
+ [ISCFeature.CUSTOM_REVIVE] = __TS__New(CustomRevive, callbacks[ModCallbackCustom.PRE_CUSTOM_REVIVE], callbacks[ModCallbackCustom.POST_CUSTOM_REVIVE], runInNFrames),
156
+ [ISCFeature.ESAU_JR_DETECTION] = __TS__New(EsauJrDetection, callbacks[ModCallbackCustom.POST_ESAU_JR], callbacks[ModCallbackCustom.POST_FIRST_ESAU_JR]),
157
+ [ISCFeature.FLIP_DETECTION] = __TS__New(FlipDetection, callbacks[ModCallbackCustom.POST_FLIP], callbacks[ModCallbackCustom.POST_FIRST_FLIP]),
158
+ [ISCFeature.GRID_ENTITY_COLLISION_DETECTION] = __TS__New(GridEntityCollisionDetection, callbacks[ModCallbackCustom.POST_GRID_ENTITY_COLLISION], callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_COLLISION], customGridEntities),
159
+ [ISCFeature.GRID_ENTITY_UPDATE_DETECTION] = __TS__New(
160
+ GridEntityUpdateDetection,
161
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_INIT],
162
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_INIT],
163
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_UPDATE],
164
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE],
165
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_REMOVE],
166
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_REMOVE],
167
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_STATE_CHANGED],
168
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_STATE_CHANGED],
169
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_BROKEN],
170
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_BROKEN],
171
+ customGridEntities
172
+ ),
173
+ [ISCFeature.GRID_ENTITY_RENDER_DETECTION] = __TS__New(GridEntityRenderDetection, callbacks[ModCallbackCustom.POST_GRID_ENTITY_RENDER], callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER], customGridEntities),
174
+ [ISCFeature.GAME_REORDERED_CALLBACKS] = gameReorderedCallbacks,
175
+ [ISCFeature.ITEM_PICKUP_DETECTION] = __TS__New(ItemPickupDetection, callbacks[ModCallbackCustom.POST_ITEM_PICKUP], callbacks[ModCallbackCustom.PRE_ITEM_PICKUP]),
176
+ [ISCFeature.PLAYER_COLLECTIBLE_DETECTION] = __TS__New(
177
+ PlayerCollectibleDetection,
178
+ callbacks[ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED],
179
+ callbacks[ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED],
180
+ moddedElementSets,
181
+ runInNFrames
182
+ ),
183
+ [ISCFeature.PLAYER_REORDERED_CALLBACKS] = __TS__New(PlayerReorderedCallbacks, callbacks[ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED], callbacks[ModCallbackCustom.POST_PLAYER_RENDER_REORDERED], callbacks[ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED]),
184
+ [ISCFeature.SLOT_RENDER_DETECTION] = __TS__New(SlotRenderDetection, callbacks[ModCallbackCustom.POST_SLOT_RENDER], callbacks[ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED]),
185
+ [ISCFeature.SLOT_UPDATE_DETECTION] = __TS__New(SlotUpdateDetection, callbacks[ModCallbackCustom.POST_SLOT_INIT], callbacks[ModCallbackCustom.POST_SLOT_UPDATE]),
186
+ [ISCFeature.CHARACTER_HEALTH_CONVERSION] = __TS__New(CharacterHealthConversion),
187
+ [ISCFeature.CHARACTER_STATS] = __TS__New(CharacterStats),
188
+ [ISCFeature.COLLECTIBLE_ITEM_POOL_TYPE] = __TS__New(CollectibleItemPoolType, pickupIndexCreation),
189
+ [ISCFeature.CUSTOM_GRID_ENTITIES] = customGridEntities,
190
+ [ISCFeature.CUSTOM_ITEM_POOLS] = __TS__New(CustomItemPools),
191
+ [ISCFeature.CUSTOM_HOTKEYS] = __TS__New(CustomHotkeys),
192
+ [ISCFeature.CUSTOM_PICKUPS] = __TS__New(CustomPickups),
193
+ [ISCFeature.CUSTOM_STAGES] = __TS__New(
194
+ CustomStages,
195
+ customGridEntities,
196
+ customTrapdoors,
197
+ disableAllSound,
198
+ gameReorderedCallbacks,
199
+ pause,
200
+ runInNFrames
201
+ ),
202
+ [ISCFeature.CUSTOM_TRAPDOORS] = customTrapdoors,
203
+ [ISCFeature.DEBUG_DISPLAY] = __TS__New(DebugDisplay, mod),
204
+ [ISCFeature.DEPLOY_JSON_ROOM] = __TS__New(DeployJSONRoom, preventGridEntityRespawn, spawnCollectible),
205
+ [ISCFeature.DISABLE_ALL_SOUND] = disableAllSound,
206
+ [ISCFeature.DISABLE_INPUTS] = disableInputs,
207
+ [ISCFeature.FADE_IN_REMOVER] = __TS__New(FadeInRemover),
208
+ [ISCFeature.FAST_RESET] = __TS__New(FastReset),
209
+ [ISCFeature.FLYING_DETECTION] = __TS__New(FlyingDetection, moddedElementSets),
210
+ [ISCFeature.FORGOTTEN_SWITCH] = __TS__New(ForgottenSwitch, pressInput),
211
+ [ISCFeature.EXTRA_CONSOLE_COMMANDS] = __TS__New(ExtraConsoleCommands),
212
+ [ISCFeature.ITEM_POOL_DETECTION] = itemPoolDetection,
213
+ [ISCFeature.MODDED_ELEMENT_DETECTION] = moddedElementDetection,
214
+ [ISCFeature.MODDED_ELEMENT_SETS] = moddedElementSets,
215
+ [ISCFeature.NO_SIREN_STEAL] = __TS__New(NoSirenSteal),
216
+ [ISCFeature.PAUSE] = pause,
217
+ [ISCFeature.PERSISTENT_ENTITIES] = __TS__New(PersistentEntities, roomHistory),
218
+ [ISCFeature.PICKUP_INDEX_CREATION] = pickupIndexCreation,
219
+ [ISCFeature.PLAYER_INVENTORY] = __TS__New(PlayerInventory),
220
+ [ISCFeature.PONY_DETECTION] = ponyDetection,
221
+ [ISCFeature.PRESS_INPUT] = pressInput,
222
+ [ISCFeature.PREVENT_CHILD_ENTITIES] = __TS__New(PreventChildEntities),
223
+ [ISCFeature.PREVENT_COLLECTIBLE_ROTATION] = preventCollectibleRotation,
224
+ [ISCFeature.PREVENT_GRID_ENTITY_RESPAWN] = preventGridEntityRespawn,
225
+ [ISCFeature.ROOM_CLEAR_FRAME] = roomClearFrame,
226
+ [ISCFeature.ROOM_HISTORY] = roomHistory,
227
+ [ISCFeature.RUN_IN_N_FRAMES] = runInNFrames,
228
+ [ISCFeature.RUN_NEXT_ROOM] = runNextRoom,
229
+ [ISCFeature.SAVE_DATA_MANAGER] = saveDataManager,
230
+ [ISCFeature.SPAWN_ALT_ROCK_REWARDS] = __TS__New(SpawnRockAltRewards, itemPoolDetection),
231
+ [ISCFeature.SPAWN_COLLECTIBLE] = spawnCollectible,
232
+ [ISCFeature.STAGE_HISTORY] = stageHistory,
233
+ [ISCFeature.START_AMBUSH] = __TS__New(StartAmbush, runInNFrames),
234
+ [ISCFeature.TAINTED_LAZARUS_PLAYERS] = __TS__New(TaintedLazarusPlayers)
235
+ }
236
+ return features
241
237
  end
242
238
  return ____exports
@@ -69,15 +69,6 @@ export declare function isReflectionRender(): boolean;
69
69
  * because the `EXECUTE_CMD` callback will not fire for any vanilla commands.
70
70
  */
71
71
  export declare function isVanillaConsoleCommand(commandName: string): boolean;
72
- /**
73
- * Helper function for creating objects that represent a mapping of an enum value to some other
74
- * value in a type-safe way.
75
- *
76
- * This function will ensure that the provided object has a key for each value in the enum.
77
- *
78
- * After the `satisfies` operator is released in TypeScript 4.9, this function should be deleted.
79
- */
80
- export declare function newObjectWithEnumKeys<Enum extends number | string, T extends Record<Enum, unknown>>(theEnum: Record<string, Enum>, obj: T): T;
81
72
  /**
82
73
  * Helper function to print something to the in-game console. Use this instead of invoking the
83
74
  * `Isaac.ConsoleOutput` method directly because it will automatically insert a newline at the end
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/functions/utils.ts"],"names":[],"mappings":";AAIA;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,SAAS,SAAI,GAAG,GAAG,EAAE,CAYlE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,EACZ,oBAAoB,EAAE,MAAM,GAC3B,MAAM,CAQR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,SAAS,SAAI,GAAG,GAAG,EAAE,CAYlE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAEhE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAEhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAI5C;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,EAE/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAE1C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,iGAAiG;AACjG,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAGxE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAI3D;AAED;;;;;;;;;;;;GAYG;AAEH,wBAAgB,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAG;AAEjD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAqB1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,4BAA4B,CAE1C,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,EAC/B,IAAI,SAAS,MAAM,GAAG,MAAM,KACzB,IAAI,CAAG"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/functions/utils.ts"],"names":[],"mappings":";AAIA;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,SAAS,SAAI,GAAG,GAAG,EAAE,CAYlE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,EACZ,oBAAoB,EAAE,MAAM,GAC3B,MAAM,CAQR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,SAAS,SAAI,GAAG,GAAG,EAAE,CAYlE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAEhE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAEhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAI5C;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,iGAAiG;AACjG,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAGxE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAI3D;AAED;;;;;;;;;;;;GAYG;AAEH,wBAAgB,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAG;AAEjD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAqB1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,4BAA4B,CAE1C,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,EAC/B,IAAI,SAAS,MAAM,GAAG,MAAM,KACzB,IAAI,CAAG"}
@@ -111,15 +111,6 @@ end
111
111
  function ____exports.isVanillaConsoleCommand(self, commandName)
112
112
  return CONSOLE_COMMANDS_SET:has(commandName)
113
113
  end
114
- --- Helper function for creating objects that represent a mapping of an enum value to some other
115
- -- value in a type-safe way.
116
- --
117
- -- This function will ensure that the provided object has a key for each value in the enum.
118
- --
119
- -- After the `satisfies` operator is released in TypeScript 4.9, this function should be deleted.
120
- function ____exports.newObjectWithEnumKeys(self, theEnum, obj)
121
- return obj
122
- end
123
114
  --- Helper function to print something to the in-game console. Use this instead of invoking the
124
115
  -- `Isaac.ConsoleOutput` method directly because it will automatically insert a newline at the end
125
116
  -- of the message (which `Isaac.ConsoleOutput` does not do by default).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "17.9.0",
3
+ "version": "18.1.0",
4
4
  "description": "Helper functions and features for IsaacScript mods.",
5
5
  "keywords": [
6
6
  "isaac",
package/src/callbacks.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import * as cc from "./callbackClasses";
2
2
  import { ModCallbackCustom } from "./enums/ModCallbackCustom";
3
3
  import { getEnumValues } from "./functions/enums";
4
- import { newObjectWithEnumKeys } from "./functions/utils";
4
+ import { AnyClass } from "./types/AnyClass";
5
+ import { HasAllEnumKeys } from "./types/HasAllEnumKeys";
5
6
 
6
- const MOD_CALLBACK_CUSTOM_TO_CLASS = newObjectWithEnumKeys(ModCallbackCustom, {
7
+ const MOD_CALLBACK_CUSTOM_TO_CLASS = {
7
8
  [ModCallbackCustom.ENTITY_TAKE_DMG_FILTER]: cc.EntityTakeDmgFilter,
8
9
  [ModCallbackCustom.POST_AMBUSH_FINISHED]: cc.PostAmbushFinished,
9
10
  [ModCallbackCustom.POST_AMBUSH_STARTED]: cc.PostAmbushStarted,
@@ -117,11 +118,11 @@ const MOD_CALLBACK_CUSTOM_TO_CLASS = newObjectWithEnumKeys(ModCallbackCustom, {
117
118
  [ModCallbackCustom.PRE_NEW_LEVEL]: cc.PreNewLevel,
118
119
  [ModCallbackCustom.PRE_NPC_COLLISION_FILTER]: cc.PreNPCCollisionFilter,
119
120
  [ModCallbackCustom.PRE_NPC_UPDATE_FILTER]: cc.PreNPCUpdateFilter,
120
- } as const);
121
+ } as const satisfies HasAllEnumKeys<ModCallbackCustom, AnyClass>;
121
122
 
122
123
  export type ModCallbackCustomToClass = {
123
124
  readonly [Key in keyof typeof MOD_CALLBACK_CUSTOM_TO_CLASS]: InstanceType<
124
- typeof MOD_CALLBACK_CUSTOM_TO_CLASS[Key]
125
+ (typeof MOD_CALLBACK_CUSTOM_TO_CLASS)[Key]
125
126
  >;
126
127
  };
127
128
 
@@ -75,6 +75,9 @@ export const FIRST_GLITCHED_COLLECTIBLE_TYPE = asCollectibleType((1 << 32) - 1);
75
75
  /** Game frames are what is returned by the `Game.GetFrameCount` method. */
76
76
  export const GAME_FRAMES_PER_SECOND = 30;
77
77
 
78
+ /** Game frames are what is returned by the `Game.GetFrameCount` method. */
79
+ export const GAME_FRAMES_PER_MINUTE = GAME_FRAMES_PER_SECOND * 60;
80
+
78
81
  /** The set of all `ItemConfigCardType` values that are not a rune or special object. */
79
82
  export const ITEM_CONFIG_CARD_TYPES_FOR_CARDS = new Set([
80
83
  ItemConfigCardType.TAROT,
@@ -86,6 +89,9 @@ export const ITEM_CONFIG_CARD_TYPES_FOR_CARDS = new Set([
86
89
  /** Render frames are what is returned by the `Isaac.GetFrameCount` method. */
87
90
  export const RENDER_FRAMES_PER_SECOND = 60;
88
91
 
92
+ /** Render frames are what is returned by the `Isaac.GetFrameCount` method. */
93
+ export const RENDER_FRAMES_PER_MINUTE = RENDER_FRAMES_PER_SECOND * 60;
94
+
89
95
  export const GRID_INDEX_CENTER_OF_1X1_ROOM = 67;
90
96
 
91
97
  /**
package/src/features.ts CHANGED
@@ -52,13 +52,12 @@ import { SpawnRockAltRewards } from "./classes/features/other/SpawnRockAltReward
52
52
  import { StageHistory } from "./classes/features/other/StageHistory";
53
53
  import { StartAmbush } from "./classes/features/other/StartAmbush";
54
54
  import { TaintedLazarusPlayers } from "./classes/features/other/TaintedLazarusPlayers";
55
+ import { Feature } from "./classes/private/Feature";
55
56
  import { ISCFeature } from "./enums/ISCFeature";
56
57
  import { ModCallbackCustom } from "./enums/ModCallbackCustom";
57
- import {
58
- newObjectWithEnumKeys,
59
- validateInterfaceMatchesEnum,
60
- } from "./functions/utils";
58
+ import { validateInterfaceMatchesEnum } from "./functions/utils";
61
59
  import { ModUpgradedInterface } from "./interfaces/private/ModUpgradedInterface";
60
+ import { HasAllEnumKeys } from "./types/HasAllEnumKeys";
62
61
 
63
62
  export interface ISCFeatureToClass {
64
63
  // Callback logic
@@ -168,7 +167,7 @@ export function getFeatures(
168
167
  stageHistory,
169
168
  );
170
169
 
171
- return newObjectWithEnumKeys(ISCFeature, {
170
+ const features = {
172
171
  // Callback logic
173
172
  [ISCFeature.CUSTOM_REVIVE]: new CustomRevive(
174
173
  callbacks[ModCallbackCustom.PRE_CUSTOM_REVIVE],
@@ -288,5 +287,7 @@ export function getFeatures(
288
287
  [ISCFeature.STAGE_HISTORY]: stageHistory,
289
288
  [ISCFeature.START_AMBUSH]: new StartAmbush(runInNFrames),
290
289
  [ISCFeature.TAINTED_LAZARUS_PLAYERS]: new TaintedLazarusPlayers(),
291
- } as const);
290
+ } as const satisfies HasAllEnumKeys<ISCFeature, Feature>;
291
+
292
+ return features;
292
293
  }
@@ -124,22 +124,6 @@ export function isVanillaConsoleCommand(commandName: string): boolean {
124
124
  return CONSOLE_COMMANDS_SET.has(commandName);
125
125
  }
126
126
 
127
- /**
128
- * Helper function for creating objects that represent a mapping of an enum value to some other
129
- * value in a type-safe way.
130
- *
131
- * This function will ensure that the provided object has a key for each value in the enum.
132
- *
133
- * After the `satisfies` operator is released in TypeScript 4.9, this function should be deleted.
134
- */
135
- export function newObjectWithEnumKeys<
136
- Enum extends number | string,
137
- T extends Record<Enum, unknown>,
138
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
139
- >(theEnum: Record<string, Enum>, obj: T): T {
140
- return obj;
141
- }
142
-
143
127
  /**
144
128
  * Helper function to print something to the in-game console. Use this instead of invoking the
145
129
  * `Isaac.ConsoleOutput` method directly because it will automatically insert a newline at the end