isaacscript-common 13.3.4 → 14.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 +1644 -441
- package/dist/isaacscript-common.lua +19643 -16276
- package/dist/src/callbacks/customRevive.lua +10 -1
- package/dist/src/callbacks/postAmbush.d.ts.map +1 -1
- package/dist/src/callbacks/postAmbush.lua +7 -12
- package/dist/src/callbacks/postBombExploded.lua +3 -3
- package/dist/src/callbacks/postDoorRender.lua +2 -2
- package/dist/src/callbacks/postEffectStateChanged.lua +3 -3
- package/dist/src/callbacks/postFamiliarStateChanged.lua +3 -3
- package/dist/src/callbacks/postFlip.lua +1 -1
- package/dist/src/callbacks/postGridEntity.lua +2 -2
- package/dist/src/callbacks/postNPCStateChanged.lua +3 -3
- package/dist/src/callbacks/postPickupStateChanged.lua +3 -3
- package/dist/src/callbacks/postPlayerCollectible.d.ts.map +1 -1
- package/dist/src/callbacks/postPlayerCollectible.lua +5 -9
- package/dist/src/callbacks/postRoomClearChanged.d.ts.map +1 -1
- package/dist/src/callbacks/postRoomClearChanged.lua +3 -5
- package/dist/src/callbacks/reorderedCallbacks.lua +7 -7
- package/dist/src/callbacks/subscriptions/{postBoneExploded.d.ts → postBombExploded.d.ts} +1 -1
- package/dist/src/callbacks/subscriptions/{postBoneExploded.d.ts.map → postBombExploded.d.ts.map} +1 -1
- package/dist/src/callbacks/subscriptions/{postBoneExploded.lua → postBombExploded.lua} +0 -0
- package/dist/src/callbacks/subscriptions/postCollectibleEmpty.d.ts +1 -1
- package/dist/src/callbacks/subscriptions/postCollectibleEmpty.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postCollectibleInitFirst.d.ts +1 -1
- package/dist/src/callbacks/subscriptions/postCollectibleInitFirst.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postCursedTeleport.d.ts +4 -2
- package/dist/src/callbacks/subscriptions/postCursedTeleport.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postCursedTeleport.lua +13 -1
- package/dist/src/callbacks/subscriptions/postGridEntityBroken.d.ts +1 -1
- package/dist/src/callbacks/subscriptions/postGridEntityBroken.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postGridEntityBroken.lua +3 -3
- package/dist/src/callbacks/subscriptions/postGridEntityInit.d.ts +1 -1
- package/dist/src/callbacks/subscriptions/postGridEntityInit.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postGridEntityInit.lua +3 -3
- package/dist/src/callbacks/subscriptions/postGridEntityRemove.d.ts +3 -3
- package/dist/src/callbacks/subscriptions/postGridEntityRemove.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postGridEntityRemove.lua +4 -4
- package/dist/src/callbacks/subscriptions/postGridEntityRender.d.ts +1 -1
- package/dist/src/callbacks/subscriptions/postGridEntityRender.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postGridEntityRender.lua +3 -3
- package/dist/src/callbacks/subscriptions/postGridEntityStateChanged.d.ts +1 -1
- package/dist/src/callbacks/subscriptions/postGridEntityStateChanged.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postGridEntityStateChanged.lua +3 -3
- package/dist/src/callbacks/subscriptions/postGridEntityUpdate.d.ts +1 -1
- package/dist/src/callbacks/subscriptions/postGridEntityUpdate.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postGridEntityUpdate.lua +3 -3
- package/dist/src/callbacks/subscriptions/postHolyMantleRemoved.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postHolyMantleRemoved.lua +2 -2
- package/dist/src/callbacks/subscriptions/postPEffectUpdateReordered.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postPEffectUpdateReordered.lua +2 -2
- package/dist/src/callbacks/subscriptions/postRockRender.d.ts +1 -1
- package/dist/src/callbacks/subscriptions/postRockRender.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postRockRender.lua +3 -3
- package/dist/src/callbacks/subscriptions/postRockUpdate.d.ts +1 -1
- package/dist/src/callbacks/subscriptions/postRockUpdate.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postRockUpdate.lua +3 -3
- package/dist/src/callbacks/subscriptions/postSpikesRender.d.ts +1 -1
- package/dist/src/callbacks/subscriptions/postSpikesRender.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postSpikesRender.lua +3 -3
- package/dist/src/callbacks/subscriptions/postSpikesUpdate.d.ts +1 -1
- package/dist/src/callbacks/subscriptions/postSpikesUpdate.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postSpikesUpdate.lua +3 -3
- package/dist/src/callbacks/subscriptions/postTNTRender.d.ts +1 -1
- package/dist/src/callbacks/subscriptions/postTNTRender.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postTNTRender.lua +3 -3
- package/dist/src/callbacks/subscriptions/postTNTUpdate.d.ts +1 -1
- package/dist/src/callbacks/subscriptions/postTNTUpdate.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postTNTUpdate.lua +3 -3
- package/dist/src/callbacks.d.ts +106 -0
- package/dist/src/callbacks.d.ts.map +1 -0
- package/dist/src/callbacks.lua +176 -0
- package/dist/src/classes/DefaultMap.d.ts.map +1 -1
- package/dist/src/classes/ModFeature.d.ts +11 -0
- package/dist/src/classes/ModFeature.d.ts.map +1 -0
- package/dist/src/classes/ModFeature.lua +13 -0
- package/dist/src/classes/ModUpgraded.d.ts +49 -11
- package/dist/src/classes/ModUpgraded.d.ts.map +1 -1
- package/dist/src/classes/ModUpgraded.lua +118 -16
- package/dist/src/classes/callbacks/PostAmbushFinished.d.ts +12 -0
- package/dist/src/classes/callbacks/PostAmbushFinished.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostAmbushFinished.lua +37 -0
- package/dist/src/classes/callbacks/PostAmbushStarted.d.ts +12 -0
- package/dist/src/classes/callbacks/PostAmbushStarted.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostAmbushStarted.lua +37 -0
- package/dist/src/classes/callbacks/PostBombExploded.d.ts +7 -0
- package/dist/src/classes/callbacks/PostBombExploded.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostBombExploded.lua +24 -0
- package/dist/src/classes/callbacks/PostBombInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostBombInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostBombInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostBoneSwing.d.ts +14 -0
- package/dist/src/classes/callbacks/PostBoneSwing.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostBoneSwing.lua +43 -0
- package/dist/src/classes/callbacks/PostCollectibleEmpty.d.ts +17 -0
- package/dist/src/classes/callbacks/PostCollectibleEmpty.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostCollectibleEmpty.lua +47 -0
- package/dist/src/classes/callbacks/PostCollectibleInitFirst.d.ts +13 -0
- package/dist/src/classes/callbacks/PostCollectibleInitFirst.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostCollectibleInitFirst.lua +32 -0
- package/dist/src/classes/callbacks/PostCursedTeleport.d.ts +20 -0
- package/dist/src/classes/callbacks/PostCursedTeleport.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostCursedTeleport.lua +113 -0
- package/dist/src/classes/callbacks/PostCustomRevive.d.ts +6 -0
- package/dist/src/classes/callbacks/PostCustomRevive.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostCustomRevive.lua +17 -0
- package/dist/src/classes/callbacks/PostDiceRoomActivated.d.ts +15 -0
- package/dist/src/classes/callbacks/PostDiceRoomActivated.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostDiceRoomActivated.lua +44 -0
- package/dist/src/classes/callbacks/PostDoorRender.d.ts +7 -0
- package/dist/src/classes/callbacks/PostDoorRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostDoorRender.lua +24 -0
- package/dist/src/classes/callbacks/PostDoorUpdate.d.ts +7 -0
- package/dist/src/classes/callbacks/PostDoorUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostDoorUpdate.lua +24 -0
- package/dist/src/classes/callbacks/PostEffectInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostEffectInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostEffectInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostEffectStateChanged.d.ts +13 -0
- package/dist/src/classes/callbacks/PostEffectStateChanged.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostEffectStateChanged.lua +33 -0
- package/dist/src/classes/callbacks/PostEsauJr.d.ts +6 -0
- package/dist/src/classes/callbacks/PostEsauJr.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostEsauJr.lua +17 -0
- package/dist/src/classes/callbacks/PostFamiliarInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostFamiliarInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostFamiliarInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostFamiliarStateChanged.d.ts +13 -0
- package/dist/src/classes/callbacks/PostFamiliarStateChanged.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostFamiliarStateChanged.lua +33 -0
- package/dist/src/classes/callbacks/PostFirstEsauJr.d.ts +6 -0
- package/dist/src/classes/callbacks/PostFirstEsauJr.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostFirstEsauJr.lua +17 -0
- package/dist/src/classes/callbacks/PostFirstFlip.d.ts +6 -0
- package/dist/src/classes/callbacks/PostFirstFlip.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostFirstFlip.lua +17 -0
- package/dist/src/classes/callbacks/PostFlip.d.ts +6 -0
- package/dist/src/classes/callbacks/PostFlip.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostFlip.lua +17 -0
- package/dist/src/classes/callbacks/PostGameStartedReordered.d.ts +6 -0
- package/dist/src/classes/callbacks/PostGameStartedReordered.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGameStartedReordered.lua +17 -0
- package/dist/src/classes/callbacks/PostGameStartedReorderedLast.d.ts +6 -0
- package/dist/src/classes/callbacks/PostGameStartedReorderedLast.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGameStartedReorderedLast.lua +17 -0
- package/dist/src/classes/callbacks/PostGreedModeWave.d.ts +12 -0
- package/dist/src/classes/callbacks/PostGreedModeWave.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGreedModeWave.lua +34 -0
- package/dist/src/classes/callbacks/PostGridEntityBroken.d.ts +6 -0
- package/dist/src/classes/callbacks/PostGridEntityBroken.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityBroken.lua +17 -0
- package/dist/src/classes/callbacks/PostGridEntityCollision.d.ts +9 -0
- package/dist/src/classes/callbacks/PostGridEntityCollision.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityCollision.lua +36 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomBroken.d.ts +6 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomBroken.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomBroken.lua +17 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomCollision.d.ts +9 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomCollision.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomCollision.lua +31 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomInit.d.ts +6 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomInit.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomInit.lua +17 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomRemove.d.ts +9 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomRemove.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomRemove.lua +25 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomStateChanged.d.ts +6 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomStateChanged.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomStateChanged.lua +17 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomUpdate.d.ts +6 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomUpdate.lua +17 -0
- package/dist/src/classes/callbacks/PostGridEntityInit.d.ts +6 -0
- package/dist/src/classes/callbacks/PostGridEntityInit.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityInit.lua +17 -0
- package/dist/src/classes/callbacks/PostGridEntityRemove.d.ts +9 -0
- package/dist/src/classes/callbacks/PostGridEntityRemove.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityRemove.lua +28 -0
- package/dist/src/classes/callbacks/PostGridEntityStateChanged.d.ts +6 -0
- package/dist/src/classes/callbacks/PostGridEntityStateChanged.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityStateChanged.lua +17 -0
- package/dist/src/classes/callbacks/PostGridEntityUpdate.d.ts +6 -0
- package/dist/src/classes/callbacks/PostGridEntityUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityUpdate.lua +17 -0
- package/dist/src/classes/callbacks/PostHolyMantleRemoved.d.ts +14 -0
- package/dist/src/classes/callbacks/PostHolyMantleRemoved.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostHolyMantleRemoved.lua +35 -0
- package/dist/src/classes/callbacks/PostKnifeInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostKnifeInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostKnifeInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostNewLevelReordered.d.ts +6 -0
- package/dist/src/classes/callbacks/PostNewLevelReordered.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostNewLevelReordered.lua +17 -0
- package/dist/src/classes/callbacks/PostNewRoomEarly.d.ts +13 -0
- package/dist/src/classes/callbacks/PostNewRoomEarly.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostNewRoomEarly.lua +65 -0
- package/dist/src/classes/callbacks/PostNewRoomReordered.d.ts +6 -0
- package/dist/src/classes/callbacks/PostNewRoomReordered.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostNewRoomReordered.lua +17 -0
- package/dist/src/classes/callbacks/PostPEffectUpdateReordered.d.ts +6 -0
- package/dist/src/classes/callbacks/PostPEffectUpdateReordered.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPEffectUpdateReordered.lua +17 -0
- package/dist/src/classes/callbacks/PostPitRender.d.ts +7 -0
- package/dist/src/classes/callbacks/PostPitRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPitRender.lua +24 -0
- package/dist/src/classes/callbacks/PostPlayerFatalDamage.d.ts +15 -0
- package/dist/src/classes/callbacks/PostPlayerFatalDamage.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerFatalDamage.lua +87 -0
- package/dist/src/classes/callbacks/PostPlayerRenderReordered.d.ts +6 -0
- package/dist/src/classes/callbacks/PostPlayerRenderReordered.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerRenderReordered.lua +17 -0
- package/dist/src/classes/callbacks/PostPlayerUpdateReordered.d.ts +6 -0
- package/dist/src/classes/callbacks/PostPlayerUpdateReordered.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerUpdateReordered.lua +17 -0
- package/dist/src/classes/callbacks/PostRoomClearChanged.d.ts +13 -0
- package/dist/src/classes/callbacks/PostRoomClearChanged.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostRoomClearChanged.lua +33 -0
- package/dist/src/classes/callbacks/PostSpikesRender.d.ts +7 -0
- package/dist/src/classes/callbacks/PostSpikesRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSpikesRender.lua +24 -0
- package/dist/src/classes/callbacks/PreBerserkDeath.d.ts +7 -0
- package/dist/src/classes/callbacks/PreBerserkDeath.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PreBerserkDeath.lua +36 -0
- package/dist/src/classes/callbacks/PreCustomRevive.d.ts +6 -0
- package/dist/src/classes/callbacks/PreCustomRevive.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PreCustomRevive.lua +17 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackAmbush.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackAmbush.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackAmbush.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackBomb.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackBomb.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackBomb.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackCollectible.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackCollectible.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackCollectible.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackDoor.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackDoor.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackDoor.lua +20 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackEffect.d.ts +11 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackEffect.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackEffect.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackFamiliar.d.ts +11 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackFamiliar.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackFamiliar.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackGridEntity.d.ts +11 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackGridEntity.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackGridEntity.lua +24 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackGridEntityCustom.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackGridEntityCustom.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackGridEntityCustom.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackKnife.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackKnife.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackKnife.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPit.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPit.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPit.lua +20 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPlayer.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPlayer.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPlayer.lua +23 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackRevive.d.ts +11 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackRevive.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackRevive.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackSpikes.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackSpikes.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackSpikes.lua +20 -0
- package/dist/src/classes/features/callbackLogic/CustomGridEntities.d.ts +134 -0
- package/dist/src/classes/features/callbackLogic/CustomGridEntities.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/CustomGridEntities.lua +220 -0
- package/dist/src/classes/features/callbackLogic/CustomRevive.d.ts +39 -0
- package/dist/src/classes/features/callbackLogic/CustomRevive.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/CustomRevive.lua +140 -0
- package/dist/src/classes/features/callbackLogic/EsauJrDetection.d.ts +19 -0
- package/dist/src/classes/features/callbackLogic/EsauJrDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/EsauJrDetection.lua +52 -0
- package/dist/src/classes/features/callbackLogic/FlipDetection.d.ts +16 -0
- package/dist/src/classes/features/callbackLogic/FlipDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/FlipDetection.lua +58 -0
- package/dist/src/classes/features/callbackLogic/GameReorderedCallbacks.d.ts +27 -0
- package/dist/src/classes/features/callbackLogic/GameReorderedCallbacks.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/GameReorderedCallbacks.lua +108 -0
- package/dist/src/classes/features/callbackLogic/GridEntityCollisionDetection.d.ts +19 -0
- package/dist/src/classes/features/callbackLogic/GridEntityCollisionDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/GridEntityCollisionDetection.lua +69 -0
- package/dist/src/classes/features/callbackLogic/GridEntityDetection.d.ts +46 -0
- package/dist/src/classes/features/callbackLogic/GridEntityDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/GridEntityDetection.lua +126 -0
- package/dist/src/classes/features/callbackLogic/PlayerReorderedCallbacks.d.ts +24 -0
- package/dist/src/classes/features/callbackLogic/PlayerReorderedCallbacks.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/PlayerReorderedCallbacks.lua +72 -0
- package/dist/src/classes/features/other/RunInNFrames.d.ts +123 -0
- package/dist/src/classes/features/other/RunInNFrames.d.ts.map +1 -0
- package/dist/src/classes/features/other/RunInNFrames.lua +109 -0
- package/dist/src/classes/private/CustomCallback.d.ts +26 -0
- package/dist/src/classes/private/CustomCallback.d.ts.map +1 -0
- package/dist/src/classes/private/CustomCallback.lua +63 -0
- package/dist/src/classes/private/Feature.d.ts +19 -0
- package/dist/src/classes/private/Feature.d.ts.map +1 -0
- package/dist/src/classes/private/Feature.lua +16 -0
- package/dist/src/core/upgradeMod.d.ts +18 -1
- package/dist/src/core/upgradeMod.d.ts.map +1 -1
- package/dist/src/core/upgradeMod.lua +44 -9
- package/dist/src/decorators.d.ts +9 -0
- package/dist/src/decorators.d.ts.map +1 -0
- package/dist/src/decorators.lua +12 -0
- package/dist/src/enums/ISCFeature.d.ts +12 -0
- package/dist/src/enums/ISCFeature.d.ts.map +1 -0
- package/dist/src/enums/ISCFeature.lua +12 -0
- package/dist/src/enums/LadderSubTypeCustom.d.ts +17 -0
- package/dist/src/enums/LadderSubTypeCustom.d.ts.map +1 -0
- package/dist/src/enums/LadderSubTypeCustom.lua +19 -0
- package/dist/src/enums/ModCallbackCustom.d.ts +399 -327
- package/dist/src/enums/ModCallbackCustom.d.ts.map +1 -1
- package/dist/src/enums/ModCallbackCustom.lua +85 -87
- package/dist/src/enums/ModCallbackCustom2.d.ts +53 -0
- package/dist/src/enums/ModCallbackCustom2.d.ts.map +1 -0
- package/dist/src/enums/ModCallbackCustom2.lua +102 -0
- package/dist/src/features/customGridEntity.d.ts.map +1 -1
- package/dist/src/features/customGridEntity.lua +6 -8
- package/dist/src/features/{setHotkey.d.ts → customHotkeys.d.ts} +1 -1
- package/dist/src/features/customHotkeys.d.ts.map +1 -0
- package/dist/src/features/{setHotkey.lua → customHotkeys.lua} +2 -2
- package/dist/src/features/customPickup.d.ts.map +1 -1
- package/dist/src/features/customPickup.lua +6 -2
- package/dist/src/features/customStage/backdrop.d.ts.map +1 -1
- package/dist/src/features/customStage/backdrop.lua +3 -1
- package/dist/src/features/customStage/shadows.d.ts.map +1 -1
- package/dist/src/features/customStage/shadows.lua +3 -1
- package/dist/src/features/customTrapdoor/init.lua +1 -7
- package/dist/src/features/customTrapdoor/touched.lua +1 -1
- package/dist/src/features/deployJSONRoom.d.ts.map +1 -1
- package/dist/src/features/deployJSONRoom.lua +6 -8
- package/dist/src/features/firstLast.d.ts.map +1 -1
- package/dist/src/features/firstLast.lua +3 -3
- package/dist/src/features/saveDataManager/constants.d.ts +1 -1
- package/dist/src/features/saveDataManager/constants.d.ts.map +1 -1
- package/dist/src/features/saveDataManager/exports.d.ts +5 -0
- package/dist/src/features/saveDataManager/exports.d.ts.map +1 -1
- package/dist/src/features/saveDataManager/exports.lua +16 -0
- package/dist/src/features/saveDataManager/main.d.ts +8 -2
- package/dist/src/features/saveDataManager/main.d.ts.map +1 -1
- package/dist/src/features/saveDataManager/main.lua +3 -5
- package/dist/src/features/saveDataManager/save.lua +2 -3
- package/dist/src/features.d.ts +34 -0
- package/dist/src/features.d.ts.map +1 -0
- package/dist/src/features.lua +68 -0
- package/dist/src/functions/ambush.d.ts +6 -0
- package/dist/src/functions/ambush.d.ts.map +1 -1
- package/dist/src/functions/ambush.lua +31 -0
- package/dist/src/functions/characters.lua +3 -3
- package/dist/src/functions/charge.d.ts +30 -8
- package/dist/src/functions/charge.d.ts.map +1 -1
- package/dist/src/functions/charge.lua +38 -2
- package/dist/src/functions/chargeBar.d.ts +6 -0
- package/dist/src/functions/chargeBar.d.ts.map +1 -1
- package/dist/src/functions/chargeBar.lua +6 -0
- package/dist/src/functions/decorators.d.ts +19 -0
- package/dist/src/functions/decorators.d.ts.map +1 -0
- package/dist/src/functions/decorators.lua +32 -0
- package/dist/src/functions/flying.lua +4 -4
- package/dist/src/functions/gridEntities.lua +5 -5
- package/dist/src/functions/gridEntitiesSpecific.lua +12 -12
- package/dist/src/functions/itemPool.lua +2 -2
- package/dist/src/functions/minimap.d.ts +4 -0
- package/dist/src/functions/minimap.d.ts.map +1 -1
- package/dist/src/functions/minimap.lua +4 -0
- package/dist/src/functions/playerHealth.lua +6 -6
- package/dist/src/functions/playerIndex.lua +2 -2
- package/dist/src/functions/players.d.ts +14 -3
- package/dist/src/functions/players.d.ts.map +1 -1
- package/dist/src/functions/players.lua +35 -16
- package/dist/src/functions/pocketItems.lua +1 -1
- package/dist/src/functions/roomTransition.d.ts +3 -4
- package/dist/src/functions/roomTransition.d.ts.map +1 -1
- package/dist/src/functions/roomTransition.lua +4 -32
- package/dist/src/functions/rooms.d.ts +1 -1
- package/dist/src/functions/rooms.d.ts.map +1 -1
- package/dist/src/functions/rooms.lua +1 -1
- package/dist/src/functions/run.d.ts +5 -0
- package/dist/src/functions/run.d.ts.map +1 -1
- package/dist/src/functions/run.lua +6 -0
- package/dist/src/functions/spawnCollectible.d.ts +24 -5
- package/dist/src/functions/spawnCollectible.d.ts.map +1 -1
- package/dist/src/functions/spawnCollectible.lua +44 -4
- package/dist/src/functions/table.d.ts +2 -0
- package/dist/src/functions/table.d.ts.map +1 -1
- package/dist/src/functions/table.lua +7 -0
- package/dist/src/functions/trinkets.lua +1 -1
- package/dist/src/functions/tstlClass.d.ts +21 -9
- package/dist/src/functions/tstlClass.d.ts.map +1 -1
- package/dist/src/functions/tstlClass.lua +49 -24
- package/dist/src/functions/utils.d.ts +44 -2
- package/dist/src/functions/utils.d.ts.map +1 -1
- package/dist/src/functions/utils.lua +43 -2
- package/dist/src/index.d.ts +15 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.lua +42 -10
- package/dist/src/initCustomCallbacks.d.ts.map +1 -1
- package/dist/src/initCustomCallbacks.lua +0 -3
- package/dist/src/initFeatures.lua +3 -3
- package/dist/src/interfaces/SaveData.d.ts.map +1 -1
- package/dist/src/interfaces/{private/TSTLClassMetatable.d.ts → TSTLClassMetatable.d.ts} +0 -0
- package/dist/src/interfaces/TSTLClassMetatable.d.ts.map +1 -0
- package/dist/src/interfaces/{private/TSTLClassMetatable.lua → TSTLClassMetatable.lua} +0 -0
- package/dist/src/interfaces/private/{AddCallbackParameterCustom.d.ts → AddCallbackParametersCustom.d.ts} +3 -5
- package/dist/src/interfaces/private/AddCallbackParametersCustom.d.ts.map +1 -0
- package/dist/src/interfaces/private/{AddCallbackParameterCustom.lua → AddCallbackParametersCustom.lua} +3 -0
- package/dist/src/interfaces/private/AddCallbackParametersCustom2.d.ts +201 -0
- package/dist/src/interfaces/private/AddCallbackParametersCustom2.d.ts.map +1 -0
- package/dist/src/interfaces/private/AddCallbackParametersCustom2.lua +7 -0
- package/dist/src/maps/characterNameToTypeMap.lua +12 -12
- package/dist/src/objects/callbackRegisterFunctions.d.ts +1 -1
- package/dist/src/objects/callbackRegisterFunctions.d.ts.map +1 -1
- package/dist/src/objects/callbackRegisterFunctions.lua +2 -5
- package/dist/src/objects/characterDamageMultipliers.lua +6 -6
- package/dist/src/objects/characterNames.lua +6 -6
- package/dist/src/objects/playerNamePNGFileNames.lua +6 -6
- package/dist/src/objects/playerPortraitPNGFileNames.lua +6 -6
- package/dist/src/sets/charactersThatStartWithAnActiveItemSet.lua +1 -1
- package/dist/src/sets/charactersWithFreeDevilDealsSet.d.ts.map +1 -1
- package/dist/src/sets/charactersWithFreeDevilDealsSet.lua +1 -1
- package/dist/src/sets/charactersWithNoRedHeartsSet.lua +3 -3
- package/dist/src/sets/charactersWithNoSoulHeartsSet.lua +2 -2
- package/dist/src/sets/lostStyleCharactersSet.lua +4 -4
- package/dist/src/types/AllButFirst.d.ts +5 -0
- package/dist/src/types/AllButFirst.d.ts.map +1 -0
- package/dist/src/types/AllButFirst.lua +2 -0
- package/dist/src/types/AllButLast.d.ts +2 -0
- package/dist/src/types/AllButLast.d.ts.map +1 -0
- package/dist/src/types/AllButLast.lua +2 -0
- package/dist/src/types/Constructor.d.ts +2 -0
- package/dist/src/types/Constructor.d.ts.map +1 -0
- package/dist/src/types/Constructor.lua +2 -0
- package/dist/src/types/FunctionTuple.d.ts +5 -0
- package/dist/src/types/FunctionTuple.d.ts.map +1 -0
- package/dist/src/types/FunctionTuple.lua +2 -0
- package/dist/src/types/HasAllEnumKeys.d.ts +26 -0
- package/dist/src/types/HasAllEnumKeys.d.ts.map +1 -0
- package/dist/src/types/HasAllEnumKeys.lua +2 -0
- package/dist/src/types/LowercaseKeys.d.ts +3 -0
- package/dist/src/types/LowercaseKeys.d.ts.map +1 -0
- package/dist/src/types/LowercaseKeys.lua +2 -0
- package/dist/src/types/StartsWithLowercase.d.ts +2 -0
- package/dist/src/types/StartsWithLowercase.d.ts.map +1 -0
- package/dist/src/types/StartsWithLowercase.lua +2 -0
- package/dist/src/types/StartsWithUppercase.d.ts +2 -0
- package/dist/src/types/StartsWithUppercase.d.ts.map +1 -0
- package/dist/src/types/StartsWithUppercase.lua +2 -0
- package/dist/src/types/UnionToIntersection.d.ts +3 -0
- package/dist/src/types/UnionToIntersection.d.ts.map +1 -0
- package/dist/src/types/UnionToIntersection.lua +2 -0
- package/dist/src/types/UppercaseKeys.d.ts +3 -0
- package/dist/src/types/UppercaseKeys.d.ts.map +1 -0
- package/dist/src/types/UppercaseKeys.lua +2 -0
- package/dist/src/types/private/AllButFirst.d.ts +5 -0
- package/dist/src/types/private/AllButFirst.d.ts.map +1 -0
- package/dist/src/types/private/AllButFirst.lua +2 -0
- package/dist/src/types/private/CallbackTuple.d.ts +20 -0
- package/dist/src/types/private/CallbackTuple.d.ts.map +1 -0
- package/dist/src/types/private/CallbackTuple.lua +2 -0
- package/dist/src/types/private/MatchingCallbackCustom.d.ts +16 -0
- package/dist/src/types/private/MatchingCallbackCustom.d.ts.map +1 -0
- package/dist/src/types/private/MatchingCallbackCustom.lua +2 -0
- package/package.json +2 -2
- package/src/callbacks/customRevive.ts +13 -1
- package/src/callbacks/postAmbush.ts +7 -14
- package/src/callbacks/postBombExploded.ts +1 -1
- package/src/callbacks/postBoneSwing.ts +2 -1
- package/src/callbacks/postCollectibleEmpty.ts +2 -0
- package/src/callbacks/postCollectibleInitFirst.ts +2 -0
- package/src/callbacks/postDoorRender.ts +2 -2
- package/src/callbacks/postEffectStateChanged.ts +3 -6
- package/src/callbacks/postFamiliarStateChanged.ts +3 -3
- package/src/callbacks/postFlip.ts +2 -2
- package/src/callbacks/postGridEntity.ts +3 -7
- package/src/callbacks/postNPCStateChanged.ts +3 -3
- package/src/callbacks/postNewRoomEarly.ts +1 -1
- package/src/callbacks/postPickupStateChanged.ts +3 -6
- package/src/callbacks/postPlayerCollectible.ts +8 -12
- package/src/callbacks/postRoomClearChanged.ts +3 -7
- package/src/callbacks/reorderedCallbacks.ts +6 -6
- package/src/callbacks/subscriptions/{postBoneExploded.ts → postBombExploded.ts} +0 -0
- package/src/callbacks/subscriptions/postCollectibleEmpty.ts +1 -1
- package/src/callbacks/subscriptions/postCollectibleInitFirst.ts +1 -1
- package/src/callbacks/subscriptions/postCursedTeleport.ts +24 -1
- package/src/callbacks/subscriptions/postGridEntityBroken.ts +4 -7
- package/src/callbacks/subscriptions/postGridEntityCollision.ts +4 -4
- package/src/callbacks/subscriptions/postGridEntityInit.ts +4 -7
- package/src/callbacks/subscriptions/postGridEntityRemove.ts +10 -9
- package/src/callbacks/subscriptions/postGridEntityRender.ts +4 -7
- package/src/callbacks/subscriptions/postGridEntityStateChanged.ts +4 -7
- package/src/callbacks/subscriptions/postGridEntityUpdate.ts +4 -7
- package/src/callbacks/subscriptions/postHolyMantleRemoved.ts +9 -2
- package/src/callbacks/subscriptions/postPEffectUpdateReordered.ts +9 -2
- package/src/callbacks/subscriptions/postRockRender.ts +6 -7
- package/src/callbacks/subscriptions/postRockUpdate.ts +6 -7
- package/src/callbacks/subscriptions/postSpikesRender.ts +4 -7
- package/src/callbacks/subscriptions/postSpikesUpdate.ts +4 -7
- package/src/callbacks/subscriptions/postTNTRender.ts +4 -7
- package/src/callbacks/subscriptions/postTNTUpdate.ts +4 -7
- package/src/callbacks.ts +134 -0
- package/src/classes/DefaultMap.ts +3 -3
- package/src/classes/ModFeature.ts +14 -0
- package/src/classes/ModUpgraded.ts +205 -45
- package/src/classes/callbacks/PostAmbushFinished.ts +39 -0
- package/src/classes/callbacks/PostAmbushStarted.ts +39 -0
- package/src/classes/callbacks/PostBombExploded.ts +21 -0
- package/src/classes/callbacks/PostBombInitLate.ts +28 -0
- package/src/classes/callbacks/PostBoneSwing.ts +61 -0
- package/src/classes/callbacks/PostCollectibleEmpty.ts +72 -0
- package/src/classes/callbacks/PostCollectibleInitFirst.ts +37 -0
- package/src/classes/callbacks/PostCursedTeleport.ts +186 -0
- package/src/classes/callbacks/PostCustomRevive.ts +11 -0
- package/src/classes/callbacks/PostDiceRoomActivated.ts +68 -0
- package/src/classes/callbacks/PostDoorRender.ts +19 -0
- package/src/classes/callbacks/PostDoorUpdate.ts +19 -0
- package/src/classes/callbacks/PostEffectInitLate.ts +28 -0
- package/src/classes/callbacks/PostEffectStateChanged.ts +35 -0
- package/src/classes/callbacks/PostEsauJr.ts +11 -0
- package/src/classes/callbacks/PostFamiliarInitLate.ts +28 -0
- package/src/classes/callbacks/PostFamiliarStateChanged.ts +35 -0
- package/src/classes/callbacks/PostFirstEsauJr.ts +11 -0
- package/src/classes/callbacks/PostFirstFlip.ts +11 -0
- package/src/classes/callbacks/PostFlip.ts +11 -0
- package/src/classes/callbacks/PostGameStartedReordered.ts +11 -0
- package/src/classes/callbacks/PostGameStartedReorderedLast.ts +11 -0
- package/src/classes/callbacks/PostGreedModeWave.ts +37 -0
- package/src/classes/callbacks/PostGridEntityBroken.ts +11 -0
- package/src/classes/callbacks/PostGridEntityCollision.ts +65 -0
- package/src/classes/callbacks/PostGridEntityCustomBroken.ts +11 -0
- package/src/classes/callbacks/PostGridEntityCustomCollision.ts +53 -0
- package/src/classes/callbacks/PostGridEntityCustomInit.ts +11 -0
- package/src/classes/callbacks/PostGridEntityCustomRemove.ts +32 -0
- package/src/classes/callbacks/PostGridEntityCustomStateChanged.ts +11 -0
- package/src/classes/callbacks/PostGridEntityCustomUpdate.ts +11 -0
- package/src/classes/callbacks/PostGridEntityInit.ts +11 -0
- package/src/classes/callbacks/PostGridEntityRemove.ts +39 -0
- package/src/classes/callbacks/PostGridEntityStateChanged.ts +11 -0
- package/src/classes/callbacks/PostGridEntityUpdate.ts +11 -0
- package/src/classes/callbacks/PostHolyMantleRemoved.ts +45 -0
- package/src/classes/callbacks/PostKnifeInitLate.ts +28 -0
- package/src/classes/callbacks/PostNewLevelReordered.ts +11 -0
- package/src/classes/callbacks/PostNewRoomEarly.ts +93 -0
- package/src/classes/callbacks/PostNewRoomReordered.ts +11 -0
- package/src/classes/callbacks/PostPEffectUpdateReordered.ts +11 -0
- package/src/classes/callbacks/PostPitRender.ts +21 -0
- package/src/classes/callbacks/PostPlayerFatalDamage.ts +127 -0
- package/src/classes/callbacks/PostPlayerRenderReordered.ts +11 -0
- package/src/classes/callbacks/PostPlayerUpdateReordered.ts +11 -0
- package/src/classes/callbacks/PostRoomClearChanged.ts +40 -0
- package/src/classes/callbacks/PostSpikesRender.ts +21 -0
- package/src/classes/callbacks/PreBerserkDeath.ts +42 -0
- package/src/classes/callbacks/PreCustomRevive.ts +11 -0
- package/src/classes/callbacks/validation/CustomCallbackAmbush.ts +28 -0
- package/src/classes/callbacks/validation/CustomCallbackBomb.ts +27 -0
- package/src/classes/callbacks/validation/CustomCallbackCollectible.ts +30 -0
- package/src/classes/callbacks/validation/CustomCallbackDoor.ts +28 -0
- package/src/classes/callbacks/validation/CustomCallbackEffect.ts +29 -0
- package/src/classes/callbacks/validation/CustomCallbackFamiliar.ts +30 -0
- package/src/classes/callbacks/validation/CustomCallbackGridEntity.ts +42 -0
- package/src/classes/callbacks/validation/CustomCallbackGridEntityCustom.ts +36 -0
- package/src/classes/callbacks/validation/CustomCallbackKnife.ts +27 -0
- package/src/classes/callbacks/validation/CustomCallbackPit.ts +28 -0
- package/src/classes/callbacks/validation/CustomCallbackPlayer.ts +47 -0
- package/src/classes/callbacks/validation/CustomCallbackRevive.ts +27 -0
- package/src/classes/callbacks/validation/CustomCallbackSpikes.ts +28 -0
- package/src/classes/features/callbackLogic/CustomGridEntities.ts +398 -0
- package/src/classes/features/callbackLogic/CustomRevive.ts +214 -0
- package/src/classes/features/callbackLogic/EsauJrDetection.ts +98 -0
- package/src/classes/features/callbackLogic/FlipDetection.ts +82 -0
- package/src/classes/features/callbackLogic/GameReorderedCallbacks.ts +160 -0
- package/src/classes/features/callbackLogic/GridEntityCollisionDetection.ts +90 -0
- package/src/classes/features/callbackLogic/GridEntityDetection.ts +231 -0
- package/src/classes/features/callbackLogic/PlayerReorderedCallbacks.ts +126 -0
- package/src/classes/features/other/RunInNFrames.ts +256 -0
- package/src/classes/private/CustomCallback.ts +82 -0
- package/src/classes/private/Feature.ts +24 -0
- package/src/core/upgradeMod.ts +77 -17
- package/src/decorators.ts +13 -0
- package/src/enums/ISCFeature.ts +47 -0
- package/src/enums/LadderSubTypeCustom.ts +17 -0
- package/src/enums/ModCallbackCustom.ts +314 -243
- package/src/enums/ModCallbackCustom2.ts +57 -0
- package/src/features/customGridEntity.ts +3 -7
- package/src/features/{setHotkey.ts → customHotkeys.ts} +2 -2
- package/src/features/customPickup.ts +4 -2
- package/src/features/customStage/backdrop.ts +2 -1
- package/src/features/customStage/shadows.ts +2 -1
- package/src/features/customTrapdoor/init.ts +0 -1
- package/src/features/customTrapdoor/touched.ts +1 -1
- package/src/features/deployJSONRoom.ts +3 -7
- package/src/features/extraConsoleCommands/listCommands.ts +1 -1
- package/src/features/firstLast.ts +3 -7
- package/src/features/saveDataManager/constants.ts +1 -1
- package/src/features/saveDataManager/exports.ts +27 -0
- package/src/features/saveDataManager/main.ts +30 -21
- package/src/features/saveDataManager/save.ts +2 -2
- package/src/features.ts +90 -0
- package/src/functions/ambush.ts +26 -1
- package/src/functions/characters.ts +3 -3
- package/src/functions/charge.ts +30 -8
- package/src/functions/chargeBar.ts +6 -0
- package/src/functions/decorators.ts +45 -0
- package/src/functions/flying.ts +4 -4
- package/src/functions/gridEntities.ts +5 -5
- package/src/functions/gridEntitiesSpecific.ts +12 -12
- package/src/functions/itemPool.ts +2 -2
- package/src/functions/minimap.ts +4 -0
- package/src/functions/playerHealth.ts +6 -6
- package/src/functions/playerIndex.ts +2 -2
- package/src/functions/players.ts +26 -7
- package/src/functions/pocketItems.ts +1 -1
- package/src/functions/roomTransition.ts +3 -27
- package/src/functions/rooms.ts +1 -1
- package/src/functions/run.ts +12 -0
- package/src/functions/spawnCollectible.ts +44 -4
- package/src/functions/table.ts +11 -0
- package/src/functions/trinkets.ts +1 -1
- package/src/functions/tstlClass.ts +48 -24
- package/src/functions/utils.ts +56 -2
- package/src/index.ts +15 -2
- package/src/initCustomCallbacks.ts +1 -2
- package/src/initFeatures.ts +2 -2
- package/src/interfaces/SaveData.ts +4 -2
- package/src/interfaces/{private/TSTLClassMetatable.ts → TSTLClassMetatable.ts} +0 -0
- package/src/interfaces/private/{AddCallbackParameterCustom.ts → AddCallbackParametersCustom.ts} +4 -23
- package/src/interfaces/private/AddCallbackParametersCustom2.ts +343 -0
- package/src/maps/characterNameToTypeMap.ts +12 -12
- package/src/objects/callbackRegisterFunctions.ts +2 -4
- package/src/objects/characterDamageMultipliers.ts +6 -6
- package/src/objects/characterNames.ts +6 -6
- package/src/objects/playerNamePNGFileNames.ts +6 -6
- package/src/objects/playerPortraitPNGFileNames.ts +6 -6
- package/src/sets/charactersThatStartWithAnActiveItemSet.ts +1 -1
- package/src/sets/charactersWithFreeDevilDealsSet.ts +1 -1
- package/src/sets/charactersWithNoRedHeartsSet.ts +3 -3
- package/src/sets/charactersWithNoSoulHeartsSet.ts +2 -2
- package/src/sets/lostStyleCharactersSet.ts +4 -4
- package/src/types/AllButFirst.ts +6 -0
- package/src/types/AllButLast.ts +3 -0
- package/src/types/Constructor.ts +2 -0
- package/src/types/FunctionTuple.ts +4 -0
- package/src/types/HasAllEnumKeys.ts +25 -0
- package/src/types/LowercaseKeys.ts +3 -0
- package/src/types/StartsWithLowercase.ts +3 -0
- package/src/types/StartsWithUppercase.ts +3 -0
- package/src/types/UnionToIntersection.ts +6 -0
- package/src/types/UppercaseKeys.ts +3 -0
- package/src/types/private/AllButFirst.ts +6 -0
- package/src/types/private/CallbackTuple.ts +21 -0
- package/src/types/private/MatchingCallbackCustom.ts +32 -0
- package/dist/src/callbacks/postCustomDoorEnter.d.ts +0 -6
- package/dist/src/callbacks/postCustomDoorEnter.d.ts.map +0 -1
- package/dist/src/callbacks/postCustomDoorEnter.lua +0 -199
- package/dist/src/callbacks/subscriptions/postCustomDoorEnter.d.ts +0 -9
- package/dist/src/callbacks/subscriptions/postCustomDoorEnter.d.ts.map +0 -1
- package/dist/src/callbacks/subscriptions/postCustomDoorEnter.lua +0 -29
- package/dist/src/classes/CustomCallback.d.ts +0 -8
- package/dist/src/classes/CustomCallback.d.ts.map +0 -1
- package/dist/src/classes/CustomCallback.lua +0 -28
- package/dist/src/features/customDoor.d.ts +0 -51
- package/dist/src/features/customDoor.d.ts.map +0 -1
- package/dist/src/features/customDoor.lua +0 -53
- package/dist/src/features/setHotkey.d.ts.map +0 -1
- package/dist/src/interfaces/private/AddCallbackParameterCustom.d.ts.map +0 -1
- package/dist/src/interfaces/private/TSTLClassMetatable.d.ts.map +0 -1
- package/src/callbacks/postCustomDoorEnter.ts +0 -250
- package/src/callbacks/subscriptions/postCustomDoorEnter.ts +0 -42
- package/src/classes/CustomCallback.ts +0 -23
- package/src/features/customDoor.ts +0 -66
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { ModCallback } from "isaac-typescript-definitions";
|
|
2
|
+
import { game } from "../../../core/cachedClasses";
|
|
3
|
+
import { arrayRemoveInPlace } from "../../../functions/array";
|
|
4
|
+
import { Feature } from "../../private/Feature";
|
|
5
|
+
|
|
6
|
+
/** Used for `runInNFrames` functions. */
|
|
7
|
+
type QueuedFunctionTuple = [frameCountToFire: int, func: () => void];
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Used for `setInterval` functions.
|
|
11
|
+
*
|
|
12
|
+
* The return value is whether or not to continue the function from firing.
|
|
13
|
+
*/
|
|
14
|
+
type IntervalFunctionTuple = [
|
|
15
|
+
frameCountToFire: int,
|
|
16
|
+
func: () => boolean,
|
|
17
|
+
numIntervalFrames: int,
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
export class RunInNFrames extends Feature {
|
|
21
|
+
public override v = {
|
|
22
|
+
run: {
|
|
23
|
+
queuedGameFunctionTuples: [] as QueuedFunctionTuple[],
|
|
24
|
+
queuedRenderFunctionTuples: [] as QueuedFunctionTuple[],
|
|
25
|
+
|
|
26
|
+
intervalGameFunctionTuples: [] as IntervalFunctionTuple[],
|
|
27
|
+
intervalRenderFunctionTuples: [] as IntervalFunctionTuple[],
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
constructor() {
|
|
32
|
+
super();
|
|
33
|
+
|
|
34
|
+
this.callbacksUsed = [
|
|
35
|
+
[ModCallback.POST_UPDATE, [this.postUpdate]], // 1
|
|
36
|
+
[ModCallback.POST_RENDER, [this.postRender]], // 2
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// ModCallback.POST_UPDATE (1)
|
|
41
|
+
private postUpdate = (): void => {
|
|
42
|
+
const gameFrameCount = game.GetFrameCount();
|
|
43
|
+
|
|
44
|
+
checkExecuteQueuedFunctions(
|
|
45
|
+
gameFrameCount,
|
|
46
|
+
this.v.run.queuedGameFunctionTuples,
|
|
47
|
+
);
|
|
48
|
+
checkExecuteIntervalFunctions(
|
|
49
|
+
gameFrameCount,
|
|
50
|
+
this.v.run.intervalGameFunctionTuples,
|
|
51
|
+
);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// ModCallback.POST_RENDER (2)
|
|
55
|
+
private postRender = (): void => {
|
|
56
|
+
const renderFrameCount = Isaac.GetFrameCount();
|
|
57
|
+
|
|
58
|
+
checkExecuteQueuedFunctions(
|
|
59
|
+
renderFrameCount,
|
|
60
|
+
this.v.run.queuedRenderFunctionTuples,
|
|
61
|
+
);
|
|
62
|
+
checkExecuteIntervalFunctions(
|
|
63
|
+
renderFrameCount,
|
|
64
|
+
this.v.run.intervalRenderFunctionTuples,
|
|
65
|
+
);
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// --------------
|
|
69
|
+
// Public methods
|
|
70
|
+
// --------------
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Supply a function to run N game frames from now in the `POST_UPDATE` callback.
|
|
74
|
+
*
|
|
75
|
+
* For a usage example, see the documentation for the `runNextGameFrame`, which is used in a
|
|
76
|
+
* similar way.
|
|
77
|
+
*
|
|
78
|
+
* Note that this function will not handle saving and quitting. If a player saving and quitting
|
|
79
|
+
* before the deferred function fires would cause a bug in your mod, then you should handle
|
|
80
|
+
* deferred functions manually using serializable data.
|
|
81
|
+
*/
|
|
82
|
+
public runInNGameFrames(func: () => void, gameFrames: int): void {
|
|
83
|
+
const gameFrameCount = game.GetFrameCount();
|
|
84
|
+
const functionFireFrame = gameFrameCount + gameFrames;
|
|
85
|
+
const tuple: QueuedFunctionTuple = [functionFireFrame, func];
|
|
86
|
+
this.v.run.queuedGameFunctionTuples.push(tuple);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Supply a function to run N render frames from now in the `POST_RENDER` callback.
|
|
91
|
+
*
|
|
92
|
+
* For a usage example, see the documentation for the `runNextGameFrame`, which is used in a
|
|
93
|
+
* similar way.
|
|
94
|
+
*
|
|
95
|
+
* Note that this function will not handle saving and quitting. If a player saving and quitting
|
|
96
|
+
* before the deferred function fires would cause a bug in your mod, then you should handle
|
|
97
|
+
* deferred functions manually using serializable data.
|
|
98
|
+
*/
|
|
99
|
+
public runInNRenderFrames(func: () => void, renderFrames: int): void {
|
|
100
|
+
const renderFrameCount = Isaac.GetFrameCount();
|
|
101
|
+
const functionFireFrame = renderFrameCount + renderFrames;
|
|
102
|
+
const tuple: QueuedFunctionTuple = [functionFireFrame, func];
|
|
103
|
+
this.v.run.queuedRenderFunctionTuples.push(tuple);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Supply a function to run on the next `POST_UPDATE` callback.
|
|
108
|
+
*
|
|
109
|
+
* For example:
|
|
110
|
+
*
|
|
111
|
+
* ```ts
|
|
112
|
+
* const NUM_EXPLODER_EXPLOSIONS = 5;
|
|
113
|
+
*
|
|
114
|
+
* function useItemExploder(player: EntityPlayer) {
|
|
115
|
+
* playSound("exploderBegin");
|
|
116
|
+
* explode(player, NUM_EXPLODER_EXPLOSIONS);
|
|
117
|
+
* }
|
|
118
|
+
*
|
|
119
|
+
* function explode(player: EntityPlayer, numFramesLeft: int) {
|
|
120
|
+
* Isaac.Explode(player, undefined, 1);
|
|
121
|
+
* numFramesLeft -= 1;
|
|
122
|
+
* if (numFramesLeft === 0) {
|
|
123
|
+
* runNextFrame(() => {
|
|
124
|
+
* explode(player, numFramesLeft);
|
|
125
|
+
* });
|
|
126
|
+
* }
|
|
127
|
+
* }
|
|
128
|
+
* ```
|
|
129
|
+
*
|
|
130
|
+
* Note that this function will not handle saving and quitting. If a player saving and quitting
|
|
131
|
+
* before the deferred function fires would cause a bug in your mod, then you should handle
|
|
132
|
+
* deferred functions manually using serializable data.
|
|
133
|
+
*/
|
|
134
|
+
public runNextGameFrame(func: () => void): void {
|
|
135
|
+
this.runInNGameFrames(func, 1);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Supply a function to run on the next `POST_RENDER` callback.
|
|
140
|
+
*
|
|
141
|
+
* For a usage example, see the documentation for the `runNextGameFrame`, which is used in a
|
|
142
|
+
* similar way.
|
|
143
|
+
*
|
|
144
|
+
* Note that this function will not handle saving and quitting.
|
|
145
|
+
*/
|
|
146
|
+
public runNextRenderFrame(func: () => void): void {
|
|
147
|
+
this.runInNRenderFrames(func, 1);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Supply a function to be repeatedly run on an interval of N game frames in the `POST_UPDATE`
|
|
152
|
+
* callback. The function will continue to be fired until `false` is returned from the function.
|
|
153
|
+
*
|
|
154
|
+
* This is similar to the `setInterval` vanilla JavaScript function, except there is no
|
|
155
|
+
* corresponding `clearInterval` function. (Instead, the return value from the supplied function
|
|
156
|
+
* is used to stop the interval.)
|
|
157
|
+
*
|
|
158
|
+
* Note that this function will not handle saving and quitting. You must manually restart any
|
|
159
|
+
* intervals if the player saves and quits in the middle of a run.
|
|
160
|
+
*
|
|
161
|
+
* @param func The function to repeatedly run on an interval.
|
|
162
|
+
* @param gameFrames The amount of game frames to wait between each run.
|
|
163
|
+
* @param runImmediately Whether or not to execute the function right now before waiting for the
|
|
164
|
+
* interval.
|
|
165
|
+
*/
|
|
166
|
+
public setIntervalGameFrames(
|
|
167
|
+
func: () => boolean,
|
|
168
|
+
gameFrames: int,
|
|
169
|
+
runImmediately: boolean,
|
|
170
|
+
): void {
|
|
171
|
+
const gameFrameCount = game.GetFrameCount();
|
|
172
|
+
const functionFireFrame = gameFrameCount + gameFrames;
|
|
173
|
+
const tuple: IntervalFunctionTuple = [functionFireFrame, func, gameFrames];
|
|
174
|
+
this.v.run.intervalGameFunctionTuples.push(tuple);
|
|
175
|
+
|
|
176
|
+
if (runImmediately) {
|
|
177
|
+
func();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Supply a function to be repeatedly run on an interval of N render frames in the `POST_RENDER`
|
|
183
|
+
* callback. The function will continue to be fired until `false` is returned from the function.
|
|
184
|
+
*
|
|
185
|
+
* This is similar to the `setInterval` vanilla JavaScript function, except there is no
|
|
186
|
+
* corresponding `clearInterval` function. (Instead, the return value from the supplied function
|
|
187
|
+
* is used to stop the interval.)
|
|
188
|
+
*
|
|
189
|
+
* Note that this function will not handle saving and quitting. You must manually restart any
|
|
190
|
+
* intervals if the player saves and quits in the middle of a run.
|
|
191
|
+
*
|
|
192
|
+
* @param func The function to repeatedly run on an interval.
|
|
193
|
+
* @param renderFrames The amount of game frames to wait between each run.
|
|
194
|
+
* @param runImmediately Whether or not to execute the function right now before waiting for the
|
|
195
|
+
* interval.
|
|
196
|
+
*/
|
|
197
|
+
public setIntervalRenderFrames(
|
|
198
|
+
func: () => boolean,
|
|
199
|
+
renderFrames: int,
|
|
200
|
+
runImmediately: boolean,
|
|
201
|
+
): void {
|
|
202
|
+
const renderFrameCount = Isaac.GetFrameCount();
|
|
203
|
+
const functionFireFrame = renderFrameCount + renderFrames;
|
|
204
|
+
const tuple: IntervalFunctionTuple = [
|
|
205
|
+
functionFireFrame,
|
|
206
|
+
func,
|
|
207
|
+
renderFrames,
|
|
208
|
+
];
|
|
209
|
+
this.v.run.intervalGameFunctionTuples.push(tuple);
|
|
210
|
+
|
|
211
|
+
if (runImmediately) {
|
|
212
|
+
func();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
function checkExecuteQueuedFunctions(
|
|
218
|
+
frameCount: int,
|
|
219
|
+
functionTuples: QueuedFunctionTuple[],
|
|
220
|
+
) {
|
|
221
|
+
const firingFunctions = functionTuples.filter(
|
|
222
|
+
([frameCountToFire]) => frameCount >= frameCountToFire,
|
|
223
|
+
);
|
|
224
|
+
|
|
225
|
+
for (const tuple of firingFunctions) {
|
|
226
|
+
const [_frameCountToFire, func] = tuple;
|
|
227
|
+
func();
|
|
228
|
+
arrayRemoveInPlace(functionTuples, tuple);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
function checkExecuteIntervalFunctions(
|
|
233
|
+
frameCount: int,
|
|
234
|
+
functionTuples: IntervalFunctionTuple[],
|
|
235
|
+
) {
|
|
236
|
+
const firingFunctions = functionTuples.filter(
|
|
237
|
+
([frameCountToFire]) => frameCount >= frameCountToFire,
|
|
238
|
+
);
|
|
239
|
+
|
|
240
|
+
for (const tuple of firingFunctions) {
|
|
241
|
+
const [_frameCountToFire, func, numIntervalFrames] = tuple;
|
|
242
|
+
const returnValue = func();
|
|
243
|
+
arrayRemoveInPlace(functionTuples, tuple);
|
|
244
|
+
|
|
245
|
+
// Queue the next interval (as long as the function did not return false).
|
|
246
|
+
if (returnValue) {
|
|
247
|
+
const nextFireFrame = frameCount + numIntervalFrames;
|
|
248
|
+
const newTuple: IntervalFunctionTuple = [
|
|
249
|
+
nextFireFrame,
|
|
250
|
+
func,
|
|
251
|
+
numIntervalFrames,
|
|
252
|
+
];
|
|
253
|
+
functionTuples.push(newTuple);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { ModCallbackCustom2 } from "../../enums/ModCallbackCustom2";
|
|
2
|
+
import { AddCallbackParametersCustom2 } from "../../interfaces/private/AddCallbackParametersCustom2";
|
|
3
|
+
import { AllButFirst } from "../../types/private/AllButFirst";
|
|
4
|
+
import { Feature } from "./Feature";
|
|
5
|
+
|
|
6
|
+
export type FireArgs<T extends ModCallbackCustom2> = Parameters<
|
|
7
|
+
AddCallbackParametersCustom2[T][0]
|
|
8
|
+
>;
|
|
9
|
+
export type OptionalArgs<T extends ModCallbackCustom2> = AllButFirst<
|
|
10
|
+
AddCallbackParametersCustom2[T]
|
|
11
|
+
>;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The base class for a custom callback. Individual custom callbacks (and validation callbacks) will
|
|
15
|
+
* extend from this class.
|
|
16
|
+
*/
|
|
17
|
+
export abstract class CustomCallback<
|
|
18
|
+
T extends ModCallbackCustom2,
|
|
19
|
+
> extends Feature {
|
|
20
|
+
private subscriptions: Array<AddCallbackParametersCustom2[T]> = [];
|
|
21
|
+
|
|
22
|
+
public hasSubscriptions(): boolean {
|
|
23
|
+
return this.subscriptions.length > 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
public add(...args: AddCallbackParametersCustom2[T]): void {
|
|
27
|
+
this.subscriptions.push(args);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* If the submitted function does not match any of the existing subscriptions, this method will do
|
|
32
|
+
* nothing.
|
|
33
|
+
*/
|
|
34
|
+
public remove(callback: AddCallbackParametersCustom2[T][0]): void {
|
|
35
|
+
const subscriptionIndexMatchingCallback = this.subscriptions.findIndex(
|
|
36
|
+
(subscription) => {
|
|
37
|
+
const subscriptionCallback = subscription[0];
|
|
38
|
+
return callback === subscriptionCallback;
|
|
39
|
+
},
|
|
40
|
+
);
|
|
41
|
+
if (subscriptionIndexMatchingCallback !== -1) {
|
|
42
|
+
this.subscriptions.splice(subscriptionIndexMatchingCallback, 1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public fire = (
|
|
47
|
+
...fireArgs: FireArgs<T>
|
|
48
|
+
): ReturnType<AddCallbackParametersCustom2[T][0]> => {
|
|
49
|
+
for (const [callback, ...optionalArgsArray] of this.subscriptions) {
|
|
50
|
+
// The TypeScript compiler is bugged with the spread operator here, as it converts the
|
|
51
|
+
// optional arguments to an array instead of a tuple.
|
|
52
|
+
const optionalArgs = optionalArgsArray as OptionalArgs<T>;
|
|
53
|
+
|
|
54
|
+
if (this.shouldFire(fireArgs, optionalArgs)) {
|
|
55
|
+
// The TypeScript compiler is not smart enough to know that the fire args match the callback
|
|
56
|
+
// signature.
|
|
57
|
+
const callbackCasted = callback as (
|
|
58
|
+
...args: FireArgs<T>
|
|
59
|
+
) => ReturnType<AddCallbackParametersCustom2[T][0]>;
|
|
60
|
+
const value = callbackCasted(...fireArgs);
|
|
61
|
+
if (value !== undefined) {
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return undefined as ReturnType<AddCallbackParametersCustom2[T][0]>;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* This method needs to be overwritten for any callback that has optional filtration arguments.
|
|
72
|
+
*/
|
|
73
|
+
// eslint-disable-next-line class-methods-use-this
|
|
74
|
+
protected shouldFire(
|
|
75
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
76
|
+
fireArgs: FireArgs<T>,
|
|
77
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
78
|
+
optionalArgs: OptionalArgs<T>,
|
|
79
|
+
): boolean {
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ISCFeature } from "../../enums/ISCFeature";
|
|
2
|
+
import { SaveData } from "../../interfaces/SaveData";
|
|
3
|
+
import {
|
|
4
|
+
CallbackTuple,
|
|
5
|
+
CustomCallbackTuple,
|
|
6
|
+
} from "../../types/private/CallbackTuple";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The IsaacScript standard library contains many optional features, such as the ability to create
|
|
10
|
+
* custom pickups. All features are optional and are only initialized when needed. This class
|
|
11
|
+
* contains elements to facilitate that.
|
|
12
|
+
*
|
|
13
|
+
* Additionally, all custom callbacks extend from this class.
|
|
14
|
+
*/
|
|
15
|
+
export class Feature {
|
|
16
|
+
public initialized = false;
|
|
17
|
+
|
|
18
|
+
public v?: SaveData;
|
|
19
|
+
public featuresUsed?: ISCFeature[];
|
|
20
|
+
public callbacksUsed?: CallbackTuple[];
|
|
21
|
+
public customCallbacksUsed?: CustomCallbackTuple[];
|
|
22
|
+
|
|
23
|
+
public exportedMethods: string[] = [];
|
|
24
|
+
}
|
package/src/core/upgradeMod.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { postNewRoomEarlyCallbackInit } from "../callbacks/postNewRoomEarly";
|
|
2
2
|
import { ModUpgraded } from "../classes/ModUpgraded";
|
|
3
|
-
import {
|
|
3
|
+
import { Feature } from "../classes/private/Feature";
|
|
4
|
+
import { ISCFeature } from "../enums/ISCFeature";
|
|
5
|
+
import { ISCFeatureToClass } from "../features";
|
|
6
|
+
import {
|
|
7
|
+
saveDataManagerInit,
|
|
8
|
+
SAVE_DATA_MANAGER_CALLBACKS,
|
|
9
|
+
SAVE_DATA_MANAGER_CUSTOM_CALLBACKS,
|
|
10
|
+
} from "../features/saveDataManager/main";
|
|
4
11
|
import {
|
|
5
12
|
areFeaturesInitialized,
|
|
6
13
|
setFeaturesInitialized,
|
|
@@ -9,6 +16,24 @@ import { initCustomCallbacks } from "../initCustomCallbacks";
|
|
|
9
16
|
import { initFeatures } from "../initFeatures";
|
|
10
17
|
import { patchErrorFunction } from "../patchErrorFunctions";
|
|
11
18
|
import { loadShaderCrashFix } from "../shaderCrashFix";
|
|
19
|
+
import { LowercaseKeys } from "../types/LowercaseKeys";
|
|
20
|
+
import { UnionToIntersection } from "../types/UnionToIntersection";
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* By specifying one or more optional features, end-users will get a version of `ModUpgraded` that
|
|
24
|
+
* has extra methods corresponding to the features.
|
|
25
|
+
*
|
|
26
|
+
* We have to explicitly account for the empty array case, since `never` will cause mess up the
|
|
27
|
+
* union.
|
|
28
|
+
*/
|
|
29
|
+
type ModUpgradedWithFeatures<T extends ISCFeature> = [T] extends [never]
|
|
30
|
+
? ModUpgraded
|
|
31
|
+
: Omit<
|
|
32
|
+
ModUpgraded & UnionToIntersection<ISCFeatureToClass[T]>,
|
|
33
|
+
KeysToScrubFromModClass
|
|
34
|
+
>;
|
|
35
|
+
|
|
36
|
+
type KeysToScrubFromModClass = keyof Feature | LowercaseKeys<ModUpgraded>;
|
|
12
37
|
|
|
13
38
|
/**
|
|
14
39
|
* Use this function to enable the custom callbacks and other optional features provided by
|
|
@@ -28,6 +53,8 @@ import { loadShaderCrashFix } from "../shaderCrashFix";
|
|
|
28
53
|
* ```
|
|
29
54
|
*
|
|
30
55
|
* @param modVanilla The mod object returned by the `RegisterMod` function.
|
|
56
|
+
* @param features Optional. An array containing the optional standard library features that you
|
|
57
|
+
* want to enable, if any. Default is an empty array.
|
|
31
58
|
* @param debug Optional. Whether to log additional output when a callback is fired. Default is
|
|
32
59
|
* false.
|
|
33
60
|
* @param timeThreshold Optional. If provided, will only log callbacks that take longer than the
|
|
@@ -35,32 +62,65 @@ import { loadShaderCrashFix } from "../shaderCrashFix";
|
|
|
35
62
|
* or milliseconds (if the "--luadebug" launch flag is turned off).
|
|
36
63
|
* @returns The upgraded mod object.
|
|
37
64
|
*/
|
|
38
|
-
export function upgradeMod(
|
|
65
|
+
export function upgradeMod<T extends ISCFeature = never>(
|
|
39
66
|
modVanilla: Mod,
|
|
67
|
+
features: T[] = [],
|
|
40
68
|
debug = false,
|
|
41
69
|
timeThreshold?: float,
|
|
42
|
-
):
|
|
70
|
+
): ModUpgradedWithFeatures<T> {
|
|
43
71
|
const mod = new ModUpgraded(modVanilla, debug, timeThreshold);
|
|
44
72
|
|
|
45
|
-
if (
|
|
46
|
-
|
|
73
|
+
if (areFeaturesInitialized()) {
|
|
74
|
+
error(
|
|
75
|
+
"Failed to upgrade the mod since a mod has already been initialized. (You can only upgrade one mod per IsaacScript project.)",
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
setFeaturesInitialized();
|
|
47
79
|
|
|
48
|
-
|
|
49
|
-
|
|
80
|
+
patchErrorFunction();
|
|
81
|
+
loadShaderCrashFix(modVanilla);
|
|
50
82
|
|
|
51
|
-
|
|
52
|
-
// manager.
|
|
53
|
-
postNewRoomEarlyCallbackInit(mod);
|
|
83
|
+
legacyInit(mod); // TODO: remove
|
|
54
84
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
saveDataManagerInit(mod);
|
|
85
|
+
for (const feature of features) {
|
|
86
|
+
const tstlClassMethods = mod.initOptionalFeature(feature);
|
|
58
87
|
|
|
59
|
-
//
|
|
60
|
-
|
|
88
|
+
// If the optional feature provides helper functions, attach them to the base mod object. (This
|
|
89
|
+
// provides a convenient API for end-users.)
|
|
90
|
+
const modRecord = mod as unknown as Record<
|
|
91
|
+
string,
|
|
92
|
+
(...args: unknown[]) => unknown
|
|
93
|
+
>;
|
|
94
|
+
for (const [funcName, func] of tstlClassMethods) {
|
|
95
|
+
modRecord[funcName] = func;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return mod as ModUpgradedWithFeatures<T>;
|
|
100
|
+
}
|
|
61
101
|
|
|
62
|
-
|
|
102
|
+
/** Initialize features in the old way. */
|
|
103
|
+
function legacyInit(mod: ModUpgraded) {
|
|
104
|
+
// We initialize the `POST_NEW_ROOM_EARLY` callback first since it is used by the save data
|
|
105
|
+
// manager.
|
|
106
|
+
postNewRoomEarlyCallbackInit(mod);
|
|
107
|
+
|
|
108
|
+
// We initialized the save data manager second since it is used by the other custom callbacks and
|
|
109
|
+
// features. We can't pass the instantiated `ModUpgraded` class to the "saveDataManagerInit"
|
|
110
|
+
// function since it causes a circular dependency. Thus, we emulate the initialization process
|
|
111
|
+
// that the `ModUpgraded.AddCallbackCustom` method uses.
|
|
112
|
+
saveDataManagerInit(mod);
|
|
113
|
+
for (const callbackTuple of SAVE_DATA_MANAGER_CALLBACKS) {
|
|
114
|
+
const [modCallback, callbackArgs] = callbackTuple;
|
|
115
|
+
mod.AddCallback(modCallback, ...callbackArgs);
|
|
116
|
+
}
|
|
117
|
+
for (const callbackTuple of SAVE_DATA_MANAGER_CUSTOM_CALLBACKS) {
|
|
118
|
+
const [modCallback, callbackArgs] = callbackTuple;
|
|
119
|
+
mod.AddCallbackCustom(modCallback, ...callbackArgs);
|
|
63
120
|
}
|
|
64
121
|
|
|
65
|
-
|
|
122
|
+
// We initialize custom callbacks next since some features use custom callbacks.
|
|
123
|
+
initCustomCallbacks(mod);
|
|
124
|
+
|
|
125
|
+
initFeatures(mod);
|
|
66
126
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Feature } from "./classes/private/Feature";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A decorator function that signifies that the decorated class method should be added to the
|
|
5
|
+
* `ModUpgraded` object.
|
|
6
|
+
*
|
|
7
|
+
* This is only meant to be used internally.
|
|
8
|
+
*/
|
|
9
|
+
export function Exported() {
|
|
10
|
+
return <T extends Feature>(target: T, propertyKey: keyof T): void => {
|
|
11
|
+
target.exportedMethods.push(propertyKey as string);
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/* eslint-disable isaacscript/format-line-comments */
|
|
2
|
+
/* eslint-disable isaacscript/complete-sentences-line-comments */
|
|
3
|
+
|
|
4
|
+
export enum ISCFeature {
|
|
5
|
+
// Callback logic
|
|
6
|
+
CUSTOM_REVIVE = "CustomRevive",
|
|
7
|
+
ESAU_JR_DETECTION = "EsauJrDetection",
|
|
8
|
+
FLIP_DETECTION = "FlipDetection",
|
|
9
|
+
GRID_ENTITY_COLLISION_DETECTION = "GridEntityCollisionDetection",
|
|
10
|
+
GRID_ENTITY_DETECTION = "GridEntityDetection",
|
|
11
|
+
GAME_REORDERED_CALLBACKS = "GameReorderedCallbacks",
|
|
12
|
+
PLAYER_REORDERED_CALLBACKS = "PlayerReorderedCallbacks",
|
|
13
|
+
|
|
14
|
+
// Extra features
|
|
15
|
+
// CHARACTER_HEALTH_CONVERSION = "characterHealthConversion",
|
|
16
|
+
// CHARACTER_STATS = "characterStats",
|
|
17
|
+
// COLLECTIBLE_ITEM_POOL_TYPE = "collectibleItemPoolType",
|
|
18
|
+
CUSTOM_GRID_ENTITIES = "CustomGridEntities",
|
|
19
|
+
// CUSTOM_HOTKEYS = "customHotkeys",
|
|
20
|
+
// CUSTOM_PICKUP = "customPickup",
|
|
21
|
+
// CUSTOM_STAGE = "customStage",
|
|
22
|
+
// CUSTOM_TRAPDOOR = "customTrapdoor",
|
|
23
|
+
// DEBUG_DISPLAY = "debugDisplay",
|
|
24
|
+
// DEPLOY_JSON_ROOM = "deployJSONRoom",
|
|
25
|
+
// DISABLE_ALL_SOUND = "displayAllSound",
|
|
26
|
+
// DISABLE_INPUTS = "disableInputs",
|
|
27
|
+
// FADE_IN_REMOVER = "fadeInRemover",
|
|
28
|
+
// FAST_RESET = "fastReset",
|
|
29
|
+
// FIRST_LAST = "firstLast",
|
|
30
|
+
// FORGOTTEN_SWITCH = "forgottenSwitch",
|
|
31
|
+
// EXTRA_CONSOLE_COMMANDS = "extraConsoleCommands",
|
|
32
|
+
// PAUSE = "pause",
|
|
33
|
+
// PERSISTENT_ENTITIES = "persistentEntities",
|
|
34
|
+
// PICKUP_INDEX = "pickupIndex",
|
|
35
|
+
// PLAYER_INVENTORY = "playerInventory",
|
|
36
|
+
// PONY_DETECTION = "ponyDetection",
|
|
37
|
+
// PREVENT_CHILD_ENTITIES = "preventChildEntities",
|
|
38
|
+
// PREVENT_COLLECTIBLE_ROTATION = "preventCollectibleRotation",
|
|
39
|
+
// ROOM_CLEAR_FRAME = "roomClearFrame",
|
|
40
|
+
// ROOM_HISTORY = "roomHistory",
|
|
41
|
+
RUN_IN_N_FRAMES = "runInNFrames",
|
|
42
|
+
// RUN_NEXT_ROOM = "runNextRoom",
|
|
43
|
+
// SAVE_DATA_MANAGER = "saveDataManager",
|
|
44
|
+
// SIREN_HELPERS = "sirenHelpers",
|
|
45
|
+
// STAGE_HISTORY = "stageHistory",
|
|
46
|
+
// TAINTED_LAZARUS_PLAYERS = "taintedLazarusPlayers",
|
|
47
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* For `EntityType.EFFECT` (1000), `EffectVariant.LADDER` (8).
|
|
3
|
+
*
|
|
4
|
+
* Note that vanilla ladders only use a sub-type of 0. The `isaacscript-common` library uses ladders
|
|
5
|
+
* to represent custom objects, since they are non-interacting and will not automatically despawn
|
|
6
|
+
* after time passes, unlike most other effects.
|
|
7
|
+
*
|
|
8
|
+
* This enum tracks the kinds of custom objects that are represented by vanilla ladders. We start
|
|
9
|
+
* assigning sub-types after 100 as to not interfere with any possible modded ladder variants.
|
|
10
|
+
*/
|
|
11
|
+
export enum LadderSubTypeCustom {
|
|
12
|
+
LADDER = 0,
|
|
13
|
+
|
|
14
|
+
CUSTOM_BACKDROP = 101,
|
|
15
|
+
CUSTOM_SHADOW = 102,
|
|
16
|
+
CUSTOM_PICKUP = 103,
|
|
17
|
+
}
|