isaacscript-common 6.6.1-dev.1 → 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/callbacks/customRevive.js +153 -0
- package/callbacks/itemPickup.js +64 -0
- package/callbacks/postAmbush.js +54 -0
- package/callbacks/postBombExploded.js +20 -0
- package/callbacks/postBombInitLate.js +28 -0
- package/callbacks/postBoneSwing.js +49 -0
- package/callbacks/postCollectibleEmpty.js +32 -0
- package/callbacks/postCollectibleInitFirst.js +27 -0
- package/callbacks/postCursedTeleport.js +120 -0
- package/callbacks/postCustomDoorEnter.js +205 -0
- package/callbacks/postDiceRoomActivated.js +39 -0
- package/callbacks/postDoorRender.js +20 -0
- package/callbacks/postDoorUpdate.js +20 -0
- package/callbacks/postEffectInitLate.js +28 -0
- package/callbacks/postEffectStateChanged.js +31 -0
- package/callbacks/postEsauJr.js +70 -0
- package/callbacks/postFamiliarInitLate.js +28 -0
- package/callbacks/postFamiliarStateChanged.js +31 -0
- package/callbacks/postFlip.js +59 -0
- package/callbacks/postGreedModeWave.js +31 -0
- package/callbacks/postGridEntity.js +107 -0
- package/callbacks/postGridEntityCollision.js +49 -0
- package/callbacks/postGridEntityRender.js +20 -0
- package/callbacks/postHolyMantleRemoved.js +33 -0
- package/callbacks/postItemDischarged.js +94 -0
- package/callbacks/postKnifeInitLate.js +28 -0
- package/callbacks/postLaserInitLate.js +28 -0
- package/callbacks/postNPCInitLate.js +28 -0
- package/callbacks/postNPCStateChanged.js +31 -0
- package/callbacks/postNewRoomEarly.js +69 -0
- package/callbacks/postPickupCollect.js +37 -0
- package/callbacks/postPickupInitFirst.js +52 -0
- package/callbacks/postPickupInitLate.js +28 -0
- package/callbacks/postPickupStateChanged.js +31 -0
- package/callbacks/postPitRender.js +20 -0
- package/callbacks/postPitUpdate.js +20 -0
- package/callbacks/postPlayerChangeHealth.js +43 -0
- package/callbacks/postPlayerChangeType.js +31 -0
- package/callbacks/postPlayerCollectible.js +74 -0
- package/callbacks/postPlayerFatalDamage.js +74 -0
- package/callbacks/postPlayerInitLate.js +28 -0
- package/callbacks/postPlayerReordered.js +109 -0
- package/callbacks/postPoopRender.js +20 -0
- package/callbacks/postPoopUpdate.js +20 -0
- package/callbacks/postPressurePlateRender.js +20 -0
- package/callbacks/postPressurePlateUpdate.js +20 -0
- package/callbacks/postProjectileInitLate.js +28 -0
- package/callbacks/postPurchase.js +39 -0
- package/callbacks/postRockRender.js +20 -0
- package/callbacks/postRockUpdate.js +20 -0
- package/callbacks/postRoomClearChanged.js +41 -0
- package/callbacks/postSacrifice.js +38 -0
- package/callbacks/postSlotDestroyed.js +64 -0
- package/callbacks/postSlotInitUpdate.js +49 -0
- package/callbacks/postSlotRender.js +48 -0
- package/callbacks/postSpikesRender.js +20 -0
- package/callbacks/postSpikesUpdate.js +20 -0
- package/callbacks/postTNTRender.js +20 -0
- package/callbacks/postTNTUpdate.js +20 -0
- package/callbacks/postTearInitLate.js +28 -0
- package/callbacks/postTearInitVeryLate.js +32 -0
- package/callbacks/postTransformation.js +37 -0
- package/callbacks/postTrinketBreak.js +64 -0
- package/callbacks/preBerserkDeath.js +35 -0
- package/callbacks/preNewLevel.js +45 -0
- package/callbacks/reorderedCallbacks.js +136 -0
- package/callbacks/subscriptions/postAmbushFinished.js +20 -0
- package/callbacks/subscriptions/postAmbushStarted.js +20 -0
- package/callbacks/subscriptions/postBombInitLate.js +20 -0
- package/callbacks/subscriptions/postBoneExploded.js +20 -0
- package/callbacks/subscriptions/postBoneSwing.js +16 -0
- package/callbacks/subscriptions/postCollectibleEmpty.js +21 -0
- package/callbacks/subscriptions/postCollectibleInitFirst.js +21 -0
- package/callbacks/subscriptions/postCursedTeleport.js +16 -0
- package/callbacks/subscriptions/postCustomDoorEnter.js +21 -0
- package/callbacks/subscriptions/postCustomRevive.js +21 -0
- package/callbacks/subscriptions/postDiceRoomActivated.js +21 -0
- package/callbacks/subscriptions/postDoorRender.js +22 -0
- package/callbacks/subscriptions/postDoorUpdate.js +22 -0
- package/callbacks/subscriptions/postEffectInitLate.js +20 -0
- package/callbacks/subscriptions/postEffectStateChanged.js +20 -0
- package/callbacks/subscriptions/postEsauJr.js +16 -0
- package/callbacks/subscriptions/postFamiliarInitLate.js +20 -0
- package/callbacks/subscriptions/postFamiliarStateChanged.js +20 -0
- package/callbacks/subscriptions/postFirstEsauJr.js +16 -0
- package/callbacks/subscriptions/postFirstFlip.js +16 -0
- package/callbacks/subscriptions/postFlip.js +16 -0
- package/callbacks/subscriptions/postGameStartedReordered.js +16 -0
- package/callbacks/subscriptions/postGreedModeWave.js +16 -0
- package/callbacks/subscriptions/postGridEntityBroken.js +28 -0
- package/callbacks/subscriptions/postGridEntityCollision.js +28 -0
- package/callbacks/subscriptions/postGridEntityInit.js +28 -0
- package/callbacks/subscriptions/postGridEntityRemove.js +26 -0
- package/callbacks/subscriptions/postGridEntityRender.js +28 -0
- package/callbacks/subscriptions/postGridEntityStateChanged.js +28 -0
- package/callbacks/subscriptions/postGridEntityUpdate.js +28 -0
- package/callbacks/subscriptions/postHolyMantleRemoved.js +25 -0
- package/callbacks/subscriptions/postItemDischarged.js +21 -0
- package/callbacks/subscriptions/postItemPickup.js +25 -0
- package/callbacks/subscriptions/postKnifeInitLate.js +20 -0
- package/callbacks/subscriptions/postLaserInitLate.js +20 -0
- package/callbacks/subscriptions/postNPCInitLate.js +20 -0
- package/callbacks/subscriptions/postNPCStateChanged.js +24 -0
- package/callbacks/subscriptions/postNewLevelReordered.js +16 -0
- package/callbacks/subscriptions/postNewRoomEarly.js +16 -0
- package/callbacks/subscriptions/postNewRoomReordered.js +16 -0
- package/callbacks/subscriptions/postPEffectUpdateReordered.js +25 -0
- package/callbacks/subscriptions/postPickupCollect.js +20 -0
- package/callbacks/subscriptions/postPickupInitFirst.js +20 -0
- package/callbacks/subscriptions/postPickupInitLate.js +20 -0
- package/callbacks/subscriptions/postPickupStateChanged.js +20 -0
- package/callbacks/subscriptions/postPitRender.js +22 -0
- package/callbacks/subscriptions/postPitUpdate.js +22 -0
- package/callbacks/subscriptions/postPlayerChangeHealth.js +25 -0
- package/callbacks/subscriptions/postPlayerChangeType.js +20 -0
- package/callbacks/subscriptions/postPlayerCollectibleAdded.js +21 -0
- package/callbacks/subscriptions/postPlayerCollectibleRemoved.js +21 -0
- package/callbacks/subscriptions/postPlayerFatalDamage.js +29 -0
- package/callbacks/subscriptions/postPlayerInitLate.js +25 -0
- package/callbacks/subscriptions/postPlayerInitReordered.js +25 -0
- package/callbacks/subscriptions/postPlayerRenderReordered.js +25 -0
- package/callbacks/subscriptions/postPlayerUpdateReordered.js +25 -0
- package/callbacks/subscriptions/postPoopRender.js +22 -0
- package/callbacks/subscriptions/postPoopUpdate.js +22 -0
- package/callbacks/subscriptions/postPressurePlateRender.js +22 -0
- package/callbacks/subscriptions/postPressurePlateUpdate.js +22 -0
- package/callbacks/subscriptions/postProjectileInitLate.js +21 -0
- package/callbacks/subscriptions/postPurchase.js +16 -0
- package/callbacks/subscriptions/postRockRender.js +22 -0
- package/callbacks/subscriptions/postRockUpdate.js +22 -0
- package/callbacks/subscriptions/postRoomClearChanged.js +20 -0
- package/callbacks/subscriptions/postSacrifice.js +25 -0
- package/callbacks/subscriptions/postSlotAnimationChanged.js +20 -0
- package/callbacks/subscriptions/postSlotDestroyed.js +26 -0
- package/callbacks/subscriptions/postSlotInit.js +20 -0
- package/callbacks/subscriptions/postSlotRender.js +20 -0
- package/callbacks/subscriptions/postSlotUpdate.js +20 -0
- package/callbacks/subscriptions/postSpikesRender.js +22 -0
- package/callbacks/subscriptions/postSpikesUpdate.js +22 -0
- package/callbacks/subscriptions/postTNTRender.js +22 -0
- package/callbacks/subscriptions/postTNTUpdate.js +22 -0
- package/callbacks/subscriptions/postTearInitLate.js +20 -0
- package/callbacks/subscriptions/postTearInitVeryLate.js +20 -0
- package/callbacks/subscriptions/postTransformation.js +20 -0
- package/callbacks/subscriptions/postTrinketBreak.js +21 -0
- package/callbacks/subscriptions/preBerserkDeath.js +26 -0
- package/callbacks/subscriptions/preCustomRevive.js +29 -0
- package/callbacks/subscriptions/preItemPickup.js +25 -0
- package/callbacks/subscriptions/preNewLevel.js +16 -0
- package/classes/DefaultMap.js +145 -0
- package/classes/ModUpgraded.js +57 -0
- package/constants.js +143 -0
- package/constantsFirstLast.js +156 -0
- package/enums/AmbushType.js +6 -0
- package/enums/CornerType.js +8 -0
- package/enums/DecorationVariant.js +11 -0
- package/enums/HealthType.js +18 -0
- package/enums/ModCallbackCustom.js +1213 -0
- package/enums/PocketItemType.js +10 -0
- package/enums/RockAltType.js +9 -0
- package/enums/SerializationType.js +7 -0
- package/enums/SlotDestructionType.js +6 -0
- package/enums/private/CopyableIsaacAPIClassType.js +9 -0
- package/enums/private/SaveDataKey.js +8 -0
- package/enums/private/SerializationBrand.js +41 -0
- package/features/characterHealthConversion.js +86 -0
- package/features/characterStats.js +52 -0
- package/features/collectibleItemPoolType.js +45 -0
- package/features/customGridEntity.js +148 -0
- package/features/customStage/backdrop.js +191 -0
- package/features/customStage/customStageConstants.js +2 -0
- package/features/customStage/exports.js +147 -0
- package/features/customStage/gridEntities.js +138 -0
- package/features/customStage/init.js +104 -0
- package/features/customStage/metadata.json +1 -0
- package/features/customStage/shadows.js +63 -0
- package/features/customStage/streakText.js +35 -0
- package/features/customStage/util.js +36 -0
- package/features/customStage/v.js +18 -0
- package/features/customStage/versusScreen.js +184 -0
- package/features/debugDisplay/debugDisplay.js +183 -0
- package/features/debugDisplay/exports.js +441 -0
- package/features/debugDisplay/v.d.ts +18 -0
- package/features/debugDisplay/v.js +61 -0
- package/features/deployJSONRoom.js +532 -0
- package/features/disableAllSound.js +63 -0
- package/features/disableInputs.js +130 -0
- package/features/extraConsoleCommands/commandsDisplay.js +236 -0
- package/features/extraConsoleCommands/commandsSubroutines.js +109 -0
- package/features/extraConsoleCommands/exports.js +53 -0
- package/features/extraConsoleCommands/init.js +239 -0
- package/features/extraConsoleCommands/listCommands.js +1081 -0
- package/features/extraConsoleCommands/v.js +25 -0
- package/features/fadeInRemover.js +51 -0
- package/features/fastReset.js +61 -0
- package/features/forgottenSwitch.js +33 -0
- package/features/pause.js +68 -0
- package/features/persistentEntities.js +120 -0
- package/features/playerInventory.js +89 -0
- package/features/ponyDetection.js +63 -0
- package/features/preventCollectibleRotation.js +81 -0
- package/features/registerHotkey.js +91 -0
- package/features/roomClearFrame.js +42 -0
- package/features/runInNFrames.js +189 -0
- package/features/runNextRoom.js +34 -0
- package/features/saveDataManager/exports.js +183 -0
- package/features/saveDataManager/load.js +69 -0
- package/features/saveDataManager/main.js +131 -0
- package/features/saveDataManager/maps.js +9 -0
- package/features/saveDataManager/merge.js +139 -0
- package/features/saveDataManager/save.js +43 -0
- package/features/saveDataManager/saveDataManagerConstants.js +4 -0
- package/features/saveDataManager/serializationBrand.js +12 -0
- package/features/sirenHelpers.js +90 -0
- package/features/stageHistory.js +43 -0
- package/features/taintedLazarusPlayers.js +92 -0
- package/featuresInitialized.js +16 -0
- package/functions/ambush.js +35 -0
- package/functions/array.js +423 -0
- package/functions/benchmark.js +28 -0
- package/functions/bitwise.js +74 -0
- package/functions/bombs.js +11 -0
- package/functions/boss.js +137 -0
- package/functions/cacheFlag.js +11 -0
- package/functions/cards.js +217 -0
- package/functions/challenges.js +9 -0
- package/functions/character.js +102 -0
- package/functions/charge.js +202 -0
- package/functions/chargeBar.js +44 -0
- package/functions/collectibleCacheFlag.js +68 -0
- package/functions/collectibleSet.js +108 -0
- package/functions/collectibleTag.js +65 -0
- package/functions/collectibles.js +469 -0
- package/functions/color.d.ts +1 -1
- package/functions/color.js +60 -0
- package/functions/debug.js +60 -0
- package/functions/deepCopy.js +361 -0
- package/functions/deepCopyTests.js +308 -0
- package/functions/direction.js +41 -0
- package/functions/doors.js +326 -0
- package/functions/easing.js +142 -0
- package/functions/eden.js +32 -0
- package/functions/effects.js +11 -0
- package/functions/entity.js +324 -0
- package/functions/entitySpecific.js +481 -0
- package/functions/entityTypes.js +6 -0
- package/functions/enums.js +151 -0
- package/functions/familiars.js +85 -0
- package/functions/flag.js +137 -0
- package/functions/flying.js +88 -0
- package/functions/globals.js +230 -0
- package/functions/gridEntity.js +488 -0
- package/functions/gridEntitySpecific.js +109 -0
- package/functions/input.js +95 -0
- package/functions/isaacAPIClass.js +48 -0
- package/functions/jsonHelpers.js +40 -0
- package/functions/jsonRoom.js +132 -0
- package/functions/kColor.d.ts +1 -1
- package/functions/kColor.js +63 -0
- package/functions/language.js +13 -0
- package/functions/level.js +20 -0
- package/functions/log.js +567 -0
- package/functions/map.js +45 -0
- package/functions/math.js +103 -0
- package/functions/mergeTests.js +213 -0
- package/functions/minimap.js +80 -0
- package/functions/nextStage.js +290 -0
- package/functions/npc.js +101 -0
- package/functions/pickupVariants.js +47 -0
- package/functions/pickups.js +219 -0
- package/functions/pills.js +160 -0
- package/functions/player.js +808 -0
- package/functions/playerCenter.js +50 -0
- package/functions/playerDataStructures.js +114 -0
- package/functions/playerHealth.js +321 -0
- package/functions/playerIndex.js +160 -0
- package/functions/pocketItems.js +124 -0
- package/functions/positionVelocity.js +136 -0
- package/functions/random.js +73 -0
- package/functions/revive.js +140 -0
- package/functions/rng.d.ts +1 -1
- package/functions/rng.js +117 -0
- package/functions/roomData.js +174 -0
- package/functions/roomGrid.js +81 -0
- package/functions/roomShape.js +99 -0
- package/functions/rooms.js +487 -0
- package/functions/run.js +53 -0
- package/functions/saveFile.js +104 -0
- package/functions/seeds.js +18 -0
- package/functions/serialization.js +52 -0
- package/functions/set.js +99 -0
- package/functions/sound.js +9 -0
- package/functions/spawnCollectible.js +66 -0
- package/functions/sprite.js +80 -0
- package/functions/stage.js +172 -0
- package/functions/string.js +37 -0
- package/functions/table.js +143 -0
- package/functions/tears.js +31 -0
- package/functions/transformations.js +101 -0
- package/functions/trinketCacheFlag.js +46 -0
- package/functions/trinketGive.js +121 -0
- package/functions/trinkets.js +169 -0
- package/functions/tstlClass.js +125 -0
- package/functions/types.js +27 -0
- package/functions/ui.js +124 -0
- package/functions/utils.js +172 -0
- package/functions/vector.js +68 -0
- package/index.js +140 -0
- package/initCustomCallbacks.js +133 -0
- package/initFeatures.js +51 -0
- package/interfaces/AddCallbackParameterCustom.js +2 -0
- package/interfaces/ChargeBarSprites.js +2 -0
- package/interfaces/Corner.js +2 -0
- package/interfaces/CustomGridEntityData.js +2 -0
- package/interfaces/CustomStage.js +2 -0
- package/interfaces/CustomStageLua.js +13 -0
- package/interfaces/JSONRoomsFile.js +2 -0
- package/interfaces/PlayerHealth.js +2 -0
- package/interfaces/PocketItemDescription.js +2 -0
- package/interfaces/SaveData.js +2 -0
- package/interfaces/TrinketSituation.js +2 -0
- package/interfaces/private/TSTLClassMetatable.js +2 -0
- package/maps/PHDPillConversions.js +20 -0
- package/maps/cardMap.js +208 -0
- package/maps/characterMap.js +86 -0
- package/maps/collectibleDescriptionMap.js +728 -0
- package/maps/collectibleNameMap.js +727 -0
- package/maps/defaultPlayerStatMap.js +14 -0
- package/maps/falsePHDPillConversions.js +34 -0
- package/maps/gridEntityTypeToBrokenStateMap.js +29 -0
- package/maps/gridEntityXMLMap.js +128 -0
- package/maps/pillEffectMap.js +88 -0
- package/maps/roomShapeToTopLeftWallGridIndexMap.js +14 -0
- package/maps/roomTypeMap.js +39 -0
- package/maps/trinketDescriptionMap.js +196 -0
- package/maps/trinketNameMap.js +195 -0
- package/objects/LRoomShapeToRectangles.js +33 -0
- package/objects/backdropTypeToRockAltType.js +66 -0
- package/objects/bossNamePNGFileNames.js +112 -0
- package/objects/bossPortraitPNGFileNames.js +115 -0
- package/objects/callbackRegisterFunctions.js +170 -0
- package/objects/cardDescriptions.js +104 -0
- package/objects/cardNames.js +104 -0
- package/objects/cardTypes.js +103 -0
- package/objects/challengeNames.js +51 -0
- package/objects/characterNames.js +46 -0
- package/objects/coinSubTypeToValue.js +13 -0
- package/objects/colors.d.ts +1 -0
- package/objects/colors.js +24 -0
- package/objects/directionNames.js +9 -0
- package/objects/directionToDegrees.js +9 -0
- package/objects/directionToVector.js +10 -0
- package/objects/doorSlotFlagToDoorSlot.js +13 -0
- package/objects/doorSlotToDirection.js +13 -0
- package/objects/doorSlotToDoorSlotFlag.js +13 -0
- package/objects/isaacAPIClassTypeToBrand.js +9 -0
- package/objects/isaacAPIClassTypeToCopyFunction.js +12 -0
- package/objects/languageNames.js +11 -0
- package/objects/oppositeDoorSlots.js +13 -0
- package/objects/pillEffectClasses.js +56 -0
- package/objects/pillEffectNames.js +55 -0
- package/objects/pillEffectTypes.js +55 -0
- package/objects/playerNamePNGFileNames.js +55 -0
- package/objects/playerPortraitPNGFileNames.js +52 -0
- package/objects/roomShapeBounds.js +46 -0
- package/objects/roomShapeCorners.js +268 -0
- package/objects/roomShapeLayoutSizes.js +39 -0
- package/objects/roomShapeToBottomRightPosition.js +22 -0
- package/objects/roomShapeToDoorSlotCoordinates.js +109 -0
- package/objects/roomShapeToDoorSlots.js +69 -0
- package/objects/roomShapeToDoorSlotsToGridIndexDelta.js +113 -0
- package/objects/roomShapeToGridWidth.js +18 -0
- package/objects/roomShapeToTopLeftPosition.js +23 -0
- package/objects/roomShapeVolumes.js +30 -0
- package/objects/roomTypeGotoPrefixes.js +33 -0
- package/objects/roomTypeNames.js +34 -0
- package/objects/serializedIsaacAPIClassTypeToIdentityFunction.js +12 -0
- package/objects/stageTypeSuffixes.js +10 -0
- package/objects/stageTypeToLetter.js +12 -0
- package/objects/transformationNames.js +18 -0
- package/objects/versusScreenBackgroundColors.js +36 -0
- package/objects/versusScreenDirtSpotColors.js +36 -0
- package/package.json +1 -1
- package/patchErrorFunctions.js +67 -0
- package/sets/LRoomShapesSet.js +8 -0
- package/sets/bossSets.js +374 -0
- package/sets/charactersThatStartWithAnActiveItemSet.js +15 -0
- package/sets/charactersWithBlackHeartFromEternalHeartSet.js +6 -0
- package/sets/charactersWithFreeDevilDealsSet.js +3 -0
- package/sets/charactersWithNoRedHeartsSet.js +16 -0
- package/sets/charactersWithNoSoulHeartsSet.js +13 -0
- package/sets/chestPickupVariantsSet.js +16 -0
- package/sets/consoleCommandsSet.js +61 -0
- package/sets/familiarsThatShootPlayerTearsSet.js +12 -0
- package/sets/lostStyleCharactersSet.js +13 -0
- package/sets/mineShaftRoomSubTypesSet.js +9 -0
- package/sets/narrowRoomShapesSet.js +8 -0
- package/sets/redHeartSubTypesSet.js +7 -0
- package/sets/sinEntityTypesSet.js +11 -0
- package/sets/singleUseActiveCollectibleTypesSet.js +12 -0
- package/sets/storyBossesSet.js +17 -0
- package/shaderCrashFix.js +17 -0
- package/types/AnyEntity.js +2 -0
- package/types/CollectibleIndex.js +2 -0
- package/types/PickingUpItem.js +38 -0
- package/types/PlayerIndex.js +2 -0
- package/types/private/IsaacAPIClass.js +2 -0
- package/types/private/SerializedIsaacAPIClass.js +2 -0
- package/types/private/TSTLClass.js +2 -0
- package/upgradeMod.js +47 -0
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
import { DoorSlot, DoorState, DoorVariant, GridRoom, RoomType, } from "isaac-typescript-definitions";
|
|
2
|
+
import { game } from "../cachedClasses";
|
|
3
|
+
import { DEFAULT_DOOR_SLOT, DOOR_SLOT_FLAG_TO_DOOR_SLOT, } from "../objects/doorSlotFlagToDoorSlot";
|
|
4
|
+
import { DOOR_SLOT_TO_DIRECTION } from "../objects/doorSlotToDirection";
|
|
5
|
+
import { DOOR_SLOT_TO_DOOR_SLOT_FLAG } from "../objects/doorSlotToDoorSlotFlag";
|
|
6
|
+
import { OPPOSITE_DOOR_SLOTS } from "../objects/oppositeDoorSlots";
|
|
7
|
+
import { ROOM_SHAPE_TO_DOOR_SLOT_COORDINATES } from "../objects/roomShapeToDoorSlotCoordinates";
|
|
8
|
+
import { ROOM_SHAPE_TO_DOOR_SLOTS } from "../objects/roomShapeToDoorSlots";
|
|
9
|
+
import { arrayToBitFlags } from "./bitwise";
|
|
10
|
+
import { directionToVector } from "./direction";
|
|
11
|
+
import { getEnumValues } from "./enums";
|
|
12
|
+
import { isTSTLSet } from "./tstlClass";
|
|
13
|
+
/**
|
|
14
|
+
* When players enter a room, they do not appear exactly on the location of the door, because then
|
|
15
|
+
* they would immediately collide with the loading zone. Instead, they are offset by this amount of
|
|
16
|
+
* units.
|
|
17
|
+
*/
|
|
18
|
+
const ROOM_ENTRY_OFFSET_FROM_DOOR = 40;
|
|
19
|
+
export function closeAllDoors() {
|
|
20
|
+
for (const door of getDoors()) {
|
|
21
|
+
door.Close(true);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Use this instead of the `GridEntityDoor.Close` method if you want the door to immediately close
|
|
26
|
+
* without an animation.
|
|
27
|
+
*/
|
|
28
|
+
export function closeDoorFast(door) {
|
|
29
|
+
door.State = DoorState.CLOSED;
|
|
30
|
+
const sprite = door.GetSprite();
|
|
31
|
+
sprite.Play("Closed", true);
|
|
32
|
+
}
|
|
33
|
+
export function doorSlotFlagToDoorSlot(doorSlotFlag) {
|
|
34
|
+
const doorSlot = DOOR_SLOT_FLAG_TO_DOOR_SLOT[doorSlotFlag];
|
|
35
|
+
return doorSlot === undefined ? DEFAULT_DOOR_SLOT : doorSlot;
|
|
36
|
+
}
|
|
37
|
+
export function doorSlotToDirection(doorSlot) {
|
|
38
|
+
return DOOR_SLOT_TO_DIRECTION[doorSlot];
|
|
39
|
+
}
|
|
40
|
+
export function doorSlotToDoorSlotFlag(doorSlot) {
|
|
41
|
+
return DOOR_SLOT_TO_DOOR_SLOT_FLAG[doorSlot];
|
|
42
|
+
}
|
|
43
|
+
export function getAngelRoomDoor() {
|
|
44
|
+
const angelRoomDoors = getDoors(RoomType.ANGEL);
|
|
45
|
+
return angelRoomDoors.length === 0 ? undefined : angelRoomDoors[0];
|
|
46
|
+
}
|
|
47
|
+
export function getDevilRoomDoor() {
|
|
48
|
+
const devilRoomDoors = getDoors(RoomType.DEVIL);
|
|
49
|
+
return devilRoomDoors.length === 0 ? undefined : devilRoomDoors[0];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* If there is both a Devil Room and an Angel Room door, this function will return door with the
|
|
53
|
+
* lowest slot number.
|
|
54
|
+
*/
|
|
55
|
+
export function getDevilRoomOrAngelRoomDoor() {
|
|
56
|
+
const devilRoomOrAngelRoomDoors = getDoors(RoomType.DEVIL, RoomType.ANGEL);
|
|
57
|
+
return devilRoomOrAngelRoomDoors.length === 0
|
|
58
|
+
? undefined
|
|
59
|
+
: devilRoomOrAngelRoomDoors[0];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Helper function to get the position that a player will enter a room at.
|
|
63
|
+
*
|
|
64
|
+
* When players enter a room, they do not appear exactly on the location of the door, because then
|
|
65
|
+
* they would immediately collide with the loading zone. Instead, they are offset by a certain
|
|
66
|
+
* amount of units.
|
|
67
|
+
*/
|
|
68
|
+
export function getDoorEnterPosition(door) {
|
|
69
|
+
const offset = getDoorSlotEnterPositionOffset(door.Slot);
|
|
70
|
+
return door.Position.add(offset);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Helper function to get the offset from a door position that a player will enter a room at.
|
|
74
|
+
*
|
|
75
|
+
* When players enter a room, they do not appear exactly on the location of the door, because then
|
|
76
|
+
* they would immediately collide with the loading zone. Instead, they are offset by a certain
|
|
77
|
+
* amount of units.
|
|
78
|
+
*/
|
|
79
|
+
export function getDoorSlotEnterPositionOffset(doorSlot) {
|
|
80
|
+
const direction = doorSlotToDirection(doorSlot);
|
|
81
|
+
const vector = directionToVector(direction);
|
|
82
|
+
// The player appears in the opposite direction of the way that the door is oriented in the room.
|
|
83
|
+
const oppositeVector = vector.mul(-1);
|
|
84
|
+
return oppositeVector.mul(ROOM_ENTRY_OFFSET_FROM_DOOR);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Helper function to convert an array of door slots or a set of door slots to the resulting bit
|
|
88
|
+
* flag number.
|
|
89
|
+
*/
|
|
90
|
+
export function getDoorSlotFlags(doorSlots) {
|
|
91
|
+
const doorSlotArray = isTSTLSet(doorSlots)
|
|
92
|
+
? [...doorSlots.values()]
|
|
93
|
+
: doorSlots;
|
|
94
|
+
const doorSlotFlagArray = doorSlotArray.map((doorSlot) => doorSlotToDoorSlotFlag(doorSlot));
|
|
95
|
+
return arrayToBitFlags(doorSlotFlagArray);
|
|
96
|
+
}
|
|
97
|
+
/** Helper function to get the possible door slots that can exist for a given room shape. */
|
|
98
|
+
export function getDoorSlotsForRoomShape(roomShape) {
|
|
99
|
+
return ROOM_SHAPE_TO_DOOR_SLOTS[roomShape];
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Helper function to get all of the doors in the room. By default, it will return every door. You
|
|
103
|
+
* can optionally specify one or more room types to return only the doors that match the specified
|
|
104
|
+
* room types.
|
|
105
|
+
*/
|
|
106
|
+
export function getDoors(...roomTypes) {
|
|
107
|
+
const room = game.GetRoom();
|
|
108
|
+
const roomTypesSet = new Set(roomTypes);
|
|
109
|
+
const doorSlots = getEnumValues(DoorSlot);
|
|
110
|
+
const doors = [];
|
|
111
|
+
for (const doorSlot of doorSlots) {
|
|
112
|
+
const door = room.GetDoor(doorSlot);
|
|
113
|
+
if (door === undefined) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (roomTypesSet.size === 0 || roomTypesSet.has(door.TargetRoomType)) {
|
|
117
|
+
doors.push(door);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return doors;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Helper function to get all of the doors in the room that lead to the provided room index.
|
|
124
|
+
*
|
|
125
|
+
* This function is variadic, meaning that you can specify N arguments to return all of the doors
|
|
126
|
+
* that match any of the N room grid indexes.
|
|
127
|
+
*/
|
|
128
|
+
export function getDoorsToRoomIndex(...roomGridIndex) {
|
|
129
|
+
const roomGridIndexesSet = new Set(roomGridIndex);
|
|
130
|
+
const doors = getDoors();
|
|
131
|
+
return doors.filter((door) => roomGridIndexesSet.has(door.TargetRoomIndex));
|
|
132
|
+
}
|
|
133
|
+
export function getOppositeDoorSlot(doorSlot) {
|
|
134
|
+
return OPPOSITE_DOOR_SLOTS[doorSlot];
|
|
135
|
+
}
|
|
136
|
+
export function getRepentanceDoor() {
|
|
137
|
+
const doors = getDoors();
|
|
138
|
+
return doors.find((door) => isRepentanceDoor(door));
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Helper function to get the corresponding door slot for a given room shape and grid coordinates.
|
|
142
|
+
*/
|
|
143
|
+
export function getRoomShapeDoorSlot(roomShape, x, y) {
|
|
144
|
+
const coordinatesMap = ROOM_SHAPE_TO_DOOR_SLOT_COORDINATES[roomShape];
|
|
145
|
+
for (const [doorSlot, [doorX, doorY]] of coordinatesMap.entries()) {
|
|
146
|
+
if (x === doorX && y === doorY) {
|
|
147
|
+
return doorSlot;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Helper function to get the room grid coordinates for a specific room shape and door slot
|
|
154
|
+
* combination.
|
|
155
|
+
*/
|
|
156
|
+
export function getRoomShapeDoorSlotCoordinates(roomShape, doorSlot) {
|
|
157
|
+
const coordinatesMap = ROOM_SHAPE_TO_DOOR_SLOT_COORDINATES[roomShape];
|
|
158
|
+
return coordinatesMap.get(doorSlot);
|
|
159
|
+
}
|
|
160
|
+
/** Helper function to find unused door slots in the room that can be used to make custom doors. */
|
|
161
|
+
export function getUnusedDoorSlots() {
|
|
162
|
+
const room = game.GetRoom();
|
|
163
|
+
const doorSlots = getEnumValues(DoorSlot);
|
|
164
|
+
return doorSlots.filter((doorSlot) => room.IsDoorSlotAllowed(doorSlot) && room.GetDoor(doorSlot) === undefined);
|
|
165
|
+
}
|
|
166
|
+
export function isAngelRoomDoor(door) {
|
|
167
|
+
return door.TargetRoomType === RoomType.ANGEL;
|
|
168
|
+
}
|
|
169
|
+
export function isDevilRoomDoor(door) {
|
|
170
|
+
return door.TargetRoomType === RoomType.DEVIL;
|
|
171
|
+
}
|
|
172
|
+
/** Helper function to see if a door slot could exist for a given room shape. */
|
|
173
|
+
export function isDoorSlotInRoomShape(doorSlot, roomShape) {
|
|
174
|
+
const doorSlots = getDoorSlotsForRoomShape(roomShape);
|
|
175
|
+
return doorSlots.has(doorSlot);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* This refers to the Repentance door that spawns in a boss room after defeating the boss. You have
|
|
179
|
+
* to spend one key to open it. It has a sprite filename of "gfx/grid/door_downpour.anm2".
|
|
180
|
+
*/
|
|
181
|
+
export function isDoorToDownpour(door) {
|
|
182
|
+
if (!isRepentanceDoor(door)) {
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
const sprite = door.GetSprite();
|
|
186
|
+
const fileName = sprite.GetFilename();
|
|
187
|
+
// On Windows, this is: "gfx/grid/Door_Downpour.anm2"
|
|
188
|
+
return fileName.toLowerCase() === "gfx/grid/door_downpour.anm2";
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* This refers to the Repentance door that spawns in a boss room after defeating the boss. You have
|
|
192
|
+
* to spend two hearts to open it. It has a sprite filename of "gfx/grid/door_mausoleum.anm2".
|
|
193
|
+
*/
|
|
194
|
+
export function isDoorToMausoleum(door) {
|
|
195
|
+
if (!isRepentanceDoor(door)) {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
const sprite = door.GetSprite();
|
|
199
|
+
const fileName = sprite.GetFilename();
|
|
200
|
+
// On Windows, this is: "gfx/grid/Door_Mausoleum.anm2"
|
|
201
|
+
return fileName.toLowerCase() === "gfx/grid/door_mausoleum.anm2";
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* This refers to the "strange door" located on the first room of Depths 2. You open it with either
|
|
205
|
+
* a Polaroid or a Negative. It has a sprite filename of "gfx/grid/door_mausoleum_alt.anm2".
|
|
206
|
+
*/
|
|
207
|
+
export function isDoorToMausoleumAscent(door) {
|
|
208
|
+
if (!isRepentanceDoor(door)) {
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
const sprite = door.GetSprite();
|
|
212
|
+
const fileName = sprite.GetFilename();
|
|
213
|
+
// On Windows, this is: "gfx/grid/Door_Mausoleum_Alt.anm2"
|
|
214
|
+
return fileName.toLowerCase() === "gfx/grid/door_mausoleum_alt.anm2";
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* This refers to the Repentance door that spawns in a boss room after defeating the boss. You have
|
|
218
|
+
* to spend two bombs to open it. It has a sprite filename of "gfx/grid/door_mines.anm2".
|
|
219
|
+
*/
|
|
220
|
+
export function isDoorToMines(door) {
|
|
221
|
+
if (!isRepentanceDoor(door)) {
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
const sprite = door.GetSprite();
|
|
225
|
+
const fileName = sprite.GetFilename();
|
|
226
|
+
// On Windows, this is: "gfx/grid/Door_Mines.anm2"
|
|
227
|
+
return fileName.toLowerCase() === "gfx/grid/door_mines.anm2";
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* This refers to the Repentance door that spawns after defeating Mom. You open it with the
|
|
231
|
+
* completed knife. It has a sprite filename of "gfx/grid/door_momsheart.anm2".
|
|
232
|
+
*/
|
|
233
|
+
export function isDoorToMomsHeart(door) {
|
|
234
|
+
if (!isRepentanceDoor(door)) {
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
const sprite = door.GetSprite();
|
|
238
|
+
const fileName = sprite.GetFilename();
|
|
239
|
+
// On Windows, this is: "gfx/grid/Door_MomsHeart.anm2"
|
|
240
|
+
return fileName.toLowerCase() === "gfx/grid/door_momsheart.anm2"; // cspell:ignore momsheart
|
|
241
|
+
}
|
|
242
|
+
export function isHiddenSecretRoomDoor(door) {
|
|
243
|
+
const sprite = door.GetSprite();
|
|
244
|
+
const animation = sprite.GetAnimation();
|
|
245
|
+
return isSecretRoomDoor(door) && animation === "Hidden";
|
|
246
|
+
}
|
|
247
|
+
export function isRepentanceDoor(door) {
|
|
248
|
+
// eslint-disable-next-line isaacscript/strict-enums
|
|
249
|
+
return door.TargetRoomIndex === GridRoom.SECRET_EXIT;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* This refers to the hole in the wall that appears after bombing the entrance to a secret room.
|
|
253
|
+
* Note that the door still exists before it has been bombed open. It has a sprite filename of
|
|
254
|
+
* "gfx/grid/door_08_holeinwall.anm2".
|
|
255
|
+
*/
|
|
256
|
+
export function isSecretRoomDoor(door) {
|
|
257
|
+
const sprite = door.GetSprite();
|
|
258
|
+
const fileName = sprite.GetFilename();
|
|
259
|
+
// On Windows, this is: "gfx/grid/Door_08_HoleInWall.anm2"
|
|
260
|
+
return fileName.toLowerCase() === "gfx/grid/door_08_holeinwall.anm2"; // cspell:ignore holeinwall
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Helper function to reset an unlocked door back to a locked state. Doing this is non-trivial
|
|
264
|
+
* because in addition to calling the `GridEntityDoor.SetLocked` method, you must also:
|
|
265
|
+
*
|
|
266
|
+
* - Set the `VisitedCount` of the room's `RoomDescription` to 0.
|
|
267
|
+
* - Set the variant to `DoorVariant.DOOR_LOCKED`.
|
|
268
|
+
* - Close the door.
|
|
269
|
+
*/
|
|
270
|
+
export function lockDoor(door) {
|
|
271
|
+
const level = game.GetLevel();
|
|
272
|
+
// We can't use the "getRoomDescriptor" function since it will cause a dependency cycle.
|
|
273
|
+
const roomDescriptor = level.GetRoomByIdx(door.TargetRoomIndex);
|
|
274
|
+
roomDescriptor.VisitedCount = 0;
|
|
275
|
+
door.SetVariant(DoorVariant.LOCKED);
|
|
276
|
+
door.SetLocked(true);
|
|
277
|
+
door.Close(true);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* For the purposes of this function, doors to Secret Rooms or Super Secret Rooms that have not been
|
|
281
|
+
* discovered yet will not be opened.
|
|
282
|
+
*/
|
|
283
|
+
export function openAllDoors() {
|
|
284
|
+
for (const door of getDoors()) {
|
|
285
|
+
// If we try to open a hidden Secret Room door (or Super Secret Room door), then nothing will
|
|
286
|
+
// happen.
|
|
287
|
+
door.Open();
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Use this instead of the `GridEntityDoor.Open` method if you want the door to immediately open
|
|
292
|
+
* without an animation.
|
|
293
|
+
*/
|
|
294
|
+
export function openDoorFast(door) {
|
|
295
|
+
door.State = DoorState.OPEN;
|
|
296
|
+
const sprite = door.GetSprite();
|
|
297
|
+
sprite.Play("Opened", true);
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Helper function to remove all of the doors in the room. By default, it will remove every door.
|
|
301
|
+
* You can optionally specify one or more room types to remove only the doors that match the
|
|
302
|
+
* specified room types.
|
|
303
|
+
*
|
|
304
|
+
* @returns The number of doors removed.
|
|
305
|
+
*/
|
|
306
|
+
export function removeAllDoors(...roomTypes) {
|
|
307
|
+
const doors = getDoors(...roomTypes);
|
|
308
|
+
removeDoors(...doors);
|
|
309
|
+
return doors.length;
|
|
310
|
+
}
|
|
311
|
+
/** Helper function to remove a single door. */
|
|
312
|
+
export function removeDoor(door) {
|
|
313
|
+
const room = game.GetRoom();
|
|
314
|
+
room.RemoveDoor(door.Slot);
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Helper function to remove the doors provided.
|
|
318
|
+
*
|
|
319
|
+
* This function is variadic, meaning that you can specify as many doors as you want to remove.
|
|
320
|
+
*/
|
|
321
|
+
export function removeDoors(...doors) {
|
|
322
|
+
for (const door of doors) {
|
|
323
|
+
removeDoor(door);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9vcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9pc2FhY3NjcmlwdC1jb21tb24vc3JjL2Z1bmN0aW9ucy9kb29ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsUUFBUSxFQUVSLFNBQVMsRUFDVCxXQUFXLEVBQ1gsUUFBUSxFQUVSLFFBQVEsR0FDVCxNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4QyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLDJCQUEyQixHQUM1QixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4Qzs7OztHQUlHO0FBQ0gsTUFBTSwyQkFBMkIsR0FBRyxFQUFFLENBQUM7QUFFdkMsTUFBTSxVQUFVLGFBQWE7SUFDM0IsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUUsRUFBRTtRQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBb0I7SUFDaEQsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBRTlCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFlBQTBCO0lBQy9ELE1BQU0sUUFBUSxHQUFHLDJCQUEyQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzNELE9BQU8sUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUMvRCxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFFBQWtCO0lBQ3BELE9BQU8sc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxRQUFrQjtJQUN2RCxPQUFPLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsT0FBTyxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckUsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0I7SUFDOUIsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxPQUFPLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQjtJQUN6QyxNQUFNLHlCQUF5QixHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRSxPQUFPLHlCQUF5QixDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxTQUFTO1FBQ1gsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsSUFBb0I7SUFDdkQsTUFBTSxNQUFNLEdBQUcsOEJBQThCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSw4QkFBOEIsQ0FDNUMsUUFBa0I7SUFFbEIsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFNUMsaUdBQWlHO0lBQ2pHLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV0QyxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixTQUl5QjtJQUV6QixNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBRSxTQUF3QixDQUFDO0lBQzlCLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQ3ZELHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUNqQyxDQUFDO0lBRUYsT0FBTyxlQUFlLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsNEZBQTRGO0FBQzVGLE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsU0FBb0I7SUFFcEIsT0FBTyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsR0FBRyxTQUFxQjtJQUMvQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFeEMsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sS0FBSyxHQUFxQixFQUFFLENBQUM7SUFDbkMsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUU7UUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDdEIsU0FBUztTQUNWO1FBRUQsSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUNwRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xCO0tBQ0Y7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFHLGFBQW9CO0lBQ3pELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbEQsTUFBTSxLQUFLLEdBQUcsUUFBUSxFQUFFLENBQUM7SUFDekIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxRQUFrQjtJQUNwRCxPQUFPLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCO0lBQy9CLE1BQU0sS0FBSyxHQUFHLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLFNBQW9CLEVBQ3BCLENBQU0sRUFDTixDQUFNO0lBRU4sTUFBTSxjQUFjLEdBQUcsbUNBQW1DLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEUsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2pFLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQzlCLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO0tBQ0Y7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLCtCQUErQixDQUM3QyxTQUFvQixFQUNwQixRQUFrQjtJQUVsQixNQUFNLGNBQWMsR0FBRyxtQ0FBbUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RSxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUVELG1HQUFtRztBQUNuRyxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QixNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUNyQixDQUFDLFFBQVEsRUFBRSxFQUFFLENBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssU0FBUyxDQUMzRSxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBb0I7SUFDbEQsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUM7QUFDaEQsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBb0I7SUFDbEQsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUM7QUFDaEQsQ0FBQztBQUVELGdGQUFnRjtBQUNoRixNQUFNLFVBQVUscUJBQXFCLENBQ25DLFFBQWtCLEVBQ2xCLFNBQW9CO0lBRXBCLE1BQU0sU0FBUyxHQUFHLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQW9CO0lBQ25ELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUV0QyxxREFBcUQ7SUFDckQsT0FBTyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssNkJBQTZCLENBQUM7QUFDbEUsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFvQjtJQUNwRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDM0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFdEMsc0RBQXNEO0lBQ3RELE9BQU8sUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLDhCQUE4QixDQUFDO0FBQ25FLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsSUFBb0I7SUFDMUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzNCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRXRDLDBEQUEwRDtJQUMxRCxPQUFPLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxrQ0FBa0MsQ0FBQztBQUN2RSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFvQjtJQUNoRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDM0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFdEMsa0RBQWtEO0lBQ2xELE9BQU8sUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLDBCQUEwQixDQUFDO0FBQy9ELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBb0I7SUFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzNCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRXRDLHNEQUFzRDtJQUN0RCxPQUFPLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyw4QkFBOEIsQ0FBQyxDQUFDLDBCQUEwQjtBQUM5RixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLElBQW9CO0lBQ3pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFeEMsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLEtBQUssUUFBUSxDQUFDO0FBQzFELENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsSUFBb0I7SUFDbkQsb0RBQW9EO0lBQ3BELE9BQU8sSUFBSSxDQUFDLGVBQWUsS0FBSyxRQUFRLENBQUMsV0FBVyxDQUFDO0FBQ3ZELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQW9CO0lBQ25ELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFdEMsMERBQTBEO0lBQzFELE9BQU8sUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLGtDQUFrQyxDQUFDLENBQUMsMkJBQTJCO0FBQ25HLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFvQjtJQUMzQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFOUIsd0ZBQXdGO0lBQ3hGLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hFLGNBQWMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBRWhDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFlBQVk7SUFDMUIsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUUsRUFBRTtRQUM3Qiw2RkFBNkY7UUFDN0YsVUFBVTtRQUNWLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUNiO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBb0I7SUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBRTVCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxHQUFHLFNBQXFCO0lBQ3JELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBRXRCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUN0QixDQUFDO0FBRUQsK0NBQStDO0FBQy9DLE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBb0I7SUFDN0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFHLEtBQXVCO0lBQ3BELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3hCLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsQjtBQUNILENBQUMifQ==
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/* eslint-disable no-nested-ternary */
|
|
2
|
+
/* eslint-disable no-return-assign */
|
|
3
|
+
/* eslint-disable sort-exports/sort-exports */
|
|
4
|
+
// These functions are from:
|
|
5
|
+
// https://easings.net/
|
|
6
|
+
export function easeInSine(x) {
|
|
7
|
+
return 1 - Math.cos((x * Math.PI) / 2);
|
|
8
|
+
}
|
|
9
|
+
export function easeOutSine(x) {
|
|
10
|
+
return Math.sin((x * Math.PI) / 2);
|
|
11
|
+
}
|
|
12
|
+
export function easeInOutSine(x) {
|
|
13
|
+
return -(Math.cos(Math.PI * x) - 1) / 2;
|
|
14
|
+
}
|
|
15
|
+
export function easeInCubic(x) {
|
|
16
|
+
return x * x * x;
|
|
17
|
+
}
|
|
18
|
+
export function easeOutCubic(x) {
|
|
19
|
+
return 1 - (1 - x) ** 3;
|
|
20
|
+
}
|
|
21
|
+
export function easeInOutCubic(x) {
|
|
22
|
+
return x < 0.5 ? 4 * x * x * x : 1 - (-2 * x + 2) ** 3 / 2;
|
|
23
|
+
}
|
|
24
|
+
export function easeInQuint(x) {
|
|
25
|
+
return x * x * x * x * x;
|
|
26
|
+
}
|
|
27
|
+
export function easeOutQuint(x) {
|
|
28
|
+
return 1 - (1 - x) ** 5;
|
|
29
|
+
}
|
|
30
|
+
export function easeInOutQuint(x) {
|
|
31
|
+
return x < 0.5 ? 16 * x * x * x * x * x : 1 - (-2 * x + 2) ** 5 / 2;
|
|
32
|
+
}
|
|
33
|
+
export function easeInCirc(x) {
|
|
34
|
+
return 1 - Math.sqrt(1 - x ** 2);
|
|
35
|
+
}
|
|
36
|
+
export function easeOutCirc(x) {
|
|
37
|
+
return Math.sqrt(1 - (x - 1) ** 2);
|
|
38
|
+
}
|
|
39
|
+
export function easeInOutCirc(x) {
|
|
40
|
+
return x < 0.5
|
|
41
|
+
? (1 - Math.sqrt(1 - (2 * x) ** 2)) / 2
|
|
42
|
+
: (Math.sqrt(1 - (-2 * x + 2) ** 2) + 1) / 2;
|
|
43
|
+
}
|
|
44
|
+
export function easeInElastic(x) {
|
|
45
|
+
const c4 = (2 * Math.PI) / 3;
|
|
46
|
+
return x === 0
|
|
47
|
+
? 0
|
|
48
|
+
: x === 1
|
|
49
|
+
? 1
|
|
50
|
+
: -(2 ** (10 * x - 10)) * Math.sin((x * 10 - 10.75) * c4);
|
|
51
|
+
}
|
|
52
|
+
export function easeOutElastic(x) {
|
|
53
|
+
const c4 = (2 * Math.PI) / 3;
|
|
54
|
+
return x === 0
|
|
55
|
+
? 0
|
|
56
|
+
: x === 1
|
|
57
|
+
? 1
|
|
58
|
+
: 2 ** (-10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1;
|
|
59
|
+
}
|
|
60
|
+
export function easeInOutElastic(x) {
|
|
61
|
+
const c5 = (2 * Math.PI) / 4.5;
|
|
62
|
+
return x === 0
|
|
63
|
+
? 0
|
|
64
|
+
: x === 1
|
|
65
|
+
? 1
|
|
66
|
+
: x < 0.5
|
|
67
|
+
? -(2 ** (20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2
|
|
68
|
+
: (2 ** (-20 * x + 10) * Math.sin((20 * x - 11.125) * c5)) / 2 + 1;
|
|
69
|
+
}
|
|
70
|
+
export function easeInQuad(x) {
|
|
71
|
+
return x * x;
|
|
72
|
+
}
|
|
73
|
+
export function easeOutQuad(x) {
|
|
74
|
+
return 1 - (1 - x) * (1 - x);
|
|
75
|
+
}
|
|
76
|
+
export function easeInOutQuad(x) {
|
|
77
|
+
return x < 0.5 ? 2 * x * x : 1 - (-2 * x + 2) ** 2 / 2;
|
|
78
|
+
}
|
|
79
|
+
export function easeInQuart(x) {
|
|
80
|
+
return x * x * x * x;
|
|
81
|
+
}
|
|
82
|
+
export function easeOutQuart(x) {
|
|
83
|
+
return 1 - (1 - x) ** 4;
|
|
84
|
+
}
|
|
85
|
+
export function easeInOutQuart(x) {
|
|
86
|
+
return x < 0.5 ? 8 * x * x * x * x : 1 - (-2 * x + 2) ** 4 / 2;
|
|
87
|
+
}
|
|
88
|
+
export function easeInExpo(x) {
|
|
89
|
+
return x === 0 ? 0 : 2 ** (10 * x - 10);
|
|
90
|
+
}
|
|
91
|
+
export function easeOutExpo(x) {
|
|
92
|
+
return x === 1 ? 1 : 1 - 2 ** (-10 * x);
|
|
93
|
+
}
|
|
94
|
+
export function easeInOutExpo(x) {
|
|
95
|
+
return x === 0
|
|
96
|
+
? 0
|
|
97
|
+
: x === 1
|
|
98
|
+
? 1
|
|
99
|
+
: x < 0.5
|
|
100
|
+
? 2 ** (20 * x - 10) / 2
|
|
101
|
+
: (2 - 2 ** (-20 * x + 10)) / 2;
|
|
102
|
+
}
|
|
103
|
+
export function easeInBack(x) {
|
|
104
|
+
const c1 = 1.70158;
|
|
105
|
+
const c3 = c1 + 1;
|
|
106
|
+
return c3 * x * x * x - c1 * x * x;
|
|
107
|
+
}
|
|
108
|
+
export function easeOutBack(x) {
|
|
109
|
+
const c1 = 1.70158;
|
|
110
|
+
const c3 = c1 + 1;
|
|
111
|
+
return 1 + c3 * (x - 1) ** 3 + c1 * (x - 1) ** 2;
|
|
112
|
+
}
|
|
113
|
+
export function easeInOutBack(x) {
|
|
114
|
+
const c1 = 1.70158;
|
|
115
|
+
const c2 = c1 * 1.525;
|
|
116
|
+
return x < 0.5
|
|
117
|
+
? ((2 * x) ** 2 * ((c2 + 1) * 2 * x - c2)) / 2
|
|
118
|
+
: ((2 * x - 2) ** 2 * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2;
|
|
119
|
+
}
|
|
120
|
+
export function easeInBounce(x) {
|
|
121
|
+
return 1 - easeOutBounce(1 - x);
|
|
122
|
+
}
|
|
123
|
+
export function easeOutBounce(x) {
|
|
124
|
+
const n1 = 7.5625;
|
|
125
|
+
const d1 = 2.75;
|
|
126
|
+
if (x < 1 / d1) {
|
|
127
|
+
return n1 * x * x;
|
|
128
|
+
}
|
|
129
|
+
if (x < 2 / d1) {
|
|
130
|
+
return n1 * (x -= 1.5 / d1) * x + 0.75;
|
|
131
|
+
}
|
|
132
|
+
if (x < 2.5 / d1) {
|
|
133
|
+
return n1 * (x -= 2.25 / d1) * x + 0.9375;
|
|
134
|
+
}
|
|
135
|
+
return n1 * (x -= 2.625 / d1) * x + 0.984375;
|
|
136
|
+
}
|
|
137
|
+
export function easeInOutBounce(x) {
|
|
138
|
+
return x < 0.5
|
|
139
|
+
? (1 - easeOutBounce(1 - 2 * x)) / 2
|
|
140
|
+
: (1 + easeOutBounce(2 * x - 1)) / 2;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFzaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvaXNhYWNzY3JpcHQtY29tbW9uL3NyYy9mdW5jdGlvbnMvZWFzaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QyxxQ0FBcUM7QUFDckMsOENBQThDO0FBRTlDLDRCQUE0QjtBQUM1Qix1QkFBdUI7QUFFdkIsTUFBTSxVQUFVLFVBQVUsQ0FBQyxDQUFTO0lBQ2xDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLENBQVM7SUFDbkMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxDQUFTO0lBQ3JDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsQ0FBUztJQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLENBQVM7SUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLENBQVM7SUFDdEMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLENBQVM7SUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLENBQVM7SUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLENBQVM7SUFDdEMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsQ0FBUztJQUNsQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsQ0FBUztJQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLENBQVM7SUFDckMsT0FBTyxDQUFDLEdBQUcsR0FBRztRQUNaLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLENBQVM7SUFDckMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU3QixPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLENBQVM7SUFDdEMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU3QixPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxD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QUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxDQUFTO0lBQ3BDLE9BQU8sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsQ0FBUztJQUNyQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDbEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBRWhCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDZCxPQUFPLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ25CO0lBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNkLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0tBQ3hDO0lBRUQsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsRUFBRTtRQUNoQixPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztLQUMzQztJQUVELE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQy9DLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLENBQVM7SUFDdkMsT0FBTyxDQUFDLEdBQUcsR0FBRztRQUNaLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLENBQUMifQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ItemConfigTag } from "isaac-typescript-definitions";
|
|
2
|
+
import { isHiddenCollectible, isPassiveCollectible } from "./collectibles";
|
|
3
|
+
import { getCollectibleSet } from "./collectibleSet";
|
|
4
|
+
import { collectibleHasTag } from "./collectibleTag";
|
|
5
|
+
import { getRandomSeed } from "./rng";
|
|
6
|
+
import { copySet, getRandomSetElement } from "./set";
|
|
7
|
+
const EDEN_PASSIVE_COLLECTIBLES_SET = new Set();
|
|
8
|
+
function initCollectibleSet() {
|
|
9
|
+
const collectibleSet = getCollectibleSet();
|
|
10
|
+
for (const collectibleType of collectibleSet.values()) {
|
|
11
|
+
if (isPassiveCollectible(collectibleType) &&
|
|
12
|
+
!isHiddenCollectible(collectibleType) &&
|
|
13
|
+
!collectibleHasTag(collectibleType, ItemConfigTag.NO_EDEN)) {
|
|
14
|
+
EDEN_PASSIVE_COLLECTIBLES_SET.add(collectibleType);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function getEdenPassives() {
|
|
19
|
+
// Lazy initialize the set.
|
|
20
|
+
if (EDEN_PASSIVE_COLLECTIBLES_SET.size === 0) {
|
|
21
|
+
initCollectibleSet();
|
|
22
|
+
}
|
|
23
|
+
return copySet(EDEN_PASSIVE_COLLECTIBLES_SET);
|
|
24
|
+
}
|
|
25
|
+
export function getRandomEdenPassive(seedOrRNG = getRandomSeed(), exceptions = []) {
|
|
26
|
+
// Lazy initialize the set.
|
|
27
|
+
if (EDEN_PASSIVE_COLLECTIBLES_SET.size === 0) {
|
|
28
|
+
initCollectibleSet();
|
|
29
|
+
}
|
|
30
|
+
return getRandomSetElement(EDEN_PASSIVE_COLLECTIBLES_SET, seedOrRNG, exceptions);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL2VkZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFckQsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztBQUVqRSxTQUFTLGtCQUFrQjtJQUN6QixNQUFNLGNBQWMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0lBRTNDLEtBQUssTUFBTSxlQUFlLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ3JELElBQ0Usb0JBQW9CLENBQUMsZUFBZSxDQUFDO1lBQ3JDLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDO1lBQ3JDLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFDMUQ7WUFDQSw2QkFBNkIsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDcEQ7S0FDRjtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZTtJQUM3QiwyQkFBMkI7SUFDM0IsSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO1FBQzVDLGtCQUFrQixFQUFFLENBQUM7S0FDdEI7SUFFRCxPQUFPLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLFlBQXdCLGFBQWEsRUFBRSxFQUN2QyxhQUE2RCxFQUFFO0lBRS9ELDJCQUEyQjtJQUMzQixJQUFJLDZCQUE2QixDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7UUFDNUMsa0JBQWtCLEVBQUUsQ0FBQztLQUN0QjtJQUVELE9BQU8sbUJBQW1CLENBQ3hCLDZCQUE2QixFQUM3QixTQUFTLEVBQ1QsVUFBVSxDQUNYLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { inRectangle } from "./math";
|
|
2
|
+
/** For `EntityType.EFFECT` (1000), `EffectVariant.DICE_FLOOR` (76) */
|
|
3
|
+
export const DICE_FLOOR_TRIGGER_SQUARE_SIZE = 75;
|
|
4
|
+
/** Helper function to see if a player is close enough to activate a Dice Room floor. */
|
|
5
|
+
export function isCloseEnoughToTriggerDiceFloor(player, diceFloor) {
|
|
6
|
+
// Unlike other entities, the dice floor has a rectangular hit box, not a circular one.
|
|
7
|
+
const topLeft = diceFloor.Position.add(Vector(-DICE_FLOOR_TRIGGER_SQUARE_SIZE, -DICE_FLOOR_TRIGGER_SQUARE_SIZE));
|
|
8
|
+
const bottomRight = diceFloor.Position.add(Vector(DICE_FLOOR_TRIGGER_SQUARE_SIZE, DICE_FLOOR_TRIGGER_SQUARE_SIZE));
|
|
9
|
+
return inRectangle(player.Position, topLeft, bottomRight);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2lzYWFjc2NyaXB0LWNvbW1vbi9zcmMvZnVuY3Rpb25zL2VmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVyQyxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsRUFBRSxDQUFDO0FBRWpELHdGQUF3RjtBQUN4RixNQUFNLFVBQVUsK0JBQStCLENBQzdDLE1BQW9CLEVBQ3BCLFNBQXVCO0lBRXZCLHVGQUF1RjtJQUN2RixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDcEMsTUFBTSxDQUFDLENBQUMsOEJBQThCLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxDQUN6RSxDQUFDO0lBQ0YsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ3hDLE1BQU0sQ0FBQyw4QkFBOEIsRUFBRSw4QkFBOEIsQ0FBQyxDQUN2RSxDQUFDO0lBRUYsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDNUQsQ0FBQyJ9
|