isaacscript-common 84.0.1 → 84.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/arrays/cachedEnumValues.js +33 -0
- package/dist/callbackClasses.js +289 -0
- package/dist/callbacks.js +181 -0
- package/dist/classes/DefaultMap.js +171 -0
- package/dist/classes/ModFeature.js +244 -0
- package/dist/classes/ModUpgraded.js +324 -0
- package/dist/classes/callbacks/EntityTakeDmgFilter.js +19 -0
- package/dist/classes/callbacks/EntityTakeDmgPlayer.js +29 -0
- package/dist/classes/callbacks/InputActionFilter.js +24 -0
- package/dist/classes/callbacks/InputActionPlayer.js +37 -0
- package/dist/classes/callbacks/PostAmbushFinished.js +40 -0
- package/dist/classes/callbacks/PostAmbushStarted.js +40 -0
- package/dist/classes/callbacks/PostBombExploded.js +24 -0
- package/dist/classes/callbacks/PostBombInitFilter.js +21 -0
- package/dist/classes/callbacks/PostBombInitLate.js +31 -0
- package/dist/classes/callbacks/PostBombRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostBombUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostBoneSwing.js +53 -0
- package/dist/classes/callbacks/PostCollectibleEmpty.js +50 -0
- package/dist/classes/callbacks/PostCursedTeleport.js +119 -0
- package/dist/classes/callbacks/PostCustomRevive.js +17 -0
- package/dist/classes/callbacks/PostDiceRoomActivated.js +50 -0
- package/dist/classes/callbacks/PostDoorRender.js +24 -0
- package/dist/classes/callbacks/PostDoorUpdate.js +24 -0
- package/dist/classes/callbacks/PostEffectInitFilter.js +21 -0
- package/dist/classes/callbacks/PostEffectInitLate.js +31 -0
- package/dist/classes/callbacks/PostEffectRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostEffectStateChanged.js +34 -0
- package/dist/classes/callbacks/PostEffectUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostEntityKillFilter.js +21 -0
- package/dist/classes/callbacks/PostEsauJr.js +12 -0
- package/dist/classes/callbacks/PostFamiliarInitFilter.js +21 -0
- package/dist/classes/callbacks/PostFamiliarInitLate.js +31 -0
- package/dist/classes/callbacks/PostFamiliarRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostFamiliarStateChanged.js +34 -0
- package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostFirstEsauJr.js +12 -0
- package/dist/classes/callbacks/PostFirstFlip.js +12 -0
- package/dist/classes/callbacks/PostFlip.js +12 -0
- package/dist/classes/callbacks/PostGameEndFilter.js +21 -0
- package/dist/classes/callbacks/PostGameStartedReordered.js +14 -0
- package/dist/classes/callbacks/PostGameStartedReorderedLast.js +14 -0
- package/dist/classes/callbacks/PostGreedModeWave.js +35 -0
- package/dist/classes/callbacks/PostGridEntityBroken.js +14 -0
- package/dist/classes/callbacks/PostGridEntityCollision.js +28 -0
- package/dist/classes/callbacks/PostGridEntityCustomBroken.js +14 -0
- package/dist/classes/callbacks/PostGridEntityCustomCollision.js +24 -0
- package/dist/classes/callbacks/PostGridEntityCustomInit.js +14 -0
- package/dist/classes/callbacks/PostGridEntityCustomRemove.js +18 -0
- package/dist/classes/callbacks/PostGridEntityCustomRender.js +14 -0
- package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +14 -0
- package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +14 -0
- package/dist/classes/callbacks/PostGridEntityInit.js +14 -0
- package/dist/classes/callbacks/PostGridEntityRemove.js +19 -0
- package/dist/classes/callbacks/PostGridEntityRender.js +14 -0
- package/dist/classes/callbacks/PostGridEntityStateChanged.js +14 -0
- package/dist/classes/callbacks/PostGridEntityUpdate.js +14 -0
- package/dist/classes/callbacks/PostHolyMantleRemoved.js +43 -0
- package/dist/classes/callbacks/PostItemDischarge.js +122 -0
- package/dist/classes/callbacks/PostItemPickup.js +14 -0
- package/dist/classes/callbacks/PostKeyboardChanged.js +46 -0
- package/dist/classes/callbacks/PostKnifeInitFilter.js +21 -0
- package/dist/classes/callbacks/PostKnifeInitLate.js +31 -0
- package/dist/classes/callbacks/PostKnifeRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostKnifeUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostLaserInitFilter.js +21 -0
- package/dist/classes/callbacks/PostLaserInitLate.js +31 -0
- package/dist/classes/callbacks/PostLaserRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostLaserUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostNPCDeathFilter.js +21 -0
- package/dist/classes/callbacks/PostNPCInitFilter.js +21 -0
- package/dist/classes/callbacks/PostNPCInitLate.js +31 -0
- package/dist/classes/callbacks/PostNPCRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostNPCStateChanged.js +34 -0
- package/dist/classes/callbacks/PostNPCUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostNewLevelReordered.js +14 -0
- package/dist/classes/callbacks/PostNewRoomEarly.js +74 -0
- package/dist/classes/callbacks/PostNewRoomReordered.js +14 -0
- package/dist/classes/callbacks/PostPEffectUpdateReordered.js +14 -0
- package/dist/classes/callbacks/PostPickupChanged.js +14 -0
- package/dist/classes/callbacks/PostPickupCollect.js +38 -0
- package/dist/classes/callbacks/PostPickupInitFilter.js +21 -0
- package/dist/classes/callbacks/PostPickupInitFirst.js +33 -0
- package/dist/classes/callbacks/PostPickupInitLate.js +31 -0
- package/dist/classes/callbacks/PostPickupRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostPickupSelectionFilter.js +29 -0
- package/dist/classes/callbacks/PostPickupStateChanged.js +34 -0
- package/dist/classes/callbacks/PostPickupUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostPitRender.js +24 -0
- package/dist/classes/callbacks/PostPitUpdate.js +24 -0
- package/dist/classes/callbacks/PostPlayerChangeHealth.js +47 -0
- package/dist/classes/callbacks/PostPlayerChangeStat.js +79 -0
- package/dist/classes/callbacks/PostPlayerChangeType.js +36 -0
- package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +14 -0
- package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +14 -0
- package/dist/classes/callbacks/PostPlayerFatalDamage.js +83 -0
- package/dist/classes/callbacks/PostPlayerInitFirst.js +41 -0
- package/dist/classes/callbacks/PostPlayerInitLate.js +33 -0
- package/dist/classes/callbacks/PostPlayerRenderReordered.js +14 -0
- package/dist/classes/callbacks/PostPlayerUpdateReordered.js +14 -0
- package/dist/classes/callbacks/PostPoopRender.js +24 -0
- package/dist/classes/callbacks/PostPoopUpdate.js +24 -0
- package/dist/classes/callbacks/PostPressurePlateRender.js +24 -0
- package/dist/classes/callbacks/PostPressurePlateUpdate.js +24 -0
- package/dist/classes/callbacks/PostProjectileInitFilter.js +21 -0
- package/dist/classes/callbacks/PostProjectileInitLate.js +31 -0
- package/dist/classes/callbacks/PostProjectileKill.js +52 -0
- package/dist/classes/callbacks/PostProjectileRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostProjectileUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostPurchase.js +90 -0
- package/dist/classes/callbacks/PostRockRender.js +24 -0
- package/dist/classes/callbacks/PostRockUpdate.js +24 -0
- package/dist/classes/callbacks/PostRoomClearChanged.js +46 -0
- package/dist/classes/callbacks/PostSacrifice.js +36 -0
- package/dist/classes/callbacks/PostSlotAnimationChanged.js +14 -0
- package/dist/classes/callbacks/PostSlotCollision.js +25 -0
- package/dist/classes/callbacks/PostSlotDestroyed.js +14 -0
- package/dist/classes/callbacks/PostSlotInit.js +14 -0
- package/dist/classes/callbacks/PostSlotRender.js +14 -0
- package/dist/classes/callbacks/PostSlotUpdate.js +14 -0
- package/dist/classes/callbacks/PostSpikesRender.js +24 -0
- package/dist/classes/callbacks/PostSpikesUpdate.js +24 -0
- package/dist/classes/callbacks/PostTNTRender.js +24 -0
- package/dist/classes/callbacks/PostTNTUpdate.js +24 -0
- package/dist/classes/callbacks/PostTearInitFilter.js +21 -0
- package/dist/classes/callbacks/PostTearInitLate.js +31 -0
- package/dist/classes/callbacks/PostTearInitVeryLate.js +35 -0
- package/dist/classes/callbacks/PostTearKill.js +52 -0
- package/dist/classes/callbacks/PostTearRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostTearUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostTransformation.js +47 -0
- package/dist/classes/callbacks/PostTrinketBreak.js +70 -0
- package/dist/classes/callbacks/PostUsePillFilter.js +76 -0
- package/dist/classes/callbacks/PreBerserkDeath.js +41 -0
- package/dist/classes/callbacks/PreBombCollisionFilter.js +19 -0
- package/dist/classes/callbacks/PreCustomRevive.js +14 -0
- package/dist/classes/callbacks/PreEntitySpawnFilter.js +24 -0
- package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +19 -0
- package/dist/classes/callbacks/PreGetPedestal.js +46 -0
- package/dist/classes/callbacks/PreItemPickup.js +14 -0
- package/dist/classes/callbacks/PreKnifeCollisionFilter.js +19 -0
- package/dist/classes/callbacks/PreNPCCollisionFilter.js +19 -0
- package/dist/classes/callbacks/PreNPCUpdateFilter.js +19 -0
- package/dist/classes/callbacks/PreNewLevel.js +51 -0
- package/dist/classes/callbacks/PreProjectileCollisionFilter.js +19 -0
- package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +26 -0
- package/dist/classes/callbacks/PreTearCollisionFilter.js +19 -0
- package/dist/classes/features/callbackLogic/CustomGridEntities.js +359 -0
- package/dist/classes/features/callbackLogic/CustomRevive.js +170 -0
- package/dist/classes/features/callbackLogic/EsauJrDetection.js +70 -0
- package/dist/classes/features/callbackLogic/FlipDetection.js +61 -0
- package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +220 -0
- package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +62 -0
- package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +35 -0
- package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +147 -0
- package/dist/classes/features/callbackLogic/ItemPickupDetection.js +68 -0
- package/dist/classes/features/callbackLogic/PickupChangeDetection.js +43 -0
- package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +193 -0
- package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +109 -0
- package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +95 -0
- package/dist/classes/features/callbackLogic/SlotRenderDetection.js +48 -0
- package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +52 -0
- package/dist/classes/features/other/CharacterHealthConversion.js +112 -0
- package/dist/classes/features/other/CharacterStats.js +68 -0
- package/dist/classes/features/other/CollectibleItemPoolType.js +75 -0
- package/dist/classes/features/other/CustomHotkeys.js +144 -0
- package/dist/classes/features/other/CustomItemPools.js +128 -0
- package/dist/classes/features/other/CustomPickups.js +118 -0
- package/dist/classes/features/other/CustomStages.js +471 -0
- package/dist/classes/features/other/CustomTrapdoors.js +596 -0
- package/dist/classes/features/other/DebugDisplay.js +699 -0
- package/dist/classes/features/other/DeployJSONRoom.js +301 -0
- package/dist/classes/features/other/DisableAllSound.js +90 -0
- package/dist/classes/features/other/DisableInputs.js +249 -0
- package/dist/classes/features/other/EdenStartingStatsHealth.js +197 -0
- package/dist/classes/features/other/ExtraConsoleCommands.js +292 -0
- package/dist/classes/features/other/FadeInRemover.js +67 -0
- package/dist/classes/features/other/FastReset.js +88 -0
- package/dist/classes/features/other/FlyingDetection.js +64 -0
- package/dist/classes/features/other/ForgottenSwitch.js +43 -0
- package/dist/classes/features/other/ItemPoolDetection.js +187 -0
- package/dist/classes/features/other/ModdedElementDetection.js +399 -0
- package/dist/classes/features/other/ModdedElementSets.js +1251 -0
- package/dist/classes/features/other/NoSirenSteal.js +88 -0
- package/dist/classes/features/other/Pause.js +197 -0
- package/dist/classes/features/other/PersistentEntities.js +168 -0
- package/dist/classes/features/other/PickupIndexCreation.js +229 -0
- package/dist/classes/features/other/PlayerCollectibleTracking.js +102 -0
- package/dist/classes/features/other/PonyDetection.js +86 -0
- package/dist/classes/features/other/PressInput.js +71 -0
- package/dist/classes/features/other/PreventChildEntities.js +60 -0
- package/dist/classes/features/other/PreventGridEntityRespawn.js +159 -0
- package/dist/classes/features/other/RerunDetection.js +69 -0
- package/dist/classes/features/other/RoomClearFrame.js +94 -0
- package/dist/classes/features/other/RoomHistory.js +196 -0
- package/dist/classes/features/other/RunInNFrames.js +323 -0
- package/dist/classes/features/other/RunNextRoom.js +53 -0
- package/dist/classes/features/other/RunNextRun.js +60 -0
- package/dist/classes/features/other/SaveDataManager.js +383 -0
- package/dist/classes/features/other/SpawnRockAltRewards.js +469 -0
- package/dist/classes/features/other/StageHistory.js +244 -0
- package/dist/classes/features/other/StartAmbush.js +62 -0
- package/dist/classes/features/other/TaintedLazarusPlayers.js +115 -0
- package/dist/classes/features/other/UnlockAchievementsDetection.js +60 -0
- package/dist/classes/features/other/customStages/backdrop.js +195 -0
- package/dist/classes/features/other/customStages/constants.js +19 -0
- package/dist/classes/features/other/customStages/gridEntities.js +177 -0
- package/dist/classes/features/other/customStages/shadows.js +67 -0
- package/dist/classes/features/other/customStages/streakText.js +222 -0
- package/dist/classes/features/other/customStages/utils.js +65 -0
- package/dist/classes/features/other/customStages/v.js +27 -0
- package/dist/classes/features/other/customStages/versusScreen.js +227 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +25 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +25 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +23 -0
- package/dist/classes/features/other/debugDisplay/utils.js +13 -0
- package/dist/classes/features/other/extraConsoleCommands/commands.js +1598 -0
- package/dist/classes/features/other/extraConsoleCommands/subroutines.js +135 -0
- package/dist/classes/features/other/extraConsoleCommands/v.js +30 -0
- package/dist/classes/features/other/saveDataManager/constants.js +4 -0
- package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +106 -0
- package/dist/classes/features/other/saveDataManager/loadFromDisk.js +69 -0
- package/dist/classes/features/other/saveDataManager/restoreDefaults.js +69 -0
- package/dist/classes/features/other/saveDataManager/saveToDisk.js +46 -0
- package/dist/classes/private/CustomCallback.js +59 -0
- package/dist/classes/private/Feature.js +39 -0
- package/dist/core/cachedClasses.js +61 -0
- package/dist/core/constants.js +289 -0
- package/dist/core/constantsFirstLast.js +98 -0
- package/dist/core/constantsVanilla.js +131 -0
- package/dist/core/upgradeMod.js +71 -0
- package/dist/customStageMetadata.json +1 -0
- package/dist/data/itempools.json +16625 -0
- package/dist/decorators.js +21 -0
- package/dist/enums/AmbushType.js +9 -0
- package/dist/enums/CornerType.js +11 -0
- package/dist/enums/HealthType.js +20 -0
- package/dist/enums/ISCFeature.js +65 -0
- package/dist/enums/LadderSubTypeCustom.js +20 -0
- package/dist/enums/ModCallbackCustom.js +2477 -0
- package/dist/enums/MysteriousPaperEffect.js +16 -0
- package/dist/enums/PlayerStat.js +37 -0
- package/dist/enums/PocketItemType.js +13 -0
- package/dist/enums/RockAltType.js +23 -0
- package/dist/enums/SaveDataKey.js +14 -0
- package/dist/enums/SerializationType.js +10 -0
- package/dist/enums/SlotDestructionType.js +22 -0
- package/dist/enums/private/GridEntityTypeCustom.js +10 -0
- package/dist/enums/private/SerializationBrand.js +42 -0
- package/dist/enums/private/StageTravelState.js +13 -0
- package/dist/enums/private/TrapdoorAnimation.js +9 -0
- package/dist/enums/private/UIStreakAnimation.js +10 -0
- package/dist/features.js +150 -0
- package/dist/functions/ambush.js +26 -0
- package/dist/functions/array.js +586 -0
- package/dist/functions/arrayLua.js +81 -0
- package/dist/functions/benchmark.js +36 -0
- package/dist/functions/bitSet128.js +64 -0
- package/dist/functions/bitwise.js +82 -0
- package/dist/functions/bombs.js +14 -0
- package/dist/functions/bosses.js +238 -0
- package/dist/functions/cards.js +164 -0
- package/dist/functions/challenges.js +117 -0
- package/dist/functions/characters.js +182 -0
- package/dist/functions/charge.js +251 -0
- package/dist/functions/chargeBar.js +54 -0
- package/dist/functions/collectibleTag.js +24 -0
- package/dist/functions/collectibles.js +581 -0
- package/dist/functions/color.js +88 -0
- package/dist/functions/console.js +18 -0
- package/dist/functions/curses.js +37 -0
- package/dist/functions/debugFunctions.js +108 -0
- package/dist/functions/decorators.js +113 -0
- package/dist/functions/deepCopy.js +406 -0
- package/dist/functions/deepCopyTests.js +361 -0
- package/dist/functions/dimensions.js +30 -0
- package/dist/functions/direction.js +78 -0
- package/dist/functions/doors.js +524 -0
- package/dist/functions/easing.js +327 -0
- package/dist/functions/effects.js +14 -0
- package/dist/functions/emptyRoom.js +79 -0
- package/dist/functions/entities.js +529 -0
- package/dist/functions/entitiesSpecific.js +582 -0
- package/dist/functions/entityTypes.js +9 -0
- package/dist/functions/enums.js +244 -0
- package/dist/functions/external.js +59 -0
- package/dist/functions/familiars.js +136 -0
- package/dist/functions/flag.js +146 -0
- package/dist/functions/frames.js +166 -0
- package/dist/functions/globals.js +291 -0
- package/dist/functions/gridEntities.js +990 -0
- package/dist/functions/gridEntitiesSpecific.js +456 -0
- package/dist/functions/gridIndex.js +35 -0
- package/dist/functions/hash.js +75 -0
- package/dist/functions/hex.js +57 -0
- package/dist/functions/input.js +185 -0
- package/dist/functions/isaacAPIClass.js +157 -0
- package/dist/functions/itemPool.js +118 -0
- package/dist/functions/jsonHelpers.js +73 -0
- package/dist/functions/jsonRoom.js +184 -0
- package/dist/functions/kColor.js +89 -0
- package/dist/functions/language.js +16 -0
- package/dist/functions/level.js +66 -0
- package/dist/functions/levelGrid.js +497 -0
- package/dist/functions/log.js +86 -0
- package/dist/functions/logEntities.js +308 -0
- package/dist/functions/logMisc.js +510 -0
- package/dist/functions/map.js +121 -0
- package/dist/functions/math.js +149 -0
- package/dist/functions/merge.js +159 -0
- package/dist/functions/mergeTests.js +313 -0
- package/dist/functions/minimap.js +204 -0
- package/dist/functions/modFeatures.js +39 -0
- package/dist/functions/newArray.js +30 -0
- package/dist/functions/nextStage.js +169 -0
- package/dist/functions/npcDataStructures.js +146 -0
- package/dist/functions/npcs.js +132 -0
- package/dist/functions/pickupVariants.js +63 -0
- package/dist/functions/pickups.js +168 -0
- package/dist/functions/pickupsSpecific.js +376 -0
- package/dist/functions/pills.js +200 -0
- package/dist/functions/playerCenter.js +53 -0
- package/dist/functions/playerCollectibles.js +300 -0
- package/dist/functions/playerDataStructures.js +145 -0
- package/dist/functions/playerEffects.js +63 -0
- package/dist/functions/playerHealth.js +604 -0
- package/dist/functions/playerIndex.js +186 -0
- package/dist/functions/playerTrinkets.js +149 -0
- package/dist/functions/players.js +471 -0
- package/dist/functions/pocketItems.js +165 -0
- package/dist/functions/positionVelocity.js +158 -0
- package/dist/functions/pressurePlate.js +26 -0
- package/dist/functions/projectiles.js +57 -0
- package/dist/functions/random.js +90 -0
- package/dist/functions/readOnly.js +33 -0
- package/dist/functions/render.js +36 -0
- package/dist/functions/revive.js +151 -0
- package/dist/functions/rng.js +140 -0
- package/dist/functions/rockAlt.js +50 -0
- package/dist/functions/roomData.js +155 -0
- package/dist/functions/roomGrid.js +97 -0
- package/dist/functions/roomShape.js +143 -0
- package/dist/functions/roomShapeWalls.js +187 -0
- package/dist/functions/roomTransition.js +43 -0
- package/dist/functions/rooms.js +782 -0
- package/dist/functions/run.js +121 -0
- package/dist/functions/seeds.js +22 -0
- package/dist/functions/serialization.js +98 -0
- package/dist/functions/set.js +215 -0
- package/dist/functions/slots.js +41 -0
- package/dist/functions/sort.js +158 -0
- package/dist/functions/sound.js +45 -0
- package/dist/functions/spawnCollectible.js +112 -0
- package/dist/functions/sprites.js +130 -0
- package/dist/functions/stage.js +540 -0
- package/dist/functions/stats.js +104 -0
- package/dist/functions/storyBosses.js +63 -0
- package/dist/functions/string.js +194 -0
- package/dist/functions/table.js +162 -0
- package/dist/functions/tears.js +128 -0
- package/dist/functions/transformations.js +89 -0
- package/dist/functions/trinketGive.js +145 -0
- package/dist/functions/trinkets.js +213 -0
- package/dist/functions/tstlClass.js +97 -0
- package/dist/functions/types.js +225 -0
- package/dist/functions/ui.js +148 -0
- package/dist/functions/utils.d.ts +2 -0
- package/dist/functions/utils.d.ts.map +1 -1
- package/dist/functions/utils.js +195 -0
- package/dist/functions/utils.lua +4 -1
- package/dist/functions/vector.js +150 -0
- package/dist/functions/versusScreen.js +58 -0
- package/dist/functions/weighted.js +57 -0
- package/dist/index.js +219 -0
- package/dist/index.rollup.d.ts +2 -0
- package/dist/indexLua.js +220 -0
- package/dist/interfaces/ChargeBarSprites.js +2 -0
- package/dist/interfaces/Corner.js +2 -0
- package/dist/interfaces/CustomStageTSConfig.js +2 -0
- package/dist/interfaces/GridEntityCustomData.js +2 -0
- package/dist/interfaces/JSONRoomsFile.js +2 -0
- package/dist/interfaces/PlayerHealth.js +2 -0
- package/dist/interfaces/PlayerStats.js +4 -0
- package/dist/interfaces/PocketItemDescription.js +2 -0
- package/dist/interfaces/RoomDescription.js +2 -0
- package/dist/interfaces/SaveData.js +98 -0
- package/dist/interfaces/StageHistoryEntry.js +2 -0
- package/dist/interfaces/TSTLClassMetatable.js +2 -0
- package/dist/interfaces/TrinketSituation.js +2 -0
- package/dist/interfaces/private/AddCallbackParametersCustom.js +4 -0
- package/dist/interfaces/private/CustomStage.js +2 -0
- package/dist/interfaces/private/CustomTrapdoorDescription.js +2 -0
- package/dist/interfaces/private/ModUpgradedInterface.js +2 -0
- package/dist/isaacscript-common.lua +5 -2
- package/dist/maps/PHDPillConversionsMap.js +23 -0
- package/dist/maps/cardNameToTypeMap.js +211 -0
- package/dist/maps/characterNameToTypeMap.js +91 -0
- package/dist/maps/collectibleNameToTypeMap.js +19 -0
- package/dist/maps/defaultPlayerStatMap.js +17 -0
- package/dist/maps/entityTypeVariantToBossIDMap.js +11 -0
- package/dist/maps/falsePHDPillConversionsMap.js +37 -0
- package/dist/maps/gridEntityTypeToBrokenStateMap.js +32 -0
- package/dist/maps/gridEntityXMLMap.js +133 -0
- package/dist/maps/itemPoolTypeToItemPoolName.js +38 -0
- package/dist/maps/keyboardToStringMap.js +71 -0
- package/dist/maps/pillNameToEffectMap.js +91 -0
- package/dist/maps/roomNameToTypeMap.js +43 -0
- package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +17 -0
- package/dist/maps/transformationNameToPlayerFormMap.js +35 -0
- package/dist/maps/trinketNameToTypeMap.js +19 -0
- package/dist/objects/LRoomShapeToRectangles.js +43 -0
- package/dist/objects/backdropTypeToRockAltType.js +68 -0
- package/dist/objects/batteryNames.js +13 -0
- package/dist/objects/bombNames.js +17 -0
- package/dist/objects/bossIDToEntityTypeVariant.js +228 -0
- package/dist/objects/bossNamePNGFileNames.js +120 -0
- package/dist/objects/bossNames.js +119 -0
- package/dist/objects/bossPortraitPNGFileNames.js +123 -0
- package/dist/objects/cardDescriptions.js +106 -0
- package/dist/objects/cardNames.js +106 -0
- package/dist/objects/challengeBosses.js +60 -0
- package/dist/objects/challengeCharacters.js +58 -0
- package/dist/objects/challengeCollectibleTypes.js +255 -0
- package/dist/objects/challengeNames.js +54 -0
- package/dist/objects/challengeTrinketType.js +58 -0
- package/dist/objects/characterDamageMultipliers.js +49 -0
- package/dist/objects/characterNames.js +48 -0
- package/dist/objects/characterSpritePNGFileNames.js +50 -0
- package/dist/objects/characterStartingCollectibleTypes.js +105 -0
- package/dist/objects/characterStartingTrinketTypes.js +90 -0
- package/dist/objects/chestNames.js +20 -0
- package/dist/objects/coinNames.js +16 -0
- package/dist/objects/coinSubTypeToValue.js +15 -0
- package/dist/objects/collectibleDescriptions.js +742 -0
- package/dist/objects/collectibleNames.js +745 -0
- package/dist/objects/colors.js +26 -0
- package/dist/objects/directionNames.js +11 -0
- package/dist/objects/directionToDegrees.js +11 -0
- package/dist/objects/directionToMoveAction.js +11 -0
- package/dist/objects/directionToShootAction.js +11 -0
- package/dist/objects/directionToVector.js +13 -0
- package/dist/objects/doorSlotFlagToDoorSlot.js +15 -0
- package/dist/objects/doorSlotToDirection.js +15 -0
- package/dist/objects/doorSlotToDoorSlotFlag.js +15 -0
- package/dist/objects/gridEntityTypeToANM2Name.js +37 -0
- package/dist/objects/heartNames.js +21 -0
- package/dist/objects/isaacAPIClassTypeToBrand.js +12 -0
- package/dist/objects/isaacAPIClassTypeToFunctions.js +46 -0
- package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +57 -0
- package/dist/objects/kColors.js +27 -0
- package/dist/objects/keyNames.js +13 -0
- package/dist/objects/languageNames.js +13 -0
- package/dist/objects/oppositeDoorSlots.js +15 -0
- package/dist/objects/pillEffectClasses.js +57 -0
- package/dist/objects/pillEffectNames.js +57 -0
- package/dist/objects/pillEffectTypeToPillEffects.js +23 -0
- package/dist/objects/pillEffectTypes.js +57 -0
- package/dist/objects/playerNamePNGFileNames.js +57 -0
- package/dist/objects/playerPortraitPNGFileNames.js +54 -0
- package/dist/objects/roomShapeBounds.js +48 -0
- package/dist/objects/roomShapeCorners.js +330 -0
- package/dist/objects/roomShapeLayoutSizes.js +41 -0
- package/dist/objects/roomShapeToBottomRightPosition.js +25 -0
- package/dist/objects/roomShapeToDoorSlotCoordinates.js +111 -0
- package/dist/objects/roomShapeToDoorSlots.js +72 -0
- package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +118 -0
- package/dist/objects/roomShapeToGridWidth.js +20 -0
- package/dist/objects/roomShapeToTopLeftPosition.js +26 -0
- package/dist/objects/roomShapeVolumes.js +32 -0
- package/dist/objects/roomTypeNames.js +35 -0
- package/dist/objects/roomTypeSpecialGotoPrefixes.js +35 -0
- package/dist/objects/sackNames.js +11 -0
- package/dist/objects/slotNames.js +26 -0
- package/dist/objects/stageIDNames.js +43 -0
- package/dist/objects/stageToMusic.js +91 -0
- package/dist/objects/stageToStageID.js +117 -0
- package/dist/objects/stageTypeSuffixes.js +14 -0
- package/dist/objects/transformationNames.js +20 -0
- package/dist/objects/trinketDescriptions.js +199 -0
- package/dist/objects/trinketNames.js +202 -0
- package/dist/objects/versusScreenBackgroundColors.js +46 -0
- package/dist/objects/versusScreenDirtSpotColors.js +46 -0
- package/dist/patchErrorFunctions.js +65 -0
- package/dist/serialization.js +21 -0
- package/dist/sets/LRoomShapesSet.js +11 -0
- package/dist/sets/bigRoomShapesSet.js +14 -0
- package/dist/sets/bossSets.js +465 -0
- package/dist/sets/charactersThatStartWithAnActiveItemSet.js +18 -0
- package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +9 -0
- package/dist/sets/charactersWithFreeDevilDealsSet.js +6 -0
- package/dist/sets/charactersWithNoRedHeartsSet.js +19 -0
- package/dist/sets/charactersWithNoSoulHeartsSet.js +16 -0
- package/dist/sets/consoleCommandsSet.js +64 -0
- package/dist/sets/entitiesWithArmorSet.js +59 -0
- package/dist/sets/familiarsThatShootPlayerTearsSet.js +15 -0
- package/dist/sets/itemConfigCardTypesForCards.js +14 -0
- package/dist/sets/lostStyleCharactersSet.js +16 -0
- package/dist/sets/mineShaftRoomSubTypesSet.js +12 -0
- package/dist/sets/narrowRoomShapesSet.js +11 -0
- package/dist/sets/poopGridEntityXMLTypesSet.js +16 -0
- package/dist/sets/redHeartSubTypesSet.js +10 -0
- package/dist/sets/repentanceBossIDsSet.js +30 -0
- package/dist/sets/sinEntityTypesSet.js +14 -0
- package/dist/sets/singleUseActiveCollectibleTypesSet.js +15 -0
- package/dist/shaderCrashFix.js +24 -0
- package/dist/shouldFire.js +226 -0
- package/dist/types/AddSubtract.js +2 -0
- package/dist/types/AllButFirst.js +2 -0
- package/dist/types/AllButLast.js +2 -0
- package/dist/types/AnyClass.js +2 -0
- package/dist/types/AnyEntity.js +2 -0
- package/dist/types/AnyFunction.js +2 -0
- package/dist/types/AnyGridEntity.js +2 -0
- package/dist/types/CompositionTypeSatisfiesEnum.js +11 -0
- package/dist/types/ConversionHeartSubType.js +2 -0
- package/dist/types/Decrement.js +2 -0
- package/dist/types/ERange.js +2 -0
- package/dist/types/EntityID.js +2 -0
- package/dist/types/FunctionTuple.js +2 -0
- package/dist/types/GridEntityID.js +2 -0
- package/dist/types/HasFunction.js +2 -0
- package/dist/types/IRange.js +2 -0
- package/dist/types/Immutable.js +2 -0
- package/dist/types/Increment.js +2 -0
- package/dist/types/LowercaseKeys.js +2 -0
- package/dist/types/NaturalNumbersLessThan.js +2 -0
- package/dist/types/NaturalNumbersLessThanOrEqualTo.js +2 -0
- package/dist/types/PickingUpItem.js +44 -0
- package/dist/types/PickupIndex.js +2 -0
- package/dist/types/PlayerIndex.js +2 -0
- package/dist/types/PossibleStatType.js +2 -0
- package/dist/types/PublicInterface.js +2 -0
- package/dist/types/ReadonlyMap.js +6 -0
- package/dist/types/ReadonlyRecord.js +2 -0
- package/dist/types/ReadonlySet.js +6 -0
- package/dist/types/StartsWithLowercase.js +2 -0
- package/dist/types/StartsWithUppercase.js +2 -0
- package/dist/types/TSTLClass.js +2 -0
- package/dist/types/Tuple.js +2 -0
- package/dist/types/TupleKeys.js +2 -0
- package/dist/types/TupleToIntersection.js +2 -0
- package/dist/types/TupleToUnion.js +2 -0
- package/dist/types/TupleWithLengthBetween.js +22 -0
- package/dist/types/TupleWithMaxLength.js +27 -0
- package/dist/types/UnionToIntersection.js +2 -0
- package/dist/types/UppercaseKeys.js +2 -0
- package/dist/types/WeightedArray.js +2 -0
- package/dist/types/WidenLiteral.js +2 -0
- package/dist/types/Writable.js +2 -0
- package/dist/types/private/CallbackTuple.js +2 -0
- package/dist/types/private/ModUpgradedWithFeatures.js +2 -0
- package/package.json +1 -1
- package/src/functions/utils.ts +4 -1
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.RoomHistory = void 0;
|
|
10
|
+
const cachedClasses_1 = require("../../../core/cachedClasses");
|
|
11
|
+
const decorators_1 = require("../../../decorators");
|
|
12
|
+
const ModCallbackCustom_1 = require("../../../enums/ModCallbackCustom");
|
|
13
|
+
const dimensions_1 = require("../../../functions/dimensions");
|
|
14
|
+
const roomData_1 = require("../../../functions/roomData");
|
|
15
|
+
const Feature_1 = require("../../private/Feature");
|
|
16
|
+
const v = {
|
|
17
|
+
run: {
|
|
18
|
+
roomHistory: [],
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
class RoomHistory extends Feature_1.Feature {
|
|
22
|
+
/** @internal */
|
|
23
|
+
v = v;
|
|
24
|
+
/** @internal */
|
|
25
|
+
constructor() {
|
|
26
|
+
super();
|
|
27
|
+
this.customCallbacksUsed = [
|
|
28
|
+
[ModCallbackCustom_1.ModCallbackCustom.POST_NEW_ROOM_EARLY, this.postNewRoomEarly],
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
// ModCallbackCustom.POST_NEW_ROOM_EARLY
|
|
32
|
+
postNewRoomEarly = () => {
|
|
33
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
34
|
+
const stage = level.GetStage();
|
|
35
|
+
const stageType = level.GetStageType();
|
|
36
|
+
const room = cachedClasses_1.game.GetRoom();
|
|
37
|
+
const roomType = room.GetType();
|
|
38
|
+
const seeds = cachedClasses_1.game.GetSeeds();
|
|
39
|
+
const startSeedString = seeds.GetStartSeedString();
|
|
40
|
+
const stageID = (0, roomData_1.getRoomStageID)();
|
|
41
|
+
const dimension = (0, dimensions_1.getDimension)();
|
|
42
|
+
const roomVariant = (0, roomData_1.getRoomVariant)();
|
|
43
|
+
const roomSubType = (0, roomData_1.getRoomSubType)();
|
|
44
|
+
const roomName = (0, roomData_1.getRoomName)();
|
|
45
|
+
const roomGridIndex = (0, roomData_1.getRoomGridIndex)();
|
|
46
|
+
const roomListIndex = (0, roomData_1.getRoomListIndex)();
|
|
47
|
+
const roomVisitedCount = (0, roomData_1.getRoomVisitedCount)();
|
|
48
|
+
const roomDescription = {
|
|
49
|
+
startSeedString,
|
|
50
|
+
stage,
|
|
51
|
+
stageType,
|
|
52
|
+
stageID,
|
|
53
|
+
dimension,
|
|
54
|
+
roomType,
|
|
55
|
+
roomVariant,
|
|
56
|
+
roomSubType,
|
|
57
|
+
roomName,
|
|
58
|
+
roomGridIndex,
|
|
59
|
+
roomListIndex,
|
|
60
|
+
roomVisitedCount,
|
|
61
|
+
};
|
|
62
|
+
v.run.roomHistory.push(roomDescription);
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Helper function to manually delete the last room description from the internal array. This is
|
|
66
|
+
* useful if a mod needs to send the player to a room temporarily and the room should not count as
|
|
67
|
+
* the player having traveled to that room.
|
|
68
|
+
*
|
|
69
|
+
* @public
|
|
70
|
+
*/
|
|
71
|
+
deleteLastRoomDescription() {
|
|
72
|
+
v.run.roomHistory.pop();
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Helper function to get the total number of rooms that the player has entered thus far on the
|
|
76
|
+
* run. (Re-entering the same room will increment the number returned.)
|
|
77
|
+
*
|
|
78
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.ROOM_HISTORY`.
|
|
79
|
+
*
|
|
80
|
+
* @public
|
|
81
|
+
*/
|
|
82
|
+
getNumRoomsEntered() {
|
|
83
|
+
return v.run.roomHistory.length;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Helper function to get information about all of the rooms that a player has visited thus far on
|
|
87
|
+
* this run.
|
|
88
|
+
*
|
|
89
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.ROOM_HISTORY`.
|
|
90
|
+
*
|
|
91
|
+
* @public
|
|
92
|
+
*/
|
|
93
|
+
getRoomHistory() {
|
|
94
|
+
return v.run.roomHistory;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Helper function to get information about the room that was previously visited.
|
|
98
|
+
*
|
|
99
|
+
* In the special case of only one room having been visited thus far (i.e. the starting room of
|
|
100
|
+
* the run), the starting room will be returned.
|
|
101
|
+
*
|
|
102
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.ROOM_HISTORY`.
|
|
103
|
+
*
|
|
104
|
+
* @public
|
|
105
|
+
*/
|
|
106
|
+
getPreviousRoomDescription() {
|
|
107
|
+
const previousRoomDescription = v.run.roomHistory.at(-2);
|
|
108
|
+
if (previousRoomDescription !== undefined) {
|
|
109
|
+
return previousRoomDescription;
|
|
110
|
+
}
|
|
111
|
+
const startingRoomDescription = v.run.roomHistory[0];
|
|
112
|
+
if (startingRoomDescription !== undefined) {
|
|
113
|
+
return startingRoomDescription;
|
|
114
|
+
}
|
|
115
|
+
error("Failed to find a room description for any rooms thus far on this run.");
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Helper function to get information about the most recent room that is stored in the room
|
|
119
|
+
* history array.
|
|
120
|
+
*
|
|
121
|
+
* This is useful in the `POST_ENTITY_REMOVE` callback; see the `isLeavingRoom` function.
|
|
122
|
+
*
|
|
123
|
+
* Note that this function can return undefined in the case where it is called on the first room
|
|
124
|
+
* of the run.
|
|
125
|
+
*
|
|
126
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.ROOM_HISTORY`.
|
|
127
|
+
*
|
|
128
|
+
* @public
|
|
129
|
+
*/
|
|
130
|
+
getLatestRoomDescription() {
|
|
131
|
+
return v.run.roomHistory.at(-1);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Helper function to detect if the player is on the first room of the room.
|
|
135
|
+
*
|
|
136
|
+
* @public
|
|
137
|
+
*/
|
|
138
|
+
inFirstRoom() {
|
|
139
|
+
return v.run.roomHistory.length === 1;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Helper function to detect if the game is in the state where the room index has changed to a new
|
|
143
|
+
* room, but the entities from the previous room are currently in the process of despawning. (At
|
|
144
|
+
* this point, the `POST_NEW_ROOM` callback and the `POST_NEW_ROOM_EARLY` callback will not have
|
|
145
|
+
* fired yet, and there will not be an entry in the room history array for the current room.)
|
|
146
|
+
*
|
|
147
|
+
* This function is intended to be used in the `POST_ENTITY_REMOVE` callback to detect when an
|
|
148
|
+
* entity is despawning.
|
|
149
|
+
*
|
|
150
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.ROOM_HISTORY`.
|
|
151
|
+
*
|
|
152
|
+
* @public
|
|
153
|
+
*/
|
|
154
|
+
isLeavingRoom() {
|
|
155
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
156
|
+
const stage = level.GetStage();
|
|
157
|
+
const stageType = level.GetStageType();
|
|
158
|
+
const seeds = cachedClasses_1.game.GetSeeds();
|
|
159
|
+
const startSeedString = seeds.GetStartSeedString();
|
|
160
|
+
const roomListIndex = (0, roomData_1.getRoomListIndex)();
|
|
161
|
+
const roomVisitedCount = (0, roomData_1.getRoomVisitedCount)();
|
|
162
|
+
const latestRoomDescription = this.getLatestRoomDescription();
|
|
163
|
+
// Sometimes, this function can be called in situations where entities from the previous run are
|
|
164
|
+
// being despawned. If this is the case, then the room history will currently be empty.
|
|
165
|
+
if (latestRoomDescription === undefined) {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
return (startSeedString !== latestRoomDescription.startSeedString ||
|
|
169
|
+
stage !== latestRoomDescription.stage ||
|
|
170
|
+
stageType !== latestRoomDescription.stageType ||
|
|
171
|
+
roomListIndex !== latestRoomDescription.roomListIndex ||
|
|
172
|
+
roomVisitedCount !== latestRoomDescription.roomVisitedCount);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
exports.RoomHistory = RoomHistory;
|
|
176
|
+
__decorate([
|
|
177
|
+
decorators_1.Exported
|
|
178
|
+
], RoomHistory.prototype, "deleteLastRoomDescription", null);
|
|
179
|
+
__decorate([
|
|
180
|
+
decorators_1.Exported
|
|
181
|
+
], RoomHistory.prototype, "getNumRoomsEntered", null);
|
|
182
|
+
__decorate([
|
|
183
|
+
decorators_1.Exported
|
|
184
|
+
], RoomHistory.prototype, "getRoomHistory", null);
|
|
185
|
+
__decorate([
|
|
186
|
+
decorators_1.Exported
|
|
187
|
+
], RoomHistory.prototype, "getPreviousRoomDescription", null);
|
|
188
|
+
__decorate([
|
|
189
|
+
decorators_1.Exported
|
|
190
|
+
], RoomHistory.prototype, "getLatestRoomDescription", null);
|
|
191
|
+
__decorate([
|
|
192
|
+
decorators_1.Exported
|
|
193
|
+
], RoomHistory.prototype, "inFirstRoom", null);
|
|
194
|
+
__decorate([
|
|
195
|
+
decorators_1.Exported
|
|
196
|
+
], RoomHistory.prototype, "isLeavingRoom", null);
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.RunInNFrames = void 0;
|
|
10
|
+
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
11
|
+
const cachedClasses_1 = require("../../../core/cachedClasses");
|
|
12
|
+
const decorators_1 = require("../../../decorators");
|
|
13
|
+
const ISCFeature_1 = require("../../../enums/ISCFeature");
|
|
14
|
+
const array_1 = require("../../../functions/array");
|
|
15
|
+
const run_1 = require("../../../functions/run");
|
|
16
|
+
const Feature_1 = require("../../private/Feature");
|
|
17
|
+
const v = {
|
|
18
|
+
run: {
|
|
19
|
+
queuedGameFunctions: [],
|
|
20
|
+
queuedRenderFunctions: [],
|
|
21
|
+
intervalGameFunctions: [],
|
|
22
|
+
intervalRenderFunctions: [],
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
class RunInNFrames extends Feature_1.Feature {
|
|
26
|
+
/** @internal */
|
|
27
|
+
v = v;
|
|
28
|
+
vConditionalFunc = () => false;
|
|
29
|
+
roomHistory;
|
|
30
|
+
/** @internal */
|
|
31
|
+
constructor(roomHistory) {
|
|
32
|
+
super();
|
|
33
|
+
this.featuresUsed = [ISCFeature_1.ISCFeature.ROOM_HISTORY];
|
|
34
|
+
this.callbacksUsed = [
|
|
35
|
+
// 1
|
|
36
|
+
[isaac_typescript_definitions_1.ModCallback.POST_UPDATE, this.postUpdate],
|
|
37
|
+
// 2
|
|
38
|
+
[isaac_typescript_definitions_1.ModCallback.POST_RENDER, this.postRender],
|
|
39
|
+
];
|
|
40
|
+
this.roomHistory = roomHistory;
|
|
41
|
+
}
|
|
42
|
+
// ModCallback.POST_UPDATE (1)
|
|
43
|
+
postUpdate = () => {
|
|
44
|
+
const gameFrameCount = cachedClasses_1.game.GetFrameCount();
|
|
45
|
+
const numRoomsEntered = this.roomHistory.getNumRoomsEntered();
|
|
46
|
+
checkExecuteQueuedFunctions(v.run.queuedGameFunctions, gameFrameCount, numRoomsEntered);
|
|
47
|
+
checkExecuteIntervalFunctions(v.run.intervalGameFunctions, gameFrameCount, numRoomsEntered);
|
|
48
|
+
};
|
|
49
|
+
// ModCallback.POST_RENDER (2)
|
|
50
|
+
postRender = () => {
|
|
51
|
+
const renderFrameCount = Isaac.GetFrameCount();
|
|
52
|
+
const numRoomsEntered = this.roomHistory.getNumRoomsEntered();
|
|
53
|
+
checkExecuteQueuedFunctions(v.run.queuedRenderFunctions, renderFrameCount, numRoomsEntered);
|
|
54
|
+
checkExecuteIntervalFunctions(v.run.intervalRenderFunctions, renderFrameCount, numRoomsEntered);
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Helper function to restart on the next render frame. Useful because it is impossible to restart
|
|
58
|
+
* the game inside of the `POST_NEW_ROOM`, `POST_NEW_LEVEL`, or `POST_GAME_STARTED` callbacks when
|
|
59
|
+
* a run is first starting.
|
|
60
|
+
*
|
|
61
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.RUN_IN_N_FRAMES`.
|
|
62
|
+
*
|
|
63
|
+
* @param character Optional. If specified, will restart the game as the specified character.
|
|
64
|
+
* @public
|
|
65
|
+
*/
|
|
66
|
+
restartNextRenderFrame(character) {
|
|
67
|
+
this.runNextRenderFrame(() => {
|
|
68
|
+
(0, run_1.restart)(character);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Supply a function to run N game frames from now in the `POST_UPDATE` callback.
|
|
73
|
+
*
|
|
74
|
+
* For a usage example, see the documentation for the `runNextGameFrame`, which is used in a
|
|
75
|
+
* similar way.
|
|
76
|
+
*
|
|
77
|
+
* Note that this function will not handle saving and quitting. If a player saving and quitting
|
|
78
|
+
* before the deferred function fires would cause a bug in your mod, then you should handle
|
|
79
|
+
* deferred functions manually using serializable data.
|
|
80
|
+
*
|
|
81
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.RUN_IN_N_FRAMES`.
|
|
82
|
+
*
|
|
83
|
+
* @param func The function to run.
|
|
84
|
+
* @param numGameFrames The amount of game frames to wait before running the function.
|
|
85
|
+
* @param cancelIfRoomChanges Optional. Whether to cancel running the function if a new room is
|
|
86
|
+
* loaded in the interim. Default is false.
|
|
87
|
+
* @public
|
|
88
|
+
*/
|
|
89
|
+
runInNGameFrames(func, numGameFrames, cancelIfRoomChanges = false) {
|
|
90
|
+
const gameFrameCount = cachedClasses_1.game.GetFrameCount();
|
|
91
|
+
const numRoomsEntered = this.roomHistory.getNumRoomsEntered();
|
|
92
|
+
const frameCountToFire = gameFrameCount + numGameFrames;
|
|
93
|
+
const queuedFunction = {
|
|
94
|
+
func,
|
|
95
|
+
frameCountToFire,
|
|
96
|
+
numRoomsEntered,
|
|
97
|
+
cancelIfRoomChanges,
|
|
98
|
+
};
|
|
99
|
+
v.run.queuedGameFunctions.push(queuedFunction);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Supply a function to run N render frames from now in the `POST_RENDER` callback.
|
|
103
|
+
*
|
|
104
|
+
* For a usage example, see the documentation for the `runNextGameFrame`, which is used in a
|
|
105
|
+
* similar way.
|
|
106
|
+
*
|
|
107
|
+
* Note that this function will not handle saving and quitting. If a player saving and quitting
|
|
108
|
+
* before the deferred function fires would cause a bug in your mod, then you should handle
|
|
109
|
+
* deferred functions manually using serializable data.
|
|
110
|
+
*
|
|
111
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.RUN_IN_N_FRAMES`.
|
|
112
|
+
*
|
|
113
|
+
* @param func The function to run.
|
|
114
|
+
* @param numRenderFrames The amount of render frames to wait before running the function.
|
|
115
|
+
* @param cancelIfRoomChanges Optional. Whether to cancel running the function if a new room is
|
|
116
|
+
* loaded in the interim. Default is false.
|
|
117
|
+
* @public
|
|
118
|
+
*/
|
|
119
|
+
runInNRenderFrames(func, numRenderFrames, cancelIfRoomChanges = false) {
|
|
120
|
+
const renderFrameCount = Isaac.GetFrameCount();
|
|
121
|
+
const numRoomsEntered = this.roomHistory.getNumRoomsEntered();
|
|
122
|
+
const frameCountToFire = renderFrameCount + numRenderFrames;
|
|
123
|
+
const queuedFunction = {
|
|
124
|
+
func,
|
|
125
|
+
frameCountToFire,
|
|
126
|
+
numRoomsEntered,
|
|
127
|
+
cancelIfRoomChanges,
|
|
128
|
+
};
|
|
129
|
+
v.run.queuedRenderFunctions.push(queuedFunction);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Supply a function to run on the next `POST_UPDATE` callback.
|
|
133
|
+
*
|
|
134
|
+
* For example:
|
|
135
|
+
*
|
|
136
|
+
* ```ts
|
|
137
|
+
* const NUM_EXPLODER_EXPLOSIONS = 5;
|
|
138
|
+
*
|
|
139
|
+
* function useItemExploder(player: EntityPlayer) {
|
|
140
|
+
* playSound("exploderBegin");
|
|
141
|
+
* explode(player, NUM_EXPLODER_EXPLOSIONS);
|
|
142
|
+
* }
|
|
143
|
+
*
|
|
144
|
+
* function explode(player: EntityPlayer, numFramesLeft: int) {
|
|
145
|
+
* Isaac.Explode(player, undefined, 1);
|
|
146
|
+
* numFramesLeft -= 1;
|
|
147
|
+
* if (numFramesLeft === 0) {
|
|
148
|
+
* runNextFrame(() => {
|
|
149
|
+
* explode(player, numFramesLeft);
|
|
150
|
+
* });
|
|
151
|
+
* }
|
|
152
|
+
* }
|
|
153
|
+
* ```
|
|
154
|
+
*
|
|
155
|
+
* Note that this function will not handle saving and quitting. If a player saving and quitting
|
|
156
|
+
* before the deferred function fires would cause a bug in your mod, then you should handle
|
|
157
|
+
* deferred functions manually using serializable data.
|
|
158
|
+
*
|
|
159
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.RUN_IN_N_FRAMES`.
|
|
160
|
+
*
|
|
161
|
+
* @param func The function to run.
|
|
162
|
+
* @param cancelIfRoomChanges Optional. Whether to cancel running the function if a new room is
|
|
163
|
+
* loaded in the interim. Default is false.
|
|
164
|
+
* @public
|
|
165
|
+
*/
|
|
166
|
+
runNextGameFrame(func, cancelIfRoomChanges = false) {
|
|
167
|
+
this.runInNGameFrames(func, 1, cancelIfRoomChanges);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Supply a function to run on the next `POST_RENDER` callback.
|
|
171
|
+
*
|
|
172
|
+
* For a usage example, see the documentation for the `runNextGameFrame`, which is used in a
|
|
173
|
+
* similar way.
|
|
174
|
+
*
|
|
175
|
+
* Note that this function will not handle saving and quitting.
|
|
176
|
+
*
|
|
177
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.RUN_IN_N_FRAMES`.
|
|
178
|
+
*
|
|
179
|
+
* @param func The function to run.
|
|
180
|
+
* @param cancelIfRoomChanges Optional. Whether to cancel running the function if a new room is
|
|
181
|
+
* loaded in the interim. Default is false.
|
|
182
|
+
* @public
|
|
183
|
+
*/
|
|
184
|
+
runNextRenderFrame(func, cancelIfRoomChanges = false) {
|
|
185
|
+
this.runInNRenderFrames(func, 1, cancelIfRoomChanges);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Supply a function to be repeatedly run on an interval of N game frames in the `POST_UPDATE`
|
|
189
|
+
* callback. The function will continue to be fired until `false` is returned from the function.
|
|
190
|
+
*
|
|
191
|
+
* This is similar to the `setInterval` vanilla JavaScript function, except there is no
|
|
192
|
+
* corresponding `clearInterval` function. (Instead, the return value from the supplied function
|
|
193
|
+
* is used to stop the interval.)
|
|
194
|
+
*
|
|
195
|
+
* Note that this function will not handle saving and quitting. You must manually restart any
|
|
196
|
+
* intervals if the player saves and quits in the middle of a run.
|
|
197
|
+
*
|
|
198
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.RUN_IN_N_FRAMES`.
|
|
199
|
+
*
|
|
200
|
+
* @param func The function to repeatedly run on an interval.
|
|
201
|
+
* @param numGameFrames The amount of game frames to wait between each run.
|
|
202
|
+
* @param runImmediately Whether to execute the function right now before waiting for the
|
|
203
|
+
* interval.
|
|
204
|
+
* @param cancelIfRoomChanges Optional. Whether to cancel running the function if a new room is
|
|
205
|
+
* loaded in the interim. Default is false.
|
|
206
|
+
* @public
|
|
207
|
+
*/
|
|
208
|
+
setIntervalGameFrames(func, numGameFrames, runImmediately, cancelIfRoomChanges = false) {
|
|
209
|
+
if (runImmediately) {
|
|
210
|
+
const returnValue = func();
|
|
211
|
+
if (!returnValue) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
const gameFrameCount = cachedClasses_1.game.GetFrameCount();
|
|
216
|
+
const numRoomsEntered = this.roomHistory.getNumRoomsEntered();
|
|
217
|
+
const intervalFunction = {
|
|
218
|
+
func,
|
|
219
|
+
frameCountToFire: gameFrameCount + numGameFrames,
|
|
220
|
+
numRoomsEntered,
|
|
221
|
+
cancelIfRoomChanges,
|
|
222
|
+
numIntervalFrames: numGameFrames,
|
|
223
|
+
};
|
|
224
|
+
v.run.intervalGameFunctions.push(intervalFunction);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Supply a function to be repeatedly run on an interval of N render frames in the `POST_RENDER`
|
|
228
|
+
* callback. The function will continue to be fired until `false` is returned from the function.
|
|
229
|
+
*
|
|
230
|
+
* This is similar to the `setInterval` vanilla JavaScript function, except there is no
|
|
231
|
+
* corresponding `clearInterval` function. (Instead, the return value from the supplied function
|
|
232
|
+
* is used to stop the interval.)
|
|
233
|
+
*
|
|
234
|
+
* Note that this function will not handle saving and quitting. You must manually restart any
|
|
235
|
+
* intervals if the player saves and quits in the middle of a run.
|
|
236
|
+
*
|
|
237
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.RUN_IN_N_FRAMES`.
|
|
238
|
+
*
|
|
239
|
+
* @param func The function to repeatedly run on an interval.
|
|
240
|
+
* @param numRenderFrames The amount of game frames to wait between each run.
|
|
241
|
+
* @param runImmediately Whether to execute the function right now before waiting for the
|
|
242
|
+
* interval.
|
|
243
|
+
* @param cancelIfRoomChanges Optional. Whether to cancel running the function if a new room is
|
|
244
|
+
* loaded in the interim. Default is false.
|
|
245
|
+
* @public
|
|
246
|
+
*/
|
|
247
|
+
setIntervalRenderFrames(func, numRenderFrames, runImmediately, cancelIfRoomChanges = false) {
|
|
248
|
+
if (runImmediately) {
|
|
249
|
+
const returnValue = func();
|
|
250
|
+
if (!returnValue) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
const renderFrameCount = Isaac.GetFrameCount();
|
|
255
|
+
const numRoomsEntered = this.roomHistory.getNumRoomsEntered();
|
|
256
|
+
const intervalFunction = {
|
|
257
|
+
func,
|
|
258
|
+
frameCountToFire: renderFrameCount + numRenderFrames,
|
|
259
|
+
numRoomsEntered,
|
|
260
|
+
cancelIfRoomChanges,
|
|
261
|
+
numIntervalFrames: numRenderFrames,
|
|
262
|
+
};
|
|
263
|
+
v.run.intervalRenderFunctions.push(intervalFunction);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
exports.RunInNFrames = RunInNFrames;
|
|
267
|
+
__decorate([
|
|
268
|
+
decorators_1.Exported
|
|
269
|
+
], RunInNFrames.prototype, "restartNextRenderFrame", null);
|
|
270
|
+
__decorate([
|
|
271
|
+
decorators_1.Exported
|
|
272
|
+
], RunInNFrames.prototype, "runInNGameFrames", null);
|
|
273
|
+
__decorate([
|
|
274
|
+
decorators_1.Exported
|
|
275
|
+
], RunInNFrames.prototype, "runInNRenderFrames", null);
|
|
276
|
+
__decorate([
|
|
277
|
+
decorators_1.Exported
|
|
278
|
+
], RunInNFrames.prototype, "runNextGameFrame", null);
|
|
279
|
+
__decorate([
|
|
280
|
+
decorators_1.Exported
|
|
281
|
+
], RunInNFrames.prototype, "runNextRenderFrame", null);
|
|
282
|
+
__decorate([
|
|
283
|
+
decorators_1.Exported
|
|
284
|
+
], RunInNFrames.prototype, "setIntervalGameFrames", null);
|
|
285
|
+
__decorate([
|
|
286
|
+
decorators_1.Exported
|
|
287
|
+
], RunInNFrames.prototype, "setIntervalRenderFrames", null);
|
|
288
|
+
function checkExecuteQueuedFunctions(
|
|
289
|
+
// eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
|
|
290
|
+
queuedFunctions, frameCount, newNumRoomsEntered) {
|
|
291
|
+
const firingFunctions = queuedFunctions.filter(({ frameCountToFire }) => frameCount >= frameCountToFire);
|
|
292
|
+
for (const firingFunction of firingFunctions) {
|
|
293
|
+
const { func, cancelIfRoomChanges, numRoomsEntered } = firingFunction;
|
|
294
|
+
if (!cancelIfRoomChanges || numRoomsEntered === newNumRoomsEntered) {
|
|
295
|
+
func();
|
|
296
|
+
}
|
|
297
|
+
(0, array_1.arrayRemoveInPlace)(queuedFunctions, firingFunction);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
function checkExecuteIntervalFunctions(
|
|
301
|
+
// eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
|
|
302
|
+
intervalFunctions, frameCount, newNumRoomsEntered) {
|
|
303
|
+
const firingFunctions = intervalFunctions.filter(({ frameCountToFire }) => frameCount >= frameCountToFire);
|
|
304
|
+
for (const firingFunction of firingFunctions) {
|
|
305
|
+
const { func, cancelIfRoomChanges, numRoomsEntered, numIntervalFrames } = firingFunction;
|
|
306
|
+
let returnValue = false;
|
|
307
|
+
if (!cancelIfRoomChanges || numRoomsEntered === newNumRoomsEntered) {
|
|
308
|
+
returnValue = func();
|
|
309
|
+
}
|
|
310
|
+
(0, array_1.arrayRemoveInPlace)(intervalFunctions, firingFunction);
|
|
311
|
+
// Queue the next interval (as long as the function did not return false).
|
|
312
|
+
if (returnValue) {
|
|
313
|
+
const newIntervalFunction = {
|
|
314
|
+
func,
|
|
315
|
+
frameCountToFire: frameCount + numIntervalFrames,
|
|
316
|
+
numRoomsEntered,
|
|
317
|
+
cancelIfRoomChanges,
|
|
318
|
+
numIntervalFrames,
|
|
319
|
+
};
|
|
320
|
+
intervalFunctions.push(newIntervalFunction);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.RunNextRoom = void 0;
|
|
10
|
+
const decorators_1 = require("../../../decorators");
|
|
11
|
+
const ModCallbackCustom_1 = require("../../../enums/ModCallbackCustom");
|
|
12
|
+
const array_1 = require("../../../functions/array");
|
|
13
|
+
const Feature_1 = require("../../private/Feature");
|
|
14
|
+
const v = {
|
|
15
|
+
run: {
|
|
16
|
+
queuedFunctions: [],
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
class RunNextRoom extends Feature_1.Feature {
|
|
20
|
+
/** @internal */
|
|
21
|
+
v = v;
|
|
22
|
+
vConditionalFunc = () => false;
|
|
23
|
+
/** @internal */
|
|
24
|
+
constructor() {
|
|
25
|
+
super();
|
|
26
|
+
this.customCallbacksUsed = [
|
|
27
|
+
[ModCallbackCustom_1.ModCallbackCustom.POST_NEW_ROOM_REORDERED, this.postNewRoomReordered],
|
|
28
|
+
];
|
|
29
|
+
}
|
|
30
|
+
// ModCallbackCustom.POST_NEW_ROOM_REORDERED
|
|
31
|
+
postNewRoomReordered = () => {
|
|
32
|
+
for (const func of v.run.queuedFunctions) {
|
|
33
|
+
func();
|
|
34
|
+
}
|
|
35
|
+
(0, array_1.emptyArray)(v.run.queuedFunctions);
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Supply a function to run on the next `POST_NEW_ROOM` callback.
|
|
39
|
+
*
|
|
40
|
+
* Note that this function will not handle saving and quitting. If a player saving and quitting
|
|
41
|
+
* before the deferred function fires would cause a bug in your mod, then you should handle
|
|
42
|
+
* deferred functions manually using serializable data.
|
|
43
|
+
*
|
|
44
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.RUN_NEXT_ROOM`.
|
|
45
|
+
*/
|
|
46
|
+
runNextRoom(func) {
|
|
47
|
+
v.run.queuedFunctions.push(func);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.RunNextRoom = RunNextRoom;
|
|
51
|
+
__decorate([
|
|
52
|
+
decorators_1.Exported
|
|
53
|
+
], RunNextRoom.prototype, "runNextRoom", null);
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.RunNextRun = void 0;
|
|
10
|
+
const decorators_1 = require("../../../decorators");
|
|
11
|
+
const ModCallbackCustom_1 = require("../../../enums/ModCallbackCustom");
|
|
12
|
+
const array_1 = require("../../../functions/array");
|
|
13
|
+
const Feature_1 = require("../../private/Feature");
|
|
14
|
+
const v = {
|
|
15
|
+
persistent: {
|
|
16
|
+
queuedFunctions: [],
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
class RunNextRun extends Feature_1.Feature {
|
|
20
|
+
/** @internal */
|
|
21
|
+
v = v;
|
|
22
|
+
vConditionalFunc = () => false;
|
|
23
|
+
/** @internal */
|
|
24
|
+
constructor() {
|
|
25
|
+
super();
|
|
26
|
+
this.customCallbacksUsed = [
|
|
27
|
+
[
|
|
28
|
+
ModCallbackCustom_1.ModCallbackCustom.POST_GAME_STARTED_REORDERED,
|
|
29
|
+
this.postGameStartedReorderedFalse,
|
|
30
|
+
[false],
|
|
31
|
+
],
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
// ModCallbackCustom.POST_GAME_STARTED_REORDERED
|
|
35
|
+
// false
|
|
36
|
+
postGameStartedReorderedFalse = () => {
|
|
37
|
+
for (const func of v.persistent.queuedFunctions) {
|
|
38
|
+
func();
|
|
39
|
+
}
|
|
40
|
+
(0, array_1.emptyArray)(v.persistent.queuedFunctions);
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Supply a function to run on the next `POST_GAME_STARTED` callback.
|
|
44
|
+
*
|
|
45
|
+
* Note that this function will not handle saving and quitting. If a player saving and quitting
|
|
46
|
+
* before the deferred function fires would cause a bug in your mod, then you should handle
|
|
47
|
+
* deferred functions manually using serializable data.
|
|
48
|
+
*
|
|
49
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.RUN_NEXT_ROOM`.
|
|
50
|
+
*
|
|
51
|
+
* @public
|
|
52
|
+
*/
|
|
53
|
+
runNextRun(func) {
|
|
54
|
+
v.persistent.queuedFunctions.push(func);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.RunNextRun = RunNextRun;
|
|
58
|
+
__decorate([
|
|
59
|
+
decorators_1.Exported
|
|
60
|
+
], RunNextRun.prototype, "runNextRun", null);
|