isaacscript-common 17.8.0 → 18.0.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
@@ -11283,16 +11283,6 @@ export declare function newChargeBarSprites(maxCharges: int): ChargeBarSprites;
11283
11283
  */
11284
11284
  export declare function newCollectibleSprite(collectibleType: CollectibleType): Sprite;
11285
11285
 
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
11286
  export declare function newPickingUpItem(): PickingUpItem;
11297
11287
 
11298
11288
  /** Returns a `PlayerHealth` object with all zeros. */
@@ -11690,6 +11680,14 @@ export declare function playerConvertSoulHeartsToBlackHearts(player: EntityPlaye
11690
11680
  */
11691
11681
  export declare function playerHasCollectible(player: EntityPlayer, ...collectibleTypes: CollectibleType[]): boolean;
11692
11682
 
11683
+ /**
11684
+ * Helper function to check to see if a player has one or more transformations.
11685
+ *
11686
+ * This function is variadic, meaning that you can supply as many transformations as you want to
11687
+ * check for. Returns true if the player has any of the supplied transformations.
11688
+ */
11689
+ export declare function playerHasForm(player: EntityPlayer, ...playerForms: PlayerForm[]): boolean;
11690
+
11693
11691
  /**
11694
11692
  * Helper function to see if the player is out of health.
11695
11693
  *
@@ -1,6 +1,6 @@
1
1
  --[[
2
2
 
3
- isaacscript-common 17.8.0
3
+ isaacscript-common 18.0.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
@@ -21756,12 +21753,19 @@ function ____exports.playerHasCollectible(self, player, ...)
21756
21753
  function(____, collectibleType) return player:HasCollectible(collectibleType) end
21757
21754
  )
21758
21755
  end
21756
+ function ____exports.playerHasForm(self, player, ...)
21757
+ local playerForms = {...}
21758
+ return __TS__ArraySome(
21759
+ playerForms,
21760
+ function(____, playerForm) return player:HasPlayerForm(playerForm) end
21761
+ )
21762
+ end
21759
21763
  function ____exports.removeAllActiveItems(self, player)
21760
21764
  for ____, activeSlot in ipairs(getEnumValues(nil, ActiveSlot)) do
21761
21765
  do
21762
21766
  local collectibleType = player:GetActiveItem(activeSlot)
21763
21767
  if collectibleType == CollectibleType.NULL then
21764
- goto __continue91
21768
+ goto __continue93
21765
21769
  end
21766
21770
  local hasCollectible
21767
21771
  repeat
@@ -21771,7 +21775,7 @@ function ____exports.removeAllActiveItems(self, player)
21771
21775
  end
21772
21776
  until not hasCollectible
21773
21777
  end
21774
- ::__continue91::
21778
+ ::__continue93::
21775
21779
  end
21776
21780
  end
21777
21781
  function ____exports.removeAllPlayerTrinkets(self, player)
@@ -21779,7 +21783,7 @@ function ____exports.removeAllPlayerTrinkets(self, player)
21779
21783
  do
21780
21784
  local trinketType = player:GetTrinket(trinketSlot)
21781
21785
  if trinketType == TrinketType.NULL then
21782
- goto __continue96
21786
+ goto __continue98
21783
21787
  end
21784
21788
  local hasTrinket
21785
21789
  repeat
@@ -21789,7 +21793,7 @@ function ____exports.removeAllPlayerTrinkets(self, player)
21789
21793
  end
21790
21794
  until not hasTrinket
21791
21795
  end
21792
- ::__continue96::
21796
+ ::__continue98::
21793
21797
  end
21794
21798
  end
21795
21799
  function ____exports.removeCollectibleCostume(self, player, collectibleType)
@@ -21843,9 +21847,9 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
21843
21847
  itemPool:RemoveCollectible(collectibleType)
21844
21848
  end
21845
21849
  repeat
21846
- local ____switch115 = activeSlot
21847
- local ____cond115 = ____switch115 == ActiveSlot.PRIMARY
21848
- if ____cond115 then
21850
+ local ____switch117 = activeSlot
21851
+ local ____cond117 = ____switch117 == ActiveSlot.PRIMARY
21852
+ if ____cond117 then
21849
21853
  do
21850
21854
  if primaryCollectibleType ~= CollectibleType.NULL then
21851
21855
  player:RemoveCollectible(primaryCollectibleType)
@@ -21854,8 +21858,8 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
21854
21858
  break
21855
21859
  end
21856
21860
  end
21857
- ____cond115 = ____cond115 or ____switch115 == ActiveSlot.SECONDARY
21858
- if ____cond115 then
21861
+ ____cond117 = ____cond117 or ____switch117 == ActiveSlot.SECONDARY
21862
+ if ____cond117 then
21859
21863
  do
21860
21864
  if primaryCollectibleType ~= CollectibleType.NULL then
21861
21865
  player:RemoveCollectible(primaryCollectibleType)
@@ -21870,16 +21874,16 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
21870
21874
  break
21871
21875
  end
21872
21876
  end
21873
- ____cond115 = ____cond115 or ____switch115 == ActiveSlot.POCKET
21874
- if ____cond115 then
21877
+ ____cond117 = ____cond117 or ____switch117 == ActiveSlot.POCKET
21878
+ if ____cond117 then
21875
21879
  do
21876
21880
  player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
21877
21881
  player:SetActiveCharge(charge, activeSlot)
21878
21882
  break
21879
21883
  end
21880
21884
  end
21881
- ____cond115 = ____cond115 or ____switch115 == ActiveSlot.POCKET_SINGLE_USE
21882
- if ____cond115 then
21885
+ ____cond117 = ____cond117 or ____switch117 == ActiveSlot.POCKET_SINGLE_USE
21886
+ if ____cond117 then
21883
21887
  do
21884
21888
  player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
21885
21889
  break
@@ -30883,6 +30887,10 @@ do
30883
30887
  local PreNPCUpdateFilter = ____PreNPCUpdateFilter.PreNPCUpdateFilter
30884
30888
  ____exports.PreNPCUpdateFilter = PreNPCUpdateFilter
30885
30889
  end
30890
+ return ____exports
30891
+ end,
30892
+ ["src.types.AnyClass"] = function(...)
30893
+ local ____exports = {}
30886
30894
  return ____exports
30887
30895
  end,
30888
30896
  ["src.callbacks"] = function(...)
@@ -30894,9 +30902,7 @@ local ____ModCallbackCustom = require("src.enums.ModCallbackCustom")
30894
30902
  local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
30895
30903
  local ____enums = require("src.functions.enums")
30896
30904
  local getEnumValues = ____enums.getEnumValues
30897
- local ____utils = require("src.functions.utils")
30898
- local newObjectWithEnumKeys = ____utils.newObjectWithEnumKeys
30899
- local MOD_CALLBACK_CUSTOM_TO_CLASS = newObjectWithEnumKeys(nil, ModCallbackCustom, {
30905
+ local MOD_CALLBACK_CUSTOM_TO_CLASS = {
30900
30906
  [ModCallbackCustom.ENTITY_TAKE_DMG_FILTER] = cc.EntityTakeDmgFilter,
30901
30907
  [ModCallbackCustom.POST_AMBUSH_FINISHED] = cc.PostAmbushFinished,
30902
30908
  [ModCallbackCustom.POST_AMBUSH_STARTED] = cc.PostAmbushStarted,
@@ -30997,7 +31003,7 @@ local MOD_CALLBACK_CUSTOM_TO_CLASS = newObjectWithEnumKeys(nil, ModCallbackCusto
30997
31003
  [ModCallbackCustom.PRE_NEW_LEVEL] = cc.PreNewLevel,
30998
31004
  [ModCallbackCustom.PRE_NPC_COLLISION_FILTER] = cc.PreNPCCollisionFilter,
30999
31005
  [ModCallbackCustom.PRE_NPC_UPDATE_FILTER] = cc.PreNPCUpdateFilter
31000
- })
31006
+ }
31001
31007
  function ____exports.getCallbacks(self)
31002
31008
  local instantiatedClasses = {}
31003
31009
  for ____, modCallbackCustom in ipairs(getEnumValues(nil, ModCallbackCustom)) do
@@ -34533,10 +34539,6 @@ return ____exports
34533
34539
  ["src.classes.features.other.saveDataManager.constants"] = function(...)
34534
34540
  local ____exports = {}
34535
34541
  ____exports.SAVE_DATA_MANAGER_DEBUG = false
34536
- return ____exports
34537
- end,
34538
- ["src.types.AnyClass"] = function(...)
34539
- local ____exports = {}
34540
34542
  return ____exports
34541
34543
  end,
34542
34544
  ["src.objects.isaacAPIClassTypeToBrand"] = function(...)
@@ -48709,7 +48711,6 @@ local ISCFeature = ____ISCFeature.ISCFeature
48709
48711
  local ____ModCallbackCustom = require("src.enums.ModCallbackCustom")
48710
48712
  local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
48711
48713
  local ____utils = require("src.functions.utils")
48712
- local newObjectWithEnumKeys = ____utils.newObjectWithEnumKeys
48713
48714
  local validateInterfaceMatchesEnum = ____utils.validateInterfaceMatchesEnum
48714
48715
  validateInterfaceMatchesEnum(nil)
48715
48716
  function ____exports.getFeatures(self, mod, callbacks)
@@ -48749,92 +48750,89 @@ function ____exports.getFeatures(self, mod, callbacks)
48749
48750
  runNextRoom,
48750
48751
  stageHistory
48751
48752
  )
48752
- return newObjectWithEnumKeys(
48753
- nil,
48754
- ISCFeature,
48755
- {
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
- )
48753
+ local features = {
48754
+ [ISCFeature.CUSTOM_REVIVE] = __TS__New(CustomRevive, callbacks[ModCallbackCustom.PRE_CUSTOM_REVIVE], callbacks[ModCallbackCustom.POST_CUSTOM_REVIVE], runInNFrames),
48755
+ [ISCFeature.ESAU_JR_DETECTION] = __TS__New(EsauJrDetection, callbacks[ModCallbackCustom.POST_ESAU_JR], callbacks[ModCallbackCustom.POST_FIRST_ESAU_JR]),
48756
+ [ISCFeature.FLIP_DETECTION] = __TS__New(FlipDetection, callbacks[ModCallbackCustom.POST_FLIP], callbacks[ModCallbackCustom.POST_FIRST_FLIP]),
48757
+ [ISCFeature.GRID_ENTITY_COLLISION_DETECTION] = __TS__New(GridEntityCollisionDetection, callbacks[ModCallbackCustom.POST_GRID_ENTITY_COLLISION], callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_COLLISION], customGridEntities),
48758
+ [ISCFeature.GRID_ENTITY_UPDATE_DETECTION] = __TS__New(
48759
+ GridEntityUpdateDetection,
48760
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_INIT],
48761
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_INIT],
48762
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_UPDATE],
48763
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE],
48764
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_REMOVE],
48765
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_REMOVE],
48766
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_STATE_CHANGED],
48767
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_STATE_CHANGED],
48768
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_BROKEN],
48769
+ callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_BROKEN],
48770
+ customGridEntities
48771
+ ),
48772
+ [ISCFeature.GRID_ENTITY_RENDER_DETECTION] = __TS__New(GridEntityRenderDetection, callbacks[ModCallbackCustom.POST_GRID_ENTITY_RENDER], callbacks[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER], customGridEntities),
48773
+ [ISCFeature.GAME_REORDERED_CALLBACKS] = gameReorderedCallbacks,
48774
+ [ISCFeature.ITEM_PICKUP_DETECTION] = __TS__New(ItemPickupDetection, callbacks[ModCallbackCustom.POST_ITEM_PICKUP], callbacks[ModCallbackCustom.PRE_ITEM_PICKUP]),
48775
+ [ISCFeature.PLAYER_COLLECTIBLE_DETECTION] = __TS__New(
48776
+ PlayerCollectibleDetection,
48777
+ callbacks[ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED],
48778
+ callbacks[ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED],
48779
+ moddedElementSets,
48780
+ runInNFrames
48781
+ ),
48782
+ [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]),
48783
+ [ISCFeature.SLOT_RENDER_DETECTION] = __TS__New(SlotRenderDetection, callbacks[ModCallbackCustom.POST_SLOT_RENDER], callbacks[ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED]),
48784
+ [ISCFeature.SLOT_UPDATE_DETECTION] = __TS__New(SlotUpdateDetection, callbacks[ModCallbackCustom.POST_SLOT_INIT], callbacks[ModCallbackCustom.POST_SLOT_UPDATE]),
48785
+ [ISCFeature.CHARACTER_HEALTH_CONVERSION] = __TS__New(CharacterHealthConversion),
48786
+ [ISCFeature.CHARACTER_STATS] = __TS__New(CharacterStats),
48787
+ [ISCFeature.COLLECTIBLE_ITEM_POOL_TYPE] = __TS__New(CollectibleItemPoolType, pickupIndexCreation),
48788
+ [ISCFeature.CUSTOM_GRID_ENTITIES] = customGridEntities,
48789
+ [ISCFeature.CUSTOM_ITEM_POOLS] = __TS__New(CustomItemPools),
48790
+ [ISCFeature.CUSTOM_HOTKEYS] = __TS__New(CustomHotkeys),
48791
+ [ISCFeature.CUSTOM_PICKUPS] = __TS__New(CustomPickups),
48792
+ [ISCFeature.CUSTOM_STAGES] = __TS__New(
48793
+ CustomStages,
48794
+ customGridEntities,
48795
+ customTrapdoors,
48796
+ disableAllSound,
48797
+ gameReorderedCallbacks,
48798
+ pause,
48799
+ runInNFrames
48800
+ ),
48801
+ [ISCFeature.CUSTOM_TRAPDOORS] = customTrapdoors,
48802
+ [ISCFeature.DEBUG_DISPLAY] = __TS__New(DebugDisplay, mod),
48803
+ [ISCFeature.DEPLOY_JSON_ROOM] = __TS__New(DeployJSONRoom, preventGridEntityRespawn, spawnCollectible),
48804
+ [ISCFeature.DISABLE_ALL_SOUND] = disableAllSound,
48805
+ [ISCFeature.DISABLE_INPUTS] = disableInputs,
48806
+ [ISCFeature.FADE_IN_REMOVER] = __TS__New(FadeInRemover),
48807
+ [ISCFeature.FAST_RESET] = __TS__New(FastReset),
48808
+ [ISCFeature.FLYING_DETECTION] = __TS__New(FlyingDetection, moddedElementSets),
48809
+ [ISCFeature.FORGOTTEN_SWITCH] = __TS__New(ForgottenSwitch, pressInput),
48810
+ [ISCFeature.EXTRA_CONSOLE_COMMANDS] = __TS__New(ExtraConsoleCommands),
48811
+ [ISCFeature.ITEM_POOL_DETECTION] = itemPoolDetection,
48812
+ [ISCFeature.MODDED_ELEMENT_DETECTION] = moddedElementDetection,
48813
+ [ISCFeature.MODDED_ELEMENT_SETS] = moddedElementSets,
48814
+ [ISCFeature.NO_SIREN_STEAL] = __TS__New(NoSirenSteal),
48815
+ [ISCFeature.PAUSE] = pause,
48816
+ [ISCFeature.PERSISTENT_ENTITIES] = __TS__New(PersistentEntities, roomHistory),
48817
+ [ISCFeature.PICKUP_INDEX_CREATION] = pickupIndexCreation,
48818
+ [ISCFeature.PLAYER_INVENTORY] = __TS__New(PlayerInventory),
48819
+ [ISCFeature.PONY_DETECTION] = ponyDetection,
48820
+ [ISCFeature.PRESS_INPUT] = pressInput,
48821
+ [ISCFeature.PREVENT_CHILD_ENTITIES] = __TS__New(PreventChildEntities),
48822
+ [ISCFeature.PREVENT_COLLECTIBLE_ROTATION] = preventCollectibleRotation,
48823
+ [ISCFeature.PREVENT_GRID_ENTITY_RESPAWN] = preventGridEntityRespawn,
48824
+ [ISCFeature.ROOM_CLEAR_FRAME] = roomClearFrame,
48825
+ [ISCFeature.ROOM_HISTORY] = roomHistory,
48826
+ [ISCFeature.RUN_IN_N_FRAMES] = runInNFrames,
48827
+ [ISCFeature.RUN_NEXT_ROOM] = runNextRoom,
48828
+ [ISCFeature.SAVE_DATA_MANAGER] = saveDataManager,
48829
+ [ISCFeature.SPAWN_ALT_ROCK_REWARDS] = __TS__New(SpawnRockAltRewards, itemPoolDetection),
48830
+ [ISCFeature.SPAWN_COLLECTIBLE] = spawnCollectible,
48831
+ [ISCFeature.STAGE_HISTORY] = stageHistory,
48832
+ [ISCFeature.START_AMBUSH] = __TS__New(StartAmbush, runInNFrames),
48833
+ [ISCFeature.TAINTED_LAZARUS_PLAYERS] = __TS__New(TaintedLazarusPlayers)
48834
+ }
48835
+ return features
48838
48836
  end
48839
48837
  return ____exports
48840
48838
  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
@@ -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
@@ -1,4 +1,4 @@
1
- import { ActiveSlot, CollectibleType, ControllerIndex, PlayerType, TrinketType } from "isaac-typescript-definitions";
1
+ import { ActiveSlot, CollectibleType, ControllerIndex, PlayerForm, PlayerType, TrinketType } from "isaac-typescript-definitions";
2
2
  export declare function addCollectibleCostume(player: EntityPlayer, collectibleType: CollectibleType): void;
3
3
  export declare function addTrinketCostume(player: EntityPlayer, trinketType: TrinketType): void;
4
4
  export declare function anyPlayerHasCollectible(collectibleType: CollectibleType): boolean;
@@ -230,6 +230,13 @@ export declare function playerAddCollectible(player: EntityPlayer, ...collectibl
230
230
  * check for. Returns true if the player has any of the supplied collectible types.
231
231
  */
232
232
  export declare function playerHasCollectible(player: EntityPlayer, ...collectibleTypes: CollectibleType[]): boolean;
233
+ /**
234
+ * Helper function to check to see if a player has one or more transformations.
235
+ *
236
+ * This function is variadic, meaning that you can supply as many transformations as you want to
237
+ * check for. Returns true if the player has any of the supplied transformations.
238
+ */
239
+ export declare function playerHasForm(player: EntityPlayer, ...playerForms: PlayerForm[]): boolean;
233
240
  /**
234
241
  * Helper function to remove all of the active items from a player. This includes the Schoolbag item
235
242
  * and any pocket actives.
@@ -1 +1 @@
1
- {"version":3,"file":"players.d.ts","sourceRoot":"","sources":["../../../src/functions/players.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"players.d.ts","sourceRoot":"","sources":["../../../src/functions/players.ts"],"names":[],"mappings":"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"}
@@ -504,6 +504,17 @@ function ____exports.playerHasCollectible(self, player, ...)
504
504
  function(____, collectibleType) return player:HasCollectible(collectibleType) end
505
505
  )
506
506
  end
507
+ --- Helper function to check to see if a player has one or more transformations.
508
+ --
509
+ -- This function is variadic, meaning that you can supply as many transformations as you want to
510
+ -- check for. Returns true if the player has any of the supplied transformations.
511
+ function ____exports.playerHasForm(self, player, ...)
512
+ local playerForms = {...}
513
+ return __TS__ArraySome(
514
+ playerForms,
515
+ function(____, playerForm) return player:HasPlayerForm(playerForm) end
516
+ )
517
+ end
507
518
  --- Helper function to remove all of the active items from a player. This includes the Schoolbag item
508
519
  -- and any pocket actives.
509
520
  function ____exports.removeAllActiveItems(self, player)
@@ -511,7 +522,7 @@ function ____exports.removeAllActiveItems(self, player)
511
522
  do
512
523
  local collectibleType = player:GetActiveItem(activeSlot)
513
524
  if collectibleType == CollectibleType.NULL then
514
- goto __continue91
525
+ goto __continue93
515
526
  end
516
527
  local hasCollectible
517
528
  repeat
@@ -521,7 +532,7 @@ function ____exports.removeAllActiveItems(self, player)
521
532
  end
522
533
  until not hasCollectible
523
534
  end
524
- ::__continue91::
535
+ ::__continue93::
525
536
  end
526
537
  end
527
538
  --- Helper function to remove all of the held trinkets from a player.
@@ -533,7 +544,7 @@ function ____exports.removeAllPlayerTrinkets(self, player)
533
544
  do
534
545
  local trinketType = player:GetTrinket(trinketSlot)
535
546
  if trinketType == TrinketType.NULL then
536
- goto __continue96
547
+ goto __continue98
537
548
  end
538
549
  local hasTrinket
539
550
  repeat
@@ -543,7 +554,7 @@ function ____exports.removeAllPlayerTrinkets(self, player)
543
554
  end
544
555
  until not hasTrinket
545
556
  end
546
- ::__continue96::
557
+ ::__continue98::
547
558
  end
548
559
  end
549
560
  --- Helper function to remove a collectible costume from a player. Use this helper function to avoid
@@ -624,9 +635,9 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
624
635
  itemPool:RemoveCollectible(collectibleType)
625
636
  end
626
637
  repeat
627
- local ____switch115 = activeSlot
628
- local ____cond115 = ____switch115 == ActiveSlot.PRIMARY
629
- if ____cond115 then
638
+ local ____switch117 = activeSlot
639
+ local ____cond117 = ____switch117 == ActiveSlot.PRIMARY
640
+ if ____cond117 then
630
641
  do
631
642
  if primaryCollectibleType ~= CollectibleType.NULL then
632
643
  player:RemoveCollectible(primaryCollectibleType)
@@ -635,8 +646,8 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
635
646
  break
636
647
  end
637
648
  end
638
- ____cond115 = ____cond115 or ____switch115 == ActiveSlot.SECONDARY
639
- if ____cond115 then
649
+ ____cond117 = ____cond117 or ____switch117 == ActiveSlot.SECONDARY
650
+ if ____cond117 then
640
651
  do
641
652
  if primaryCollectibleType ~= CollectibleType.NULL then
642
653
  player:RemoveCollectible(primaryCollectibleType)
@@ -651,16 +662,16 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
651
662
  break
652
663
  end
653
664
  end
654
- ____cond115 = ____cond115 or ____switch115 == ActiveSlot.POCKET
655
- if ____cond115 then
665
+ ____cond117 = ____cond117 or ____switch117 == ActiveSlot.POCKET
666
+ if ____cond117 then
656
667
  do
657
668
  player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
658
669
  player:SetActiveCharge(charge, activeSlot)
659
670
  break
660
671
  end
661
672
  end
662
- ____cond115 = ____cond115 or ____switch115 == ActiveSlot.POCKET_SINGLE_USE
663
- if ____cond115 then
673
+ ____cond117 = ____cond117 or ____switch117 == ActiveSlot.POCKET_SINGLE_USE
674
+ if ____cond117 then
664
675
  do
665
676
  player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
666
677
  break
@@ -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.8.0",
3
+ "version": "18.0.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
 
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
  }
@@ -642,6 +642,19 @@ export function playerHasCollectible(
642
642
  );
643
643
  }
644
644
 
645
+ /**
646
+ * Helper function to check to see if a player has one or more transformations.
647
+ *
648
+ * This function is variadic, meaning that you can supply as many transformations as you want to
649
+ * check for. Returns true if the player has any of the supplied transformations.
650
+ */
651
+ export function playerHasForm(
652
+ player: EntityPlayer,
653
+ ...playerForms: PlayerForm[]
654
+ ): boolean {
655
+ return playerForms.some((playerForm) => player.HasPlayerForm(playerForm));
656
+ }
657
+
645
658
  /**
646
659
  * Helper function to remove all of the active items from a player. This includes the Schoolbag item
647
660
  * and any pocket actives.
@@ -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