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,82 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CollectibleType,
|
|
3
|
+
ModCallback,
|
|
4
|
+
PlayerType,
|
|
5
|
+
UseFlag,
|
|
6
|
+
} from "isaac-typescript-definitions";
|
|
7
|
+
import { getPlayersOfType, isTaintedLazarus } from "../../../functions/players";
|
|
8
|
+
import { PostFirstFlip } from "../../callbacks/PostFirstFlip";
|
|
9
|
+
import { PostFlip } from "../../callbacks/PostFlip";
|
|
10
|
+
import { Feature } from "../../private/Feature";
|
|
11
|
+
|
|
12
|
+
export class FlipDetection extends Feature {
|
|
13
|
+
public override v = {
|
|
14
|
+
run: {
|
|
15
|
+
/** We don't consider the case of a multiplayer game with more than one Tainted Lazarus. */
|
|
16
|
+
usedFlipAtLeastOnce: false,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
private postFlip: PostFlip;
|
|
21
|
+
private postFirstFlip: PostFirstFlip;
|
|
22
|
+
|
|
23
|
+
constructor(postFlip: PostFlip, postFirstFlip: PostFirstFlip) {
|
|
24
|
+
super();
|
|
25
|
+
|
|
26
|
+
this.callbacksUsed = [
|
|
27
|
+
[ModCallback.POST_USE_ITEM, [this.useItemFlip, CollectibleType.FLIP]], // 3
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
this.postFlip = postFlip;
|
|
31
|
+
this.postFirstFlip = postFirstFlip;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// ModCallback.POST_USE_ITEM (3)
|
|
35
|
+
// CollectibleType.FLIP (711)
|
|
36
|
+
private useItemFlip = (
|
|
37
|
+
_collectibleType: CollectibleType,
|
|
38
|
+
_rng: RNG,
|
|
39
|
+
player: EntityPlayer,
|
|
40
|
+
_useFlags: BitFlags<UseFlag>,
|
|
41
|
+
_activeSlot: int,
|
|
42
|
+
_customVarData: int,
|
|
43
|
+
): boolean | undefined => {
|
|
44
|
+
if (!isTaintedLazarus(player)) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// The player passed as part of the callback will be the old Lazarus that used the Flip item. We
|
|
49
|
+
// pass the new Lazarus to the callback subscribers.
|
|
50
|
+
const newLazarus = getNewLazarus(player);
|
|
51
|
+
if (newLazarus === undefined) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (!this.v.run.usedFlipAtLeastOnce) {
|
|
56
|
+
this.v.run.usedFlipAtLeastOnce = true;
|
|
57
|
+
this.postFirstFlip.fire(newLazarus, player);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
this.postFlip.fire(newLazarus, player);
|
|
61
|
+
|
|
62
|
+
return undefined;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function getNewLazarus(oldLazarus: EntityPlayer): EntityPlayer | undefined {
|
|
67
|
+
const oldCharacter = oldLazarus.GetPlayerType();
|
|
68
|
+
|
|
69
|
+
let newCharacter: PlayerType;
|
|
70
|
+
if (oldCharacter === PlayerType.LAZARUS_B) {
|
|
71
|
+
newCharacter = PlayerType.LAZARUS_2_B;
|
|
72
|
+
} else if (oldCharacter === PlayerType.LAZARUS_2_B) {
|
|
73
|
+
newCharacter = PlayerType.LAZARUS_B;
|
|
74
|
+
} else {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const playersOfType = getPlayersOfType(newCharacter);
|
|
79
|
+
return playersOfType.find(
|
|
80
|
+
(player) => player.FrameCount === oldLazarus.FrameCount,
|
|
81
|
+
);
|
|
82
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
// This provides the logic for the following callbacks:
|
|
2
|
+
// - `POST_GAME_STARTED_REORDERED`
|
|
3
|
+
// - `POST_GAME_STARTED_REORDERED_LAST`
|
|
4
|
+
// - `POST_NEW_LEVEL_REORDERED`
|
|
5
|
+
// - `POST_NEW_ROOM_REORDERED`
|
|
6
|
+
|
|
7
|
+
// By default, callbacks fire in the following order:
|
|
8
|
+
// - `POST_NEW_ROOM` --> `POST_NEW_LEVEL` --> `POST_GAME_STARTED`
|
|
9
|
+
|
|
10
|
+
// It is easier to write mod code if the callbacks run in a more logical order:
|
|
11
|
+
// - `POST_GAME_STARTED` --> `POST_NEW_LEVEL` --> `POST_NEW_ROOM`
|
|
12
|
+
|
|
13
|
+
// Manually reorganize the callback execution so that this is the case.
|
|
14
|
+
|
|
15
|
+
import {
|
|
16
|
+
CollectibleType,
|
|
17
|
+
LevelStage,
|
|
18
|
+
ModCallback,
|
|
19
|
+
StageType,
|
|
20
|
+
} from "isaac-typescript-definitions";
|
|
21
|
+
import { game } from "../../../core/cachedClasses";
|
|
22
|
+
import { Exported } from "../../../decorators";
|
|
23
|
+
import { PostGameStartedReordered } from "../../callbacks/PostGameStartedReordered";
|
|
24
|
+
import { PostGameStartedReorderedLast } from "../../callbacks/PostGameStartedReorderedLast";
|
|
25
|
+
import { PostNewLevelReordered } from "../../callbacks/PostNewLevelReordered";
|
|
26
|
+
import { PostNewRoomReordered } from "../../callbacks/PostNewRoomReordered";
|
|
27
|
+
import { Feature } from "../../private/Feature";
|
|
28
|
+
|
|
29
|
+
export class GameReorderedCallbacks extends Feature {
|
|
30
|
+
private currentStage: int | null = null;
|
|
31
|
+
private currentStageType: int | null = null;
|
|
32
|
+
private usedGlowingHourGlass = false;
|
|
33
|
+
private forceNewLevel = false;
|
|
34
|
+
private forceNewRoom = false;
|
|
35
|
+
|
|
36
|
+
private postGameStartedReordered: PostGameStartedReordered;
|
|
37
|
+
private postNewLevelReordered: PostNewLevelReordered;
|
|
38
|
+
private postNewRoomReordered: PostNewRoomReordered;
|
|
39
|
+
private postGameStartedReorderedLast: PostGameStartedReorderedLast;
|
|
40
|
+
|
|
41
|
+
constructor(
|
|
42
|
+
postGameStartedReordered: PostGameStartedReordered,
|
|
43
|
+
postNewLevelReordered: PostNewLevelReordered,
|
|
44
|
+
postNewRoomReordered: PostNewRoomReordered,
|
|
45
|
+
postGameStartedReorderedLast: PostGameStartedReorderedLast,
|
|
46
|
+
) {
|
|
47
|
+
super();
|
|
48
|
+
|
|
49
|
+
this.callbacksUsed = [
|
|
50
|
+
[
|
|
51
|
+
ModCallback.POST_USE_ITEM,
|
|
52
|
+
[this.useItemGlowingHourGlass, CollectibleType.GLOWING_HOUR_GLASS],
|
|
53
|
+
], // 3
|
|
54
|
+
[ModCallback.POST_GAME_STARTED, [this.postGameStarted]], // 15
|
|
55
|
+
[ModCallback.POST_NEW_LEVEL, [this.postNewLevel]], // 18
|
|
56
|
+
[ModCallback.POST_NEW_ROOM, [this.postNewRoom]], // 19
|
|
57
|
+
];
|
|
58
|
+
|
|
59
|
+
this.postGameStartedReordered = postGameStartedReordered;
|
|
60
|
+
this.postNewLevelReordered = postNewLevelReordered;
|
|
61
|
+
this.postNewRoomReordered = postNewRoomReordered;
|
|
62
|
+
this.postGameStartedReorderedLast = postGameStartedReorderedLast;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// ModCallback.POST_USE_ITEM (3)
|
|
66
|
+
// CollectibleType.GLOWING_HOUR_GLASS (422)
|
|
67
|
+
private useItemGlowingHourGlass = (): boolean | undefined => {
|
|
68
|
+
// If Glowing Hour Glass is used on the first room of a floor, it will send the player to the
|
|
69
|
+
// previous floor without triggering the `POST_NEW_LEVEL` callback. Manually check for this.
|
|
70
|
+
this.usedGlowingHourGlass = true;
|
|
71
|
+
|
|
72
|
+
return undefined;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
// ModCallback.POST_GAME_STARTED (15)
|
|
76
|
+
private postGameStarted = (isContinued: boolean): void => {
|
|
77
|
+
this.recordCurrentStage();
|
|
78
|
+
this.postGameStartedReordered.fire(isContinued);
|
|
79
|
+
this.postNewLevelReordered.fire();
|
|
80
|
+
this.postNewRoomReordered.fire();
|
|
81
|
+
this.postGameStartedReorderedLast.fire(isContinued);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
// ModCallback.POST_NEW_LEVEL (18)
|
|
85
|
+
private postNewLevel = (): void => {
|
|
86
|
+
const gameFrameCount = game.GetFrameCount();
|
|
87
|
+
|
|
88
|
+
if (gameFrameCount === 0 && !this.forceNewLevel) {
|
|
89
|
+
// Wait for the `POST_GAME_STARTED` callback to fire.
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
this.forceNewLevel = false;
|
|
93
|
+
|
|
94
|
+
this.recordCurrentStage();
|
|
95
|
+
this.postNewLevelReordered.fire();
|
|
96
|
+
this.postNewRoomReordered.fire();
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
// ModCallback.POST_NEW_ROOM (19)
|
|
100
|
+
private postNewRoom = (): void => {
|
|
101
|
+
const gameFrameCount = game.GetFrameCount();
|
|
102
|
+
const level = game.GetLevel();
|
|
103
|
+
const stage = level.GetStage();
|
|
104
|
+
const stageType = level.GetStageType();
|
|
105
|
+
|
|
106
|
+
if (this.usedGlowingHourGlass) {
|
|
107
|
+
this.usedGlowingHourGlass = false;
|
|
108
|
+
|
|
109
|
+
if (this.currentStage !== stage || this.currentStageType !== stageType) {
|
|
110
|
+
// The player has used the Glowing Hour Glass to take them to the previous floor (which does
|
|
111
|
+
// not trigger the `POST_NEW_LEVEL` callback). Emulate what happens in the `POST_NEW_LEVEL`
|
|
112
|
+
// callback.
|
|
113
|
+
this.recordCurrentStage();
|
|
114
|
+
this.postNewLevelReordered.fire();
|
|
115
|
+
this.postNewRoomReordered.fire();
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (
|
|
121
|
+
(gameFrameCount === 0 ||
|
|
122
|
+
this.currentStage !== stage ||
|
|
123
|
+
this.currentStageType !== stageType) &&
|
|
124
|
+
!this.forceNewRoom
|
|
125
|
+
) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
this.forceNewRoom = false;
|
|
129
|
+
|
|
130
|
+
this.postNewRoomReordered.fire();
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
private recordCurrentStage(): void {
|
|
134
|
+
const level = game.GetLevel();
|
|
135
|
+
const stage = level.GetStage();
|
|
136
|
+
const stageType = level.GetStageType();
|
|
137
|
+
|
|
138
|
+
this.currentStage = stage;
|
|
139
|
+
this.currentStageType = stageType;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
@Exported()
|
|
143
|
+
public forceNewLevelCallback(): void {
|
|
144
|
+
this.forceNewLevel = true;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@Exported()
|
|
148
|
+
public forceNewRoomCallback(): void {
|
|
149
|
+
this.forceNewRoom = true;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
@Exported()
|
|
153
|
+
public reorderedCallbacksSetStage(
|
|
154
|
+
stage: LevelStage,
|
|
155
|
+
stageType: StageType,
|
|
156
|
+
): void {
|
|
157
|
+
this.currentStage = stage;
|
|
158
|
+
this.currentStageType = stageType;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// This provides the logic for the following callbacks:
|
|
2
|
+
// - `POST_GRID_ENTITY_COLLISION`
|
|
3
|
+
// - `POST_GRID_ENTITY_CUSTOM_COLLISION`
|
|
4
|
+
|
|
5
|
+
import { GridCollisionClass, ModCallback } from "isaac-typescript-definitions";
|
|
6
|
+
import {
|
|
7
|
+
getCollidingEntitiesWithGridEntity,
|
|
8
|
+
getGridEntities,
|
|
9
|
+
} from "../../../functions/gridEntities";
|
|
10
|
+
import { PostGridEntityCollision } from "../../callbacks/PostGridEntityCollision";
|
|
11
|
+
import { PostGridEntityCustomCollision } from "../../callbacks/PostGridEntityCustomCollision";
|
|
12
|
+
import { DefaultMap } from "../../DefaultMap";
|
|
13
|
+
import { Feature } from "../../private/Feature";
|
|
14
|
+
import { CustomGridEntities } from "./CustomGridEntities";
|
|
15
|
+
|
|
16
|
+
export class GridEntityCollisionDetection extends Feature {
|
|
17
|
+
public override v = {
|
|
18
|
+
room: {
|
|
19
|
+
/** Indexed by grid entity pointer hash. */
|
|
20
|
+
collidingEntitiesMap: new DefaultMap<PtrHash, Set<PtrHash>>(
|
|
21
|
+
() => new Set(),
|
|
22
|
+
),
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
private postGridEntityCollision: PostGridEntityCollision;
|
|
27
|
+
private postGridEntityCustomCollision: PostGridEntityCustomCollision;
|
|
28
|
+
private customGridEntities: CustomGridEntities;
|
|
29
|
+
|
|
30
|
+
constructor(
|
|
31
|
+
postGridEntityCollision: PostGridEntityCollision,
|
|
32
|
+
postGridEntityCustomCollision: PostGridEntityCustomCollision,
|
|
33
|
+
customGridEntities: CustomGridEntities,
|
|
34
|
+
) {
|
|
35
|
+
super();
|
|
36
|
+
|
|
37
|
+
this.callbacksUsed = [
|
|
38
|
+
[ModCallback.POST_UPDATE, [this.postUpdate]], // 1
|
|
39
|
+
];
|
|
40
|
+
|
|
41
|
+
this.postGridEntityCollision = postGridEntityCollision;
|
|
42
|
+
this.postGridEntityCustomCollision = postGridEntityCustomCollision;
|
|
43
|
+
this.customGridEntities = customGridEntities;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// ModCallback.POST_UPDATE (1)
|
|
47
|
+
private postUpdate = (): void => {
|
|
48
|
+
const gridEntities = getGridEntities();
|
|
49
|
+
const gridEntitiesWithCollision = gridEntities.filter(
|
|
50
|
+
(gridEntity) => gridEntity.CollisionClass !== GridCollisionClass.NONE,
|
|
51
|
+
);
|
|
52
|
+
for (const gridEntity of gridEntitiesWithCollision) {
|
|
53
|
+
const gridEntityPtrHash = GetPtrHash(gridEntity);
|
|
54
|
+
const oldCollidingEntities =
|
|
55
|
+
this.v.room.collidingEntitiesMap.getAndSetDefault(gridEntityPtrHash);
|
|
56
|
+
|
|
57
|
+
// Check for new colliding entities.
|
|
58
|
+
const collidingEntities = getCollidingEntitiesWithGridEntity(gridEntity);
|
|
59
|
+
for (const entity of collidingEntities) {
|
|
60
|
+
const entityPtrHash = GetPtrHash(entity);
|
|
61
|
+
if (!oldCollidingEntities.has(entityPtrHash)) {
|
|
62
|
+
oldCollidingEntities.add(entityPtrHash);
|
|
63
|
+
|
|
64
|
+
const gridEntityTypeCustom =
|
|
65
|
+
this.customGridEntities.getCustomGridEntityType(gridEntity);
|
|
66
|
+
if (gridEntityTypeCustom === undefined) {
|
|
67
|
+
this.postGridEntityCollision.fire(gridEntity, entity);
|
|
68
|
+
} else {
|
|
69
|
+
this.postGridEntityCustomCollision.fire(
|
|
70
|
+
gridEntity,
|
|
71
|
+
gridEntityTypeCustom,
|
|
72
|
+
entity,
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Remove old colliding entities.
|
|
79
|
+
const collidingEntitiesPtrHashes = collidingEntities.map((entity) =>
|
|
80
|
+
GetPtrHash(entity),
|
|
81
|
+
);
|
|
82
|
+
const collidingEntitiesPtrHashSet = new Set(collidingEntitiesPtrHashes);
|
|
83
|
+
for (const oldCollidingEntityPtrHash of oldCollidingEntities.values()) {
|
|
84
|
+
if (!collidingEntitiesPtrHashSet.has(oldCollidingEntityPtrHash)) {
|
|
85
|
+
oldCollidingEntities.delete(oldCollidingEntityPtrHash);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
// This provides the logic for the following callbacks:
|
|
2
|
+
// - `POST_GRID_ENTITY_INIT`
|
|
3
|
+
// - `POST_GRID_ENTITY_CUSTOM_INIT`
|
|
4
|
+
// - `POST_GRID_ENTITY_UPDATE`
|
|
5
|
+
// - `POST_GRID_ENTITY_CUSTOM_UPDATE`
|
|
6
|
+
// - `POST_GRID_ENTITY_REMOVE`
|
|
7
|
+
// - `POST_GRID_ENTITY_CUSTOM_REMOVE`
|
|
8
|
+
// - `POST_GRID_ENTITY_STATE_CHANGED`
|
|
9
|
+
// - `POST_GRID_ENTITY_CUSTOM_STATE_CHANGED`
|
|
10
|
+
// - `POST_GRID_ENTITY_BROKEN`
|
|
11
|
+
// - `POST_GRID_ENTITY_CUSTOM_BROKEN`
|
|
12
|
+
|
|
13
|
+
import { GridEntityType, ModCallback } from "isaac-typescript-definitions";
|
|
14
|
+
import { ISCFeature } from "../../../enums/ISCFeature";
|
|
15
|
+
import { ModCallbackCustom2 } from "../../../enums/ModCallbackCustom2";
|
|
16
|
+
import {
|
|
17
|
+
getGridEntitiesMap,
|
|
18
|
+
isGridEntityBroken,
|
|
19
|
+
} from "../../../functions/gridEntities";
|
|
20
|
+
import { PostGridEntityBroken } from "../../callbacks/PostGridEntityBroken";
|
|
21
|
+
import { PostGridEntityCustomBroken } from "../../callbacks/PostGridEntityCustomBroken";
|
|
22
|
+
import { PostGridEntityCustomInit } from "../../callbacks/PostGridEntityCustomInit";
|
|
23
|
+
import { PostGridEntityCustomRemove } from "../../callbacks/PostGridEntityCustomRemove";
|
|
24
|
+
import { PostGridEntityCustomStateChanged } from "../../callbacks/PostGridEntityCustomStateChanged";
|
|
25
|
+
import { PostGridEntityCustomUpdate } from "../../callbacks/PostGridEntityCustomUpdate";
|
|
26
|
+
import { PostGridEntityInit } from "../../callbacks/PostGridEntityInit";
|
|
27
|
+
import { PostGridEntityRemove } from "../../callbacks/PostGridEntityRemove";
|
|
28
|
+
import { PostGridEntityStateChanged } from "../../callbacks/PostGridEntityStateChanged";
|
|
29
|
+
import { PostGridEntityUpdate } from "../../callbacks/PostGridEntityUpdate";
|
|
30
|
+
import { Feature } from "../../private/Feature";
|
|
31
|
+
import { CustomGridEntities } from "./CustomGridEntities";
|
|
32
|
+
|
|
33
|
+
type GridEntityTuple = [
|
|
34
|
+
gridEntityType: GridEntityType,
|
|
35
|
+
variant: int,
|
|
36
|
+
state: int,
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
export class GridEntityDetection extends Feature {
|
|
40
|
+
public override v = {
|
|
41
|
+
room: {
|
|
42
|
+
/** Indexed by grid index. */
|
|
43
|
+
initializedGridEntities: new Map<int, GridEntityTuple>(),
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
private postGridEntityInit: PostGridEntityInit;
|
|
48
|
+
private postGridEntityCustomInit: PostGridEntityCustomInit;
|
|
49
|
+
private postGridEntityUpdate: PostGridEntityUpdate;
|
|
50
|
+
private postGridEntityCustomUpdate: PostGridEntityCustomUpdate;
|
|
51
|
+
private postGridEntityRemove: PostGridEntityRemove;
|
|
52
|
+
private postGridEntityCustomRemove: PostGridEntityCustomRemove;
|
|
53
|
+
private postGridEntityStateChanged: PostGridEntityStateChanged;
|
|
54
|
+
private postGridEntityCustomStateChanged: PostGridEntityCustomStateChanged;
|
|
55
|
+
private postGridEntityBroken: PostGridEntityBroken;
|
|
56
|
+
private postGridEntityCustomBroken: PostGridEntityCustomBroken;
|
|
57
|
+
private customGridEntities: CustomGridEntities;
|
|
58
|
+
|
|
59
|
+
constructor(
|
|
60
|
+
postGridEntityInit: PostGridEntityInit,
|
|
61
|
+
postGridEntityCustomInit: PostGridEntityCustomInit,
|
|
62
|
+
postGridEntityUpdate: PostGridEntityUpdate,
|
|
63
|
+
postGridEntityCustomUpdate: PostGridEntityCustomUpdate,
|
|
64
|
+
postGridEntityRemove: PostGridEntityRemove,
|
|
65
|
+
postGridEntityCustomRemove: PostGridEntityCustomRemove,
|
|
66
|
+
postGridEntityStateChanged: PostGridEntityStateChanged,
|
|
67
|
+
postGridEntityCustomStateChanged: PostGridEntityCustomStateChanged,
|
|
68
|
+
postGridEntityBroken: PostGridEntityBroken,
|
|
69
|
+
postGridEntityCustomBroken: PostGridEntityCustomBroken,
|
|
70
|
+
customGridEntities: CustomGridEntities,
|
|
71
|
+
) {
|
|
72
|
+
super();
|
|
73
|
+
|
|
74
|
+
this.featuresUsed = [ISCFeature.RUN_IN_N_FRAMES];
|
|
75
|
+
|
|
76
|
+
this.callbacksUsed = [
|
|
77
|
+
[ModCallback.POST_UPDATE, [this.postUpdate]], // 1
|
|
78
|
+
];
|
|
79
|
+
|
|
80
|
+
this.customCallbacksUsed = [
|
|
81
|
+
[ModCallbackCustom2.POST_NEW_ROOM_REORDERED, [this.postNewRoomReordered]],
|
|
82
|
+
];
|
|
83
|
+
|
|
84
|
+
this.postGridEntityInit = postGridEntityInit;
|
|
85
|
+
this.postGridEntityCustomInit = postGridEntityCustomInit;
|
|
86
|
+
this.postGridEntityUpdate = postGridEntityUpdate;
|
|
87
|
+
this.postGridEntityCustomUpdate = postGridEntityCustomUpdate;
|
|
88
|
+
this.postGridEntityRemove = postGridEntityRemove;
|
|
89
|
+
this.postGridEntityCustomRemove = postGridEntityCustomRemove;
|
|
90
|
+
this.postGridEntityStateChanged = postGridEntityStateChanged;
|
|
91
|
+
this.postGridEntityCustomStateChanged = postGridEntityCustomStateChanged;
|
|
92
|
+
this.postGridEntityBroken = postGridEntityBroken;
|
|
93
|
+
this.postGridEntityCustomBroken = postGridEntityCustomBroken;
|
|
94
|
+
this.customGridEntities = customGridEntities;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// ModCallback.POST_UPDATE (1)
|
|
98
|
+
private postUpdate = (): void => {
|
|
99
|
+
const gridEntitiesMap = getGridEntitiesMap();
|
|
100
|
+
|
|
101
|
+
// We check for removed grid entities first so that grid entities that change type will count as
|
|
102
|
+
// being removed and fire the PostGridEntityRemoved callback.
|
|
103
|
+
this.checkGridEntitiesRemoved(gridEntitiesMap);
|
|
104
|
+
|
|
105
|
+
for (const [gridIndex, gridEntity] of gridEntitiesMap.entries()) {
|
|
106
|
+
this.checkGridEntityStateChanged(gridIndex, gridEntity);
|
|
107
|
+
this.checkNewGridEntity(gridIndex, gridEntity);
|
|
108
|
+
|
|
109
|
+
const gridEntityTypeCustom =
|
|
110
|
+
this.customGridEntities.getCustomGridEntityType(gridIndex);
|
|
111
|
+
if (gridEntityTypeCustom === undefined) {
|
|
112
|
+
this.postGridEntityUpdate.fire(gridEntity);
|
|
113
|
+
} else {
|
|
114
|
+
this.postGridEntityCustomUpdate.fire(gridEntity, gridEntityTypeCustom);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
private checkGridEntitiesRemoved(
|
|
120
|
+
gridEntitiesMap: Map<int, GridEntity>,
|
|
121
|
+
): void {
|
|
122
|
+
for (const [
|
|
123
|
+
gridIndex,
|
|
124
|
+
gridEntityTuple,
|
|
125
|
+
] of this.v.room.initializedGridEntities.entries()) {
|
|
126
|
+
const [storedGridEntityType, storedGridEntityVariant] = gridEntityTuple;
|
|
127
|
+
const gridEntity = gridEntitiesMap.get(gridIndex);
|
|
128
|
+
if (
|
|
129
|
+
gridEntity === undefined ||
|
|
130
|
+
gridEntity.GetType() !== storedGridEntityType
|
|
131
|
+
) {
|
|
132
|
+
this.v.room.initializedGridEntities.delete(gridIndex);
|
|
133
|
+
|
|
134
|
+
const gridEntityTypeCustom =
|
|
135
|
+
this.customGridEntities.getCustomGridEntityType(gridIndex);
|
|
136
|
+
if (gridEntityTypeCustom === undefined) {
|
|
137
|
+
this.postGridEntityRemove.fire(
|
|
138
|
+
gridIndex,
|
|
139
|
+
storedGridEntityType,
|
|
140
|
+
storedGridEntityVariant,
|
|
141
|
+
);
|
|
142
|
+
} else {
|
|
143
|
+
this.postGridEntityCustomRemove.fire(gridIndex, gridEntityTypeCustom);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
private checkGridEntityStateChanged(
|
|
150
|
+
gridIndex: int,
|
|
151
|
+
gridEntity: GridEntity,
|
|
152
|
+
): void {
|
|
153
|
+
const gridEntityTuple = this.v.room.initializedGridEntities.get(gridIndex);
|
|
154
|
+
if (gridEntityTuple === undefined) {
|
|
155
|
+
// This grid entity did not exist a frame ago; we don't want to fire the state changed
|
|
156
|
+
// callback on the first frame that it exists.
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const [_gridEntityType, _gridEntityVariant, oldState] = gridEntityTuple;
|
|
161
|
+
const newState = gridEntity.State;
|
|
162
|
+
if (oldState !== newState) {
|
|
163
|
+
this.updateTupleInMap(gridEntity);
|
|
164
|
+
|
|
165
|
+
const gridEntityTypeCustom =
|
|
166
|
+
this.customGridEntities.getCustomGridEntityType(gridEntity);
|
|
167
|
+
if (gridEntityTypeCustom === undefined) {
|
|
168
|
+
this.postGridEntityStateChanged.fire(gridEntity, oldState, newState);
|
|
169
|
+
} else {
|
|
170
|
+
this.postGridEntityCustomStateChanged.fire(
|
|
171
|
+
gridEntity,
|
|
172
|
+
gridEntityTypeCustom,
|
|
173
|
+
oldState,
|
|
174
|
+
newState,
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
if (isGridEntityBroken(gridEntity)) {
|
|
179
|
+
if (gridEntityTypeCustom === undefined) {
|
|
180
|
+
this.postGridEntityBroken.fire(gridEntity);
|
|
181
|
+
} else {
|
|
182
|
+
this.postGridEntityCustomBroken.fire(
|
|
183
|
+
gridEntity,
|
|
184
|
+
gridEntityTypeCustom,
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
private checkNewGridEntity(gridIndex: int, gridEntity: GridEntity): void {
|
|
192
|
+
const gridEntityType = gridEntity.GetType();
|
|
193
|
+
const gridEntityTuple = this.v.room.initializedGridEntities.get(gridIndex);
|
|
194
|
+
|
|
195
|
+
if (
|
|
196
|
+
gridEntityTuple === undefined ||
|
|
197
|
+
gridEntityTuple[0] !== gridEntityType
|
|
198
|
+
) {
|
|
199
|
+
this.updateTupleInMap(gridEntity);
|
|
200
|
+
|
|
201
|
+
const gridEntityTypeCustom =
|
|
202
|
+
this.customGridEntities.getCustomGridEntityType(gridEntity);
|
|
203
|
+
if (gridEntityTypeCustom === undefined) {
|
|
204
|
+
this.postGridEntityInit.fire(gridEntity);
|
|
205
|
+
} else {
|
|
206
|
+
this.postGridEntityCustomInit.fire(gridEntity, gridEntityTypeCustom);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
private updateTupleInMap(gridEntity: GridEntity): void {
|
|
212
|
+
const gridEntityType = gridEntity.GetType();
|
|
213
|
+
const variant = gridEntity.GetVariant();
|
|
214
|
+
const gridIndex = gridEntity.GetGridIndex();
|
|
215
|
+
const newTuple: GridEntityTuple = [
|
|
216
|
+
gridEntityType,
|
|
217
|
+
variant,
|
|
218
|
+
gridEntity.State,
|
|
219
|
+
];
|
|
220
|
+
this.v.room.initializedGridEntities.set(gridIndex, newTuple);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// ModCallbackCustom.POST_NEW_ROOM_REORDERED
|
|
224
|
+
private postNewRoomReordered = (): void => {
|
|
225
|
+
const gridEntitiesMap = getGridEntitiesMap();
|
|
226
|
+
|
|
227
|
+
for (const [gridIndex, gridEntity] of gridEntitiesMap.entries()) {
|
|
228
|
+
this.checkNewGridEntity(gridIndex, gridEntity);
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// This handles logic for the following callbacks:
|
|
2
|
+
// - POST_PEFFECT_UPDATE_REORDERED
|
|
3
|
+
// - POST_PLAYER_RENDER_REORDERED
|
|
4
|
+
// - POST_PLAYER_UPDATE_REORDERED
|
|
5
|
+
|
|
6
|
+
import { ModCallback } from "isaac-typescript-definitions";
|
|
7
|
+
import { ModCallbackCustom2 } from "../../../enums/ModCallbackCustom2";
|
|
8
|
+
import { emptyArray } from "../../../functions/array";
|
|
9
|
+
import {
|
|
10
|
+
getPlayerFromIndex,
|
|
11
|
+
getPlayerIndex,
|
|
12
|
+
} from "../../../functions/playerIndex";
|
|
13
|
+
import { PlayerIndex } from "../../../types/PlayerIndex";
|
|
14
|
+
import { PostPEffectUpdateReordered } from "../../callbacks/PostPEffectUpdateReordered";
|
|
15
|
+
import { PostPlayerRenderReordered } from "../../callbacks/PostPlayerRenderReordered";
|
|
16
|
+
import { PostPlayerUpdateReordered } from "../../callbacks/PostPlayerUpdateReordered";
|
|
17
|
+
import { Feature } from "../../private/Feature";
|
|
18
|
+
|
|
19
|
+
export class PlayerReorderedCallbacks extends Feature {
|
|
20
|
+
public override v = {
|
|
21
|
+
run: {
|
|
22
|
+
postGameStartedFiredOnThisRun: false,
|
|
23
|
+
|
|
24
|
+
postPEffectUpdateQueue: [] as PlayerIndex[],
|
|
25
|
+
postPlayerUpdateQueue: [] as PlayerIndex[],
|
|
26
|
+
postPlayerRenderQueue: [] as PlayerIndex[],
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
private postPEffectUpdateReordered: PostPEffectUpdateReordered;
|
|
31
|
+
private postPlayerRenderReordered: PostPlayerRenderReordered;
|
|
32
|
+
private postPlayerUpdateReordered: PostPlayerUpdateReordered;
|
|
33
|
+
|
|
34
|
+
constructor(
|
|
35
|
+
postPEffectUpdateReordered: PostPEffectUpdateReordered,
|
|
36
|
+
postPlayerRenderReordered: PostPlayerRenderReordered,
|
|
37
|
+
postPlayerUpdateReordered: PostPlayerUpdateReordered,
|
|
38
|
+
) {
|
|
39
|
+
super();
|
|
40
|
+
|
|
41
|
+
this.callbacksUsed = [
|
|
42
|
+
[ModCallback.POST_PEFFECT_UPDATE, [this.postPEffectUpdate]], // 4
|
|
43
|
+
[ModCallback.POST_PLAYER_UPDATE, [this.postPlayerUpdate]], // 31
|
|
44
|
+
[ModCallback.POST_PLAYER_RENDER, [this.postPlayerRender]], // 32
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
this.customCallbacksUsed = [
|
|
48
|
+
[
|
|
49
|
+
ModCallbackCustom2.POST_GAME_STARTED_REORDERED_LAST,
|
|
50
|
+
[this.postGameStartedReorderedLast],
|
|
51
|
+
], // 19
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
this.postPEffectUpdateReordered = postPEffectUpdateReordered;
|
|
55
|
+
this.postPlayerRenderReordered = postPlayerRenderReordered;
|
|
56
|
+
this.postPlayerUpdateReordered = postPlayerUpdateReordered;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// ModCallback.POST_PEFFECT_UPDATE (4)
|
|
60
|
+
private postPEffectUpdate = (player: EntityPlayer): void => {
|
|
61
|
+
if (this.v.run.postGameStartedFiredOnThisRun) {
|
|
62
|
+
this.postPEffectUpdateReordered.fire(player);
|
|
63
|
+
} else {
|
|
64
|
+
// Defer callback execution until the `POST_GAME_STARTED` callback fires.
|
|
65
|
+
const playerIndex = getPlayerIndex(player);
|
|
66
|
+
this.v.run.postPEffectUpdateQueue.push(playerIndex);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// ModCallback.POST_PLAYER_UPDATE (31)
|
|
71
|
+
private postPlayerUpdate = (player: EntityPlayer): void => {
|
|
72
|
+
if (this.v.run.postGameStartedFiredOnThisRun) {
|
|
73
|
+
this.postPlayerUpdateReordered.fire(player);
|
|
74
|
+
} else {
|
|
75
|
+
// Defer callback execution until the `POST_GAME_STARTED` callback fires.
|
|
76
|
+
const playerIndex = getPlayerIndex(player);
|
|
77
|
+
this.v.run.postPlayerUpdateQueue.push(playerIndex);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// ModCallback.POST_PLAYER_RENDER (32)
|
|
82
|
+
private postPlayerRender = (
|
|
83
|
+
player: EntityPlayer,
|
|
84
|
+
_renderOffset: Vector,
|
|
85
|
+
): void => {
|
|
86
|
+
if (this.v.run.postGameStartedFiredOnThisRun) {
|
|
87
|
+
this.postPlayerRenderReordered.fire(player);
|
|
88
|
+
} else {
|
|
89
|
+
// Defer callback execution until the `POST_GAME_STARTED` callback fires.
|
|
90
|
+
const playerIndex = getPlayerIndex(player);
|
|
91
|
+
this.v.run.postPlayerRenderQueue.push(playerIndex);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
// ModCallbackCustom.POST_GAME_STARTED_REORDERED_LAST
|
|
96
|
+
private postGameStartedReorderedLast = (): void => {
|
|
97
|
+
this.v.run.postGameStartedFiredOnThisRun = true;
|
|
98
|
+
|
|
99
|
+
dequeue(
|
|
100
|
+
this.v.run.postPEffectUpdateQueue,
|
|
101
|
+
this.postPEffectUpdateReordered.fire,
|
|
102
|
+
);
|
|
103
|
+
dequeue(
|
|
104
|
+
this.v.run.postPlayerUpdateQueue,
|
|
105
|
+
this.postPlayerUpdateReordered.fire,
|
|
106
|
+
);
|
|
107
|
+
dequeue(
|
|
108
|
+
this.v.run.postPlayerRenderQueue,
|
|
109
|
+
this.postPlayerRenderReordered.fire,
|
|
110
|
+
);
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function dequeue(
|
|
115
|
+
playerIndexes: PlayerIndex[],
|
|
116
|
+
fireFunc: (player: EntityPlayer) => void,
|
|
117
|
+
) {
|
|
118
|
+
for (const playerIndex of playerIndexes) {
|
|
119
|
+
const player = getPlayerFromIndex(playerIndex);
|
|
120
|
+
if (player !== undefined) {
|
|
121
|
+
fireFunc(player);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
emptyArray(playerIndexes);
|
|
126
|
+
}
|