isaacscript-common 6.6.0 → 6.6.1-dev.2
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/cachedClasses.d.ts +1 -0
- package/cachedClasses.js +59 -0
- package/cachedClasses.lua +2 -0
- package/callbacks/customRevive.js +153 -0
- package/callbacks/customRevive.lua +2 -0
- package/callbacks/itemPickup.js +64 -0
- package/callbacks/itemPickup.lua +2 -0
- package/callbacks/postAmbush.js +54 -0
- package/callbacks/postAmbush.lua +2 -0
- package/callbacks/postBombExploded.js +20 -0
- package/callbacks/postBombExploded.lua +2 -0
- package/callbacks/postBombInitLate.js +28 -0
- package/callbacks/postBombInitLate.lua +2 -0
- package/callbacks/postBoneSwing.js +49 -0
- package/callbacks/postBoneSwing.lua +2 -0
- package/callbacks/postCollectibleEmpty.js +32 -0
- package/callbacks/postCollectibleEmpty.lua +2 -0
- package/callbacks/postCollectibleInitFirst.js +27 -0
- package/callbacks/postCollectibleInitFirst.lua +2 -0
- package/callbacks/postCursedTeleport.js +120 -0
- package/callbacks/postCursedTeleport.lua +2 -0
- package/callbacks/postCustomDoorEnter.js +205 -0
- package/callbacks/postCustomDoorEnter.lua +2 -0
- package/callbacks/postDiceRoomActivated.js +39 -0
- package/callbacks/postDiceRoomActivated.lua +2 -0
- package/callbacks/postDoorRender.js +20 -0
- package/callbacks/postDoorRender.lua +2 -0
- package/callbacks/postDoorUpdate.js +20 -0
- package/callbacks/postDoorUpdate.lua +2 -0
- package/callbacks/postEffectInitLate.js +28 -0
- package/callbacks/postEffectInitLate.lua +2 -0
- package/callbacks/postEffectStateChanged.js +31 -0
- package/callbacks/postEffectStateChanged.lua +2 -0
- package/callbacks/postEsauJr.js +70 -0
- package/callbacks/postEsauJr.lua +2 -0
- package/callbacks/postFamiliarInitLate.js +28 -0
- package/callbacks/postFamiliarInitLate.lua +2 -0
- package/callbacks/postFamiliarStateChanged.js +31 -0
- package/callbacks/postFamiliarStateChanged.lua +2 -0
- package/callbacks/postFlip.js +59 -0
- package/callbacks/postFlip.lua +2 -0
- package/callbacks/postGreedModeWave.js +31 -0
- package/callbacks/postGreedModeWave.lua +2 -0
- package/callbacks/postGridEntity.js +107 -0
- package/callbacks/postGridEntity.lua +2 -0
- package/callbacks/postGridEntityCollision.js +49 -0
- package/callbacks/postGridEntityCollision.lua +2 -0
- package/callbacks/postGridEntityRender.js +20 -0
- package/callbacks/postGridEntityRender.lua +2 -0
- package/callbacks/postHolyMantleRemoved.js +33 -0
- package/callbacks/postHolyMantleRemoved.lua +2 -0
- package/callbacks/postItemDischarged.js +94 -0
- package/callbacks/postItemDischarged.lua +2 -0
- package/callbacks/postKnifeInitLate.js +28 -0
- package/callbacks/postKnifeInitLate.lua +2 -0
- package/callbacks/postLaserInitLate.js +28 -0
- package/callbacks/postLaserInitLate.lua +2 -0
- package/callbacks/postNPCInitLate.js +28 -0
- package/callbacks/postNPCInitLate.lua +2 -0
- package/callbacks/postNPCStateChanged.js +31 -0
- package/callbacks/postNPCStateChanged.lua +2 -0
- package/callbacks/postNewRoomEarly.js +69 -0
- package/callbacks/postNewRoomEarly.lua +2 -0
- package/callbacks/postPickupCollect.js +37 -0
- package/callbacks/postPickupCollect.lua +2 -0
- package/callbacks/postPickupInitFirst.js +52 -0
- package/callbacks/postPickupInitFirst.lua +2 -0
- package/callbacks/postPickupInitLate.js +28 -0
- package/callbacks/postPickupInitLate.lua +2 -0
- package/callbacks/postPickupStateChanged.js +31 -0
- package/callbacks/postPickupStateChanged.lua +2 -0
- package/callbacks/postPitRender.js +20 -0
- package/callbacks/postPitRender.lua +2 -0
- package/callbacks/postPitUpdate.js +20 -0
- package/callbacks/postPitUpdate.lua +2 -0
- package/callbacks/postPlayerChangeHealth.js +43 -0
- package/callbacks/postPlayerChangeHealth.lua +2 -0
- package/callbacks/postPlayerChangeType.js +31 -0
- package/callbacks/postPlayerChangeType.lua +2 -0
- package/callbacks/postPlayerCollectible.js +74 -0
- package/callbacks/postPlayerCollectible.lua +2 -0
- package/callbacks/postPlayerFatalDamage.js +74 -0
- package/callbacks/postPlayerFatalDamage.lua +2 -0
- package/callbacks/postPlayerInitLate.js +28 -0
- package/callbacks/postPlayerInitLate.lua +2 -0
- package/callbacks/postPlayerReordered.js +109 -0
- package/callbacks/postPlayerReordered.lua +2 -0
- package/callbacks/postPoopRender.js +20 -0
- package/callbacks/postPoopRender.lua +2 -0
- package/callbacks/postPoopUpdate.js +20 -0
- package/callbacks/postPoopUpdate.lua +2 -0
- package/callbacks/postPressurePlateRender.js +20 -0
- package/callbacks/postPressurePlateRender.lua +2 -0
- package/callbacks/postPressurePlateUpdate.js +20 -0
- package/callbacks/postPressurePlateUpdate.lua +2 -0
- package/callbacks/postProjectileInitLate.js +28 -0
- package/callbacks/postProjectileInitLate.lua +2 -0
- package/callbacks/postPurchase.js +39 -0
- package/callbacks/postPurchase.lua +2 -0
- package/callbacks/postRockRender.js +20 -0
- package/callbacks/postRockRender.lua +2 -0
- package/callbacks/postRockUpdate.js +20 -0
- package/callbacks/postRockUpdate.lua +2 -0
- package/callbacks/postRoomClearChanged.js +41 -0
- package/callbacks/postRoomClearChanged.lua +2 -0
- package/callbacks/postSacrifice.js +38 -0
- package/callbacks/postSacrifice.lua +2 -0
- package/callbacks/postSlotDestroyed.js +64 -0
- package/callbacks/postSlotDestroyed.lua +2 -0
- package/callbacks/postSlotInitUpdate.js +49 -0
- package/callbacks/postSlotInitUpdate.lua +2 -0
- package/callbacks/postSlotRender.js +48 -0
- package/callbacks/postSlotRender.lua +2 -0
- package/callbacks/postSpikesRender.js +20 -0
- package/callbacks/postSpikesRender.lua +2 -0
- package/callbacks/postSpikesUpdate.js +20 -0
- package/callbacks/postSpikesUpdate.lua +2 -0
- package/callbacks/postTNTRender.js +20 -0
- package/callbacks/postTNTRender.lua +2 -0
- package/callbacks/postTNTUpdate.js +20 -0
- package/callbacks/postTNTUpdate.lua +2 -0
- package/callbacks/postTearInitLate.js +28 -0
- package/callbacks/postTearInitLate.lua +2 -0
- package/callbacks/postTearInitVeryLate.js +32 -0
- package/callbacks/postTearInitVeryLate.lua +2 -0
- package/callbacks/postTransformation.js +37 -0
- package/callbacks/postTransformation.lua +2 -0
- package/callbacks/postTrinketBreak.js +64 -0
- package/callbacks/postTrinketBreak.lua +2 -0
- package/callbacks/preBerserkDeath.js +35 -0
- package/callbacks/preBerserkDeath.lua +2 -0
- package/callbacks/preNewLevel.js +45 -0
- package/callbacks/preNewLevel.lua +2 -0
- package/callbacks/reorderedCallbacks.js +136 -0
- package/callbacks/reorderedCallbacks.lua +2 -0
- package/callbacks/subscriptions/postAmbushFinished.js +20 -0
- package/callbacks/subscriptions/postAmbushFinished.lua +2 -0
- package/callbacks/subscriptions/postAmbushStarted.js +20 -0
- package/callbacks/subscriptions/postAmbushStarted.lua +2 -0
- package/callbacks/subscriptions/postBombInitLate.js +20 -0
- package/callbacks/subscriptions/postBombInitLate.lua +2 -0
- package/callbacks/subscriptions/postBoneExploded.js +20 -0
- package/callbacks/subscriptions/postBoneExploded.lua +2 -0
- package/callbacks/subscriptions/postBoneSwing.js +16 -0
- package/callbacks/subscriptions/postBoneSwing.lua +2 -0
- package/callbacks/subscriptions/postCollectibleEmpty.js +21 -0
- package/callbacks/subscriptions/postCollectibleEmpty.lua +2 -0
- package/callbacks/subscriptions/postCollectibleInitFirst.js +21 -0
- package/callbacks/subscriptions/postCollectibleInitFirst.lua +2 -0
- package/callbacks/subscriptions/postCursedTeleport.js +16 -0
- package/callbacks/subscriptions/postCursedTeleport.lua +2 -0
- package/callbacks/subscriptions/postCustomDoorEnter.js +21 -0
- package/callbacks/subscriptions/postCustomDoorEnter.lua +2 -0
- package/callbacks/subscriptions/postCustomRevive.js +21 -0
- package/callbacks/subscriptions/postCustomRevive.lua +2 -0
- package/callbacks/subscriptions/postDiceRoomActivated.js +21 -0
- package/callbacks/subscriptions/postDiceRoomActivated.lua +2 -0
- package/callbacks/subscriptions/postDoorRender.js +22 -0
- package/callbacks/subscriptions/postDoorRender.lua +2 -0
- package/callbacks/subscriptions/postDoorUpdate.js +22 -0
- package/callbacks/subscriptions/postDoorUpdate.lua +2 -0
- package/callbacks/subscriptions/postEffectInitLate.js +20 -0
- package/callbacks/subscriptions/postEffectInitLate.lua +2 -0
- package/callbacks/subscriptions/postEffectStateChanged.js +20 -0
- package/callbacks/subscriptions/postEffectStateChanged.lua +2 -0
- package/callbacks/subscriptions/postEsauJr.js +16 -0
- package/callbacks/subscriptions/postEsauJr.lua +2 -0
- package/callbacks/subscriptions/postFamiliarInitLate.js +20 -0
- package/callbacks/subscriptions/postFamiliarInitLate.lua +2 -0
- package/callbacks/subscriptions/postFamiliarStateChanged.js +20 -0
- package/callbacks/subscriptions/postFamiliarStateChanged.lua +2 -0
- package/callbacks/subscriptions/postFirstEsauJr.js +16 -0
- package/callbacks/subscriptions/postFirstEsauJr.lua +2 -0
- package/callbacks/subscriptions/postFirstFlip.js +16 -0
- package/callbacks/subscriptions/postFirstFlip.lua +2 -0
- package/callbacks/subscriptions/postFlip.js +16 -0
- package/callbacks/subscriptions/postFlip.lua +2 -0
- package/callbacks/subscriptions/postGameStartedReordered.js +16 -0
- package/callbacks/subscriptions/postGameStartedReordered.lua +2 -0
- package/callbacks/subscriptions/postGreedModeWave.js +16 -0
- package/callbacks/subscriptions/postGreedModeWave.lua +2 -0
- package/callbacks/subscriptions/postGridEntityBroken.js +28 -0
- package/callbacks/subscriptions/postGridEntityBroken.lua +2 -0
- package/callbacks/subscriptions/postGridEntityCollision.js +28 -0
- package/callbacks/subscriptions/postGridEntityCollision.lua +2 -0
- package/callbacks/subscriptions/postGridEntityInit.js +28 -0
- package/callbacks/subscriptions/postGridEntityInit.lua +2 -0
- package/callbacks/subscriptions/postGridEntityRemove.js +26 -0
- package/callbacks/subscriptions/postGridEntityRemove.lua +2 -0
- package/callbacks/subscriptions/postGridEntityRender.js +28 -0
- package/callbacks/subscriptions/postGridEntityRender.lua +2 -0
- package/callbacks/subscriptions/postGridEntityStateChanged.js +28 -0
- package/callbacks/subscriptions/postGridEntityStateChanged.lua +2 -0
- package/callbacks/subscriptions/postGridEntityUpdate.js +28 -0
- package/callbacks/subscriptions/postGridEntityUpdate.lua +2 -0
- package/callbacks/subscriptions/postHolyMantleRemoved.js +25 -0
- package/callbacks/subscriptions/postHolyMantleRemoved.lua +2 -0
- package/callbacks/subscriptions/postItemDischarged.js +21 -0
- package/callbacks/subscriptions/postItemDischarged.lua +2 -0
- package/callbacks/subscriptions/postItemPickup.js +25 -0
- package/callbacks/subscriptions/postItemPickup.lua +2 -0
- package/callbacks/subscriptions/postKnifeInitLate.js +20 -0
- package/callbacks/subscriptions/postKnifeInitLate.lua +2 -0
- package/callbacks/subscriptions/postLaserInitLate.js +20 -0
- package/callbacks/subscriptions/postLaserInitLate.lua +2 -0
- package/callbacks/subscriptions/postNPCInitLate.js +20 -0
- package/callbacks/subscriptions/postNPCInitLate.lua +2 -0
- package/callbacks/subscriptions/postNPCStateChanged.js +24 -0
- package/callbacks/subscriptions/postNPCStateChanged.lua +2 -0
- package/callbacks/subscriptions/postNewLevelReordered.js +16 -0
- package/callbacks/subscriptions/postNewLevelReordered.lua +2 -0
- package/callbacks/subscriptions/postNewRoomEarly.js +16 -0
- package/callbacks/subscriptions/postNewRoomEarly.lua +2 -0
- package/callbacks/subscriptions/postNewRoomReordered.js +16 -0
- package/callbacks/subscriptions/postNewRoomReordered.lua +2 -0
- package/callbacks/subscriptions/postPEffectUpdateReordered.js +25 -0
- package/callbacks/subscriptions/postPEffectUpdateReordered.lua +2 -0
- package/callbacks/subscriptions/postPickupCollect.js +20 -0
- package/callbacks/subscriptions/postPickupCollect.lua +2 -0
- package/callbacks/subscriptions/postPickupInitFirst.js +20 -0
- package/callbacks/subscriptions/postPickupInitFirst.lua +2 -0
- package/callbacks/subscriptions/postPickupInitLate.js +20 -0
- package/callbacks/subscriptions/postPickupInitLate.lua +2 -0
- package/callbacks/subscriptions/postPickupStateChanged.js +20 -0
- package/callbacks/subscriptions/postPickupStateChanged.lua +2 -0
- package/callbacks/subscriptions/postPitRender.js +22 -0
- package/callbacks/subscriptions/postPitRender.lua +2 -0
- package/callbacks/subscriptions/postPitUpdate.js +22 -0
- package/callbacks/subscriptions/postPitUpdate.lua +2 -0
- package/callbacks/subscriptions/postPlayerChangeHealth.js +25 -0
- package/callbacks/subscriptions/postPlayerChangeHealth.lua +2 -0
- package/callbacks/subscriptions/postPlayerChangeType.js +20 -0
- package/callbacks/subscriptions/postPlayerChangeType.lua +2 -0
- package/callbacks/subscriptions/postPlayerCollectibleAdded.js +21 -0
- package/callbacks/subscriptions/postPlayerCollectibleAdded.lua +2 -0
- package/callbacks/subscriptions/postPlayerCollectibleRemoved.js +21 -0
- package/callbacks/subscriptions/postPlayerCollectibleRemoved.lua +2 -0
- package/callbacks/subscriptions/postPlayerFatalDamage.js +29 -0
- package/callbacks/subscriptions/postPlayerFatalDamage.lua +2 -0
- package/callbacks/subscriptions/postPlayerInitLate.js +25 -0
- package/callbacks/subscriptions/postPlayerInitLate.lua +2 -0
- package/callbacks/subscriptions/postPlayerInitReordered.js +25 -0
- package/callbacks/subscriptions/postPlayerInitReordered.lua +2 -0
- package/callbacks/subscriptions/postPlayerRenderReordered.js +25 -0
- package/callbacks/subscriptions/postPlayerRenderReordered.lua +2 -0
- package/callbacks/subscriptions/postPlayerUpdateReordered.js +25 -0
- package/callbacks/subscriptions/postPlayerUpdateReordered.lua +2 -0
- package/callbacks/subscriptions/postPoopRender.js +22 -0
- package/callbacks/subscriptions/postPoopRender.lua +2 -0
- package/callbacks/subscriptions/postPoopUpdate.js +22 -0
- package/callbacks/subscriptions/postPoopUpdate.lua +2 -0
- package/callbacks/subscriptions/postPressurePlateRender.js +22 -0
- package/callbacks/subscriptions/postPressurePlateRender.lua +2 -0
- package/callbacks/subscriptions/postPressurePlateUpdate.js +22 -0
- package/callbacks/subscriptions/postPressurePlateUpdate.lua +2 -0
- package/callbacks/subscriptions/postProjectileInitLate.js +21 -0
- package/callbacks/subscriptions/postProjectileInitLate.lua +2 -0
- package/callbacks/subscriptions/postPurchase.js +16 -0
- package/callbacks/subscriptions/postPurchase.lua +2 -0
- package/callbacks/subscriptions/postRockRender.js +22 -0
- package/callbacks/subscriptions/postRockRender.lua +2 -0
- package/callbacks/subscriptions/postRockUpdate.js +22 -0
- package/callbacks/subscriptions/postRockUpdate.lua +2 -0
- package/callbacks/subscriptions/postRoomClearChanged.js +20 -0
- package/callbacks/subscriptions/postRoomClearChanged.lua +2 -0
- package/callbacks/subscriptions/postSacrifice.js +25 -0
- package/callbacks/subscriptions/postSacrifice.lua +2 -0
- package/callbacks/subscriptions/postSlotAnimationChanged.js +20 -0
- package/callbacks/subscriptions/postSlotAnimationChanged.lua +2 -0
- package/callbacks/subscriptions/postSlotDestroyed.js +26 -0
- package/callbacks/subscriptions/postSlotDestroyed.lua +2 -0
- package/callbacks/subscriptions/postSlotInit.js +20 -0
- package/callbacks/subscriptions/postSlotInit.lua +2 -0
- package/callbacks/subscriptions/postSlotRender.js +20 -0
- package/callbacks/subscriptions/postSlotRender.lua +2 -0
- package/callbacks/subscriptions/postSlotUpdate.js +20 -0
- package/callbacks/subscriptions/postSlotUpdate.lua +2 -0
- package/callbacks/subscriptions/postSpikesRender.js +22 -0
- package/callbacks/subscriptions/postSpikesRender.lua +2 -0
- package/callbacks/subscriptions/postSpikesUpdate.js +22 -0
- package/callbacks/subscriptions/postSpikesUpdate.lua +2 -0
- package/callbacks/subscriptions/postTNTRender.js +22 -0
- package/callbacks/subscriptions/postTNTRender.lua +2 -0
- package/callbacks/subscriptions/postTNTUpdate.js +22 -0
- package/callbacks/subscriptions/postTNTUpdate.lua +2 -0
- package/callbacks/subscriptions/postTearInitLate.js +20 -0
- package/callbacks/subscriptions/postTearInitLate.lua +2 -0
- package/callbacks/subscriptions/postTearInitVeryLate.js +20 -0
- package/callbacks/subscriptions/postTearInitVeryLate.lua +2 -0
- package/callbacks/subscriptions/postTransformation.js +20 -0
- package/callbacks/subscriptions/postTransformation.lua +2 -0
- package/callbacks/subscriptions/postTrinketBreak.js +21 -0
- package/callbacks/subscriptions/postTrinketBreak.lua +2 -0
- package/callbacks/subscriptions/preBerserkDeath.js +26 -0
- package/callbacks/subscriptions/preBerserkDeath.lua +2 -0
- package/callbacks/subscriptions/preCustomRevive.js +29 -0
- package/callbacks/subscriptions/preCustomRevive.lua +2 -0
- package/callbacks/subscriptions/preItemPickup.js +25 -0
- package/callbacks/subscriptions/preItemPickup.lua +2 -0
- package/callbacks/subscriptions/preNewLevel.js +16 -0
- package/callbacks/subscriptions/preNewLevel.lua +2 -0
- package/classes/DefaultMap.js +145 -0
- package/classes/DefaultMap.lua +2 -0
- package/classes/ModUpgraded.js +57 -0
- package/classes/ModUpgraded.lua +2 -0
- package/constants.js +143 -0
- package/constants.lua +2 -0
- package/constantsFirstLast.js +156 -0
- package/constantsFirstLast.lua +2 -0
- package/enums/AmbushType.js +6 -0
- package/enums/AmbushType.lua +2 -0
- package/enums/CornerType.js +8 -0
- package/enums/CornerType.lua +2 -0
- package/enums/DecorationVariant.js +11 -0
- package/enums/DecorationVariant.lua +2 -0
- package/enums/HealthType.js +18 -0
- package/enums/HealthType.lua +2 -0
- package/enums/ModCallbackCustom.js +1213 -0
- package/enums/ModCallbackCustom.lua +2 -0
- package/enums/PocketItemType.js +10 -0
- package/enums/PocketItemType.lua +2 -0
- package/enums/RockAltType.js +9 -0
- package/enums/RockAltType.lua +2 -0
- package/enums/SerializationType.js +7 -0
- package/enums/SerializationType.lua +2 -0
- package/enums/SlotDestructionType.js +6 -0
- package/enums/SlotDestructionType.lua +2 -0
- package/enums/private/CopyableIsaacAPIClassType.js +9 -0
- package/enums/private/CopyableIsaacAPIClassType.lua +2 -0
- package/enums/private/SaveDataKey.js +8 -0
- package/enums/private/SaveDataKey.lua +2 -0
- package/enums/private/SerializationBrand.js +41 -0
- package/enums/private/SerializationBrand.lua +2 -0
- package/features/characterHealthConversion.js +86 -0
- package/features/characterHealthConversion.lua +2 -0
- package/features/characterStats.js +52 -0
- package/features/characterStats.lua +2 -0
- package/features/collectibleItemPoolType.js +45 -0
- package/features/collectibleItemPoolType.lua +2 -0
- package/features/customGridEntity.js +148 -0
- package/features/customGridEntity.lua +2 -0
- package/features/customStage/backdrop.js +191 -0
- package/features/customStage/backdrop.lua +9 -7
- package/features/customStage/customStageConstants.js +2 -0
- package/features/customStage/customStageConstants.lua +2 -0
- package/features/customStage/exports.js +147 -0
- package/features/customStage/exports.lua +8 -1
- package/features/customStage/gridEntities.js +138 -0
- package/features/customStage/gridEntities.lua +2 -0
- package/features/customStage/init.js +104 -0
- package/features/customStage/init.lua +4 -9
- package/features/customStage/metadata.json +1 -0
- package/features/customStage/metadata.lua +2 -0
- package/features/customStage/shadows.d.ts +0 -1
- package/features/customStage/shadows.js +63 -0
- package/features/customStage/shadows.lua +31 -19
- package/features/customStage/streakText.d.ts +1 -1
- package/features/customStage/streakText.js +35 -0
- package/features/customStage/streakText.lua +14 -3
- package/features/customStage/util.js +36 -0
- package/features/customStage/util.lua +2 -0
- package/features/customStage/v.js +18 -0
- package/features/customStage/v.lua +2 -0
- package/features/customStage/versusScreen.js +184 -0
- package/features/customStage/versusScreen.lua +8 -1
- package/features/debugDisplay/debugDisplay.js +183 -0
- package/features/debugDisplay/debugDisplay.lua +2 -0
- package/features/debugDisplay/exports.js +441 -0
- package/features/debugDisplay/exports.lua +2 -0
- package/features/debugDisplay/v.d.ts +18 -0
- package/features/debugDisplay/v.js +61 -0
- package/features/debugDisplay/v.lua +2 -0
- package/features/deployJSONRoom.js +532 -0
- package/features/deployJSONRoom.lua +2 -0
- package/features/disableAllSound.js +63 -0
- package/features/disableAllSound.lua +2 -0
- package/features/disableInputs.js +130 -0
- package/features/disableInputs.lua +2 -0
- package/features/extraConsoleCommands/commandsDisplay.js +236 -0
- package/features/extraConsoleCommands/commandsDisplay.lua +2 -0
- package/features/extraConsoleCommands/commandsSubroutines.js +109 -0
- package/features/extraConsoleCommands/commandsSubroutines.lua +2 -0
- package/features/extraConsoleCommands/exports.js +53 -0
- package/features/extraConsoleCommands/exports.lua +2 -0
- package/features/extraConsoleCommands/init.js +239 -0
- package/features/extraConsoleCommands/init.lua +2 -0
- package/features/extraConsoleCommands/listCommands.js +1081 -0
- package/features/extraConsoleCommands/listCommands.lua +2 -0
- package/features/extraConsoleCommands/v.js +25 -0
- package/features/extraConsoleCommands/v.lua +2 -0
- package/features/fadeInRemover.js +51 -0
- package/features/fadeInRemover.lua +2 -0
- package/features/fastReset.js +61 -0
- package/features/fastReset.lua +2 -0
- package/features/forgottenSwitch.js +33 -0
- package/features/forgottenSwitch.lua +2 -0
- package/features/pause.js +68 -0
- package/features/pause.lua +2 -0
- package/features/persistentEntities.js +120 -0
- package/features/persistentEntities.lua +2 -0
- package/features/playerInventory.js +89 -0
- package/features/playerInventory.lua +2 -0
- package/features/ponyDetection.js +63 -0
- package/features/ponyDetection.lua +2 -0
- package/features/preventCollectibleRotation.js +81 -0
- package/features/preventCollectibleRotation.lua +2 -0
- package/features/registerHotkey.js +91 -0
- package/features/registerHotkey.lua +2 -0
- package/features/roomClearFrame.js +42 -0
- package/features/roomClearFrame.lua +2 -0
- package/features/runInNFrames.js +189 -0
- package/features/runInNFrames.lua +2 -0
- package/features/runNextRoom.js +34 -0
- package/features/runNextRoom.lua +2 -0
- package/features/saveDataManager/exports.js +183 -0
- package/features/saveDataManager/exports.lua +2 -0
- package/features/saveDataManager/load.js +69 -0
- package/features/saveDataManager/load.lua +2 -0
- package/features/saveDataManager/main.js +131 -0
- package/features/saveDataManager/main.lua +2 -0
- package/features/saveDataManager/maps.js +9 -0
- package/features/saveDataManager/maps.lua +2 -0
- package/features/saveDataManager/merge.js +139 -0
- package/features/saveDataManager/merge.lua +2 -0
- package/features/saveDataManager/save.js +43 -0
- package/features/saveDataManager/save.lua +2 -0
- package/features/saveDataManager/saveDataManagerConstants.js +4 -0
- package/features/saveDataManager/saveDataManagerConstants.lua +2 -0
- package/features/saveDataManager/serializationBrand.js +12 -0
- package/features/saveDataManager/serializationBrand.lua +2 -0
- package/features/sirenHelpers.js +90 -0
- package/features/sirenHelpers.lua +2 -0
- package/features/stageHistory.js +43 -0
- package/features/stageHistory.lua +2 -0
- package/features/taintedLazarusPlayers.js +92 -0
- package/features/taintedLazarusPlayers.lua +2 -0
- package/featuresInitialized.js +16 -0
- package/featuresInitialized.lua +2 -0
- package/functions/ambush.js +35 -0
- package/functions/ambush.lua +2 -0
- package/functions/array.js +423 -0
- package/functions/array.lua +2 -0
- package/functions/benchmark.js +28 -0
- package/functions/benchmark.lua +2 -0
- package/functions/bitwise.js +74 -0
- package/functions/bitwise.lua +2 -0
- package/functions/bombs.js +11 -0
- package/functions/bombs.lua +2 -0
- package/functions/boss.js +137 -0
- package/functions/boss.lua +2 -0
- package/functions/cacheFlag.js +11 -0
- package/functions/cacheFlag.lua +2 -0
- package/functions/cards.js +217 -0
- package/functions/cards.lua +2 -0
- package/functions/challenges.js +9 -0
- package/functions/challenges.lua +2 -0
- package/functions/character.js +102 -0
- package/functions/character.lua +2 -0
- package/functions/charge.js +202 -0
- package/functions/charge.lua +2 -0
- package/functions/chargeBar.js +44 -0
- package/functions/chargeBar.lua +2 -0
- package/functions/collectibleCacheFlag.js +68 -0
- package/functions/collectibleCacheFlag.lua +2 -0
- package/functions/collectibleSet.js +108 -0
- package/functions/collectibleSet.lua +2 -0
- package/functions/collectibleTag.js +65 -0
- package/functions/collectibleTag.lua +2 -0
- package/functions/collectibles.js +469 -0
- package/functions/collectibles.lua +2 -0
- package/functions/color.d.ts +1 -1
- package/functions/color.js +60 -0
- package/functions/color.lua +2 -0
- package/functions/debug.js +60 -0
- package/functions/debug.lua +2 -0
- package/functions/deepCopy.js +361 -0
- package/functions/deepCopy.lua +2 -0
- package/functions/deepCopyTests.js +308 -0
- package/functions/deepCopyTests.lua +2 -0
- package/functions/direction.js +41 -0
- package/functions/direction.lua +2 -0
- package/functions/doors.js +326 -0
- package/functions/doors.lua +2 -0
- package/functions/easing.js +142 -0
- package/functions/easing.lua +2 -0
- package/functions/eden.js +32 -0
- package/functions/eden.lua +2 -0
- package/functions/effects.js +11 -0
- package/functions/effects.lua +2 -0
- package/functions/entity.js +324 -0
- package/functions/entity.lua +2 -0
- package/functions/entitySpecific.js +481 -0
- package/functions/entitySpecific.lua +2 -0
- package/functions/entityTypes.js +6 -0
- package/functions/entityTypes.lua +2 -0
- package/functions/enums.js +151 -0
- package/functions/enums.lua +2 -0
- package/functions/familiars.js +85 -0
- package/functions/familiars.lua +2 -0
- package/functions/flag.js +137 -0
- package/functions/flag.lua +2 -0
- package/functions/flying.js +88 -0
- package/functions/flying.lua +2 -0
- package/functions/globals.js +230 -0
- package/functions/globals.lua +2 -0
- package/functions/gridEntity.js +488 -0
- package/functions/gridEntity.lua +2 -0
- package/functions/gridEntitySpecific.js +109 -0
- package/functions/gridEntitySpecific.lua +2 -0
- package/functions/input.js +95 -0
- package/functions/input.lua +2 -0
- package/functions/isaacAPIClass.js +48 -0
- package/functions/isaacAPIClass.lua +2 -0
- package/functions/jsonHelpers.js +40 -0
- package/functions/jsonHelpers.lua +2 -0
- package/functions/jsonRoom.js +132 -0
- package/functions/jsonRoom.lua +2 -0
- package/functions/kColor.d.ts +1 -1
- package/functions/kColor.js +63 -0
- package/functions/kColor.lua +2 -0
- package/functions/language.js +13 -0
- package/functions/language.lua +2 -0
- package/functions/level.js +20 -0
- package/functions/level.lua +2 -0
- package/functions/log.js +567 -0
- package/functions/log.lua +2 -0
- package/functions/map.js +45 -0
- package/functions/map.lua +2 -0
- package/functions/math.js +103 -0
- package/functions/math.lua +2 -0
- package/functions/mergeTests.js +213 -0
- package/functions/mergeTests.lua +2 -0
- package/functions/minimap.js +80 -0
- package/functions/minimap.lua +2 -0
- package/functions/nextStage.js +290 -0
- package/functions/nextStage.lua +2 -0
- package/functions/npc.js +101 -0
- package/functions/npc.lua +2 -0
- package/functions/pickupVariants.js +47 -0
- package/functions/pickupVariants.lua +2 -0
- package/functions/pickups.js +219 -0
- package/functions/pickups.lua +2 -0
- package/functions/pills.js +160 -0
- package/functions/pills.lua +2 -0
- package/functions/player.js +808 -0
- package/functions/player.lua +2 -0
- package/functions/playerCenter.js +50 -0
- package/functions/playerCenter.lua +2 -0
- package/functions/playerDataStructures.js +114 -0
- package/functions/playerDataStructures.lua +2 -0
- package/functions/playerHealth.js +321 -0
- package/functions/playerHealth.lua +2 -0
- package/functions/playerIndex.js +160 -0
- package/functions/playerIndex.lua +2 -0
- package/functions/pocketItems.js +124 -0
- package/functions/pocketItems.lua +2 -0
- package/functions/positionVelocity.js +136 -0
- package/functions/positionVelocity.lua +2 -0
- package/functions/random.js +73 -0
- package/functions/random.lua +2 -0
- package/functions/revive.js +140 -0
- package/functions/revive.lua +2 -0
- package/functions/rng.d.ts +1 -1
- package/functions/rng.js +117 -0
- package/functions/rng.lua +2 -0
- package/functions/roomData.js +174 -0
- package/functions/roomData.lua +2 -0
- package/functions/roomGrid.js +81 -0
- package/functions/roomGrid.lua +2 -0
- package/functions/roomShape.js +99 -0
- package/functions/roomShape.lua +2 -0
- package/functions/rooms.js +487 -0
- package/functions/rooms.lua +2 -0
- package/functions/run.js +53 -0
- package/functions/run.lua +2 -0
- package/functions/saveFile.js +104 -0
- package/functions/saveFile.lua +2 -0
- package/functions/seeds.js +18 -0
- package/functions/seeds.lua +2 -0
- package/functions/serialization.js +52 -0
- package/functions/serialization.lua +2 -0
- package/functions/set.js +99 -0
- package/functions/set.lua +2 -0
- package/functions/sound.js +9 -0
- package/functions/sound.lua +2 -0
- package/functions/spawnCollectible.js +66 -0
- package/functions/spawnCollectible.lua +2 -0
- package/functions/sprite.js +80 -0
- package/functions/sprite.lua +2 -0
- package/functions/stage.js +172 -0
- package/functions/stage.lua +2 -0
- package/functions/string.js +37 -0
- package/functions/string.lua +2 -0
- package/functions/table.js +143 -0
- package/functions/table.lua +2 -0
- package/functions/tears.js +31 -0
- package/functions/tears.lua +2 -0
- package/functions/transformations.js +101 -0
- package/functions/transformations.lua +2 -0
- package/functions/trinketCacheFlag.js +46 -0
- package/functions/trinketCacheFlag.lua +2 -0
- package/functions/trinketGive.js +121 -0
- package/functions/trinketGive.lua +2 -0
- package/functions/trinkets.js +169 -0
- package/functions/trinkets.lua +2 -0
- package/functions/tstlClass.js +125 -0
- package/functions/tstlClass.lua +2 -0
- package/functions/types.js +27 -0
- package/functions/types.lua +2 -0
- package/functions/ui.js +124 -0
- package/functions/ui.lua +2 -0
- package/functions/utils.js +172 -0
- package/functions/utils.lua +2 -0
- package/functions/vector.js +68 -0
- package/functions/vector.lua +2 -0
- package/index.js +140 -0
- package/index.lua +2 -0
- package/initCustomCallbacks.js +133 -0
- package/initCustomCallbacks.lua +2 -0
- package/initFeatures.js +51 -0
- package/initFeatures.lua +2 -0
- package/interfaces/AddCallbackParameterCustom.js +2 -0
- package/interfaces/AddCallbackParameterCustom.lua +2 -0
- package/interfaces/ChargeBarSprites.js +2 -0
- package/interfaces/ChargeBarSprites.lua +2 -0
- package/interfaces/Corner.js +2 -0
- package/interfaces/Corner.lua +2 -0
- package/interfaces/CustomGridEntityData.js +2 -0
- package/interfaces/CustomGridEntityData.lua +2 -0
- package/interfaces/CustomStage.js +2 -0
- package/interfaces/CustomStage.lua +2 -0
- package/interfaces/CustomStageLua.d.ts +64 -24
- package/interfaces/CustomStageLua.js +13 -0
- package/interfaces/CustomStageLua.lua +2 -0
- package/interfaces/JSONRoomsFile.js +2 -0
- package/interfaces/JSONRoomsFile.lua +2 -0
- package/interfaces/PlayerHealth.js +2 -0
- package/interfaces/PlayerHealth.lua +2 -0
- package/interfaces/PocketItemDescription.js +2 -0
- package/interfaces/PocketItemDescription.lua +2 -0
- package/interfaces/SaveData.js +2 -0
- package/interfaces/SaveData.lua +2 -0
- package/interfaces/TrinketSituation.js +2 -0
- package/interfaces/TrinketSituation.lua +2 -0
- package/interfaces/private/TSTLClassMetatable.js +2 -0
- package/interfaces/private/TSTLClassMetatable.lua +2 -0
- package/maps/PHDPillConversions.js +20 -0
- package/maps/PHDPillConversions.lua +2 -0
- package/maps/cardMap.js +208 -0
- package/maps/cardMap.lua +2 -0
- package/maps/characterMap.js +86 -0
- package/maps/characterMap.lua +2 -0
- package/maps/collectibleDescriptionMap.js +728 -0
- package/maps/collectibleDescriptionMap.lua +2 -0
- package/maps/collectibleNameMap.js +727 -0
- package/maps/collectibleNameMap.lua +2 -0
- package/maps/defaultPlayerStatMap.js +14 -0
- package/maps/defaultPlayerStatMap.lua +2 -0
- package/maps/falsePHDPillConversions.js +34 -0
- package/maps/falsePHDPillConversions.lua +2 -0
- package/maps/gridEntityTypeToBrokenStateMap.js +29 -0
- package/maps/gridEntityTypeToBrokenStateMap.lua +2 -0
- package/maps/gridEntityXMLMap.js +128 -0
- package/maps/gridEntityXMLMap.lua +2 -0
- package/maps/pillEffectMap.js +88 -0
- package/maps/pillEffectMap.lua +2 -0
- package/maps/roomShapeToTopLeftWallGridIndexMap.js +14 -0
- package/maps/roomShapeToTopLeftWallGridIndexMap.lua +2 -0
- package/maps/roomTypeMap.js +39 -0
- package/maps/roomTypeMap.lua +2 -0
- package/maps/trinketDescriptionMap.js +196 -0
- package/maps/trinketDescriptionMap.lua +2 -0
- package/maps/trinketNameMap.js +195 -0
- package/maps/trinketNameMap.lua +2 -0
- package/objects/LRoomShapeToRectangles.js +33 -0
- package/objects/LRoomShapeToRectangles.lua +2 -0
- package/objects/backdropTypeToRockAltType.js +66 -0
- package/objects/backdropTypeToRockAltType.lua +2 -0
- package/objects/bossNamePNGFileNames.js +112 -0
- package/objects/bossNamePNGFileNames.lua +2 -0
- package/objects/bossPortraitPNGFileNames.js +115 -0
- package/objects/bossPortraitPNGFileNames.lua +2 -0
- package/objects/callbackRegisterFunctions.js +170 -0
- package/objects/callbackRegisterFunctions.lua +2 -0
- package/objects/cardDescriptions.js +104 -0
- package/objects/cardDescriptions.lua +2 -0
- package/objects/cardNames.js +104 -0
- package/objects/cardNames.lua +2 -0
- package/objects/cardTypes.js +103 -0
- package/objects/cardTypes.lua +2 -0
- package/objects/challengeNames.js +51 -0
- package/objects/challengeNames.lua +2 -0
- package/objects/characterNames.js +46 -0
- package/objects/characterNames.lua +2 -0
- package/objects/coinSubTypeToValue.js +13 -0
- package/objects/coinSubTypeToValue.lua +2 -0
- package/objects/colors.d.ts +1 -0
- package/objects/colors.js +24 -0
- package/objects/colors.lua +2 -0
- package/objects/directionNames.js +9 -0
- package/objects/directionNames.lua +2 -0
- package/objects/directionToDegrees.js +9 -0
- package/objects/directionToDegrees.lua +2 -0
- package/objects/directionToVector.js +10 -0
- package/objects/directionToVector.lua +2 -0
- package/objects/doorSlotFlagToDoorSlot.js +13 -0
- package/objects/doorSlotFlagToDoorSlot.lua +2 -0
- package/objects/doorSlotToDirection.js +13 -0
- package/objects/doorSlotToDirection.lua +2 -0
- package/objects/doorSlotToDoorSlotFlag.js +13 -0
- package/objects/doorSlotToDoorSlotFlag.lua +2 -0
- package/objects/isaacAPIClassTypeToBrand.js +9 -0
- package/objects/isaacAPIClassTypeToBrand.lua +2 -0
- package/objects/isaacAPIClassTypeToCopyFunction.js +12 -0
- package/objects/isaacAPIClassTypeToCopyFunction.lua +2 -0
- package/objects/languageNames.js +11 -0
- package/objects/languageNames.lua +2 -0
- package/objects/oppositeDoorSlots.js +13 -0
- package/objects/oppositeDoorSlots.lua +2 -0
- package/objects/pillEffectClasses.js +56 -0
- package/objects/pillEffectClasses.lua +2 -0
- package/objects/pillEffectNames.js +55 -0
- package/objects/pillEffectNames.lua +2 -0
- package/objects/pillEffectTypes.js +55 -0
- package/objects/pillEffectTypes.lua +2 -0
- package/objects/playerNamePNGFileNames.js +55 -0
- package/objects/playerNamePNGFileNames.lua +2 -0
- package/objects/playerPortraitPNGFileNames.js +52 -0
- package/objects/playerPortraitPNGFileNames.lua +2 -0
- package/objects/roomShapeBounds.js +46 -0
- package/objects/roomShapeBounds.lua +2 -0
- package/objects/roomShapeCorners.js +268 -0
- package/objects/roomShapeCorners.lua +2 -0
- package/objects/roomShapeLayoutSizes.js +39 -0
- package/objects/roomShapeLayoutSizes.lua +2 -0
- package/objects/roomShapeToBottomRightPosition.js +22 -0
- package/objects/roomShapeToBottomRightPosition.lua +2 -0
- package/objects/roomShapeToDoorSlotCoordinates.js +109 -0
- package/objects/roomShapeToDoorSlotCoordinates.lua +2 -0
- package/objects/roomShapeToDoorSlots.js +69 -0
- package/objects/roomShapeToDoorSlots.lua +2 -0
- package/objects/roomShapeToDoorSlotsToGridIndexDelta.js +113 -0
- package/objects/roomShapeToDoorSlotsToGridIndexDelta.lua +2 -0
- package/objects/roomShapeToGridWidth.js +18 -0
- package/objects/roomShapeToGridWidth.lua +2 -0
- package/objects/roomShapeToTopLeftPosition.js +23 -0
- package/objects/roomShapeToTopLeftPosition.lua +2 -0
- package/objects/roomShapeVolumes.js +30 -0
- package/objects/roomShapeVolumes.lua +2 -0
- package/objects/roomTypeGotoPrefixes.js +33 -0
- package/objects/roomTypeGotoPrefixes.lua +2 -0
- package/objects/roomTypeNames.js +34 -0
- package/objects/roomTypeNames.lua +2 -0
- package/objects/serializedIsaacAPIClassTypeToIdentityFunction.js +12 -0
- package/objects/serializedIsaacAPIClassTypeToIdentityFunction.lua +2 -0
- package/objects/stageTypeSuffixes.js +10 -0
- package/objects/stageTypeSuffixes.lua +2 -0
- package/objects/stageTypeToLetter.js +12 -0
- package/objects/stageTypeToLetter.lua +2 -0
- package/objects/transformationNames.js +18 -0
- package/objects/transformationNames.lua +2 -0
- package/objects/versusScreenBackgroundColors.js +36 -0
- package/objects/versusScreenBackgroundColors.lua +2 -0
- package/objects/versusScreenDirtSpotColors.js +36 -0
- package/objects/versusScreenDirtSpotColors.lua +2 -0
- package/package.json +1 -1
- package/patchErrorFunctions.js +67 -0
- package/patchErrorFunctions.lua +2 -0
- package/sets/LRoomShapesSet.js +8 -0
- package/sets/LRoomShapesSet.lua +2 -0
- package/sets/bossSets.js +374 -0
- package/sets/bossSets.lua +2 -0
- package/sets/charactersThatStartWithAnActiveItemSet.js +15 -0
- package/sets/charactersThatStartWithAnActiveItemSet.lua +2 -0
- package/sets/charactersWithBlackHeartFromEternalHeartSet.js +6 -0
- package/sets/charactersWithBlackHeartFromEternalHeartSet.lua +2 -0
- package/sets/charactersWithFreeDevilDealsSet.js +3 -0
- package/sets/charactersWithFreeDevilDealsSet.lua +2 -0
- package/sets/charactersWithNoRedHeartsSet.js +16 -0
- package/sets/charactersWithNoRedHeartsSet.lua +2 -0
- package/sets/charactersWithNoSoulHeartsSet.js +13 -0
- package/sets/charactersWithNoSoulHeartsSet.lua +2 -0
- package/sets/chestPickupVariantsSet.js +16 -0
- package/sets/chestPickupVariantsSet.lua +2 -0
- package/sets/consoleCommandsSet.js +61 -0
- package/sets/consoleCommandsSet.lua +2 -0
- package/sets/familiarsThatShootPlayerTearsSet.js +12 -0
- package/sets/familiarsThatShootPlayerTearsSet.lua +2 -0
- package/sets/lostStyleCharactersSet.js +13 -0
- package/sets/lostStyleCharactersSet.lua +2 -0
- package/sets/mineShaftRoomSubTypesSet.js +9 -0
- package/sets/mineShaftRoomSubTypesSet.lua +2 -0
- package/sets/narrowRoomShapesSet.js +8 -0
- package/sets/narrowRoomShapesSet.lua +2 -0
- package/sets/redHeartSubTypesSet.js +7 -0
- package/sets/redHeartSubTypesSet.lua +2 -0
- package/sets/sinEntityTypesSet.js +11 -0
- package/sets/sinEntityTypesSet.lua +2 -0
- package/sets/singleUseActiveCollectibleTypesSet.js +12 -0
- package/sets/singleUseActiveCollectibleTypesSet.lua +2 -0
- package/sets/storyBossesSet.js +17 -0
- package/sets/storyBossesSet.lua +2 -0
- package/shaderCrashFix.js +17 -0
- package/shaderCrashFix.lua +2 -0
- package/types/AnyEntity.js +2 -0
- package/types/AnyEntity.lua +2 -0
- package/types/CollectibleIndex.js +2 -0
- package/types/CollectibleIndex.lua +2 -0
- package/types/PickingUpItem.js +38 -0
- package/types/PickingUpItem.lua +2 -0
- package/types/PlayerIndex.js +2 -0
- package/types/PlayerIndex.lua +2 -0
- package/types/private/IsaacAPIClass.js +2 -0
- package/types/private/IsaacAPIClass.lua +2 -0
- package/types/private/SerializedIsaacAPIClass.js +2 -0
- package/types/private/SerializedIsaacAPIClass.lua +2 -0
- package/types/private/TSTLClass.js +2 -0
- package/types/private/TSTLClass.lua +2 -0
- package/upgradeMod.js +47 -0
- package/upgradeMod.lua +2 -0
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
import { GridCollisionClass, GridEntityType, PoopGridEntityVariant, StatueVariant, TrapdoorVariant, } from "isaac-typescript-definitions";
|
|
2
|
+
import { game } from "../cachedClasses";
|
|
3
|
+
import { DISTANCE_OF_GRID_TILE } from "../constants";
|
|
4
|
+
import { RockAltType } from "../enums/RockAltType";
|
|
5
|
+
import { GRID_ENTITY_TYPE_TO_BROKEN_STATE_MAP } from "../maps/gridEntityTypeToBrokenStateMap";
|
|
6
|
+
import { GRID_ENTITY_XML_MAP } from "../maps/gridEntityXMLMap";
|
|
7
|
+
import { DEFAULT_TOP_LEFT_WALL_GRID_INDEX, ROOM_SHAPE_TO_TOP_LEFT_WALL_GRID_INDEX_MAP, } from "../maps/roomShapeToTopLeftWallGridIndexMap";
|
|
8
|
+
import { BACKDROP_TYPE_TO_ROCK_ALT_TYPE } from "../objects/backdropTypeToRockAltType";
|
|
9
|
+
import { isCircleIntersectingRectangle } from "./math";
|
|
10
|
+
import { getRandomSeed } from "./rng";
|
|
11
|
+
import { roomUpdateSafe } from "./rooms";
|
|
12
|
+
import { clearSprite } from "./sprite";
|
|
13
|
+
import { erange } from "./utils";
|
|
14
|
+
import { isVector } from "./vector";
|
|
15
|
+
const BREAKABLE_GRID_ENTITY_TYPES_BY_EXPLOSIONS = new Set([
|
|
16
|
+
GridEntityType.ROCK,
|
|
17
|
+
GridEntityType.ROCK_TINTED,
|
|
18
|
+
GridEntityType.ROCK_BOMB,
|
|
19
|
+
GridEntityType.ROCK_ALT,
|
|
20
|
+
GridEntityType.SPIDER_WEB,
|
|
21
|
+
GridEntityType.TNT,
|
|
22
|
+
// GridEntityType.FIREPLACE (13) does not count since it is turned into a non-grid entity upon
|
|
23
|
+
// spawning.
|
|
24
|
+
GridEntityType.POOP,
|
|
25
|
+
GridEntityType.ROCK_SUPER_SPECIAL,
|
|
26
|
+
GridEntityType.ROCK_SPIKED,
|
|
27
|
+
GridEntityType.ROCK_ALT_2,
|
|
28
|
+
GridEntityType.ROCK_GOLD, // 27
|
|
29
|
+
]);
|
|
30
|
+
const BREAKABLE_GRID_ENTITY_TYPES_VARIANTS_BY_EXPLOSIONS = new Set([`${GridEntityType.STATUE}.${StatueVariant.ANGEL}`]);
|
|
31
|
+
/**
|
|
32
|
+
* Helper function to convert the grid entity type found in a room XML file to the corresponding
|
|
33
|
+
* grid entity type and variant normally used by the game. For example, a rock is represented as
|
|
34
|
+
* 1000.0 in a room XML file, but `GridEntityType.ROCK` is equal to 2.
|
|
35
|
+
*/
|
|
36
|
+
export function convertXMLGridEntityType(gridEntityXMLType, gridEntityXMLVariant) {
|
|
37
|
+
const gridEntityArray = GRID_ENTITY_XML_MAP.get(gridEntityXMLType);
|
|
38
|
+
if (gridEntityArray === undefined) {
|
|
39
|
+
error(`Failed to find an entry in the grid entity map for XML entity type: ${gridEntityXMLType}`);
|
|
40
|
+
}
|
|
41
|
+
const gridEntityType = gridEntityArray[0];
|
|
42
|
+
let gridEntityVariant = gridEntityArray[1];
|
|
43
|
+
// For some specific grid entities, the variant defined in the XML is what is used by the actual
|
|
44
|
+
// game (which is not the case for e.g. poops).
|
|
45
|
+
if (gridEntityType === GridEntityType.SPIKES_ON_OFF || // 9
|
|
46
|
+
gridEntityType === GridEntityType.PRESSURE_PLATE || // 20
|
|
47
|
+
gridEntityType === GridEntityType.TELEPORTER // 23
|
|
48
|
+
) {
|
|
49
|
+
gridEntityVariant = gridEntityXMLVariant;
|
|
50
|
+
}
|
|
51
|
+
return [gridEntityType, gridEntityVariant];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Helper function to get every legal grid index for the current room.
|
|
55
|
+
*
|
|
56
|
+
* Under the hood, this uses the `Room.GetGridSize` method.
|
|
57
|
+
*/
|
|
58
|
+
export function getAllGridIndexes() {
|
|
59
|
+
const room = game.GetRoom();
|
|
60
|
+
const gridSize = room.GetGridSize();
|
|
61
|
+
return erange(gridSize);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Gets the entities that have a hitbox that overlaps with any part of the square that the grid
|
|
65
|
+
* entity is on.
|
|
66
|
+
*
|
|
67
|
+
* Note that this function will not work properly in the PostNewRoom callback, since entities do not
|
|
68
|
+
* have collision yet in that callback.
|
|
69
|
+
*/
|
|
70
|
+
export function getCollidingEntitiesWithGridEntity(gridEntity) {
|
|
71
|
+
const gridEntityCollisionTopLeft = Vector(gridEntity.Position.X - DISTANCE_OF_GRID_TILE / 2, gridEntity.Position.Y - DISTANCE_OF_GRID_TILE / 2);
|
|
72
|
+
const gridEntityCollisionBottomRight = Vector(gridEntity.Position.X + DISTANCE_OF_GRID_TILE / 2, gridEntity.Position.Y + DISTANCE_OF_GRID_TILE / 2);
|
|
73
|
+
const closeEntities = Isaac.FindInRadius(gridEntity.Position, DISTANCE_OF_GRID_TILE * 2);
|
|
74
|
+
return closeEntities.filter((entity) => entity.CollidesWithGrid() &&
|
|
75
|
+
isCircleIntersectingRectangle(entity.Position,
|
|
76
|
+
// We arbitrarily add 0.1 to account for entities that are already pushed back by the time
|
|
77
|
+
// the `POST_UPDATE` callback fires.
|
|
78
|
+
entity.Size + 0.1, gridEntityCollisionTopLeft, gridEntityCollisionBottomRight));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Helper function to get every grid entity in the current room.
|
|
82
|
+
*
|
|
83
|
+
* Use this function with no arguments to get every grid entity, or specify a variadic amount of
|
|
84
|
+
* arguments to match specific grid entity types.
|
|
85
|
+
*
|
|
86
|
+
* For example:
|
|
87
|
+
*
|
|
88
|
+
* ```ts
|
|
89
|
+
* for (const gridEntity of getGridEntities()) {
|
|
90
|
+
* print(gridEntity.GetType())
|
|
91
|
+
* }
|
|
92
|
+
* ```
|
|
93
|
+
*
|
|
94
|
+
* For example:
|
|
95
|
+
*
|
|
96
|
+
* ```ts
|
|
97
|
+
* const rocks = getGridEntities(
|
|
98
|
+
* GridEntityType.ROCK,
|
|
99
|
+
* GridEntityType.BLOCK,
|
|
100
|
+
* GridEntityType.ROCK_TINTED,
|
|
101
|
+
* );
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export function getGridEntities(...gridEntityTypes) {
|
|
105
|
+
const gridEntities = getAllGridEntities();
|
|
106
|
+
if (gridEntityTypes.length === 0) {
|
|
107
|
+
return gridEntities;
|
|
108
|
+
}
|
|
109
|
+
const gridEntityTypesSet = new Set(gridEntityTypes);
|
|
110
|
+
return gridEntities.filter((gridEntity) => {
|
|
111
|
+
const gridEntityType = gridEntity.GetType();
|
|
112
|
+
return gridEntityTypesSet.has(gridEntityType);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
function getAllGridEntities() {
|
|
116
|
+
const room = game.GetRoom();
|
|
117
|
+
const gridEntities = [];
|
|
118
|
+
for (const gridIndex of getAllGridIndexes()) {
|
|
119
|
+
const gridEntity = room.GetGridEntity(gridIndex);
|
|
120
|
+
if (gridEntity !== undefined) {
|
|
121
|
+
gridEntities.push(gridEntity);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return gridEntities;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Helper function to get every grid entity in the current room except for certain specific types.
|
|
128
|
+
*
|
|
129
|
+
* This function is variadic, meaning that you can specify as many grid entity types as you want to
|
|
130
|
+
* exclude.
|
|
131
|
+
*/
|
|
132
|
+
export function getGridEntitiesExcept(...gridEntityTypes) {
|
|
133
|
+
const gridEntities = getAllGridEntities();
|
|
134
|
+
if (gridEntityTypes.length === 0) {
|
|
135
|
+
return gridEntities;
|
|
136
|
+
}
|
|
137
|
+
const gridEntityTypesSet = new Set(gridEntityTypes);
|
|
138
|
+
return gridEntities.filter((gridEntity) => {
|
|
139
|
+
const gridEntityType = gridEntity.GetType();
|
|
140
|
+
return !gridEntityTypesSet.has(gridEntityType);
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Helper function to get a map of every grid entity in the current room. The indexes of the map are
|
|
145
|
+
* equal to the grid index. The values of the map are equal to the grid entities.
|
|
146
|
+
*
|
|
147
|
+
* Use this function with no arguments to get every grid entity, or specify a variadic amount of
|
|
148
|
+
* arguments to match specific grid entity types.
|
|
149
|
+
*/
|
|
150
|
+
export function getGridEntitiesMap(...gridEntityTypes) {
|
|
151
|
+
const gridEntities = getGridEntities(...gridEntityTypes);
|
|
152
|
+
const gridEntityMap = new Map();
|
|
153
|
+
for (const gridEntity of gridEntities) {
|
|
154
|
+
const gridIndex = gridEntity.GetGridIndex();
|
|
155
|
+
gridEntityMap.set(gridIndex, gridEntity);
|
|
156
|
+
}
|
|
157
|
+
return gridEntityMap;
|
|
158
|
+
}
|
|
159
|
+
/** Helper function to return a string containing the grid entity's type and variant. */
|
|
160
|
+
export function getGridEntityID(gridEntity) {
|
|
161
|
+
const gridEntityType = gridEntity.GetType();
|
|
162
|
+
const variant = gridEntity.GetVariant();
|
|
163
|
+
return `${gridEntityType}.${variant}`;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Helper function to return a formatted string in the format returned by the `getGridEntityID`
|
|
167
|
+
* function.
|
|
168
|
+
*/
|
|
169
|
+
export function getGridEntityIDFromConstituents(gridEntityType, variant) {
|
|
170
|
+
return `${gridEntityType}.${variant}`;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Helper function to get all of the grid entities in the room that specifically match the type and
|
|
174
|
+
* variant provided.
|
|
175
|
+
*/
|
|
176
|
+
export function getMatchingGridEntities(gridEntityType, variant) {
|
|
177
|
+
const gridEntities = getGridEntities(gridEntityType);
|
|
178
|
+
return gridEntities.filter((gridEntity) => gridEntity.GetVariant() === variant);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Helper function to get the alternate rock type (i.e. urn, mushroom, etc.) that the current room
|
|
182
|
+
* will have.
|
|
183
|
+
*
|
|
184
|
+
* The rock type is based on the backdrop of the room.
|
|
185
|
+
*
|
|
186
|
+
* For example, if you change the backdrop of the starting room of the run to `BackdropType.CAVES`,
|
|
187
|
+
* and then spawn `GridEntityType.ROCK_ALT`, it will be a mushroom instead of an urn. Additionally,
|
|
188
|
+
* if it is destroyed, it will generate mushroom-appropriate rewards.
|
|
189
|
+
*
|
|
190
|
+
* On the other hand, if an urn is spawned first before the backdrop is changed to
|
|
191
|
+
* `BackdropType.CAVES`, the graphic of the urn will not switch to a mushroom. However, when
|
|
192
|
+
* destroyed, the urn will still generate mushroom-appropriate rewards.
|
|
193
|
+
*/
|
|
194
|
+
export function getRockAltType() {
|
|
195
|
+
const room = game.GetRoom();
|
|
196
|
+
const backdropType = room.GetBackdropType();
|
|
197
|
+
return BACKDROP_TYPE_TO_ROCK_ALT_TYPE[backdropType];
|
|
198
|
+
}
|
|
199
|
+
export function getSurroundingGridEntities(gridEntity) {
|
|
200
|
+
const room = game.GetRoom();
|
|
201
|
+
const gridWidth = room.GetGridWidth();
|
|
202
|
+
const gridIndex = gridEntity.GetGridIndex();
|
|
203
|
+
const surroundingGridIndexes = [
|
|
204
|
+
gridIndex - 1,
|
|
205
|
+
gridIndex + 1,
|
|
206
|
+
gridIndex - gridWidth - 1,
|
|
207
|
+
gridIndex - gridWidth,
|
|
208
|
+
gridIndex - gridWidth + 1,
|
|
209
|
+
gridIndex + gridWidth - 1,
|
|
210
|
+
gridIndex + gridWidth,
|
|
211
|
+
gridIndex + gridWidth + 1, // Bottom-right
|
|
212
|
+
];
|
|
213
|
+
const surroundingGridEntities = [];
|
|
214
|
+
for (const surroundingGridIndex of surroundingGridIndexes) {
|
|
215
|
+
const surroundingGridEntity = room.GetGridEntity(surroundingGridIndex);
|
|
216
|
+
if (surroundingGridEntity !== undefined) {
|
|
217
|
+
surroundingGridEntities.push(surroundingGridEntity);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return surroundingGridEntities;
|
|
221
|
+
}
|
|
222
|
+
export function getTopLeftWall() {
|
|
223
|
+
const room = game.GetRoom();
|
|
224
|
+
const topLeftWallGridIndex = getTopLeftWallGridIndex();
|
|
225
|
+
return room.GetGridEntity(topLeftWallGridIndex);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Helper function to get the grid index of the top left wall. (This will depend on what the current
|
|
229
|
+
* room shape is.)
|
|
230
|
+
*/
|
|
231
|
+
export function getTopLeftWallGridIndex() {
|
|
232
|
+
const room = game.GetRoom();
|
|
233
|
+
const roomShape = room.GetRoomShape();
|
|
234
|
+
const topLeftWallGridIndex = ROOM_SHAPE_TO_TOP_LEFT_WALL_GRID_INDEX_MAP.get(roomShape);
|
|
235
|
+
return topLeftWallGridIndex === undefined
|
|
236
|
+
? DEFAULT_TOP_LEFT_WALL_GRID_INDEX
|
|
237
|
+
: topLeftWallGridIndex;
|
|
238
|
+
}
|
|
239
|
+
export function isGridEntityBreakableByExplosion(gridEntity) {
|
|
240
|
+
const gridEntityType = gridEntity.GetType();
|
|
241
|
+
const gridEntityVariant = gridEntity.GetVariant();
|
|
242
|
+
const gridEntityTypeVariant = `${gridEntityType}.${gridEntityVariant}`;
|
|
243
|
+
return (BREAKABLE_GRID_ENTITY_TYPES_BY_EXPLOSIONS.has(gridEntityType) ||
|
|
244
|
+
BREAKABLE_GRID_ENTITY_TYPES_VARIANTS_BY_EXPLOSIONS.has(gridEntityTypeVariant));
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Helper function to see if the provided gridEntity is in its respective broken state. See the
|
|
248
|
+
* `GRID_ENTITY_TYPE_TO_BROKEN_STATE_MAP` constant for more details.
|
|
249
|
+
*
|
|
250
|
+
* Note that in the case of `GridEntityType.LOCK` (11), the state will turn to being broken before
|
|
251
|
+
* the actual collision for the entity is removed.
|
|
252
|
+
*/
|
|
253
|
+
export function isGridEntityBroken(gridEntity) {
|
|
254
|
+
const gridEntityType = gridEntity.GetType();
|
|
255
|
+
const brokenState = GRID_ENTITY_TYPE_TO_BROKEN_STATE_MAP.get(gridEntityType);
|
|
256
|
+
return gridEntity.State === brokenState;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Helper function to detect whether a given Void Portal is one that randomly spawns after a boss is
|
|
260
|
+
* defeated or is one that naturally spawns in the room after Hush. (This is determined by looking
|
|
261
|
+
* at the VarData of the entity.)
|
|
262
|
+
*/
|
|
263
|
+
export function isPostBossVoidPortal(gridEntity) {
|
|
264
|
+
// - The VarData of Void Portals that are spawned after bosses will be equal to 1.
|
|
265
|
+
// - The VarData of the Void Portal in the room after Hush is equal to 0.
|
|
266
|
+
const saveState = gridEntity.GetSaveState();
|
|
267
|
+
return saveState.VarData === 1;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Helper function to all grid entities in the room except for ones matching the grid entity types
|
|
271
|
+
* provided.
|
|
272
|
+
*
|
|
273
|
+
* Note that this function will automatically update the room. (This means that you can spawn new
|
|
274
|
+
* grid entities on the same tile on the same frame, if needed.)
|
|
275
|
+
*
|
|
276
|
+
* For example:
|
|
277
|
+
*
|
|
278
|
+
* ```ts
|
|
279
|
+
* removeAllGridEntitiesExceptFor(
|
|
280
|
+
* GridEntityType.WALL,
|
|
281
|
+
* GridEntityType.DOOR,
|
|
282
|
+
* );
|
|
283
|
+
* ```
|
|
284
|
+
*
|
|
285
|
+
* @returns True if one or more grid entities were removed, false otherwise.
|
|
286
|
+
*/
|
|
287
|
+
export function removeAllGridExcept(...gridEntityTypes) {
|
|
288
|
+
const gridEntityTypeExceptions = new Set(gridEntityTypes);
|
|
289
|
+
const gridEntities = getGridEntities();
|
|
290
|
+
const removedGridEntities = [];
|
|
291
|
+
for (const gridEntity of gridEntities) {
|
|
292
|
+
const gridEntityType = gridEntity.GetType();
|
|
293
|
+
if (!gridEntityTypeExceptions.has(gridEntityType)) {
|
|
294
|
+
removeGrid(gridEntity, false);
|
|
295
|
+
removedGridEntities.push(gridEntity);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
if (removedGridEntities.length > 0) {
|
|
299
|
+
roomUpdateSafe();
|
|
300
|
+
}
|
|
301
|
+
return removedGridEntities;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Helper function to remove all of the grid entities in the room that match the grid entity types
|
|
305
|
+
* provided.
|
|
306
|
+
*
|
|
307
|
+
* Note that this function will automatically update the room. (This means that you can spawn new
|
|
308
|
+
* grid entities on the same tile on the same frame, if needed.)
|
|
309
|
+
*
|
|
310
|
+
* For example:
|
|
311
|
+
*
|
|
312
|
+
* ```ts
|
|
313
|
+
* removeAllMatchingGridEntities(
|
|
314
|
+
* GridEntityType.ROCK,
|
|
315
|
+
* GridEntityType.BLOCK,
|
|
316
|
+
* GridEntityType.ROCK_TINTED,
|
|
317
|
+
* );
|
|
318
|
+
* ```
|
|
319
|
+
*
|
|
320
|
+
* @returns An array of the grid entities removed.
|
|
321
|
+
*/
|
|
322
|
+
export function removeAllMatchingGridEntities(...gridEntityType) {
|
|
323
|
+
const gridEntities = getGridEntities(...gridEntityType);
|
|
324
|
+
if (gridEntities.length === 0) {
|
|
325
|
+
return [];
|
|
326
|
+
}
|
|
327
|
+
for (const gridEntity of gridEntities) {
|
|
328
|
+
removeGrid(gridEntity, false);
|
|
329
|
+
}
|
|
330
|
+
roomUpdateSafe();
|
|
331
|
+
return gridEntities;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Helper function to remove a grid entity simply by providing the grid entity object. By default,
|
|
335
|
+
* this will also update the room.
|
|
336
|
+
*
|
|
337
|
+
* @param gridEntityOrGridIndex The grid entity or grid index to remove.
|
|
338
|
+
* @param updateRoom Optional. Whether or not to update the room after the grid entity is removed.
|
|
339
|
+
* Default is true. This is generally a good idea because if the room is not
|
|
340
|
+
* updated, you will be unable to spawn another grid entity on the same tile until
|
|
341
|
+
* a frame has passed. However, doing this is expensive, since it involves a call
|
|
342
|
+
* to `Isaac.GetRoomEntities`, so set it to false if you need to invoke this
|
|
343
|
+
* function multiple times.
|
|
344
|
+
*/
|
|
345
|
+
export function removeGrid(gridEntityOrGridIndex, updateRoom = true) {
|
|
346
|
+
const room = game.GetRoom();
|
|
347
|
+
const gridIndex = gridEntityOrGridIndex.GetGridIndex();
|
|
348
|
+
room.RemoveGridEntity(gridIndex, 0, false);
|
|
349
|
+
if (updateRoom) {
|
|
350
|
+
roomUpdateSafe();
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Helper function to make a grid entity invisible. This is accomplished by setting its sprite to an
|
|
355
|
+
* empty/missing PNG file.
|
|
356
|
+
*
|
|
357
|
+
* For more information, see the documentation for the `clearSprite` helper function.
|
|
358
|
+
*/
|
|
359
|
+
export function setGridEntityInvisible(gridEntity) {
|
|
360
|
+
const sprite = gridEntity.GetSprite();
|
|
361
|
+
clearSprite(sprite);
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Helper function to spawn a giant poop. This is performed by spawning each of the four quadrant
|
|
365
|
+
* grid entities in the appropriate positions.
|
|
366
|
+
*/
|
|
367
|
+
export function spawnGiantPoop(topLeftGridIndex) {
|
|
368
|
+
const room = game.GetRoom();
|
|
369
|
+
const gridWidth = room.GetGridWidth();
|
|
370
|
+
const topRightGridIndex = topLeftGridIndex + 1;
|
|
371
|
+
const bottomLeftGridIndex = topLeftGridIndex + gridWidth;
|
|
372
|
+
const bottomRightGridIndex = bottomLeftGridIndex + 1;
|
|
373
|
+
spawnGridWithVariant(GridEntityType.POOP, PoopGridEntityVariant.GIGA_TOP_LEFT, topLeftGridIndex);
|
|
374
|
+
spawnGridWithVariant(GridEntityType.POOP, PoopGridEntityVariant.GIGA_TOP_RIGHT, topRightGridIndex);
|
|
375
|
+
spawnGridWithVariant(GridEntityType.POOP, PoopGridEntityVariant.GIGA_BOTTOM_LEFT, bottomLeftGridIndex);
|
|
376
|
+
spawnGridWithVariant(GridEntityType.POOP, PoopGridEntityVariant.GIGA_BOTTOM_RIGHT, bottomRightGridIndex);
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Helper function to spawn a grid entity.
|
|
380
|
+
*
|
|
381
|
+
* This function assumes you want to give the grid entity a variant of 0. If you want to specify a
|
|
382
|
+
* variant, use the `spawnGridWithVariant` helper function instead.
|
|
383
|
+
*
|
|
384
|
+
* Use this instead of the `Isaac.GridSpawn` method since it:
|
|
385
|
+
* - handles giving pits collision
|
|
386
|
+
* - removes existing grid entities on the same tile, if any
|
|
387
|
+
* - allows you to specify either the grid index or the position
|
|
388
|
+
*/
|
|
389
|
+
export function spawnGrid(gridEntityType, gridIndexOrPosition) {
|
|
390
|
+
return spawnGridWithVariant(gridEntityType, 0, gridIndexOrPosition);
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Helper function to spawn a grid entity with a specific variant.
|
|
394
|
+
*
|
|
395
|
+
* Use this instead of the `Isaac.GridSpawn` method since it:
|
|
396
|
+
* - handles giving pits collision
|
|
397
|
+
* - removes existing grid entities on the same tile, if any
|
|
398
|
+
* - allows you to specify the grid index or the position
|
|
399
|
+
*/
|
|
400
|
+
export function spawnGridWithVariant(gridEntityType, variant, gridIndexOrPosition) {
|
|
401
|
+
const room = game.GetRoom();
|
|
402
|
+
const existingGridEntity = isVector(gridIndexOrPosition)
|
|
403
|
+
? room.GetGridEntityFromPos(gridIndexOrPosition)
|
|
404
|
+
: room.GetGridEntity(gridIndexOrPosition);
|
|
405
|
+
if (existingGridEntity !== undefined) {
|
|
406
|
+
removeGrid(existingGridEntity);
|
|
407
|
+
}
|
|
408
|
+
const position = isVector(gridIndexOrPosition)
|
|
409
|
+
? gridIndexOrPosition
|
|
410
|
+
: room.GetGridPosition(gridIndexOrPosition);
|
|
411
|
+
const gridEntity = Isaac.GridSpawn(gridEntityType, variant, position);
|
|
412
|
+
if (gridEntity === undefined) {
|
|
413
|
+
return gridEntity;
|
|
414
|
+
}
|
|
415
|
+
if (gridEntityType === GridEntityType.PIT) {
|
|
416
|
+
// For some reason, spawned pits start with a collision class of NONE, so we have to manually
|
|
417
|
+
// set it.
|
|
418
|
+
const pit = gridEntity.ToPit();
|
|
419
|
+
if (pit !== undefined) {
|
|
420
|
+
pit.UpdateCollision();
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
else if (gridEntityType === GridEntityType.WALL) {
|
|
424
|
+
// For some reason, spawned walls start with a collision class of NONE, so we have to manually
|
|
425
|
+
// set it.
|
|
426
|
+
gridEntity.CollisionClass = GridCollisionClass.WALL;
|
|
427
|
+
}
|
|
428
|
+
return gridEntity;
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Helper function for emulating what happens when a vanilla `GridEntityType.ROCK_ALT` grid entity
|
|
432
|
+
* breaks.
|
|
433
|
+
*
|
|
434
|
+
* Note that most of the time, this function will do nothing, similar to how most of the time, when
|
|
435
|
+
* an individual urn is destroyed, nothing will spawn.
|
|
436
|
+
*
|
|
437
|
+
* The logic in this function is based on the rewards listed on the wiki:
|
|
438
|
+
* https://bindingofisaacrebirth.fandom.com/wiki/Rocks
|
|
439
|
+
*
|
|
440
|
+
* @param rockAltType The type of reward to spawn. For example, `RockAltType.URN` will have a chance
|
|
441
|
+
* at spawning coins and spiders.
|
|
442
|
+
* @param _seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided,
|
|
443
|
+
* the `RNG.Next` method will be called. Default is `getRandomSeed()`. Normally,
|
|
444
|
+
* you should pass the `InitSeed` of the grid entity that was broken.
|
|
445
|
+
* @returns Whether or not this function spawned something.
|
|
446
|
+
*/
|
|
447
|
+
export function spawnRockAltReward(rockAltType, _seedOrRNG = getRandomSeed()) {
|
|
448
|
+
/// const chance = getRandom(seedOrRNG);
|
|
449
|
+
switch (rockAltType) {
|
|
450
|
+
case RockAltType.URN: {
|
|
451
|
+
// TODO
|
|
452
|
+
return false;
|
|
453
|
+
}
|
|
454
|
+
case RockAltType.MUSHROOM: {
|
|
455
|
+
// TODO
|
|
456
|
+
return false;
|
|
457
|
+
}
|
|
458
|
+
case RockAltType.SKULL: {
|
|
459
|
+
// TODO
|
|
460
|
+
return false;
|
|
461
|
+
}
|
|
462
|
+
case RockAltType.POLYP: {
|
|
463
|
+
// TODO
|
|
464
|
+
return false;
|
|
465
|
+
}
|
|
466
|
+
case RockAltType.BUCKET: {
|
|
467
|
+
// TODO
|
|
468
|
+
return false;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Helper function to spawn a Void Portal. This is more complicated than simply spawning a trapdoor
|
|
474
|
+
* with the appropriate variant, as the game does not give it the correct sprite automatically.
|
|
475
|
+
*/
|
|
476
|
+
export function spawnVoidPortal(gridIndex) {
|
|
477
|
+
const voidPortal = spawnGridWithVariant(GridEntityType.TRAPDOOR, TrapdoorVariant.VOID_PORTAL, gridIndex);
|
|
478
|
+
if (voidPortal === undefined) {
|
|
479
|
+
return voidPortal;
|
|
480
|
+
}
|
|
481
|
+
// If Void Portals are not given a VarData of 1, they will send the player to the next floor
|
|
482
|
+
// instead of The Void.
|
|
483
|
+
voidPortal.VarData = 1;
|
|
484
|
+
const sprite = voidPortal.GetSprite();
|
|
485
|
+
sprite.Load("gfx/grid/voidtrapdoor.anm2", true);
|
|
486
|
+
return voidPortal;
|
|
487
|
+
}
|
|
488
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZEVudGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL2dyaWRFbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixjQUFjLEVBRWQscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixlQUFlLEdBQ2hCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUNMLGdDQUFnQyxFQUNoQywwQ0FBMEMsR0FDM0MsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXBDLE1BQU0seUNBQXlDLEdBQzdDLElBQUksR0FBRyxDQUFDO0lBQ04sY0FBYyxDQUFDLElBQUk7SUFDbkIsY0FBYyxDQUFDLFdBQVc7SUFD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
|
package/functions/gridEntity.lua
CHANGED
|
@@ -489,3 +489,5 @@ function ____exports.spawnVoidPortal(self, gridIndex)
|
|
|
489
489
|
return voidPortal
|
|
490
490
|
end
|
|
491
491
|
return ____exports
|
|
492
|
+
|
|
493
|
+
--# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL2dyaWRFbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O01BeUtTO0FBektULDZDQU9PO0FBTkw7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVGLDBCQUFxQjtBQUFaO0FBQ1Qsc0JBQXNDO0FBQTdCO0FBQ1Qsd0JBQTRCO0FBQW5CO0FBQ1QsMkNBQXFEO0FBQTVDO0FBQ1QsNkJBQW9DO0FBQTNCO0FBQ1QsK0NBR087QUFGTDtBQUNBO0FBRUYsc0NBQStDO0FBQXRDO0FBQ1QsaUJBQThDO0FBQXJDO0FBQ1QsZ0JBQThCO0FBQXJCO0FBQ1Qsa0JBQStCO0FBQXRCO0FBQ1QsbUJBQTRCO0FBQW5CO0FBQ1Qsa0JBQXVCO0FBQWQ7QUFDVCxtQkFBeUI7QUFBaEI7Ozs7QUE0RFQ7QUFDUSxpQkFBTyxLQUFLO0FBQ1oscUJBQVcsS0FBSztBQUV0QixXQUFPLFlBQU87QUFKaEI7QUFzRkEsU0FBUztBQUNELGlCQUFPLEtBQUs7QUFFWix5QkFBNkI7QUFDbkMsY0FBVyxvQkFBYTtBQUNoQiwyQkFBYSxLQUFLLGNBQWM7V0FDbEM7QUFDRiw4Q0FBa0I7OztBQUl0QixXQUFPOzs7O0FBNElUO0FBQ1EsaUJBQU8sS0FBSztBQUNaLHNCQUFZLEtBQUs7QUFFakIsaUNBQ0osMkNBQTJDLElBQUk7QUFDakQsV0FBTyxnQ0FDSCxvQ0FDQTtBQVJOOzs7Ozs7Ozs7OztBQXlJQSxzQ0FDRSx1QkFDQTtPQUFBO1FBQUEsYUFBYTs7QUFFUCxpQkFBTyxLQUFLO0FBRVosc0JBQVksc0JBQXNCO0lBQ3hDLEtBQUssaUJBQWlCLFdBQVcsR0FBRztPQUVoQztRQUNGOztBQVZKOzs7Ozs7O0FBcUZBLGdEQUNFLGdCQUNBLFNBQ0E7QUFFTSxpQkFBTyxLQUFLO0FBRVM7T0FBQSxjQUFTO0FBQ2hDLHFDQUFLLHFCQUFxQjs7QUFDMUIscUNBQUssY0FBYzs7QUFGakI7T0FHRjtR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SDVCO0FBcUJBLDREQUNFO0FBRU0sMkJBQWlCLFdBQVc7QUFDNUIsOEJBQW9CLFdBQVc7QUFDL0IsNENBQTJCLG1CQUFjLGlCQUFJO0FBRW5ELFdBQ0UsMENBQTBDLElBQUksbUJBQzlDLG1EQUFtRCxJQUNqRDtBQVZOOzs7Ozs7QUFzQkEsOENBQW1DO0FBQzNCLDJCQUFpQixXQUFXO0FBQzVCLHdCQUFjLHFDQUFxQyxJQUFJO0FBQzdELFdBQU8sb0JBQXFCO0FBSDlCOzs7O0FBV0EsZ0RBQXFDO0FBRzdCLHNCQUFZLFdBQVc7QUFDN0IsV0FBTyxxQkFBc0I7QUFKL0I7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJBO1VBQ0s7QUFFRyxxQ0FBMkIsVUFBSSxLQUFJO0FBQ25DLHlCQUFlO0FBQ2YsZ0NBQW9DO0FBQzFDLGNBQVcscUJBQWM7QUFDakIsK0JBQWlCLFdBQVc7ZUFDN0IseUJBQXlCLElBQUk7WUFDaEMsNEJBQVcsWUFBWTtBQUN2Qiw0REFBeUI7OztPQUl6Qix1QkFBNkI7UUFDL0I7O0FBR0YsV0FBTztBQWxCVDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0NBO0FBR1EseUJBQWUsaUNBQWdCO09BQ2pDLGlCQUF3QjtBQUMxQixlQUFPOztBQUdULGNBQVcscUJBQWM7UUFDdkIsNEJBQVcsWUFBWTs7SUFHekI7QUFDQSxXQUFPO0FBYlQ7Ozs7O0FBZ0RBLGtEQUF1QztBQUMvQixtQkFBUyxXQUFXO0lBQzFCLGlCQUFZO0FBRmQ7OztBQVNBLDBDQUErQjtBQUN2QixpQkFBTyxLQUFLO0FBQ1osc0JBQVksS0FBSztBQUVqQiw4QkFBb0IsbUJBQW1CO0FBQ3ZDLGdDQUFzQixtQkFBbUI7QUFDekMsaUNBQXVCLHNCQUFzQjtJQUVuRCxzQ0FDRSxxQkFDQSxxQ0FDQTtJQUVGLHNDQUNFLHFCQUNBLHNDQUNBO0lBRUYsc0NBQ0UscUJBQ0Esd0NBQ0E7SUFFRixzQ0FDRSxxQkFDQSx5Q0FDQTtBQTFCSjs7Ozs7Ozs7OztBQXlDQSxxQ0FDRSxnQkFDQTtBQUVBLFdBQU8sc0NBQXFCLGdCQUFnQixHQUFHO0FBSmpEOzs7Ozs7Ozs7Ozs7Ozs7O0FBc0VBLDhDQUNFLGFBQ0E7T0FBQTtRQUFBLGFBQXlCOzs7NkJBSWpCOzJDQUNEOzs7QUFFSCx1QkFBTzs7O21EQUdKOzs7QUFFSCx1QkFBTzs7O21EQUdKOzs7QUFFSCx1QkFBTzs7O21EQUdKOzs7QUFFSCx1QkFBTzs7O21EQUdKOzs7QUFFSCx1QkFBTzs7OztBQTdCYjs7O0FBc0NBLDJDQUFnQztBQUN4Qix1QkFBYSxzQ0FDakIseUJBQ0EsNkJBQ0E7T0FFRTtBQUNGLGVBQU87O0FBS1QseUJBQXFCO0FBRWYsbUJBQVMsV0FBVztJQUMxQixPQUFPLEtBQUssOEJBQThCO0FBRTFDLFdBQU87QUFqQlQiLCJmaWxlIjoiZ3JpZEVudGl0eS5sdWEiLCJzb3VyY2VSb290IjoiIn0=
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { GridEntityType, PressurePlateState, } from "isaac-typescript-definitions";
|
|
2
|
+
import { game } from "../cachedClasses";
|
|
3
|
+
import { getGridEntities, getMatchingGridEntities } from "./gridEntity";
|
|
4
|
+
/**
|
|
5
|
+
* Helper function to get all of the grid entities of type `GridEntityType.TRAPDOOR` in the room.
|
|
6
|
+
* Specify a specific trapdoor variant to select only trapdoors of that variant.
|
|
7
|
+
*/
|
|
8
|
+
export function getCrawlSpaces(crawlSpaceVariant) {
|
|
9
|
+
if (crawlSpaceVariant === undefined) {
|
|
10
|
+
return getGridEntities(GridEntityType.CRAWL_SPACE);
|
|
11
|
+
}
|
|
12
|
+
return getMatchingGridEntities(GridEntityType.CRAWL_SPACE, crawlSpaceVariant);
|
|
13
|
+
}
|
|
14
|
+
/** Helper function to get all of the `GridEntityPit` in the room. */
|
|
15
|
+
export function getPits() {
|
|
16
|
+
const gridEntities = getGridEntities();
|
|
17
|
+
const pits = [];
|
|
18
|
+
for (const gridEntity of gridEntities) {
|
|
19
|
+
const pit = gridEntity.ToPit();
|
|
20
|
+
if (pit !== undefined) {
|
|
21
|
+
pits.push(pit);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return pits;
|
|
25
|
+
}
|
|
26
|
+
/** Helper function to get all of the `GridEntityPoop` in the room. */
|
|
27
|
+
export function getPoops() {
|
|
28
|
+
const gridEntities = getGridEntities();
|
|
29
|
+
const poops = [];
|
|
30
|
+
for (const gridEntity of gridEntities) {
|
|
31
|
+
const poop = gridEntity.ToPoop();
|
|
32
|
+
if (poop !== undefined) {
|
|
33
|
+
poops.push(poop);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return poops;
|
|
37
|
+
}
|
|
38
|
+
/** Helper function to get all of the `GridEntityPressurePlate` in the room. */
|
|
39
|
+
export function getPressurePlates() {
|
|
40
|
+
const gridEntities = getGridEntities();
|
|
41
|
+
const pressurePlates = [];
|
|
42
|
+
for (const gridEntity of gridEntities) {
|
|
43
|
+
const pressurePlate = gridEntity.ToPressurePlate();
|
|
44
|
+
if (pressurePlate !== undefined) {
|
|
45
|
+
pressurePlates.push(pressurePlate);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return pressurePlates;
|
|
49
|
+
}
|
|
50
|
+
/** Helper function to get all of the `GridEntityRock` in the room. */
|
|
51
|
+
export function getRocks() {
|
|
52
|
+
const gridEntities = getGridEntities();
|
|
53
|
+
const rocks = [];
|
|
54
|
+
for (const gridEntity of gridEntities) {
|
|
55
|
+
const rock = gridEntity.ToRock();
|
|
56
|
+
if (rock !== undefined) {
|
|
57
|
+
rocks.push(rock);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return rocks;
|
|
61
|
+
}
|
|
62
|
+
/** Helper function to get all of the `GridEntitySpikes` in the room. */
|
|
63
|
+
export function getSpikes() {
|
|
64
|
+
const gridEntities = getGridEntities();
|
|
65
|
+
const spikes = [];
|
|
66
|
+
for (const gridEntity of gridEntities) {
|
|
67
|
+
const spike = gridEntity.ToSpikes();
|
|
68
|
+
if (spike !== undefined) {
|
|
69
|
+
spikes.push(spike);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return spikes;
|
|
73
|
+
}
|
|
74
|
+
/** Helper function to get all of the `GridEntityTNT` in the room. */
|
|
75
|
+
export function getTNT() {
|
|
76
|
+
const gridEntities = getGridEntities();
|
|
77
|
+
const tntArray = [];
|
|
78
|
+
for (const gridEntity of gridEntities) {
|
|
79
|
+
const tnt = gridEntity.ToTNT();
|
|
80
|
+
if (tnt !== undefined) {
|
|
81
|
+
tntArray.push(tnt);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return tntArray;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Helper function to get all of the grid entities of type `GridEntityType.TRAPDOOR` in the room.
|
|
88
|
+
* Specify a specific trapdoor variant to select only trapdoors of that variant.
|
|
89
|
+
*/
|
|
90
|
+
export function getTrapdoors(trapdoorVariant) {
|
|
91
|
+
if (trapdoorVariant === undefined) {
|
|
92
|
+
return getGridEntities(GridEntityType.TRAPDOOR);
|
|
93
|
+
}
|
|
94
|
+
return getMatchingGridEntities(GridEntityType.TRAPDOOR, trapdoorVariant);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Helper function to determine if all of the pressure plates in the current room are pushed.
|
|
98
|
+
* Returns true if there are no pressure plates in the room.
|
|
99
|
+
*/
|
|
100
|
+
export function isAllPressurePlatesPushed() {
|
|
101
|
+
const room = game.GetRoom();
|
|
102
|
+
const hasPressurePlates = room.HasTriggerPressurePlates();
|
|
103
|
+
if (!hasPressurePlates) {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
const pressurePlates = getPressurePlates();
|
|
107
|
+
return pressurePlates.every((pressurePlate) => pressurePlate.State === PressurePlateState.PRESSURE_PLATE_PRESSED);
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZEVudGl0eVNwZWNpZmljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvaXNhYWNzY3JpcHQtY29tbW9uL3NyYy9mdW5jdGlvbnMvZ3JpZEVudGl0eVNwZWNpZmljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxjQUFjLEVBQ2Qsa0JBQWtCLEdBRW5CLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFeEU7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsaUJBQW1DO0lBRW5DLElBQUksaUJBQWlCLEtBQUssU0FBUyxFQUFFO1FBQ25DLE9BQU8sZUFBZSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUNwRDtJQUVELE9BQU8sdUJBQXVCLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFFRCxxRUFBcUU7QUFDckUsTUFBTSxVQUFVLE9BQU87SUFDckIsTUFBTSxZQUFZLEdBQUcsZUFBZSxFQUFFLENBQUM7SUFFdkMsTUFBTSxJQUFJLEdBQW9CLEVBQUUsQ0FBQztJQUNqQyxLQUFLLE1BQU0sVUFBVSxJQUFJLFlBQVksRUFBRTtRQUNyQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEI7S0FDRjtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELHNFQUFzRTtBQUN0RSxNQUFNLFVBQVUsUUFBUTtJQUN0QixNQUFNLFlBQVksR0FBRyxlQUFlLEVBQUUsQ0FBQztJQUV2QyxNQUFNLEtBQUssR0FBcUIsRUFBRSxDQUFDO0lBQ25DLEtBQUssTUFBTSxVQUFVLElBQUksWUFBWSxFQUFFO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqQyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDdEIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQjtLQUNGO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsK0VBQStFO0FBQy9FLE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsTUFBTSxZQUFZLEdBQUcsZUFBZSxFQUFFLENBQUM7SUFFdkMsTUFBTSxjQUFjLEdBQThCLEVBQUUsQ0FBQztJQUNyRCxLQUFLLE1BQU0sVUFBVSxJQUFJLFlBQVksRUFBRTtRQUNyQyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbkQsSUFBSSxhQUFhLEtBQUssU0FBUyxFQUFFO1lBQy9CLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDcEM7S0FDRjtJQUVELE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxzRUFBc0U7QUFDdEUsTUFBTSxVQUFVLFFBQVE7SUFDdEIsTUFBTSxZQUFZLEdBQUcsZUFBZSxFQUFFLENBQUM7SUFFdkMsTUFBTSxLQUFLLEdBQXFCLEVBQUUsQ0FBQztJQUNuQyxLQUFLLE1BQU0sVUFBVSxJQUFJLFlBQVksRUFBRTtRQUNyQyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3RCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEI7S0FDRjtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELHdFQUF3RTtBQUN4RSxNQUFNLFVBQVUsU0FBUztJQUN2QixNQUFNLFlBQVksR0FBRyxlQUFlLEVBQUUsQ0FBQztJQUV2QyxNQUFNLE1BQU0sR0FBdUIsRUFBRSxDQUFDO0lBQ3RDLEtBQUssTUFBTSxVQUFVLElBQUksWUFBWSxFQUFFO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwQyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQjtLQUNGO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELHFFQUFxRTtBQUNyRSxNQUFNLFVBQVUsTUFBTTtJQUNwQixNQUFNLFlBQVksR0FBRyxlQUFlLEVBQUUsQ0FBQztJQUV2QyxNQUFNLFFBQVEsR0FBb0IsRUFBRSxDQUFDO0lBQ3JDLEtBQUssTUFBTSxVQUFVLElBQUksWUFBWSxFQUFFO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7WUFDckIsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwQjtLQUNGO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsZUFBaUM7SUFDNUQsSUFBSSxlQUFlLEtBQUssU0FBUyxFQUFFO1FBQ2pDLE9BQU8sZUFBZSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNqRDtJQUVELE9BQU8sdUJBQXVCLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUMzRSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QjtJQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUUxRCxJQUFJLENBQUMsaUJBQWlCLEVBQUU7UUFDdEIsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sY0FBYyxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFDM0MsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUN6QixDQUFDLGFBQWEsRUFBRSxFQUFFLENBQ2hCLGFBQWEsQ0FBQyxLQUFLLEtBQUssa0JBQWtCLENBQUMsc0JBQXNCLENBQ3BFLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -112,3 +112,5 @@ function ____exports.isAllPressurePlatesPushed(self)
|
|
|
112
112
|
)
|
|
113
113
|
end
|
|
114
114
|
return ____exports
|
|
115
|
+
|
|
116
|
+
--# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL2dyaWRFbnRpdHlTcGVjaWZpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FLTztBQUhMO0FBQ0E7QUFHRiwwQkFBcUI7QUFBWjtBQUNULHVCQUF5RDtBQUFoRDtBQUFpQjs7O0FBTTFCLDBDQUNFO09BRUk7QUFDRixlQUFPLHFCQUFnQjs7QUFHekIsV0FBTyw2QkFBd0IsNEJBQTRCO0FBUDdEOztBQVdBO0FBQ1EseUJBQWU7QUFFZixpQkFBd0I7QUFDOUIsY0FBVyxxQkFBYztBQUNqQixvQkFBTSxXQUFXO1dBQ25CO0FBQ0YsOEJBQVU7OztBQUlkLFdBQU87QUFYVDs7QUFlQTtBQUNRLHlCQUFlO0FBRWYsa0JBQTBCO0FBQ2hDLGNBQVcscUJBQWM7QUFDakIscUJBQU8sV0FBVztXQUNwQjtBQUNGLGdDQUFXOzs7QUFJZixXQUFPO0FBWFQ7O0FBZUE7QUFDUSx5QkFBZTtBQUVmLDJCQUE0QztBQUNsRCxjQUFXLHFCQUFjO0FBQ2pCLDhCQUFnQixXQUFXO1dBQzdCO0FBQ0Ysa0RBQW9COzs7QUFJeEIsV0FBTztBQVhUOztBQWVBO0FBQ1EseUJBQWU7QUFFZixrQkFBMEI7QUFDaEMsY0FBVyxxQkFBYztBQUNqQixxQkFBTyxXQUFXO1dBQ3BCO0FBQ0YsZ0NBQVc7OztBQUlmLFdBQU87QUFYVDs7QUFlQTtBQUNRLHlCQUFlO0FBRWYsbUJBQTZCO0FBQ25DLGNBQVcscUJBQWM7QUFDakIsc0JBQVEsV0FBVztXQUNyQjtBQUNGLGtDQUFZOzs7QUFJaEIsV0FBTztBQVhUOztBQWVBO0FBQ1EseUJBQWU7QUFFZixxQkFBNEI7QUFDbEMsY0FBVyxxQkFBYztBQUNqQixvQkFBTSxXQUFXO1dBQ25CO0FBQ0Ysc0NBQWM7OztBQUlsQixXQUFPO0FBWFQ7OztBQWtCQSx3Q0FBNkI7T0FDdkI7QUFDRixlQUFPLHFCQUFnQjs7QUFHekIsV0FBTyw2QkFBd0IseUJBQXlCO0FBTDFEOzs7QUFZQTtBQUNRLGlCQUFPLEtBQUs7QUFDWiw4QkFBb0IsS0FBSztXQUUxQjtBQUNILGVBQU87O0FBR0gsMkJBQWlCO0FBQ3ZCLFdBQU87UUFBQTtRQUNMLGVBQUMsZUFDQyw4QkFBd0IseUNBRDFCOztBQVZKIiwiZmlsZSI6ImdyaWRFbnRpdHlTcGVjaWZpYy5sdWEiLCJzb3VyY2VSb290IjoiIn0=
|