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,104 @@
|
|
|
1
|
+
import { GridEntityType, ModCallback, } from "isaac-typescript-definitions";
|
|
2
|
+
import { ModCallbackCustom } from "../../enums/ModCallbackCustom";
|
|
3
|
+
import { isArray } from "../../functions/array";
|
|
4
|
+
import { saveDataManager } from "../saveDataManager/exports";
|
|
5
|
+
import { setBackdrop } from "./backdrop";
|
|
6
|
+
import { removeUrnRewards, setCustomDecorationGraphics, setCustomDoorGraphics, setCustomPitGraphics, setCustomRockGraphics, } from "./gridEntities";
|
|
7
|
+
import * as metadataJSON from "./metadata.json"; // This will correspond to "metadata.lua" at run-time.
|
|
8
|
+
import { setShadows } from "./shadows";
|
|
9
|
+
import { streakTextGetShaderParams, streakTextPostRender } from "./streakText";
|
|
10
|
+
import v, { customStagesMap } from "./v";
|
|
11
|
+
import { playVersusScreenAnimation, versusScreenPostRender, } from "./versusScreen";
|
|
12
|
+
export function customStageInit(mod) {
|
|
13
|
+
saveDataManager("customStage", v);
|
|
14
|
+
initRoomTypeMaps();
|
|
15
|
+
mod.AddCallback(ModCallback.POST_RENDER, postRender); // 2
|
|
16
|
+
mod.AddCallback(ModCallback.GET_SHADER_PARAMS, getShaderParams); // 21
|
|
17
|
+
mod.AddCallbackCustom(ModCallbackCustom.POST_GRID_ENTITY_BROKEN, postGridEntityBrokenRockAlt, GridEntityType.ROCK_ALT);
|
|
18
|
+
mod.AddCallbackCustom(ModCallbackCustom.POST_GRID_ENTITY_INIT, postGridEntityBrokenInit);
|
|
19
|
+
mod.AddCallbackCustom(ModCallbackCustom.POST_NEW_ROOM_REORDERED, postNewRoomReordered);
|
|
20
|
+
}
|
|
21
|
+
function initRoomTypeMaps() {
|
|
22
|
+
if (!isArray(metadataJSON)) {
|
|
23
|
+
error('The IsaacScript standard library attempted to read the custom stage metadata from the "metadata.lua" file, but it was not an array.');
|
|
24
|
+
}
|
|
25
|
+
const customStagesLua = metadataJSON;
|
|
26
|
+
for (const customStageLua of customStagesLua) {
|
|
27
|
+
const roomTypeMap = getRoomTypeMap(customStageLua);
|
|
28
|
+
const customStage = {
|
|
29
|
+
...customStageLua,
|
|
30
|
+
roomTypeMap,
|
|
31
|
+
};
|
|
32
|
+
customStagesMap.set(customStage.name, customStage);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function getRoomTypeMap(customStageLua) {
|
|
36
|
+
const roomTypeMap = new Map();
|
|
37
|
+
for (const roomMetadata of customStageLua.roomsMetadata) {
|
|
38
|
+
const roomType = roomMetadata.type;
|
|
39
|
+
let roomShapeMap = roomTypeMap.get(roomType);
|
|
40
|
+
if (roomShapeMap === undefined) {
|
|
41
|
+
roomShapeMap = new Map();
|
|
42
|
+
roomTypeMap.set(roomType, roomShapeMap);
|
|
43
|
+
}
|
|
44
|
+
const roomShape = roomMetadata.shape;
|
|
45
|
+
let roomDoorSlotFlagMap = roomShapeMap.get(roomShape);
|
|
46
|
+
if (roomDoorSlotFlagMap === undefined) {
|
|
47
|
+
roomDoorSlotFlagMap = new Map();
|
|
48
|
+
roomShapeMap.set(roomShape, roomDoorSlotFlagMap);
|
|
49
|
+
}
|
|
50
|
+
const doorSlotFlags = roomMetadata.doorSlotFlags;
|
|
51
|
+
let rooms = roomDoorSlotFlagMap.get(doorSlotFlags);
|
|
52
|
+
if (rooms === undefined) {
|
|
53
|
+
rooms = [];
|
|
54
|
+
roomDoorSlotFlagMap.set(doorSlotFlags, rooms);
|
|
55
|
+
}
|
|
56
|
+
rooms.push(roomMetadata);
|
|
57
|
+
}
|
|
58
|
+
return roomTypeMap;
|
|
59
|
+
}
|
|
60
|
+
// ModCallback.POST_RENDER (2)
|
|
61
|
+
function postRender() {
|
|
62
|
+
const customStage = v.run.currentCustomStage;
|
|
63
|
+
if (customStage === null) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
streakTextPostRender(customStage);
|
|
67
|
+
versusScreenPostRender();
|
|
68
|
+
}
|
|
69
|
+
// ModCallback.GET_SHADER_PARAMS (22)
|
|
70
|
+
function getShaderParams(shaderName) {
|
|
71
|
+
streakTextGetShaderParams(shaderName);
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
// ModCallbackCustom.POST_GRID_ENTITY_BROKEN
|
|
75
|
+
// GridEntityType.ROCK_ALT
|
|
76
|
+
function postGridEntityBrokenRockAlt(gridEntity) {
|
|
77
|
+
const customStage = v.run.currentCustomStage;
|
|
78
|
+
if (customStage === null) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
removeUrnRewards(customStage, gridEntity);
|
|
82
|
+
}
|
|
83
|
+
// ModCallbackCustom.POST_GRID_ENTITY_INIT
|
|
84
|
+
function postGridEntityBrokenInit(gridEntity) {
|
|
85
|
+
const customStage = v.run.currentCustomStage;
|
|
86
|
+
if (customStage === null) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
setCustomDecorationGraphics(customStage, gridEntity);
|
|
90
|
+
setCustomRockGraphics(customStage, gridEntity);
|
|
91
|
+
setCustomPitGraphics(customStage, gridEntity);
|
|
92
|
+
setCustomDoorGraphics(customStage, gridEntity);
|
|
93
|
+
}
|
|
94
|
+
// ModCallbackCustom.POST_NEW_ROOM_REORDERED
|
|
95
|
+
function postNewRoomReordered() {
|
|
96
|
+
const customStage = v.run.currentCustomStage;
|
|
97
|
+
if (customStage === null) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
setBackdrop(customStage);
|
|
101
|
+
setShadows(customStage);
|
|
102
|
+
playVersusScreenAnimation(customStage);
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2UvaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsY0FBYyxFQUNkLFdBQVcsR0FHWixNQUFNLDhCQUE4QixDQUFDO0FBRXRDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU1oRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLDJCQUEyQixFQUMzQixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLHFCQUFxQixHQUN0QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sS0FBSyxZQUFZLE1BQU0saUJBQWlCLENBQUMsQ0FBQyxzREFBc0Q7QUFDdkcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0UsT0FBTyxDQUFDLEVBQUUsRUFBRSxlQUFlLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDekMsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixzQkFBc0IsR0FDdkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixNQUFNLFVBQVUsZUFBZSxDQUFDLEdBQWdCO0lBQzlDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsZ0JBQWdCLEVBQUUsQ0FBQztJQUVuQixHQUFHLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJ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
|
|
@@ -7,8 +7,6 @@ local initRoomTypeMaps, getRoomTypeMap, postRender, getShaderParams, postGridEnt
|
|
|
7
7
|
local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
|
|
8
8
|
local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
|
|
9
9
|
local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
|
|
10
|
-
local ____cachedClasses = require("cachedClasses")
|
|
11
|
-
local game = ____cachedClasses.game
|
|
12
10
|
local ____ModCallbackCustom = require("enums.ModCallbackCustom")
|
|
13
11
|
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
|
|
14
12
|
local ____array = require("functions.array")
|
|
@@ -26,7 +24,6 @@ local setCustomRockGraphics = ____gridEntities.setCustomRockGraphics
|
|
|
26
24
|
local metadataJSON = require("features.customStage.metadata")
|
|
27
25
|
local ____shadows = require("features.customStage.shadows")
|
|
28
26
|
local setShadows = ____shadows.setShadows
|
|
29
|
-
local shadowsPostRender = ____shadows.shadowsPostRender
|
|
30
27
|
local ____streakText = require("features.customStage.streakText")
|
|
31
28
|
local streakTextGetShaderParams = ____streakText.streakTextGetShaderParams
|
|
32
29
|
local streakTextPostRender = ____streakText.streakTextPostRender
|
|
@@ -77,16 +74,12 @@ function postRender(self)
|
|
|
77
74
|
if customStage == nil then
|
|
78
75
|
return
|
|
79
76
|
end
|
|
80
|
-
local isPaused = game:IsPaused()
|
|
81
|
-
if isPaused then
|
|
82
|
-
return
|
|
83
|
-
end
|
|
84
77
|
streakTextPostRender(nil, customStage)
|
|
85
|
-
shadowsPostRender(nil, customStage)
|
|
86
78
|
versusScreenPostRender(nil)
|
|
87
79
|
end
|
|
88
80
|
function getShaderParams(self, shaderName)
|
|
89
|
-
|
|
81
|
+
streakTextGetShaderParams(nil, shaderName)
|
|
82
|
+
return nil
|
|
90
83
|
end
|
|
91
84
|
function postGridEntityBrokenRockAlt(self, gridEntity)
|
|
92
85
|
local customStage = v.run.currentCustomStage
|
|
@@ -124,3 +117,5 @@ function ____exports.customStageInit(self, mod)
|
|
|
124
117
|
mod:AddCallbackCustom(ModCallbackCustom.POST_NEW_ROOM_REORDERED, postNewRoomReordered)
|
|
125
118
|
end
|
|
126
119
|
return ____exports
|
|
120
|
+
|
|
121
|
+
--# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2UvaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztNQTBEUyxrQkFrQkEsZ0JBMkNBLFlBV0EsaUJBU0EsNkJBVUEsMEJBYUE7QUFsS1QsNkNBTU87QUFKTDtBQUNBO0FBS0YsOEJBQWtDO0FBQXpCO0FBQ1Qsa0JBQXdCO0FBQWY7QUFNVCxvQkFBZ0M7QUFBdkI7QUFDVCxxQkFBNEI7QUFBbkI7QUFDVCx5QkFNTztBQUxMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFRixNQUFZLGVBQWtCO0FBQzlCLG9CQUEyQjtBQUFsQjtBQUNULHVCQUFnRTtBQUF2RDtBQUEyQjtBQUNwQyxjQUFtQztBQUE1QjtBQUFLO0FBQ1oseUJBR087QUFGTDtBQUNBO0FBNEJGLFNBQVM7V0FDRixhQUFRO1FBQ1gsTUFDRTs7QUFHRSw0QkFBa0I7QUFFeEIsY0FBVyx5QkFBa0I7QUFDckIsNEJBQWMsb0JBQWU7QUFDN0IsNEJBQTJCLHVCQUM1QixnQkFENEIsQ0FFL0I7UUFFRixnQkFBZ0IsSUFBSSxrQkFBa0I7OztBQUkxQyxTQUFTLHFCQUFlO0FBQ2hCLHdCQUFjLFVBQUk7QUFLeEIsY0FBVyx1QkFBZ0I7QUFDbkIseUJBQVc7QUFFYiw2QkFBZSxZQUFZLElBQUk7V0FDL0I7QUFDRiwyQkFBZSxVQUFJO1lBSW5CLFlBQVksSUFBSSxVQUFVOztBQUd0QiwwQkFBWTtBQUVkLG9DQUFzQixhQUFhLElBQUk7V0FDdkM7QUFDRixrQ0FBc0IsVUFBSTtZQUkxQixhQUFhLElBQUksV0FBVzs7QUFHeEIsOEJBQWdCO0FBQ2xCLHNCQUFRLG9CQUFvQixJQUFJO1dBQ2hDO0FBQ0Ysb0JBQVE7WUFDUixvQkFBb0IsSUFBSSxlQUFlOztBQUd6Qyw0QkFBVzs7QUFHYixXQUFPOztBQUlULFNBQVM7QUFDRCx3QkFBYztPQUNoQixlQUFnQjtBQUNsQjs7SUFHRiwwQkFBcUI7SUFDckI7O0FBSUYsU0FBUyxzQkFDUDtJQUVBLCtCQUEwQjtBQUMxQjs7QUFLRixTQUFTLGtDQUE0QjtBQUM3Qix3QkFBYztPQUNoQixlQUFnQjtBQUNsQjs7SUFHRixzQkFBaUIsYUFBYTs7QUFJaEMsU0FBUywrQkFBeUI7QUFDMUIsd0JBQWM7T0FDaEIsZUFBZ0I7QUFDbEI7O0lBR0YsaUNBQTRCLGFBQWE7SUFDekMsMkJBQXNCLGFBQWE7SUFDbkMsMEJBQXFCLGFBQWE7SUFDbEMsMkJBQXNCLGFBQWE7O0FBSXJDLFNBQVM7QUFDRCx3QkFBYztPQUNoQixlQUFnQjtBQUNsQjs7SUFHRixpQkFBWTtJQUNaLGdCQUFXO0lBQ1gsK0JBQTBCOztBQXpJNUIsMkNBQWdDO0lBQzlCLHFCQUFnQixlQUFlO0lBQy9CO0lBRUEsSUFBSSxZQUFZLHlCQUF5QjtJQUV6QyxJQUFJLFlBQVksK0JBQStCO0lBRS9DLElBQUksa0JBQ0YsMkNBQ0EsNkJBQ0E7SUFHRixJQUFJLGtCQUNGLHlDQUNBO0lBR0YsSUFBSSxrQkFDRiwyQ0FDQTtBQXJCSiIsImZpbGUiOiJpbml0Lmx1YSIsInNvdXJjZVJvb3QiOiIifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[]
|
|
@@ -1 +1,3 @@
|
|
|
1
1
|
return {}
|
|
2
|
+
|
|
3
|
+
--# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2UvbWV0YWRhdGEuanNvbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiT0FBQSIsImZpbGUiOiJtZXRhZGF0YS5sdWEiLCJzb3VyY2VSb290IjoiIn0=
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { EffectVariant, RoomShape } from "isaac-typescript-definitions";
|
|
2
|
+
import { game } from "../../cachedClasses";
|
|
3
|
+
import { getRandomArrayElement } from "../../functions/array";
|
|
4
|
+
import { spawnEffectWithSeed } from "../../functions/entitySpecific";
|
|
5
|
+
import { ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH } from "./customStageConstants";
|
|
6
|
+
import v from "./v";
|
|
7
|
+
/**
|
|
8
|
+
* Normally, we would make a custom entity to represent a shadow effect, but we don't want to
|
|
9
|
+
* interfere with the "entities2.xml" file in end-user mods. Thus, we must select a vanilla effect
|
|
10
|
+
* to masquerade as a backdrop effect.
|
|
11
|
+
*
|
|
12
|
+
* We arbitrarily choose a ladder for this purpose because it will not automatically despawn after
|
|
13
|
+
* time passes, like most other effects.
|
|
14
|
+
*/
|
|
15
|
+
const SHADOW_EFFECT_VARIANT = EffectVariant.LADDER;
|
|
16
|
+
/** The animation comes from StageAPI. */
|
|
17
|
+
const ROOM_SHAPE_TO_SHADOW_ANIMATION = {
|
|
18
|
+
[RoomShape.SHAPE_1x1]: "1x1",
|
|
19
|
+
[RoomShape.IH]: "1x1",
|
|
20
|
+
[RoomShape.IV]: "1x1",
|
|
21
|
+
[RoomShape.SHAPE_1x2]: "1x2",
|
|
22
|
+
[RoomShape.IIV]: "1x2",
|
|
23
|
+
[RoomShape.SHAPE_2x1]: "2x1",
|
|
24
|
+
[RoomShape.IIH]: "2x1",
|
|
25
|
+
[RoomShape.SHAPE_2x2]: "2x2",
|
|
26
|
+
[RoomShape.LTL]: "2x2",
|
|
27
|
+
[RoomShape.LTR]: "2x2",
|
|
28
|
+
[RoomShape.LBL]: "2x2",
|
|
29
|
+
[RoomShape.LBR]: "2x2", // 12
|
|
30
|
+
};
|
|
31
|
+
const FADED_BLACK = Color(0, 0, 0, 0.25);
|
|
32
|
+
const shadowSprite = Sprite();
|
|
33
|
+
shadowSprite.Load(`${ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH}/stage-shadow.anm2`, true);
|
|
34
|
+
export function setShadows(customStage) {
|
|
35
|
+
if (customStage.shadows === undefined) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const room = game.GetRoom();
|
|
39
|
+
const roomShape = room.GetRoomShape();
|
|
40
|
+
const centerPos = room.GetCenterPos();
|
|
41
|
+
const animation = ROOM_SHAPE_TO_SHADOW_ANIMATION[roomShape];
|
|
42
|
+
const shadows = customStage.shadows[animation];
|
|
43
|
+
if (shadows === undefined) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// We spawn an effect instead of simply rendering a static sprite so that the effect will properly
|
|
47
|
+
// slide in during a room transition animation. (It looks stupid if the shadow stays statically
|
|
48
|
+
// rendering throughout this animation.)
|
|
49
|
+
const shadowEffect = spawnEffectWithSeed(SHADOW_EFFECT_VARIANT, 0, centerPos, 1);
|
|
50
|
+
const sprite = shadowEffect.GetSprite();
|
|
51
|
+
sprite.Load(`${ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH}/stage-shadow.anm2`, false);
|
|
52
|
+
const decorationSeed = room.GetDecorationSeed();
|
|
53
|
+
const shadow = getRandomArrayElement(shadows, decorationSeed);
|
|
54
|
+
sprite.ReplaceSpritesheet(0, shadow.pngPath);
|
|
55
|
+
sprite.LoadGraphics();
|
|
56
|
+
sprite.SetFrame(animation, 0);
|
|
57
|
+
sprite.Color =
|
|
58
|
+
shadow.color === undefined
|
|
59
|
+
? FADED_BLACK
|
|
60
|
+
: Color(shadow.color.r, shadow.color.g, shadow.color.b, shadow.color.a);
|
|
61
|
+
v.room.showingShadows = true;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZG93cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2Uvc2hhZG93cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVyRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7QUFJcEI7Ozs7Ozs7R0FPRztBQUNILE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztBQUVuRCx5Q0FBeUM7QUFDekMsTUFBTSw4QkFBOEIsR0FFaEM7SUFDRixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLO0lBQzVCLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUs7SUFDckIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSztJQUNyQixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLO0lBQzVCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDdEIsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSztJQUM1QixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ3RCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUs7SUFDNUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUN0QixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ3RCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDdEIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUs7Q0FDckIsQ0FBQztBQUVYLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUV6QyxNQUFNLFlBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUM5QixZQUFZLENBQUMsSUFBSSxDQUNmLEdBQUcsaUNBQWlDLG9CQUFvQixFQUN4RCxJQUFJLENBQ0wsQ0FBQztBQUVGLE1BQU0sVUFBVSxVQUFVLENBQUMsV0FBd0I7SUFDakQsSUFBSSxXQUFXLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtRQUNyQyxPQUFPO0tBQ1I7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxNQUFNLFNBQVMsR0FBRyw4QkFBOEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1RCxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtRQUN6QixPQUFPO0tBQ1I7SUFFRCxrR0FBa0c7SUFDbEcsK0ZBQStGO0lBQy9GLHdDQUF3QztJQUN4QyxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FDdEMscUJBQXFCLEVBQ3JCLENBQUMsRUFDRCxTQUFTLEVBQ1QsQ0FBUyxDQUNWLENBQUM7SUFFRixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGlDQUFpQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3RSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNoRCxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDOUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sQ0FBQyxLQUFLO1FBQ1YsTUFBTSxDQUFDLEtBQUssS0FBSyxTQUFTO1lBQ3hCLENBQUMsQ0FBQyxXQUFXO1lBQ2IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTVFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztBQUMvQixDQUFDIn0=
|
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
local ____exports = {}
|
|
2
2
|
local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
|
|
3
|
+
local EffectVariant = ____isaac_2Dtypescript_2Ddefinitions.EffectVariant
|
|
3
4
|
local RoomShape = ____isaac_2Dtypescript_2Ddefinitions.RoomShape
|
|
4
5
|
local ____cachedClasses = require("cachedClasses")
|
|
5
6
|
local game = ____cachedClasses.game
|
|
6
|
-
local ____constants = require("constants")
|
|
7
|
-
local VectorZero = ____constants.VectorZero
|
|
8
7
|
local ____array = require("functions.array")
|
|
9
8
|
local getRandomArrayElement = ____array.getRandomArrayElement
|
|
9
|
+
local ____entitySpecific = require("functions.entitySpecific")
|
|
10
|
+
local spawnEffectWithSeed = ____entitySpecific.spawnEffectWithSeed
|
|
10
11
|
local ____customStageConstants = require("features.customStage.customStageConstants")
|
|
11
12
|
local ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH = ____customStageConstants.ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH
|
|
12
13
|
local ____v = require("features.customStage.v")
|
|
13
14
|
local v = ____v.default
|
|
15
|
+
--- Normally, we would make a custom entity to represent a shadow effect, but we don't want to
|
|
16
|
+
-- interfere with the "entities2.xml" file in end-user mods. Thus, we must select a vanilla effect
|
|
17
|
+
-- to masquerade as a backdrop effect.
|
|
18
|
+
--
|
|
19
|
+
-- We arbitrarily choose a ladder for this purpose because it will not automatically despawn after
|
|
20
|
+
-- time passes, like most other effects.
|
|
21
|
+
local SHADOW_EFFECT_VARIANT = EffectVariant.LADDER
|
|
14
22
|
--- The animation comes from StageAPI.
|
|
15
23
|
local ROOM_SHAPE_TO_SHADOW_ANIMATION = {
|
|
16
24
|
[RoomShape.SHAPE_1x1] = "1x1",
|
|
@@ -26,34 +34,38 @@ local ROOM_SHAPE_TO_SHADOW_ANIMATION = {
|
|
|
26
34
|
[RoomShape.LBL] = "2x2",
|
|
27
35
|
[RoomShape.LBR] = "2x2"
|
|
28
36
|
}
|
|
37
|
+
local FADED_BLACK = Color(0, 0, 0, 0.25)
|
|
29
38
|
local shadowSprite = Sprite()
|
|
30
39
|
shadowSprite:Load(ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/stage-shadow.anm2", true)
|
|
31
40
|
function ____exports.setShadows(self, customStage)
|
|
32
|
-
if customStage.
|
|
41
|
+
if customStage.shadows == nil then
|
|
33
42
|
return
|
|
34
43
|
end
|
|
35
44
|
local room = game:GetRoom()
|
|
36
45
|
local roomShape = room:GetRoomShape()
|
|
46
|
+
local centerPos = room:GetCenterPos()
|
|
37
47
|
local animation = ROOM_SHAPE_TO_SHADOW_ANIMATION[roomShape]
|
|
38
|
-
local
|
|
39
|
-
if
|
|
48
|
+
local shadows = customStage.shadows[animation]
|
|
49
|
+
if shadows == nil then
|
|
40
50
|
return
|
|
41
51
|
end
|
|
52
|
+
local shadowEffect = spawnEffectWithSeed(
|
|
53
|
+
nil,
|
|
54
|
+
SHADOW_EFFECT_VARIANT,
|
|
55
|
+
0,
|
|
56
|
+
centerPos,
|
|
57
|
+
1
|
|
58
|
+
)
|
|
59
|
+
local sprite = shadowEffect:GetSprite()
|
|
60
|
+
sprite:Load(ISAACSCRIPT_CUSTOM_STAGE_GFX_PATH .. "/stage-shadow.anm2", false)
|
|
42
61
|
local decorationSeed = room:GetDecorationSeed()
|
|
43
|
-
local
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
62
|
+
local shadow = getRandomArrayElement(nil, shadows, decorationSeed)
|
|
63
|
+
sprite:ReplaceSpritesheet(0, shadow.pngPath)
|
|
64
|
+
sprite:LoadGraphics()
|
|
65
|
+
sprite:SetFrame(animation, 0)
|
|
66
|
+
sprite.Color = shadow.color == nil and FADED_BLACK or Color(shadow.color.r, shadow.color.g, shadow.color.b, shadow.color.a)
|
|
47
67
|
v.room.showingShadows = true
|
|
48
68
|
end
|
|
49
|
-
function ____exports.shadowsPostRender(self, _customStage)
|
|
50
|
-
if not v.room.showingShadows then
|
|
51
|
-
return
|
|
52
|
-
end
|
|
53
|
-
local room = game:GetRoom()
|
|
54
|
-
local renderPosition = Isaac.WorldToRenderPosition(VectorZero)
|
|
55
|
-
local renderScrollOffset = room:GetRenderScrollOffset()
|
|
56
|
-
local position = renderPosition + renderScrollOffset
|
|
57
|
-
shadowSprite:Render(position)
|
|
58
|
-
end
|
|
59
69
|
return ____exports
|
|
70
|
+
|
|
71
|
+
--# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2Uvc2hhZG93cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNkNBQXlDO0FBQWhDO0FBQWU7QUFDeEIsMEJBQXFCO0FBQVo7QUFDVCxrQkFBc0M7QUFBN0I7QUFDVCwyQkFBb0M7QUFBM0I7QUFFVCxpQ0FBa0Q7QUFBekM7QUFDVCxjQUFjO0FBQVA7Ozs7Ozs7QUFZRCw4QkFBd0I7O0FBR3hCLHVDQUVGO0lBQ0YsQ0FBQyx1QkFBc0I7SUFDdkIsQ0FBQyxnQkFBZTtJQUNoQixDQUFDLGdCQUFlO0lBQ2hCLENBQUMsdUJBQXNCO0lBQ3ZCLENBQUMsaUJBQWdCO0lBQ2pCLENBQUMsdUJBQXNCO0lBQ3ZCLENBQUMsaUJBQWdCO0lBQ2pCLENBQUMsdUJBQXNCO0lBQ3ZCLENBQUMsaUJBQWdCO0lBQ2pCLENBQUMsaUJBQWdCO0lBQ2pCLENBQUMsaUJBQWdCO0lBQ2pCLENBQUMsaUJBQWdCOztBQUdiLG9CQUFjLE1BQU0sR0FBRyxHQUFHLEdBQUc7QUFFN0IscUJBQWU7QUFDckIsYUFBYSxLQUNSLHFDQUFpQyxzQkFDcEM7QUFHRixzQ0FBMkI7T0FDckI7QUFDRjs7QUFHSSxpQkFBTyxLQUFLO0FBQ1osc0JBQVksS0FBSztBQUNqQixzQkFBWSxLQUFLO0FBQ2pCLHNCQUFZLCtCQUErQjtBQUMzQyxvQkFBVSxvQkFBb0I7T0FDaEM7QUFDRjs7QUFNSSx5QkFBZTs7UUFDbkI7UUFDQTtRQUNBO1FBQ0E7O0FBR0ksbUJBQVMsYUFBYTtJQUM1QixPQUFPLEtBQVEscUNBQWlDLHNCQUFzQjtBQUNoRSwyQkFBaUIsS0FBSztBQUN0QixtQkFBUywyQkFBc0IsU0FBUztJQUM5QyxPQUFPLG1CQUFtQixHQUFHO0lBQzdCLE9BQU87SUFDUCxPQUFPLFNBQVMsV0FBVztBQUMzQixtQkFDRSx3QkFDSSxlQUNBLE1BQU0sZ0JBQWdCLGdCQUFnQixnQkFBZ0I7QUFFNUQsNEJBQXdCO0FBcEMxQiIsImZpbGUiOiJzaGFkb3dzLmx1YSIsInNvdXJjZVJvb3QiOiIifQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { CustomStage } from "../../interfaces/CustomStage";
|
|
2
2
|
export declare function streakTextPostRender(customStage: CustomStage): void;
|
|
3
|
-
export declare function streakTextGetShaderParams(shaderName: string):
|
|
3
|
+
export declare function streakTextGetShaderParams(shaderName: string): void;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { fonts, game } from "../../cachedClasses";
|
|
2
|
+
import { KColorDefault } from "../../constants";
|
|
3
|
+
import { getScreenBottomCenterPos } from "../../functions/ui";
|
|
4
|
+
import { todo } from "../../functions/utils";
|
|
5
|
+
import v from "./v";
|
|
6
|
+
/** This must match the name of the shader in "shaders.xml". */
|
|
7
|
+
const EMPTY_SHADER_NAME = "IsaacScript-RenderAboveHUD";
|
|
8
|
+
/** This matches the offset that the vanilla game uses. */
|
|
9
|
+
const STREAK_TEXT_BOTTOM_OFFSET = Vector(0, -60);
|
|
10
|
+
// ModCallback.POST_RENDER (2)
|
|
11
|
+
export function streakTextPostRender(customStage) {
|
|
12
|
+
if (!v.run.showingStreakText) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const isPaused = game.IsPaused();
|
|
16
|
+
if (isPaused) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const font = fonts.upheaval;
|
|
20
|
+
const length = font.GetStringWidthUTF8(customStage.name);
|
|
21
|
+
const bottomCenterPos = getScreenBottomCenterPos();
|
|
22
|
+
const position = bottomCenterPos.add(STREAK_TEXT_BOTTOM_OFFSET);
|
|
23
|
+
const adjustedX = position.X - length / 2;
|
|
24
|
+
font.DrawString(customStage.name, adjustedX, position.Y, KColorDefault);
|
|
25
|
+
}
|
|
26
|
+
// ModCallback.INPUT_ACTION (13)
|
|
27
|
+
// TODO
|
|
28
|
+
// ModCallback.GET_SHADER_PARAMS (22)
|
|
29
|
+
export function streakTextGetShaderParams(shaderName) {
|
|
30
|
+
if (shaderName !== EMPTY_SHADER_NAME) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
todo();
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFrVGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2Uvc3RyZWFrVGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0MsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO0FBRXBCLCtEQUErRDtBQUMvRCxNQUFNLGlCQUFpQixHQUFHLDRCQUE0QixDQUFDO0FBRXZELDBEQUEwRDtBQUMxRCxNQUFNLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUVqRCw4QkFBOEI7QUFDOUIsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFdBQXdCO0lBQzNELElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFO1FBQzVCLE9BQU87S0FDUjtJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxJQUFJLFFBQVEsRUFBRTtRQUNaLE9BQU87S0FDUjtJQUVELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RCxNQUFNLGVBQWUsR0FBRyx3QkFBd0IsRUFBRSxDQUFDO0lBQ25ELE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNoRSxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQzFFLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsT0FBTztBQUVQLHFDQUFxQztBQUNyQyxNQUFNLFVBQVUseUJBQXlCLENBQUMsVUFBa0I7SUFDMUQsSUFBSSxVQUFVLEtBQUssaUJBQWlCLEVBQUU7UUFDcEMsT0FBTztLQUNSO0lBRUQsSUFBSSxFQUFFLENBQUM7QUFDVCxDQUFDIn0=
|
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
local ____exports = {}
|
|
2
2
|
local ____cachedClasses = require("cachedClasses")
|
|
3
3
|
local fonts = ____cachedClasses.fonts
|
|
4
|
+
local game = ____cachedClasses.game
|
|
4
5
|
local ____constants = require("constants")
|
|
5
6
|
local KColorDefault = ____constants.KColorDefault
|
|
6
7
|
local ____ui = require("functions.ui")
|
|
7
8
|
local getScreenBottomCenterPos = ____ui.getScreenBottomCenterPos
|
|
9
|
+
local ____utils = require("functions.utils")
|
|
10
|
+
local todo = ____utils.todo
|
|
8
11
|
local ____v = require("features.customStage.v")
|
|
9
12
|
local v = ____v.default
|
|
10
|
-
|
|
13
|
+
--- This must match the name of the shader in "shaders.xml".
|
|
14
|
+
local EMPTY_SHADER_NAME = "IsaacScript-RenderAboveHUD"
|
|
15
|
+
--- This matches the offset that the vanilla game uses.
|
|
11
16
|
local STREAK_TEXT_BOTTOM_OFFSET = Vector(0, -60)
|
|
12
17
|
function ____exports.streakTextPostRender(self, customStage)
|
|
13
18
|
if not v.run.showingStreakText then
|
|
14
19
|
return
|
|
15
20
|
end
|
|
21
|
+
local isPaused = game:IsPaused()
|
|
22
|
+
if isPaused then
|
|
23
|
+
return
|
|
24
|
+
end
|
|
16
25
|
local font = fonts.upheaval
|
|
17
26
|
local length = font:GetStringWidthUTF8(customStage.name)
|
|
18
27
|
local bottomCenterPos = getScreenBottomCenterPos(nil)
|
|
@@ -22,8 +31,10 @@ function ____exports.streakTextPostRender(self, customStage)
|
|
|
22
31
|
end
|
|
23
32
|
function ____exports.streakTextGetShaderParams(self, shaderName)
|
|
24
33
|
if shaderName ~= EMPTY_SHADER_NAME then
|
|
25
|
-
return
|
|
34
|
+
return
|
|
26
35
|
end
|
|
27
|
-
|
|
36
|
+
todo(nil)
|
|
28
37
|
end
|
|
29
38
|
return ____exports
|
|
39
|
+
|
|
40
|
+
--# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2Uvc3RyZWFrVGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEJBQTRCO0FBQW5CO0FBQU87QUFDaEIsc0JBQThCO0FBQXJCO0FBQ1QsZUFBeUM7QUFBaEM7QUFDVCxrQkFBcUI7QUFBWjtBQUVULGNBQWM7QUFBUDs7QUFHRCwwQkFBb0I7O0FBR3BCLGtDQUE0QixPQUFPLElBQUk7QUFHN0MsZ0RBQXFDO1dBQzlCO0FBQ0g7O0FBR0kscUJBQVcsS0FBSztPQUNsQjtBQUNGOztBQUdJLGlCQUFPO0FBQ1AsbUJBQVMsS0FBSyxtQkFBbUI7QUFDakMsNEJBQWtCO0FBQ2xCLHFCQUFXLGtCQUFvQjtBQUMvQixzQkFBWSxhQUFhLFNBQVM7SUFDeEMsS0FBSyxXQUFXLGtCQUFrQixXQUFXLFlBQVk7QUFmM0Q7QUFzQkEscURBQTBDO09BQ3BDLGNBQWU7QUFDakI7O0lBR0Y7QUFMRiIsImZpbGUiOiJzdHJlYWtUZXh0Lmx1YSIsInNvdXJjZVJvb3QiOiIifQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { sumArray } from "../../functions/array";
|
|
2
|
+
import { log } from "../../functions/log";
|
|
3
|
+
import { getRandomFloat } from "../../functions/random";
|
|
4
|
+
import { getRandomSeed } from "../../functions/rng";
|
|
5
|
+
/**
|
|
6
|
+
* Helper function to get a random custom stage room from an array of custom stage rooms.
|
|
7
|
+
*
|
|
8
|
+
* Note that this function does not simply choose a random element in the provided array; it will
|
|
9
|
+
* properly account for each room weight using the algorithm from:
|
|
10
|
+
* https://stackoverflow.com/questions/1761626/weighted-random-numbers
|
|
11
|
+
*/
|
|
12
|
+
export function getRandomCustomStageRoom(roomsMetadata, seedOrRNG = getRandomSeed(), verbose = false) {
|
|
13
|
+
const totalWeight = getTotalWeightOfCustomStageRooms(roomsMetadata);
|
|
14
|
+
if (verbose) {
|
|
15
|
+
log(`Total weight of the custom stage rooms provided: ${totalWeight}`);
|
|
16
|
+
}
|
|
17
|
+
const chosenWeight = getRandomFloat(0, totalWeight, seedOrRNG);
|
|
18
|
+
if (verbose) {
|
|
19
|
+
log(`Randomly chose weight for custom stage room: ${chosenWeight}`);
|
|
20
|
+
}
|
|
21
|
+
return getCustomStageRoomWithChosenWeight(roomsMetadata, chosenWeight);
|
|
22
|
+
}
|
|
23
|
+
function getTotalWeightOfCustomStageRooms(roomsMetadata) {
|
|
24
|
+
const weights = roomsMetadata.map((roomMetadata) => roomMetadata.weight);
|
|
25
|
+
return sumArray(weights);
|
|
26
|
+
}
|
|
27
|
+
function getCustomStageRoomWithChosenWeight(roomsMetadata, chosenWeight) {
|
|
28
|
+
for (const roomMetadata of roomsMetadata) {
|
|
29
|
+
if (chosenWeight < roomMetadata.weight) {
|
|
30
|
+
return roomMetadata;
|
|
31
|
+
}
|
|
32
|
+
chosenWeight -= roomMetadata.weight;
|
|
33
|
+
}
|
|
34
|
+
error(`Failed to get a custom stage room with chosen weight: ${chosenWeight}`);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2UvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHcEQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxhQUFpRCxFQUNqRCxZQUF3QixhQUFhLEVBQUUsRUFDdkMsT0FBTyxHQUFHLEtBQUs7SUFFZixNQUFNLFdBQVcsR0FBRyxnQ0FBZ0MsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwRSxJQUFJLE9BQU8sRUFBRTtRQUNYLEdBQUcsQ0FBQyxvREFBb0QsV0FBVyxFQUFFLENBQUMsQ0FBQztLQUN4RTtJQUVELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQy9ELElBQUksT0FBTyxFQUFFO1FBQ1gsR0FBRyxDQUFDLGdEQUFnRCxZQUFZLEVBQUUsQ0FBQyxDQUFDO0tBQ3JFO0lBRUQsT0FBTyxrQ0FBa0MsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDekUsQ0FBQztBQUVELFNBQVMsZ0NBQWdDLENBQ3ZDLGFBQWlEO0lBRWpELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsU0FBUyxrQ0FBa0MsQ0FDekMsYUFBaUQsRUFDakQsWUFBbUI7SUFFbkIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7UUFDeEMsSUFBSSxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUN0QyxPQUFPLFlBQVksQ0FBQztTQUNyQjtRQUVELFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDO0tBQ3JDO0lBRUQsS0FBSyxDQUNILHlEQUF5RCxZQUFZLEVBQUUsQ0FDeEUsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -49,3 +49,5 @@ function ____exports.getRandomCustomStageRoom(self, roomsMetadata, seedOrRNG, ve
|
|
|
49
49
|
return getCustomStageRoomWithChosenWeight(nil, roomsMetadata, chosenWeight)
|
|
50
50
|
end
|
|
51
51
|
return ____exports
|
|
52
|
+
|
|
53
|
+
--# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2UvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7TUErQlMsa0NBT0E7QUF0Q1Qsa0JBQXlCO0FBQWhCO0FBQ1QsZ0JBQW9CO0FBQVg7QUFDVCxtQkFBK0I7QUFBdEI7QUFDVCxnQkFBOEI7QUFBckI7QUE0QlQsU0FBUyx1Q0FDUDtBQUVNLG9CQUFVO1FBQUE7UUFBa0IsZUFBQyxjQUFpQiwwQkFBbEI7O0FBQ2xDLFdBQU8sY0FBUzs7QUFHbEIsU0FBUyx5Q0FDUCxlQUNBO0FBRUEsY0FBVyx1QkFBZ0I7V0FDckIsZUFBZTtBQUNqQixtQkFBTzs7QUFHVCxzQ0FBZ0I7O0lBR2xCLE1BQ0UscUVBQXlEOzs7Ozs7O0FBdEM3RCxvREFDRSxlQUNBLFdBQ0E7T0FEQTtRQUFBLFlBQXdCOztPQUN4QjtRQUFBLFVBQVU7O0FBRUosd0JBQWMsc0NBQWlDO09BQ2pEO1FBQ0YsSUFBSSxnRUFBb0Q7O0FBR3BELHlCQUFlLG9CQUFlLEdBQUcsYUFBYTtPQUNoRDtRQUNGLElBQUksNERBQWdEOztBQUd0RCxXQUFPLHdDQUFtQyxlQUFlO0FBZjNEIiwiZmlsZSI6InV0aWwubHVhIiwic291cmNlUm9vdCI6IiJ9
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const v = {
|
|
2
|
+
run: {
|
|
3
|
+
currentCustomStage: null,
|
|
4
|
+
showingStreakText: false,
|
|
5
|
+
showingBossVersusScreen: false,
|
|
6
|
+
},
|
|
7
|
+
room: {
|
|
8
|
+
showingShadows: false,
|
|
9
|
+
},
|
|
10
|
+
};
|
|
11
|
+
export default v;
|
|
12
|
+
/** Indexed by custom stage name. */
|
|
13
|
+
export const customStagesMap = new Map();
|
|
14
|
+
/** Indexed by room variant. */
|
|
15
|
+
export const customStageCachedRoomData = new Map();
|
|
16
|
+
/** Indexed by entity ID. */
|
|
17
|
+
export const customBossPNGPaths = new Map();
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2Uvdi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsR0FBRztJQUNSLEdBQUcsRUFBRTtRQUNILGtCQUFrQixFQUFFLElBQTBCO1FBQzlDLGlCQUFpQixFQUFFLEtBQUs7UUFDeEIsdUJBQXVCLEVBQUUsS0FBSztLQUMvQjtJQUVELElBQUksRUFBRTtRQUNKLGNBQWMsRUFBRSxLQUFLO0tBQ3RCO0NBQ0YsQ0FBQztBQUNGLGVBQWUsQ0FBQyxDQUFDO0FBRWpCLG9DQUFvQztBQUNwQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7QUFFOUQsK0JBQStCO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksR0FBRyxFQUE2QixDQUFDO0FBRTlFLDRCQUE0QjtBQUM1QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFHdEMsQ0FBQyJ9
|
|
@@ -11,3 +11,5 @@ ____exports.customStageCachedRoomData = __TS__New(Map)
|
|
|
11
11
|
--- Indexed by entity ID.
|
|
12
12
|
____exports.customBossPNGPaths = __TS__New(Map)
|
|
13
13
|
return ____exports
|
|
14
|
+
|
|
15
|
+
--# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZmVhdHVyZXMvY3VzdG9tU3RhZ2Uvdi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRU0sVUFBSSxDQUNSLE1BQUssQ0FDSCxxQkFBb0IsS0FDcEIsb0JBQW1CLE9BQ25CLDBCQUF5QixRQUczQixPQUFNLENBQ0osaUJBQWdCO0FBR3BCLHNCQUFlOztBQUdGLDhCQUFrQixVQUFJOztBQUd0Qix3Q0FBNEIsVUFBSTs7QUFHaEMsaUNBQXFCLFVBQUkiLCJmaWxlIjoidi5sdWEiLCJzb3VyY2VSb290IjoiIn0=
|