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,160 @@
|
|
|
1
|
+
import { CollectibleType, PlayerType } from "isaac-typescript-definitions";
|
|
2
|
+
import { game } from "../cachedClasses";
|
|
3
|
+
const DEFAULT_COLLECTIBLE_TYPE = CollectibleType.SAD_ONION;
|
|
4
|
+
const EXCLUDED_CHARACTERS = new Set([
|
|
5
|
+
PlayerType.ESAU,
|
|
6
|
+
PlayerType.THE_SOUL_B, // 40
|
|
7
|
+
]);
|
|
8
|
+
/**
|
|
9
|
+
* Helper function to get every player with no restrictions, by using `Game.GetNumPlayers` and
|
|
10
|
+
* `Isaac.GetPlayer`.
|
|
11
|
+
*
|
|
12
|
+
* This function is almost never what you want to use. For most purposes, use the `getPlayers`
|
|
13
|
+
* helper function instead to get a filtered list of players.
|
|
14
|
+
*/
|
|
15
|
+
export function getAllPlayers() {
|
|
16
|
+
const numPlayers = game.GetNumPlayers();
|
|
17
|
+
const players = [];
|
|
18
|
+
for (let i = 0; i < numPlayers; i++) {
|
|
19
|
+
const player = Isaac.GetPlayer(i);
|
|
20
|
+
players.push(player);
|
|
21
|
+
}
|
|
22
|
+
return players;
|
|
23
|
+
}
|
|
24
|
+
export function getPlayerFromIndex(playerIndex) {
|
|
25
|
+
const players = getPlayers();
|
|
26
|
+
return players.find((player) => getPlayerIndex(player) === playerIndex);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Mods often have to track variables relating to the player. In naive mods, information will only
|
|
30
|
+
* be stored about the first player. However, in order to be robust, mods must handle up to 4
|
|
31
|
+
* players playing at the same time. This means that information must be stored on a map data
|
|
32
|
+
* structure. Finding a good index for these types of map data structures is difficult:
|
|
33
|
+
*
|
|
34
|
+
* - We cannot use the index from `Isaac.GetPlayer(i)` since this fails in the case where there are
|
|
35
|
+
* two players and the first player leaves the run.
|
|
36
|
+
* - We cannot use `EntityPlayer.ControllerIndex` as an index because it fails in the case of Jacob
|
|
37
|
+
* & Esau or Tainted Forgotten. It also fails in the case of a player changing their controls
|
|
38
|
+
* mid-run.
|
|
39
|
+
* - We cannot use `EntityPlayer.GetData().index` because it does not persist across saving and
|
|
40
|
+
* continuing.
|
|
41
|
+
* - We cannot use `GetPtrHash()` as an index because it does not persist across exiting and
|
|
42
|
+
* relaunching the game.
|
|
43
|
+
* - We cannot use `EntityPlayer.InitSeed` because it is not consistent with additional players
|
|
44
|
+
* beyond the first.
|
|
45
|
+
*
|
|
46
|
+
* Instead, we use the `EntityPlayer.GetCollectibleRNG` method with an arbitrary value of Sad Onion
|
|
47
|
+
* (1). This works even if the player does not have any Sad Onions.
|
|
48
|
+
*
|
|
49
|
+
* Since the RNG value is the same for both Tainted Lazarus and Dead Tainted Lazarus, we revert to
|
|
50
|
+
* using the RNG of The Inner Eye (2) for Dead Tainted Lazarus.
|
|
51
|
+
*
|
|
52
|
+
* Note that by default, this returns the same index for both The Forgotten and The Soul. (Even
|
|
53
|
+
* though they are technically different characters, they share the same inventory and InitSeed.) If
|
|
54
|
+
* this is not desired, pass true for the `differentiateForgottenAndSoul` argument, and the RNG of
|
|
55
|
+
* Spoon Bender (3) will be used for The Soul.
|
|
56
|
+
*/
|
|
57
|
+
export function getPlayerIndex(player, differentiateForgottenAndSoul = false) {
|
|
58
|
+
// Sub-players use separate RNG values for some reason, so we need to always use the main player:
|
|
59
|
+
// https://github.com/Meowlala/RepentanceAPIIssueTracker/issues/443
|
|
60
|
+
// We can safely ignore the player's character because regardless of whether the main player ends
|
|
61
|
+
// up being The Forgotten or The Soul, the collectible RNG values will be the same. The
|
|
62
|
+
// `EntityPlayer.IsSubPlayer` method can return true for Dead Tainted Lazarus during the
|
|
63
|
+
// PostPlayerInit callback, but since we fall back to the player in the case of
|
|
64
|
+
// "getSubPlayerParent" returning undefined, we do not need to explicitly check for this case.
|
|
65
|
+
let playerToUse = player;
|
|
66
|
+
const isSubPlayer = player.IsSubPlayer();
|
|
67
|
+
if (isSubPlayer) {
|
|
68
|
+
// The "getSubPlayerParent" function will return undefined in the situation where we are on Dead
|
|
69
|
+
// Tainted Lazarus in the PostPlayerInit callback.
|
|
70
|
+
const playerParent = getSubPlayerParent(player);
|
|
71
|
+
if (playerParent !== undefined) {
|
|
72
|
+
playerToUse = playerParent;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const collectibleType = getPlayerIndexCollectibleType(player, differentiateForgottenAndSoul);
|
|
76
|
+
const collectibleRNG = playerToUse.GetCollectibleRNG(collectibleType);
|
|
77
|
+
const seed = collectibleRNG.GetSeed();
|
|
78
|
+
return seed;
|
|
79
|
+
}
|
|
80
|
+
function getPlayerIndexCollectibleType(player, differentiateForgottenAndSoul) {
|
|
81
|
+
const character = player.GetPlayerType();
|
|
82
|
+
switch (character) {
|
|
83
|
+
// 17
|
|
84
|
+
case PlayerType.THE_SOUL: {
|
|
85
|
+
return differentiateForgottenAndSoul
|
|
86
|
+
? CollectibleType.SPOON_BENDER
|
|
87
|
+
: DEFAULT_COLLECTIBLE_TYPE;
|
|
88
|
+
}
|
|
89
|
+
// 38
|
|
90
|
+
case PlayerType.LAZARUS_2_B: {
|
|
91
|
+
return CollectibleType.INNER_EYE;
|
|
92
|
+
}
|
|
93
|
+
default: {
|
|
94
|
+
return DEFAULT_COLLECTIBLE_TYPE;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Helper function to return the index of this player with respect to the output of the
|
|
100
|
+
* `Isaac.GetPlayer` method.
|
|
101
|
+
*
|
|
102
|
+
* Note that if you storing information about a player in a data structure, you never want to use
|
|
103
|
+
* this index; use the `getPlayerIndex` function instead.
|
|
104
|
+
*/
|
|
105
|
+
export function getPlayerIndexVanilla(playerToFind) {
|
|
106
|
+
const numPlayers = game.GetNumPlayers();
|
|
107
|
+
const playerToFindHash = GetPtrHash(playerToFind);
|
|
108
|
+
for (let i = 0; i < numPlayers; i++) {
|
|
109
|
+
const player = Isaac.GetPlayer(i);
|
|
110
|
+
const playerHash = GetPtrHash(player);
|
|
111
|
+
if (playerHash === playerToFindHash) {
|
|
112
|
+
return i;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* This function always excludes players with a non-undefined parent, since they are not real
|
|
119
|
+
* players (e.g. the Strawman Keeper).
|
|
120
|
+
*
|
|
121
|
+
* If this is not desired, use the `getAllPlayers` helper function instead.
|
|
122
|
+
*
|
|
123
|
+
* @param performCharacterExclusions Whether or not to exclude characters that are not directly
|
|
124
|
+
* controlled by the player (i.e. Esau & Tainted Soul). Default is
|
|
125
|
+
* false.
|
|
126
|
+
*/
|
|
127
|
+
export function getPlayers(performCharacterExclusions = false) {
|
|
128
|
+
const players = getAllPlayers();
|
|
129
|
+
const nonChildPlayers = players.filter((player) => !isChildPlayer(player));
|
|
130
|
+
const nonChildPlayersFiltered = nonChildPlayers.filter((player) => {
|
|
131
|
+
const character = player.GetPlayerType();
|
|
132
|
+
return !EXCLUDED_CHARACTERS.has(character);
|
|
133
|
+
});
|
|
134
|
+
return performCharacterExclusions ? nonChildPlayersFiltered : nonChildPlayers;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Helper function to get a parent `EntityPlayer` object for a given `EntitySubPlayer` object. This
|
|
138
|
+
* is useful because calling the `EntityPlayer.GetSubPlayer` method on a sub-player object will
|
|
139
|
+
* return undefined.
|
|
140
|
+
*/
|
|
141
|
+
export function getSubPlayerParent(subPlayer) {
|
|
142
|
+
const subPlayerPtrHash = GetPtrHash(subPlayer);
|
|
143
|
+
const players = getPlayers();
|
|
144
|
+
return players.find((player) => {
|
|
145
|
+
const thisPlayerSubPlayer = player.GetSubPlayer();
|
|
146
|
+
if (thisPlayerSubPlayer === undefined) {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
const thisPlayerSubPlayerPtrHash = GetPtrHash(thisPlayerSubPlayer);
|
|
150
|
+
return thisPlayerSubPlayerPtrHash === subPlayerPtrHash;
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Some players are "child" players, meaning that they have a non-undefined Parent property. (For
|
|
155
|
+
* example, the Strawman Keeper.)
|
|
156
|
+
*/
|
|
157
|
+
export function isChildPlayer(player) {
|
|
158
|
+
return player.Parent !== undefined;
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVySW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9pc2FhY3NjcmlwdC1jb21tb24vc3JjL2Z1bmN0aW9ucy9wbGF5ZXJJbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUd4QyxNQUFNLHdCQUF3QixHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUM7QUFFM0QsTUFBTSxtQkFBbUIsR0FBNEIsSUFBSSxHQUFHLENBQUM7SUFDM0QsVUFBVSxDQUFDLElBQUk7SUFDZixVQUFVLENBQUMsVUFBVSxFQUFFLEtBQUs7Q0FDN0IsQ0FBQyxDQUFDO0FBRUg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWE7SUFDM0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBRXhDLE1BQU0sT0FBTyxHQUFtQixFQUFFLENBQUM7SUFDbkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNuQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDdEI7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxXQUF3QjtJQUV4QixNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztJQUM3QixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxXQUFXLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FB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
|
|
@@ -175,3 +175,5 @@ function ____exports.getPlayerIndexVanilla(self, playerToFind)
|
|
|
175
175
|
return nil
|
|
176
176
|
end
|
|
177
177
|
return ____exports
|
|
178
|
+
|
|
179
|
+
--# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL3BsYXllckluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztNQW1HUywrQkEvRkgsMEJBRUE7QUFOTiw2Q0FBNEM7QUFBbkM7QUFBaUI7QUFDMUIsMEJBQXFCO0FBQVo7Ozs7OztBQWlCVDtBQUNRLHVCQUFhLEtBQUs7QUFFbEIsb0JBQTBCOztBQUN2QixrQkFBSTtjQUFHLElBQUk7QUFDWiwyQkFBUyxnQkFBZ0I7QUFDL0Isb0NBQWE7QUFGaUI7OztBQUtoQyxXQUFPO0FBVFQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnREEsMENBQ0UsUUFDQTtPQUFBO1FBQUEsZ0NBQWdDOztBQVU1Qix3QkFBYztBQUNaLHdCQUFjLE9BQU87T0FDdkI7QUFHSSw2QkFBZSxvQ0FBbUI7V0FDcEM7QUFDRiwwQkFBYzs7O0FBSVosNEJBQWtCLG1DQUN0QixRQUNBO0FBRUksMkJBQWlCLFlBQVksa0JBQWtCO0FBQy9DLGlCQUFPLGVBQWU7QUFFNUIsV0FBTztBQTlCVDtBQWlDQSxTQUFTLG9DQUNQLFFBQ0E7QUFFTSxzQkFBWSxPQUFPOzs2QkFFakI7MkNBRUQ7OztBQUNILHVCQUFPLGtDQUNILGdDQUNBOzs7bURBSUQ7OztBQUNILHVCQUFPOzs7OztBQUlQLHVCQUFPOzs7Ozs7Ozs7Ozs7O0FBdUNiLHNDQUEyQjtPQUFBO1FBQUEsNkJBQTZCOztBQUNoRCxvQkFBVTtBQUNWLDRCQUFrQjtRQUFBO1FBQWUsZUFBQyxRQUFXLFdBQUMsK0JBQWMsT0FBM0I7O0FBQ2pDLG9DQUEwQjtRQUFBO1FBQXVCLGVBQUM7QUFDaEQsOEJBQVksT0FBTztBQUN6Qix1QkFBUSxvQkFBb0IsSUFBSTtRQUZxQjs7QUFLdkQsV0FBTywrQkFBNkIsMkJBQTBCO0FBUmhFOzs7O0FBZ0JBLDhDQUNFO0FBRU0sNkJBQW1CLFdBQVc7QUFDOUIsb0JBQVU7QUFFaEIsV0FBTztRQUFBO1FBQWEsZUFBQztBQUNiLHdDQUFzQixPQUFPO2VBQy9CO0FBQ0YsdUJBQU87O0FBR0gsK0NBQTZCLFdBQVc7QUFDOUMsbUJBQU8sOEJBQStCO1FBUHBCOztBQU50Qjs7O0FBcUJBLHlDQUE4QjtBQUM1QixXQUFPO0FBRFQ7QUEvTE0sMkJBQTJCO0FBRTNCLHNCQUErQyxVQUFJLEtBQUksQ0FDM0QsaUJBQ0E7QUFzQkYsOENBQ0U7QUFFTSxvQkFBVTtBQUNoQixXQUFPO1FBQUE7UUFBYSxlQUFDLFFBQVcsdUNBQWUsV0FBWSxXQUF2Qzs7QUFKdEI7Ozs7OztBQXFHQSxpREFDRTtBQUVNLHVCQUFhLEtBQUs7QUFDbEIsNkJBQW1CLFdBQVc7O0FBRTNCLGtCQUFJO2NBQUcsSUFBSTtBQUNaLDJCQUFTLGdCQUFnQjtBQUN6QiwrQkFBYSxXQUFXO2VBQzFCLGNBQWU7QUFDakIsdUJBQU87O0FBSnFCOzs7QUFRaEM7QUFkRiIsImZpbGUiOiJwbGF5ZXJJbmRleC5sdWEiLCJzb3VyY2VSb290IjoiIn0=
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { ActiveSlot, Card, CollectibleType, PillColor, PlayerType, PocketItemSlot, } from "isaac-typescript-definitions";
|
|
2
|
+
import { PocketItemType } from "../enums/PocketItemType";
|
|
3
|
+
import { getEnumValues } from "./enums";
|
|
4
|
+
import { isCharacter } from "./player";
|
|
5
|
+
/**
|
|
6
|
+
* Helper function to get the `PocketItemSlot` that the player's pocket active collectible item is
|
|
7
|
+
* in, if any. Returns undefined if the player does not have a pocket active item.
|
|
8
|
+
*/
|
|
9
|
+
export function getActivePocketItemSlot(player) {
|
|
10
|
+
const pocketItems = getPocketItems(player);
|
|
11
|
+
for (const pocketItem of pocketItems) {
|
|
12
|
+
if (pocketItem.type === PocketItemType.ACTIVE_ITEM) {
|
|
13
|
+
return pocketItem.slot;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
export function getFirstCardOrPill(player) {
|
|
19
|
+
const pocketItems = getPocketItems(player);
|
|
20
|
+
return pocketItems.find((pocketItem) => pocketItem.type === PocketItemType.CARD ||
|
|
21
|
+
pocketItem.type === PocketItemType.PILL);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Use this helper function as a workaround for the `EntityPlayer.GetPocketItem` method not working
|
|
25
|
+
* correctly.
|
|
26
|
+
*
|
|
27
|
+
* Note that due to API limitations, there is no way to determine the location of a Dice Bag trinket
|
|
28
|
+
* dice. Furthermore, when the player has a Dice Bag trinket dice and a pocket active at the same
|
|
29
|
+
* time, there is no way to determine the location of the pocket active item. If this function
|
|
30
|
+
* cannot determine the identity of a particular slot, it will mark the type of the slot as
|
|
31
|
+
* `PocketItemType.UNDETERMINABLE`.
|
|
32
|
+
*/
|
|
33
|
+
export function getPocketItems(player) {
|
|
34
|
+
const pocketItem = player.GetActiveItem(ActiveSlot.POCKET);
|
|
35
|
+
const hasPocketItem = pocketItem !== CollectibleType.NULL;
|
|
36
|
+
const pocketItem2 = player.GetActiveItem(ActiveSlot.POCKET_SINGLE_USE);
|
|
37
|
+
const hasPocketItem2 = pocketItem2 !== CollectibleType.NULL;
|
|
38
|
+
const maxPocketItems = player.GetMaxPocketItems();
|
|
39
|
+
const pocketItemSlots = getEnumValues(PocketItemSlot);
|
|
40
|
+
const pocketItems = [];
|
|
41
|
+
let pocketItemIdentified = false;
|
|
42
|
+
let pocketItem2Identified = false;
|
|
43
|
+
for (const slot of pocketItemSlots) {
|
|
44
|
+
const card = player.GetCard(slot);
|
|
45
|
+
const pillColor = player.GetPill(slot);
|
|
46
|
+
if (card !== Card.NULL) {
|
|
47
|
+
pocketItems.push({
|
|
48
|
+
slot,
|
|
49
|
+
type: PocketItemType.CARD,
|
|
50
|
+
subType: card,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
else if (pillColor !== PillColor.NULL) {
|
|
54
|
+
pocketItems.push({
|
|
55
|
+
slot,
|
|
56
|
+
type: PocketItemType.PILL,
|
|
57
|
+
subType: pillColor,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
else if (hasPocketItem && !hasPocketItem2 && !pocketItemIdentified) {
|
|
61
|
+
pocketItemIdentified = true;
|
|
62
|
+
pocketItems.push({
|
|
63
|
+
slot,
|
|
64
|
+
type: PocketItemType.ACTIVE_ITEM,
|
|
65
|
+
subType: pocketItem,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else if (!hasPocketItem && hasPocketItem2 && !pocketItem2Identified) {
|
|
69
|
+
pocketItem2Identified = true;
|
|
70
|
+
pocketItems.push({
|
|
71
|
+
slot,
|
|
72
|
+
type: PocketItemType.DICE_BAG_DICE,
|
|
73
|
+
subType: pocketItem2,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
else if (hasPocketItem && hasPocketItem2) {
|
|
77
|
+
pocketItems.push({
|
|
78
|
+
slot,
|
|
79
|
+
type: PocketItemType.UNDETERMINABLE,
|
|
80
|
+
subType: 0,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
pocketItems.push({
|
|
85
|
+
slot,
|
|
86
|
+
type: PocketItemType.EMPTY,
|
|
87
|
+
subType: 0,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
// eslint-disable-next-line isaacscript/strict-enums
|
|
91
|
+
if (slot + 1 === maxPocketItems) {
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return pocketItems;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Returns whether or not the player can hold an additional pocket item, beyond what they are
|
|
99
|
+
* currently carrying. This takes into account items that modify the max number of pocket items,
|
|
100
|
+
* like Starter Deck.
|
|
101
|
+
*
|
|
102
|
+
* If the player is the Tainted Soul, this always returns false, since that character cannot pick up
|
|
103
|
+
* items. (Only Tainted Forgotten can pick up items.)
|
|
104
|
+
*/
|
|
105
|
+
export function hasOpenPocketItemSlot(player) {
|
|
106
|
+
if (isCharacter(player, PlayerType.THE_SOUL_B)) {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
const pocketItems = getPocketItems(player);
|
|
110
|
+
return pocketItems.some((pocketItem) => pocketItem.type === PocketItemType.EMPTY);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Helper function to determine whether or not the player's "active" pocket item slot is set to
|
|
114
|
+
* their pocket active item.
|
|
115
|
+
*/
|
|
116
|
+
export function isFirstSlotPocketActiveItem(player) {
|
|
117
|
+
const pocketItems = getPocketItems(player);
|
|
118
|
+
const firstPocketItem = pocketItems[0];
|
|
119
|
+
if (firstPocketItem === undefined) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
return firstPocketItem.type === PocketItemType.ACTIVE_ITEM;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ja2V0SXRlbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9pc2FhY3NjcmlwdC1jb21tb24vc3JjL2Z1bmN0aW9ucy9wb2NrZXRJdGVtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLElBQUksRUFDSixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixjQUFjLEdBQ2YsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZDOzs7R0FHRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsTUFBb0I7SUFFcEIsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFO1FBQ3BDLElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsV0FBVyxFQUFFO1lBQ2xELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQztTQUN4QjtLQUNGO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsTUFBb0I7SUFFcEIsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FDckIsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUNiLFVBQVUsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLElBQUk7UUFDdkMsVUFBVSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsSUFBSSxDQUMxQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxjQUFj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
|
|
@@ -102,3 +102,5 @@ function ____exports.isFirstSlotPocketActiveItem(self, player)
|
|
|
102
102
|
return firstPocketItem.type == PocketItemType.ACTIVE_ITEM
|
|
103
103
|
end
|
|
104
104
|
return ____exports
|
|
105
|
+
|
|
106
|
+
--# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL3BvY2tldEl0ZW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2Q0FPTztBQU5MO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVGLDJCQUErQjtBQUF0QjtBQUVULGtCQUE4QjtBQUFyQjtBQUNULG1CQUE0QjtBQUFuQjs7Ozs7Ozs7O0FBd0NULDBDQUErQjtBQUN2Qix1QkFBYSxPQUFPLGNBQWM7QUFDbEMsMEJBQWdCLGNBQWU7QUFFL0Isd0JBQWMsT0FBTyxjQUFjO0FBQ25DLDJCQUFpQixlQUFnQjtBQUVqQywyQkFBaUIsT0FBTztBQUN4Qiw0QkFBa0IsbUJBQWM7QUFFaEMsd0JBQXVDO0FBQ3pDLGlDQUF1QjtBQUN2QixrQ0FBd0I7QUFDNUIsY0FBVyxlQUFRO0FBQ1gscUJBQU8sT0FBTyxRQUFRO0FBQ3RCLDBCQUFZLE9BQU8sUUFBUTtXQUU3QixRQUFTO0FBQ1gsNENBQWlCLENBQ2YsYUFDQSxPQUFNLHFCQUNOLFVBQVM7ZUFFRixhQUFjO0FBQ3ZCLDRDQUFpQixDQUNmLGFBQ0EsT0FBTSxxQkFDTixVQUFTO2VBRUYsc0JBQWtCLHVCQUFtQjtBQUM5QyxtQ0FBdUI7QUFDdkIsNENBQWlCLENBQ2YsYUFDQSxPQUFNLDRCQUNOLFVBQVM7ZUFFRixJQUFDLGtCQUFpQix1QkFBbUI7QUFDOUMsb0NBQXdCO0FBQ3hCLDRDQUFpQixDQUNmLGFBQ0EsT0FBTSw4QkFDTixVQUFTO2VBRUYsa0JBQWlCO0FBQzFCLDRDQUFpQixDQUNmLGFBQ0EsT0FBTSwrQkFDTixVQUFTOztBQUdYLDRDQUFpQixDQUNmLGFBQ0EsT0FBTSxzQkFDTixVQUFTOztXQUtULE9BQU8sS0FBTTtBQUNmOzs7QUFJSixXQUFPO0FBL0RUOzs7QUFsQ0EsbURBQ0U7QUFFTSx3QkFBYyxnQ0FBZTtBQUNuQyxjQUFXLHFCQUFjO1dBQ25CLG1CQUFvQjtBQUN0QixtQkFBTzs7O0FBSVg7QUFWRjtBQWFBLDhDQUNFO0FBRU0sd0JBQWMsZ0NBQWU7QUFDbkMsV0FBTztRQUFBO1FBQ0wsZUFBQyxZQUNDLDBCQUFvQix1QkFDcEIsbUJBQW9CLG1CQUZ0Qjs7QUFMSjs7Ozs7OztBQStGQSxpREFBc0M7T0FDaEMsaUJBQVksUUFBUTtBQUN0QixlQUFPOztBQUdILHdCQUFjLGdDQUFlO0FBQ25DLFdBQU87UUFBQTtRQUNMLGVBQUMsWUFBZSwwQkFBb0Isb0JBQXBDOztBQVBKOzs7QUFlQSx1REFBNEM7QUFDcEMsd0JBQWMsZ0NBQWU7QUFDN0IsNEJBQWtCLFlBQVk7T0FDaEM7QUFDRixlQUFPOztBQUdULFdBQU8sd0JBQXlCO0FBUGxDIiwiZmlsZSI6InBvY2tldEl0ZW1zLmx1YSIsInNvdXJjZVJvb3QiOiIifQ==
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { EffectVariant, HeavenLightDoorSubType, } from "isaac-typescript-definitions";
|
|
2
|
+
import { game } from "../cachedClasses";
|
|
3
|
+
import { DISTANCE_OF_GRID_TILE } from "../constants";
|
|
4
|
+
import { getEntities } from "./entity";
|
|
5
|
+
import { getEffects } from "./entitySpecific";
|
|
6
|
+
import { getPlayerCloserThan } from "./player";
|
|
7
|
+
import { getPlayers } from "./playerIndex";
|
|
8
|
+
const MAX_FIND_FREE_POSITION_ATTEMPTS = 100;
|
|
9
|
+
export function anyEntityCloserThan(entities, position, distance) {
|
|
10
|
+
return entities.some((entity) => position.Distance(entity.Position) <= distance);
|
|
11
|
+
}
|
|
12
|
+
/** Iterates over all players and checks if any player is close enough to the specified position. */
|
|
13
|
+
export function anyPlayerCloserThan(position, distance) {
|
|
14
|
+
const players = getPlayers();
|
|
15
|
+
return players.some((player) => player.Position.Distance(position) <= distance);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Helper function to get a room position that is not overlapping with a grid entity, a heaven door,
|
|
19
|
+
* or a player. The `Room.FindFreePickupSpawnPosition` method will return locations that overlap
|
|
20
|
+
* with heaven doors and partially overlap with players, if the thing being spawned is bigger than a
|
|
21
|
+
* tile (like a Blood Donation Machine). Use this function instead if you want to account for those
|
|
22
|
+
* specific situations.
|
|
23
|
+
*
|
|
24
|
+
* @param startingPosition The position to start searching from. If this position is not overlapping
|
|
25
|
+
* with anything, then it will be returned.
|
|
26
|
+
* @param avoidActiveEntities Optional. Default is false.
|
|
27
|
+
*/
|
|
28
|
+
export function findFreePosition(startingPosition, avoidActiveEntities = false) {
|
|
29
|
+
const room = game.GetRoom();
|
|
30
|
+
const heavenDoors = getEffects(EffectVariant.HEAVEN_LIGHT_DOOR, HeavenLightDoorSubType.HEAVEN_DOOR);
|
|
31
|
+
for (let i = 0; i < MAX_FIND_FREE_POSITION_ATTEMPTS; i++) {
|
|
32
|
+
const position = room.FindFreePickupSpawnPosition(startingPosition, i, avoidActiveEntities);
|
|
33
|
+
const closePlayer = getPlayerCloserThan(position, DISTANCE_OF_GRID_TILE);
|
|
34
|
+
if (closePlayer !== undefined) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const isCloseHeavenDoor = anyEntityCloserThan(heavenDoors, position, DISTANCE_OF_GRID_TILE);
|
|
38
|
+
if (isCloseHeavenDoor) {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
return position;
|
|
42
|
+
}
|
|
43
|
+
// We failed to find a free position in N iterations.
|
|
44
|
+
return room.FindFreePickupSpawnPosition(startingPosition);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Helper function to get a map containing the positions of every entity in the current room.
|
|
48
|
+
*
|
|
49
|
+
* This is useful for rewinding entity positions at a later time. Also see `setEntityPositions`.
|
|
50
|
+
*
|
|
51
|
+
* @param entities Optional. If provided, will only get the positions of the provided entities. Use
|
|
52
|
+
* this with cached entities to avoid invoking the `Isaac.GetRoomEntities` method
|
|
53
|
+
* multiple times.
|
|
54
|
+
*/
|
|
55
|
+
export function getEntityPositions(entities) {
|
|
56
|
+
if (entities === undefined) {
|
|
57
|
+
entities = getEntities();
|
|
58
|
+
}
|
|
59
|
+
const entityPositions = new Map();
|
|
60
|
+
for (const entity of entities) {
|
|
61
|
+
const ptrHash = GetPtrHash(entity);
|
|
62
|
+
entityPositions.set(ptrHash, entity.Position);
|
|
63
|
+
}
|
|
64
|
+
return entityPositions;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Helper function to get a map containing the velocities of every entity in the current room.
|
|
68
|
+
*
|
|
69
|
+
* This is useful for rewinding entity velocities at a later time. Also see `setEntityVelocities`.
|
|
70
|
+
*
|
|
71
|
+
* @param entities Optional. If provided, will only get the velocities of the provided entities. Use
|
|
72
|
+
* this with cached entities to avoid invoking the `Isaac.GetRoomEntities` method
|
|
73
|
+
* multiple times.
|
|
74
|
+
*/
|
|
75
|
+
export function getEntityVelocities(entities) {
|
|
76
|
+
if (entities === undefined) {
|
|
77
|
+
entities = getEntities();
|
|
78
|
+
}
|
|
79
|
+
const entityVelocities = new Map();
|
|
80
|
+
for (const entity of entities) {
|
|
81
|
+
const ptrHash = GetPtrHash(entity);
|
|
82
|
+
entityVelocities.set(ptrHash, entity.Velocity);
|
|
83
|
+
}
|
|
84
|
+
return entityVelocities;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Helper function to set the position of every entity in the room based on a map of positions. If
|
|
88
|
+
* an entity is found that does not have matching element in the provided map, then that entity will
|
|
89
|
+
* be skipped.
|
|
90
|
+
*
|
|
91
|
+
* This function is useful for rewinding entity positions at a later time. Also see
|
|
92
|
+
* `getEntityPositions`.
|
|
93
|
+
*
|
|
94
|
+
* @param entityPositions The map providing the positions for every entity.
|
|
95
|
+
* @param entities Optional. If provided, will only set the positions of the provided entities. Use
|
|
96
|
+
* this with cached entities to avoid invoking the `Isaac.GetRoomEntities` method
|
|
97
|
+
* multiple times.
|
|
98
|
+
*/
|
|
99
|
+
export function setEntityPositions(entityPositions, entities) {
|
|
100
|
+
if (entities === undefined) {
|
|
101
|
+
entities = getEntities();
|
|
102
|
+
}
|
|
103
|
+
for (const entity of entities) {
|
|
104
|
+
const ptrHash = GetPtrHash(entity);
|
|
105
|
+
const entityPosition = entityPositions.get(ptrHash);
|
|
106
|
+
if (entityPosition !== undefined) {
|
|
107
|
+
entity.Position = entityPosition;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Helper function to set the velocity of every entity in the room based on a map of velocities. If
|
|
113
|
+
* an entity is found that does not have matching element in the provided map, then that entity will
|
|
114
|
+
* be skipped.
|
|
115
|
+
*
|
|
116
|
+
* This function is useful for rewinding entity velocities at a later time. Also see
|
|
117
|
+
* `getEntityVelocities`.
|
|
118
|
+
*
|
|
119
|
+
* @param entityVelocities The map providing the velocities for every entity.
|
|
120
|
+
* @param entities Optional. If provided, will only set the velocities of the provided entities. Use
|
|
121
|
+
* this with cached entities to avoid invoking the `Isaac.GetRoomEntities` method
|
|
122
|
+
* multiple times.
|
|
123
|
+
*/
|
|
124
|
+
export function setEntityVelocities(entityVelocities, entities) {
|
|
125
|
+
if (entities === undefined) {
|
|
126
|
+
entities = getEntities();
|
|
127
|
+
}
|
|
128
|
+
for (const entity of entities) {
|
|
129
|
+
const ptrHash = GetPtrHash(entity);
|
|
130
|
+
const entityVelocity = entityVelocities.get(ptrHash);
|
|
131
|
+
if (entityVelocity !== undefined) {
|
|
132
|
+
entity.Velocity = entityVelocity;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb25WZWxvY2l0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL3Bvc2l0aW9uVmVsb2NpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGFBQWEsRUFDYixzQkFBc0IsR0FDdkIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE1BQU0sK0JBQStCLEdBQUcsR0FBRyxDQUFDO0FBRTVDLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsUUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsUUFBYTtJQUViLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FDbEIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FDM0QsQ0FBQztBQUNKLENBQUM7QUFFRCxvR0FBb0c7QUFDcEcsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxRQUFnQixFQUNoQixRQUFlO0lBRWYsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7SUFDN0IsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUNqQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUMz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
|
|
@@ -152,3 +152,5 @@ function ____exports.setEntityVelocities(self, entityVelocities, entities)
|
|
|
152
152
|
end
|
|
153
153
|
end
|
|
154
154
|
return ____exports
|
|
155
|
+
|
|
156
|
+
--# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL3Bvc2l0aW9uVmVsb2NpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FHTztBQUZMO0FBQ0E7QUFFRiwwQkFBcUI7QUFBWjtBQUNULHNCQUFzQztBQUE3QjtBQUNULG1CQUE0QjtBQUFuQjtBQUNULDJCQUEyQjtBQUFsQjtBQUNULG1CQUFvQztBQUEzQjtBQUNULHdCQUEyQjtBQUFsQjtBQUVILHdDQUFrQztBQUV4QywrQ0FDRSxVQUNBLFVBQ0E7QUFFQSxXQUFPO1FBQUE7UUFDTCxlQUFDLFFBQVcsZ0JBQVMsU0FBUyxvQkFBb0IsUUFBbEQ7O0FBTko7O0FBV0EsK0NBQ0UsVUFDQTtBQUVNLG9CQUFVO0FBQ2hCLFdBQU87UUFBQTtRQUNMLGVBQUMsUUFBVyx1QkFBZ0IsU0FBUyxhQUFhLFFBQWxEOztBQU5KOzs7Ozs7Ozs7O0FBcUJBLDRDQUNFLGtCQUNBO09BQUE7UUFBQSxzQkFBc0I7O0FBRWhCLGlCQUFPLEtBQUs7QUFDWix3QkFBYyxnQkFDbEIsaUNBQ0E7O0FBR08sa0JBQUk7Y0FBRyxJQUFJOztBQUNaLGlDQUFXLEtBQUssNEJBQ3BCLGtCQUNBLEdBQ0E7QUFHSSxvQ0FBYyx5QkFBb0IsVUFBVTttQkFDOUM7QUFDRjs7QUFHSSwwQ0FBb0IscUNBQ3hCLGFBQ0EsVUFDQTttQkFFRTtBQUNGOztBQUdGLHVCQUFPOzs7QUFyQjRDOzs7QUF5QnJELFdBQU8sS0FBSyw0QkFBNEI7QUFuQzFDOzs7Ozs7OztBQStDQSw4Q0FBbUM7T0FDN0I7QUFDRixtQkFBVzs7QUFHUCw0QkFBa0IsVUFBSTtBQUM1QixjQUFXLGlCQUFVO0FBQ2Isd0JBQVUsV0FBVztRQUMzQixnQkFBZ0IsSUFBSSxTQUFTOztBQUcvQixXQUFPO0FBWFQ7Ozs7Ozs7O0FBdUJBLCtDQUFvQztPQUM5QjtBQUNGLG1CQUFXOztBQUdQLDZCQUFtQixVQUFJO0FBQzdCLGNBQVcsaUJBQVU7QUFDYix3QkFBVSxXQUFXO1FBQzNCLGlCQUFpQixJQUFJLFNBQVM7O0FBR2hDLFdBQU87QUFYVDs7Ozs7Ozs7Ozs7O0FBMkJBLDhDQUNFLGlCQUNBO09BRUk7QUFDRixtQkFBVzs7QUFHYixjQUFXLGlCQUFVO0FBQ2Isd0JBQVUsV0FBVztBQUNyQiwrQkFBaUIsZ0JBQWdCLElBQUk7V0FDdkM7QUFDRiw4QkFBa0I7OztBQVp4Qjs7Ozs7Ozs7Ozs7O0FBOEJBLCtDQUNFLGtCQUNBO09BRUk7QUFDRixtQkFBVzs7QUFHYixjQUFXLGlCQUFVO0FBQ2Isd0JBQVUsV0FBVztBQUNyQiwrQkFBaUIsaUJBQWlCLElBQUk7V0FDeEM7QUFDRiw4QkFBa0I7OztBQVp4QiIsImZpbGUiOiJwb3NpdGlvblZlbG9jaXR5Lmx1YSIsInNvdXJjZVJvb3QiOiIifQ==
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { getRandomSeed, isRNG, newRNG } from "./rng";
|
|
2
|
+
/**
|
|
3
|
+
* This returns a random float between 0 and 1. It is inclusive on the low end, but exclusive on the
|
|
4
|
+
* high end. (This is because the `RNG.RandomFloat` method will never return a value of exactly 1.)
|
|
5
|
+
*
|
|
6
|
+
* @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
|
|
7
|
+
* `RNG.Next` method will be called. Default is `getRandomSeed()`.
|
|
8
|
+
*/
|
|
9
|
+
export function getRandom(seedOrRNG = getRandomSeed()) {
|
|
10
|
+
const rng = isRNG(seedOrRNG) ? seedOrRNG : newRNG(seedOrRNG);
|
|
11
|
+
return rng.RandomFloat();
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* This returns a random float between min and max.
|
|
15
|
+
*
|
|
16
|
+
* For example:
|
|
17
|
+
*
|
|
18
|
+
* ```ts
|
|
19
|
+
* const realNumberBetweenOneAndThree = getRandomFloat(1, 3);
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @param min The lower bound for the random number (inclusive).
|
|
23
|
+
* @param max The upper bound for the random number (exclusive).
|
|
24
|
+
* @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
|
|
25
|
+
* `RNG.Next` method will be called. Default is `getRandomSeed()`.
|
|
26
|
+
*/
|
|
27
|
+
export function getRandomFloat(min, max, seedOrRNG = getRandomSeed()) {
|
|
28
|
+
if (min > max) {
|
|
29
|
+
const oldMin = min;
|
|
30
|
+
const oldMax = max;
|
|
31
|
+
min = oldMax;
|
|
32
|
+
max = oldMin;
|
|
33
|
+
}
|
|
34
|
+
// From: https://stackoverflow.com/questions/40431966
|
|
35
|
+
return min + getRandom(seedOrRNG) * (max - min);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* This returns a random integer between min and max. It is inclusive on both ends.
|
|
39
|
+
*
|
|
40
|
+
* Note that this function will invoke the `Next` method on the `RNG` object before returning the
|
|
41
|
+
* random number.
|
|
42
|
+
*
|
|
43
|
+
* For example:
|
|
44
|
+
*
|
|
45
|
+
* ```ts
|
|
46
|
+
* const oneTwoOrThree = getRandomInt(1, 3);
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @param min The lower bound for the random number (inclusive).
|
|
50
|
+
* @param max The upper bound for the random number (inclusive).
|
|
51
|
+
* @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
|
|
52
|
+
* `RNG.Next` method will be called. Default is `getRandomSeed()`.
|
|
53
|
+
* @param exceptions Optional. An array of elements that will be skipped over when getting the
|
|
54
|
+
* random integer. For example, a min of 1, a max of 4, and an exceptions array of
|
|
55
|
+
* `[2]` would cause the function to return either 1, 3, or 4. Default is an empty
|
|
56
|
+
* array.
|
|
57
|
+
*/
|
|
58
|
+
export function getRandomInt(min, max, seedOrRNG = getRandomSeed(), exceptions = []) {
|
|
59
|
+
const rng = isRNG(seedOrRNG) ? seedOrRNG : newRNG(seedOrRNG);
|
|
60
|
+
if (min > max) {
|
|
61
|
+
const oldMin = min;
|
|
62
|
+
const oldMax = max;
|
|
63
|
+
min = oldMax;
|
|
64
|
+
max = oldMin;
|
|
65
|
+
}
|
|
66
|
+
const exceptionsSet = new Set(exceptions);
|
|
67
|
+
let randomInt;
|
|
68
|
+
do {
|
|
69
|
+
randomInt = rng.RandomInt(max - min + 1) + min;
|
|
70
|
+
} while (exceptionsSet.has(randomInt));
|
|
71
|
+
return randomInt;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvaXNhYWNzY3JpcHQtY29tbW9uL3NyYy9mdW5jdGlvbnMvcmFuZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVyRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLFlBQXdCLGFBQWEsRUFBRTtJQUMvRCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdELE9BQU8sR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzNCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsR0FBUSxFQUNSLEdBQVEsRUFDUixZQUF3QixhQUFhLEVBQUU7SUFFdkMsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFO1FBQ2IsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ25CLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNuQixHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ2IsR0FBRyxHQUFHLE1BQU0sQ0FBQztLQUNkO0lBRUQscURBQXFEO0lBQ3JELE9BQU8sR0FBRyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsR0FBUSxFQUNSLEdBQVEsRUFDUixZQUF3QixhQUFhLEVBQUUsRUFDdkMsYUFBcUMsRUFBRTtJQUV2QyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTdELElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRTtRQUNiLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNuQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDbkIsR0FBRyxHQUFHLE1BQU0sQ0FBQztRQUNiLEdBQUcsR0FBRyxNQUFNLENBQUM7S0FDZDtJQUVELE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTFDLElBQUksU0FBYyxDQUFDO0lBQ25CLEdBQUc7UUFDRCxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNoRCxRQUFRLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7SUFFdkMsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyJ9
|
package/functions/random.lua
CHANGED
|
@@ -85,3 +85,5 @@ function ____exports.getRandomInt(self, min, max, seedOrRNG, exceptions)
|
|
|
85
85
|
return randomInt
|
|
86
86
|
end
|
|
87
87
|
return ____exports
|
|
88
|
+
|
|
89
|
+
--# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL3JhbmRvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsZ0JBQTZDO0FBQXBDO0FBQWU7QUFBTzs7Ozs7O0FBUy9CLHFDQUEwQjtPQUFBO1FBQUEsWUFBd0I7O0FBQzFDLGdCQUFNLFdBQU0sZUFBYSxhQUFZLFlBQU87QUFDbEQsV0FBTyxJQUFJO0FBRmI7Ozs7Ozs7Ozs7Ozs7QUFtQkEsMENBQ0UsS0FDQSxLQUNBO09BQUE7UUFBQSxZQUF3Qjs7T0FFcEIsTUFBTTtBQUNGLHVCQUFTO0FBQ1QsdUJBQVM7QUFDZixjQUFNO0FBQ04sY0FBTTs7QUFJUixXQUFPLE1BQU0sMkJBQVUsYUFBYyxPQUFNO0FBYjdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFDQSx3Q0FDRSxLQUNBLEtBQ0EsV0FDQTtPQURBO1FBQUEsWUFBd0I7O09BQ3hCO1FBQUEsYUFBcUM7O0FBRS9CLGdCQUFNLFdBQU0sZUFBYSxhQUFZLFlBQU87T0FFOUMsTUFBTTtBQUNGLHVCQUFTO0FBQ1QsdUJBQVM7QUFDZixjQUFNO0FBQ04sY0FBTTs7QUFHRiwwQkFBZ0IsVUFBSSxLQUFJO0FBRTFCOzs7QUFFRix3QkFBWSxJQUFJLFVBQVUsTUFBTSxNQUFNLEtBQUs7O1VBQ3BDLGtCQUFjLElBQUk7QUFFM0IsV0FBTztBQXRCVCIsImZpbGUiOiJyYW5kb20ubHVhIiwic291cmNlUm9vdCI6IiJ9
|