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,540 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setStage = exports.onStageWithStoryBoss = exports.onStageWithShovelTrapdoors = exports.onStageWithSecretExitToMines = exports.onStageWithSecretExitToMausoleum = exports.onStageWithSecretExitToDownpour = exports.onStageWithRandomBossCollectible = exports.onStageWithNaturalDevilRoom = exports.onStageType = exports.onStageOrLower = exports.onStageOrHigher = exports.onStage = exports.onSheol = exports.onRepentanceStage = exports.onFirstFloor = exports.onFinalFloor = exports.onEffectiveStage = exports.onDarkRoom = exports.onChest = exports.onCathedral = exports.onAscent = exports.isStageWithStoryBoss = exports.isStageWithShovelTrapdoors = exports.isStageWithSecretExitToMines = exports.isStageWithSecretExitToMausoleum = exports.isStageWithSecretExitToDownpour = exports.isStageWithRandomBossCollectible = exports.isStageWithNaturalDevilRoom = exports.isRepentanceStage = exports.isFinalFloor = exports.getStageTypeSuffix = exports.getStageType = exports.getStageIDName = exports.getStageID = exports.getStage = exports.getLevelName = exports.getGotoCommand = exports.getEffectiveStage = exports.calculateStageTypeRepentance = exports.calculateStageType = void 0;
|
|
4
|
+
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
5
|
+
const cachedClasses_1 = require("../core/cachedClasses");
|
|
6
|
+
const roomTypeSpecialGotoPrefixes_1 = require("../objects/roomTypeSpecialGotoPrefixes");
|
|
7
|
+
const stageIDNames_1 = require("../objects/stageIDNames");
|
|
8
|
+
const stageToStageID_1 = require("../objects/stageToStageID");
|
|
9
|
+
const stageTypeSuffixes_1 = require("../objects/stageTypeSuffixes");
|
|
10
|
+
const log_1 = require("./log");
|
|
11
|
+
const types_1 = require("./types");
|
|
12
|
+
const utils_1 = require("./utils");
|
|
13
|
+
/**
|
|
14
|
+
* Helper function that calculates what the stage type should be for the provided stage. This
|
|
15
|
+
* emulates what the game's internal code does.
|
|
16
|
+
*/
|
|
17
|
+
function calculateStageType(stage) {
|
|
18
|
+
// The following is the game's internal code to determine the floor type. (This came directly from
|
|
19
|
+
// Spider.)
|
|
20
|
+
/*
|
|
21
|
+
u32 Seed = g_Game->GetSeeds().GetStageSeed(NextStage);
|
|
22
|
+
if (!g_Game->IsGreedMode()) {
|
|
23
|
+
StageType = ((Seed % 2) == 0 && (
|
|
24
|
+
((NextStage == STAGE1_1 || NextStage == STAGE1_2) && gd.Unlocked(ACHIEVEMENT_CELLAR)) ||
|
|
25
|
+
((NextStage == STAGE2_1 || NextStage == STAGE2_2) && gd.Unlocked(ACHIEVEMENT_CATACOMBS)) ||
|
|
26
|
+
((NextStage == STAGE3_1 || NextStage == STAGE3_2) && gd.Unlocked(ACHIEVEMENT_NECROPOLIS)) ||
|
|
27
|
+
((NextStage == STAGE4_1 || NextStage == STAGE4_2)))
|
|
28
|
+
) ? STAGE_TYPE_WOTL : STAGE_TYPE_ORIGINAL;
|
|
29
|
+
if (Seed % 3 == 0 && NextStage < STAGE5)
|
|
30
|
+
StageType = STAGE_TYPE_AFTERBIRTH;
|
|
31
|
+
*/
|
|
32
|
+
const seeds = cachedClasses_1.game.GetSeeds();
|
|
33
|
+
const stageSeed = seeds.GetStageSeed(stage);
|
|
34
|
+
if (stageSeed % 2 === 0) {
|
|
35
|
+
return isaac_typescript_definitions_1.StageType.WRATH_OF_THE_LAMB;
|
|
36
|
+
}
|
|
37
|
+
if (stageSeed % 3 === 0) {
|
|
38
|
+
return isaac_typescript_definitions_1.StageType.AFTERBIRTH;
|
|
39
|
+
}
|
|
40
|
+
return isaac_typescript_definitions_1.StageType.ORIGINAL;
|
|
41
|
+
}
|
|
42
|
+
exports.calculateStageType = calculateStageType;
|
|
43
|
+
/**
|
|
44
|
+
* Helper function that calculates what the Repentance stage type should be for the provided stage.
|
|
45
|
+
* This emulates what the game's internal code does.
|
|
46
|
+
*/
|
|
47
|
+
function calculateStageTypeRepentance(stage) {
|
|
48
|
+
// There is no alternate floor for Corpse.
|
|
49
|
+
if (stage === isaac_typescript_definitions_1.LevelStage.WOMB_1 || stage === isaac_typescript_definitions_1.LevelStage.WOMB_2) {
|
|
50
|
+
return isaac_typescript_definitions_1.StageType.REPENTANCE;
|
|
51
|
+
}
|
|
52
|
+
// This algorithm is from Kilburn. We add one because the alt path is offset by 1 relative to the
|
|
53
|
+
// normal path.
|
|
54
|
+
const seeds = cachedClasses_1.game.GetSeeds();
|
|
55
|
+
const adjustedStage = (0, types_1.asLevelStage)(stage + 1);
|
|
56
|
+
const stageSeed = seeds.GetStageSeed(adjustedStage);
|
|
57
|
+
// Kilburn does not know why he divided the stage seed by 2 first.
|
|
58
|
+
const halfStageSeed = Math.floor(stageSeed / 2);
|
|
59
|
+
if (halfStageSeed % 2 === 0) {
|
|
60
|
+
return isaac_typescript_definitions_1.StageType.REPENTANCE_B;
|
|
61
|
+
}
|
|
62
|
+
return isaac_typescript_definitions_1.StageType.REPENTANCE;
|
|
63
|
+
}
|
|
64
|
+
exports.calculateStageTypeRepentance = calculateStageTypeRepentance;
|
|
65
|
+
/**
|
|
66
|
+
* Helper function to account for Repentance floors being offset by 1. For example, Downpour 2 is
|
|
67
|
+
* the third level of the run, but the game considers it to have a stage of 2. This function will
|
|
68
|
+
* consider Downpour 2 to have a stage of 3.
|
|
69
|
+
*/
|
|
70
|
+
function getEffectiveStage() {
|
|
71
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
72
|
+
const stage = level.GetStage();
|
|
73
|
+
if (onRepentanceStage()) {
|
|
74
|
+
return stage + 1;
|
|
75
|
+
}
|
|
76
|
+
return stage;
|
|
77
|
+
}
|
|
78
|
+
exports.getEffectiveStage = getEffectiveStage;
|
|
79
|
+
/**
|
|
80
|
+
* Helper function to get the corresponding "goto" console command that would correspond to the
|
|
81
|
+
* provided room type and room variant.
|
|
82
|
+
*
|
|
83
|
+
* @param roomType The `RoomType` of the destination room.
|
|
84
|
+
* @param roomVariant The variant of the destination room.
|
|
85
|
+
* @param useSpecialRoomsForRoomTypeDefault Optional. Whether to use `s.default` as the prefix for
|
|
86
|
+
* the `goto` command (instead of `d`) if the room type is
|
|
87
|
+
* `RoomType.DEFAULT` (1). False by default.
|
|
88
|
+
*/
|
|
89
|
+
function getGotoCommand(roomType, roomVariant, useSpecialRoomsForRoomTypeDefault = false) {
|
|
90
|
+
const isNormalRoom = roomType === isaac_typescript_definitions_1.RoomType.DEFAULT && !useSpecialRoomsForRoomTypeDefault;
|
|
91
|
+
const roomTypeSpecialGotoPrefix = roomTypeSpecialGotoPrefixes_1.ROOM_TYPE_SPECIAL_GOTO_PREFIXES[roomType];
|
|
92
|
+
const prefix = isNormalRoom ? "d" : `s.${roomTypeSpecialGotoPrefix}`;
|
|
93
|
+
return `goto ${prefix}.${roomVariant}`;
|
|
94
|
+
}
|
|
95
|
+
exports.getGotoCommand = getGotoCommand;
|
|
96
|
+
/**
|
|
97
|
+
* Helper function to get the English name of the level. For example, "Caves 1".
|
|
98
|
+
*
|
|
99
|
+
* This is useful because the `Level.GetName` method returns a localized version of the level name,
|
|
100
|
+
* which will not display correctly on some fonts.
|
|
101
|
+
*
|
|
102
|
+
* Note that this returns "Blue Womb" instead of "???" for stage 9.
|
|
103
|
+
*
|
|
104
|
+
* @param stage Optional. If not specified, the current stage will be used.
|
|
105
|
+
* @param stageType Optional. If not specified, the current stage type will be used.
|
|
106
|
+
*/
|
|
107
|
+
function getLevelName(stage, stageType) {
|
|
108
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
109
|
+
if (stage === undefined) {
|
|
110
|
+
stage = level.GetStage();
|
|
111
|
+
}
|
|
112
|
+
if (stageType === undefined) {
|
|
113
|
+
stageType = level.GetStageType();
|
|
114
|
+
}
|
|
115
|
+
const stageID = getStageID(stage, stageType);
|
|
116
|
+
const stageIDName = getStageIDName(stageID);
|
|
117
|
+
let suffix;
|
|
118
|
+
switch (stage) {
|
|
119
|
+
case isaac_typescript_definitions_1.LevelStage.BASEMENT_1:
|
|
120
|
+
case isaac_typescript_definitions_1.LevelStage.CAVES_1:
|
|
121
|
+
case isaac_typescript_definitions_1.LevelStage.DEPTHS_1:
|
|
122
|
+
case isaac_typescript_definitions_1.LevelStage.WOMB_1: {
|
|
123
|
+
suffix = " 1";
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
case isaac_typescript_definitions_1.LevelStage.BASEMENT_2:
|
|
127
|
+
case isaac_typescript_definitions_1.LevelStage.CAVES_2:
|
|
128
|
+
case isaac_typescript_definitions_1.LevelStage.DEPTHS_2:
|
|
129
|
+
case isaac_typescript_definitions_1.LevelStage.WOMB_2: {
|
|
130
|
+
suffix = " 2";
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
default: {
|
|
134
|
+
suffix = "";
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return stageIDName + suffix;
|
|
139
|
+
}
|
|
140
|
+
exports.getLevelName = getLevelName;
|
|
141
|
+
/** Alias for the `Level.GetStage` method. */
|
|
142
|
+
function getStage() {
|
|
143
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
144
|
+
return level.GetStage();
|
|
145
|
+
}
|
|
146
|
+
exports.getStage = getStage;
|
|
147
|
+
/**
|
|
148
|
+
* Helper function to get the stage ID that corresponds to a particular stage and stage type.
|
|
149
|
+
*
|
|
150
|
+
* This is useful because `getRoomStageID` will not correctly return the `StageID` if the player is
|
|
151
|
+
* in a special room.
|
|
152
|
+
*
|
|
153
|
+
* This correctly handles the case of Greed Mode. In Greed Mode, if an undefined stage and stage
|
|
154
|
+
* type combination are passed, `StageID.SPECIAL_ROOMS` (0) will be returned.
|
|
155
|
+
*
|
|
156
|
+
* @param stage Optional. If not specified, the stage corresponding to the current floor will be
|
|
157
|
+
* used.
|
|
158
|
+
* @param stageType Optional. If not specified, the stage type corresponding to the current floor
|
|
159
|
+
* will be used.
|
|
160
|
+
*/
|
|
161
|
+
function getStageID(stage, stageType) {
|
|
162
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
163
|
+
if (stage === undefined) {
|
|
164
|
+
stage = level.GetStage();
|
|
165
|
+
}
|
|
166
|
+
if (stageType === undefined) {
|
|
167
|
+
stageType = level.GetStageType();
|
|
168
|
+
}
|
|
169
|
+
if (cachedClasses_1.game.IsGreedMode()) {
|
|
170
|
+
const stageTypeToStageID = stageToStageID_1.STAGE_TO_STAGE_ID_GREED_MODE.get(stage);
|
|
171
|
+
if (stageTypeToStageID === undefined) {
|
|
172
|
+
return isaac_typescript_definitions_1.StageID.SPECIAL_ROOMS;
|
|
173
|
+
}
|
|
174
|
+
return stageTypeToStageID[stageType];
|
|
175
|
+
}
|
|
176
|
+
const stageTypeToStageID = stageToStageID_1.STAGE_TO_STAGE_ID[stage];
|
|
177
|
+
return stageTypeToStageID[stageType];
|
|
178
|
+
}
|
|
179
|
+
exports.getStageID = getStageID;
|
|
180
|
+
/**
|
|
181
|
+
* Helper function to get the English name corresponding to a stage ID. For example, "Caves".
|
|
182
|
+
*
|
|
183
|
+
* This is derived from the data in the "stages.xml" file.
|
|
184
|
+
*
|
|
185
|
+
* Note that unlike "stages.xml", Blue Womb is specified with a name of "Blue Womb" instead of
|
|
186
|
+
* "???".
|
|
187
|
+
*/
|
|
188
|
+
function getStageIDName(stageID) {
|
|
189
|
+
return stageIDNames_1.STAGE_ID_NAMES[stageID];
|
|
190
|
+
}
|
|
191
|
+
exports.getStageIDName = getStageIDName;
|
|
192
|
+
/** Alias for the `Level.GetStageType` method. */
|
|
193
|
+
function getStageType() {
|
|
194
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
195
|
+
return level.GetStageType();
|
|
196
|
+
}
|
|
197
|
+
exports.getStageType = getStageType;
|
|
198
|
+
/**
|
|
199
|
+
* Helper function to convert a numerical `StageType` into the letter suffix supplied to the "stage"
|
|
200
|
+
* console command. For example, `StageType.REPENTANCE` is the stage type for Downpour, and the
|
|
201
|
+
* console command to go to Downpour is "stage 1c", so this function converts `StageType.REPENTANCE`
|
|
202
|
+
* to "c".
|
|
203
|
+
*/
|
|
204
|
+
function getStageTypeSuffix(stageType) {
|
|
205
|
+
return stageTypeSuffixes_1.STAGE_TYPE_SUFFIXES[stageType];
|
|
206
|
+
}
|
|
207
|
+
exports.getStageTypeSuffix = getStageTypeSuffix;
|
|
208
|
+
/**
|
|
209
|
+
* Returns whether the provided stage and stage type represent a "final floor". This is defined as a
|
|
210
|
+
* floor that prevents the player from entering the I AM ERROR room on.
|
|
211
|
+
*
|
|
212
|
+
* For example, when using Undefined on The Chest, it has a 50% chance of teleporting the player to
|
|
213
|
+
* the Secret Room and a 50% chance of teleporting the player to the Super Secret Room, because the
|
|
214
|
+
* I AM ERROR room is never entered into the list of possibilities.
|
|
215
|
+
*/
|
|
216
|
+
function isFinalFloor(stage, stageType) {
|
|
217
|
+
return (stage === isaac_typescript_definitions_1.LevelStage.DARK_ROOM_CHEST ||
|
|
218
|
+
stage === isaac_typescript_definitions_1.LevelStage.VOID ||
|
|
219
|
+
stage === isaac_typescript_definitions_1.LevelStage.HOME ||
|
|
220
|
+
(stage === isaac_typescript_definitions_1.LevelStage.WOMB_2 && isRepentanceStage(stageType)) // Corpse 2
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
exports.isFinalFloor = isFinalFloor;
|
|
224
|
+
/**
|
|
225
|
+
* Helper function to check if the provided stage type is equal to `StageType.REPENTANCE` or
|
|
226
|
+
* `StageType.REPENTANCE_B`.
|
|
227
|
+
*/
|
|
228
|
+
function isRepentanceStage(stageType) {
|
|
229
|
+
return (stageType === isaac_typescript_definitions_1.StageType.REPENTANCE || stageType === isaac_typescript_definitions_1.StageType.REPENTANCE_B);
|
|
230
|
+
}
|
|
231
|
+
exports.isRepentanceStage = isRepentanceStage;
|
|
232
|
+
/**
|
|
233
|
+
* Helper function to check if the provided effective stage is one that has the possibility to grant
|
|
234
|
+
* a natural Devil Room or Angel Room after killing the boss.
|
|
235
|
+
*
|
|
236
|
+
* Note that in order for this function to work properly, you must provide it with the effective
|
|
237
|
+
* stage (e.g. from the `getEffectiveStage` helper function) and not the absolute stage (e.g. from
|
|
238
|
+
* the `Level.GetStage` method).
|
|
239
|
+
*/
|
|
240
|
+
function isStageWithNaturalDevilRoom(effectiveStage) {
|
|
241
|
+
return ((0, utils_1.inRange)(effectiveStage, isaac_typescript_definitions_1.LevelStage.BASEMENT_2, isaac_typescript_definitions_1.LevelStage.WOMB_2) &&
|
|
242
|
+
effectiveStage !== isaac_typescript_definitions_1.LevelStage.BLUE_WOMB);
|
|
243
|
+
}
|
|
244
|
+
exports.isStageWithNaturalDevilRoom = isStageWithNaturalDevilRoom;
|
|
245
|
+
/**
|
|
246
|
+
* Helper function to check if the provided stage is one that will have a random collectible drop
|
|
247
|
+
* upon defeating the boss of the floor.
|
|
248
|
+
*
|
|
249
|
+
* This happens on most stages but will not happen on Depths 2, Womb 2, Sheol, Cathedral, Dark Room,
|
|
250
|
+
* The Chest, and Home (due to the presence of a story boss).
|
|
251
|
+
*
|
|
252
|
+
* Note that even though Delirium does not drop a random boss collectible, The Void is still
|
|
253
|
+
* considered to be a stage that has a random boss collectible since all of the non-Delirium Boss
|
|
254
|
+
* Rooms will drop random boss collectibles.
|
|
255
|
+
*/
|
|
256
|
+
function isStageWithRandomBossCollectible(stage) {
|
|
257
|
+
return !isStageWithStoryBoss(stage) || stage === isaac_typescript_definitions_1.LevelStage.VOID;
|
|
258
|
+
}
|
|
259
|
+
exports.isStageWithRandomBossCollectible = isStageWithRandomBossCollectible;
|
|
260
|
+
/**
|
|
261
|
+
* Helper function to check if the provided stage will spawn a locked door to Downpour/Dross after
|
|
262
|
+
* defeating the boss.
|
|
263
|
+
*/
|
|
264
|
+
function isStageWithSecretExitToDownpour(stage) {
|
|
265
|
+
return stage === isaac_typescript_definitions_1.LevelStage.BASEMENT_1 || stage === isaac_typescript_definitions_1.LevelStage.BASEMENT_2;
|
|
266
|
+
}
|
|
267
|
+
exports.isStageWithSecretExitToDownpour = isStageWithSecretExitToDownpour;
|
|
268
|
+
/**
|
|
269
|
+
* Helper function to check if the provided stage and stage type will spawn a spiked door to
|
|
270
|
+
* Mausoleum/Gehenna after defeating the boss.
|
|
271
|
+
*/
|
|
272
|
+
function isStageWithSecretExitToMausoleum(stage, stageType) {
|
|
273
|
+
const repentanceStage = isRepentanceStage(stageType);
|
|
274
|
+
return ((stage === isaac_typescript_definitions_1.LevelStage.DEPTHS_1 && !repentanceStage) ||
|
|
275
|
+
(stage === isaac_typescript_definitions_1.LevelStage.CAVES_2 && repentanceStage));
|
|
276
|
+
}
|
|
277
|
+
exports.isStageWithSecretExitToMausoleum = isStageWithSecretExitToMausoleum;
|
|
278
|
+
/**
|
|
279
|
+
* Helper function to check if the provided stage and stage type will spawn a wooden door to
|
|
280
|
+
* Mines/Ashpit after defeating the boss.
|
|
281
|
+
*/
|
|
282
|
+
function isStageWithSecretExitToMines(stage, stageType) {
|
|
283
|
+
const repentanceStage = isRepentanceStage(stageType);
|
|
284
|
+
return ((stage === isaac_typescript_definitions_1.LevelStage.CAVES_1 && !repentanceStage) ||
|
|
285
|
+
(stage === isaac_typescript_definitions_1.LevelStage.BASEMENT_2 && repentanceStage));
|
|
286
|
+
}
|
|
287
|
+
exports.isStageWithSecretExitToMines = isStageWithSecretExitToMines;
|
|
288
|
+
/**
|
|
289
|
+
* Helper function to check if the current stage is one that would create a trapdoor if We Need to
|
|
290
|
+
* Go Deeper was used.
|
|
291
|
+
*/
|
|
292
|
+
function isStageWithShovelTrapdoors(stage, stageType) {
|
|
293
|
+
const repentanceStage = isRepentanceStage(stageType);
|
|
294
|
+
return (stage < isaac_typescript_definitions_1.LevelStage.WOMB_2 ||
|
|
295
|
+
(stage === isaac_typescript_definitions_1.LevelStage.WOMB_2 && !repentanceStage));
|
|
296
|
+
}
|
|
297
|
+
exports.isStageWithShovelTrapdoors = isStageWithShovelTrapdoors;
|
|
298
|
+
/**
|
|
299
|
+
* Helper function to check if the provided stage is one with a story boss. Specifically, this is
|
|
300
|
+
* Depths 2 (Mom), Womb 2 (Mom's Heart / It Lives), Blue Womb (Hush), Sheol (Satan), Cathedral
|
|
301
|
+
* (Isaac), Dark Room (Lamb), The Chest (Blue Baby), The Void (Delirium), and Home (Dogma / The
|
|
302
|
+
* Beast).
|
|
303
|
+
*/
|
|
304
|
+
function isStageWithStoryBoss(stage) {
|
|
305
|
+
return stage === isaac_typescript_definitions_1.LevelStage.DEPTHS_2 || stage >= isaac_typescript_definitions_1.LevelStage.WOMB_2;
|
|
306
|
+
}
|
|
307
|
+
exports.isStageWithStoryBoss = isStageWithStoryBoss;
|
|
308
|
+
/**
|
|
309
|
+
* Helper function to check if the player has taken Dad's Note. This sets the game state flag of
|
|
310
|
+
* `GameStateFlag.BACKWARDS_PATH` and causes floor generation to change.
|
|
311
|
+
*/
|
|
312
|
+
function onAscent() {
|
|
313
|
+
return cachedClasses_1.game.GetStateFlag(isaac_typescript_definitions_1.GameStateFlag.BACKWARDS_PATH);
|
|
314
|
+
}
|
|
315
|
+
exports.onAscent = onAscent;
|
|
316
|
+
function onCathedral() {
|
|
317
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
318
|
+
const stage = level.GetStage();
|
|
319
|
+
const stageType = level.GetStageType();
|
|
320
|
+
return (stage === isaac_typescript_definitions_1.LevelStage.SHEOL_CATHEDRAL &&
|
|
321
|
+
stageType === isaac_typescript_definitions_1.StageType.WRATH_OF_THE_LAMB);
|
|
322
|
+
}
|
|
323
|
+
exports.onCathedral = onCathedral;
|
|
324
|
+
function onChest() {
|
|
325
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
326
|
+
const stage = level.GetStage();
|
|
327
|
+
const stageType = level.GetStageType();
|
|
328
|
+
return (stage === isaac_typescript_definitions_1.LevelStage.DARK_ROOM_CHEST &&
|
|
329
|
+
stageType === isaac_typescript_definitions_1.StageType.WRATH_OF_THE_LAMB);
|
|
330
|
+
}
|
|
331
|
+
exports.onChest = onChest;
|
|
332
|
+
function onDarkRoom() {
|
|
333
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
334
|
+
const stage = level.GetStage();
|
|
335
|
+
const stageType = level.GetStageType();
|
|
336
|
+
return (stage === isaac_typescript_definitions_1.LevelStage.DARK_ROOM_CHEST && stageType === isaac_typescript_definitions_1.StageType.ORIGINAL);
|
|
337
|
+
}
|
|
338
|
+
exports.onDarkRoom = onDarkRoom;
|
|
339
|
+
/**
|
|
340
|
+
* Helper function to check if the current stage matches one of the given stages. This uses the
|
|
341
|
+
* `getEffectiveStage` helper function so that the Repentance floors are correctly adjusted.
|
|
342
|
+
*
|
|
343
|
+
* This function is variadic, which means you can pass as many stages as you want to match for.
|
|
344
|
+
*/
|
|
345
|
+
function onEffectiveStage(...effectiveStages) {
|
|
346
|
+
const thisEffectiveStage = getEffectiveStage();
|
|
347
|
+
return effectiveStages.includes(thisEffectiveStage);
|
|
348
|
+
}
|
|
349
|
+
exports.onEffectiveStage = onEffectiveStage;
|
|
350
|
+
/**
|
|
351
|
+
* Returns whether the player is on the "final floor" of the particular run. The final floor is
|
|
352
|
+
* defined as one that prevents the player from entering the I AM ERROR room on.
|
|
353
|
+
*
|
|
354
|
+
* For example, when using Undefined on The Chest, it has a 50% chance of teleporting the player to
|
|
355
|
+
* the Secret Room and a 50% chance of teleporting the player to the Super Secret Room, because the
|
|
356
|
+
* I AM ERROR room is never entered into the list of possibilities.
|
|
357
|
+
*/
|
|
358
|
+
function onFinalFloor() {
|
|
359
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
360
|
+
const stage = level.GetStage();
|
|
361
|
+
const stageType = level.GetStageType();
|
|
362
|
+
return isFinalFloor(stage, stageType);
|
|
363
|
+
}
|
|
364
|
+
exports.onFinalFloor = onFinalFloor;
|
|
365
|
+
/**
|
|
366
|
+
* Returns whether the player is on the first floor of the particular run.
|
|
367
|
+
*
|
|
368
|
+
* This is tricky to determine because we have to handle the cases of Downpour/Dross 1 not being the
|
|
369
|
+
* first floor and The Ascent.
|
|
370
|
+
*/
|
|
371
|
+
function onFirstFloor() {
|
|
372
|
+
const effectiveStage = getEffectiveStage();
|
|
373
|
+
const isOnAscent = onAscent();
|
|
374
|
+
return effectiveStage === isaac_typescript_definitions_1.LevelStage.BASEMENT_1 && !isOnAscent;
|
|
375
|
+
}
|
|
376
|
+
exports.onFirstFloor = onFirstFloor;
|
|
377
|
+
/**
|
|
378
|
+
* Helper function to check if the current stage type is equal to `StageType.REPENTANCE` or
|
|
379
|
+
* `StageType.REPENTANCE_B`.
|
|
380
|
+
*/
|
|
381
|
+
function onRepentanceStage() {
|
|
382
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
383
|
+
const stageType = level.GetStageType();
|
|
384
|
+
return isRepentanceStage(stageType);
|
|
385
|
+
}
|
|
386
|
+
exports.onRepentanceStage = onRepentanceStage;
|
|
387
|
+
function onSheol() {
|
|
388
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
389
|
+
const stage = level.GetStage();
|
|
390
|
+
const stageType = level.GetStageType();
|
|
391
|
+
return (stage === isaac_typescript_definitions_1.LevelStage.SHEOL_CATHEDRAL && stageType === isaac_typescript_definitions_1.StageType.ORIGINAL);
|
|
392
|
+
}
|
|
393
|
+
exports.onSheol = onSheol;
|
|
394
|
+
/**
|
|
395
|
+
* Helper function to check if the current stage matches one of the given stages.
|
|
396
|
+
*
|
|
397
|
+
* This function is variadic, which means you can pass as many stages as you want to match for.
|
|
398
|
+
*/
|
|
399
|
+
function onStage(...stages) {
|
|
400
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
401
|
+
const thisStage = level.GetStage();
|
|
402
|
+
return stages.includes(thisStage);
|
|
403
|
+
}
|
|
404
|
+
exports.onStage = onStage;
|
|
405
|
+
/** Helper function to check if the current stage is equal to or higher than the given stage. */
|
|
406
|
+
function onStageOrHigher(stage) {
|
|
407
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
408
|
+
const thisStage = level.GetStage();
|
|
409
|
+
return thisStage >= stage;
|
|
410
|
+
}
|
|
411
|
+
exports.onStageOrHigher = onStageOrHigher;
|
|
412
|
+
/** Helper function to check if the current stage is equal to or higher than the given stage. */
|
|
413
|
+
function onStageOrLower(stage) {
|
|
414
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
415
|
+
const thisStage = level.GetStage();
|
|
416
|
+
return thisStage <= stage;
|
|
417
|
+
}
|
|
418
|
+
exports.onStageOrLower = onStageOrLower;
|
|
419
|
+
/**
|
|
420
|
+
* Helper function to check if the current stage matches one of the given stage types.
|
|
421
|
+
*
|
|
422
|
+
* This function is variadic, which means you can pass as many room types as you want to match for.
|
|
423
|
+
*/
|
|
424
|
+
function onStageType(...stageTypes) {
|
|
425
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
426
|
+
const thisStageType = level.GetStageType();
|
|
427
|
+
return stageTypes.includes(thisStageType);
|
|
428
|
+
}
|
|
429
|
+
exports.onStageType = onStageType;
|
|
430
|
+
/**
|
|
431
|
+
* Helper function to check if the current stage is one that has the possibility to grant a natural
|
|
432
|
+
* Devil Room or Angel Room after killing the boss.
|
|
433
|
+
*/
|
|
434
|
+
function onStageWithNaturalDevilRoom() {
|
|
435
|
+
const effectiveStage = getEffectiveStage();
|
|
436
|
+
return isStageWithNaturalDevilRoom(effectiveStage);
|
|
437
|
+
}
|
|
438
|
+
exports.onStageWithNaturalDevilRoom = onStageWithNaturalDevilRoom;
|
|
439
|
+
/**
|
|
440
|
+
* Helper function to check if the current stage is one that will have a random collectible drop
|
|
441
|
+
* upon defeating the boss of the floor.
|
|
442
|
+
*
|
|
443
|
+
* This happens on most stages but will not happen on Depths 2, Womb 2, Sheol, Cathedral, Dark Room,
|
|
444
|
+
* The Chest, and Home (due to the presence of a story boss).
|
|
445
|
+
*
|
|
446
|
+
* Note that even though Delirium does not drop a random boss collectible, The Void is still
|
|
447
|
+
* considered to be a stage that has a random boss collectible since all of the non-Delirium Boss
|
|
448
|
+
* Rooms will drop random boss collectibles.
|
|
449
|
+
*/
|
|
450
|
+
function onStageWithRandomBossCollectible() {
|
|
451
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
452
|
+
const stage = level.GetStage();
|
|
453
|
+
return isStageWithRandomBossCollectible(stage);
|
|
454
|
+
}
|
|
455
|
+
exports.onStageWithRandomBossCollectible = onStageWithRandomBossCollectible;
|
|
456
|
+
/**
|
|
457
|
+
* Helper function to check if the current stage will spawn a locked door to Downpour/Dross after
|
|
458
|
+
* defeating the boss.
|
|
459
|
+
*/
|
|
460
|
+
function onStageWithSecretExitToDownpour() {
|
|
461
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
462
|
+
const stage = level.GetStage();
|
|
463
|
+
return isStageWithSecretExitToDownpour(stage);
|
|
464
|
+
}
|
|
465
|
+
exports.onStageWithSecretExitToDownpour = onStageWithSecretExitToDownpour;
|
|
466
|
+
/**
|
|
467
|
+
* Helper function to check if the current stage will spawn a spiked door to Mausoleum/Gehenna after
|
|
468
|
+
* defeating the boss.
|
|
469
|
+
*/
|
|
470
|
+
function onStageWithSecretExitToMausoleum() {
|
|
471
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
472
|
+
const stage = level.GetStage();
|
|
473
|
+
const stageType = level.GetStageType();
|
|
474
|
+
return isStageWithSecretExitToMausoleum(stage, stageType);
|
|
475
|
+
}
|
|
476
|
+
exports.onStageWithSecretExitToMausoleum = onStageWithSecretExitToMausoleum;
|
|
477
|
+
/**
|
|
478
|
+
* Helper function to check if the current stage will spawn a wooden door to Mines/Ashpit after
|
|
479
|
+
* defeating the boss.
|
|
480
|
+
*/
|
|
481
|
+
function onStageWithSecretExitToMines() {
|
|
482
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
483
|
+
const stage = level.GetStage();
|
|
484
|
+
const stageType = level.GetStageType();
|
|
485
|
+
return isStageWithSecretExitToMines(stage, stageType);
|
|
486
|
+
}
|
|
487
|
+
exports.onStageWithSecretExitToMines = onStageWithSecretExitToMines;
|
|
488
|
+
/**
|
|
489
|
+
* Helper function to check if the current stage is one that would create a trapdoor if We Need to
|
|
490
|
+
* Go Deeper was used.
|
|
491
|
+
*/
|
|
492
|
+
function onStageWithShovelTrapdoors() {
|
|
493
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
494
|
+
const stage = level.GetStage();
|
|
495
|
+
const stageType = level.GetStageType();
|
|
496
|
+
return isStageWithShovelTrapdoors(stage, stageType);
|
|
497
|
+
}
|
|
498
|
+
exports.onStageWithShovelTrapdoors = onStageWithShovelTrapdoors;
|
|
499
|
+
/**
|
|
500
|
+
* Helper function to check if the current stage is one with a story boss. Specifically, this is
|
|
501
|
+
* Depths 2 (Mom), Womb 2 (Mom's Heart / It Lives), Blue Womb (Hush), Sheol (Satan), Cathedral
|
|
502
|
+
* (Isaac), Dark Room (Lamb), The Chest (Blue Baby), The Void (Delirium), and Home (Dogma / The
|
|
503
|
+
* Beast).
|
|
504
|
+
*/
|
|
505
|
+
function onStageWithStoryBoss() {
|
|
506
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
507
|
+
const stage = level.GetStage();
|
|
508
|
+
return isStageWithStoryBoss(stage);
|
|
509
|
+
}
|
|
510
|
+
exports.onStageWithStoryBoss = onStageWithStoryBoss;
|
|
511
|
+
/**
|
|
512
|
+
* Helper function to directly warp to a specific stage using the "stage" console command.
|
|
513
|
+
*
|
|
514
|
+
* This is different from the vanilla `Level.SetStage` method, which will change the stage and/or
|
|
515
|
+
* stage type of the current floor without moving the player to a new floor.
|
|
516
|
+
*
|
|
517
|
+
* Note that if you use this function on game frame 0, it will confuse the
|
|
518
|
+
* `POST_GAME_STARTED_REORDERED`, `POST_NEW_LEVEL_REORDERED`, and `POST_NEW_ROOM_REORDERED` custom
|
|
519
|
+
* callbacks. If you are using the function in this situation, remember to call the
|
|
520
|
+
* `reorderedCallbacksSetStage` function.
|
|
521
|
+
*
|
|
522
|
+
* @param stage The stage number to warp to.
|
|
523
|
+
* @param stageType The stage type to warp to.
|
|
524
|
+
* @param reseed Optional. Whether to reseed the floor upon arrival. Default is false. Set this to
|
|
525
|
+
* true if you are warping to the same stage but a different stage type (or else the
|
|
526
|
+
* floor layout will be identical to the old floor).
|
|
527
|
+
*/
|
|
528
|
+
function setStage(stage, stageType, reseed = false) {
|
|
529
|
+
// Build the command that will take us to the next floor.
|
|
530
|
+
const stageTypeSuffix = getStageTypeSuffix(stageType);
|
|
531
|
+
const command = `stage ${stage}${stageTypeSuffix}`;
|
|
532
|
+
(0, log_1.log)(`Warping to a stage with a console command of: ${command}`);
|
|
533
|
+
Isaac.ExecuteCommand(command);
|
|
534
|
+
if (reseed) {
|
|
535
|
+
// Doing a "reseed" immediately after a "stage" command won't mess anything up.
|
|
536
|
+
(0, log_1.log)("Reseeding the floor with a console command of: reseed");
|
|
537
|
+
Isaac.ExecuteCommand("reseed");
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
exports.setStage = setStage;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPlayerStats = exports.getPlayerStat = exports.getDefaultPlayerStat = exports.addPlayerStat = void 0;
|
|
4
|
+
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
5
|
+
const PlayerStat_1 = require("../enums/PlayerStat");
|
|
6
|
+
const defaultPlayerStatMap_1 = require("../maps/defaultPlayerStatMap");
|
|
7
|
+
const ReadonlySet_1 = require("../types/ReadonlySet");
|
|
8
|
+
const tears_1 = require("./tears");
|
|
9
|
+
const STAT_CACHE_FLAGS_SET = new ReadonlySet_1.ReadonlySet([
|
|
10
|
+
isaac_typescript_definitions_1.CacheFlag.DAMAGE,
|
|
11
|
+
isaac_typescript_definitions_1.CacheFlag.FIRE_DELAY,
|
|
12
|
+
isaac_typescript_definitions_1.CacheFlag.SHOT_SPEED,
|
|
13
|
+
isaac_typescript_definitions_1.CacheFlag.RANGE,
|
|
14
|
+
isaac_typescript_definitions_1.CacheFlag.SPEED,
|
|
15
|
+
isaac_typescript_definitions_1.CacheFlag.LUCK, // 1 << 10
|
|
16
|
+
]);
|
|
17
|
+
/**
|
|
18
|
+
* Helper function to add a stat to a player based on the `CacheFlag` provided. Call this function
|
|
19
|
+
* from the `EVALUATE_CACHE` callback.
|
|
20
|
+
*
|
|
21
|
+
* Note that for `CacheFlag.FIRE_DELAY`, the "amount" argument will be interpreted as the tear stat
|
|
22
|
+
* to add (and not the amount to mutate `EntityPlayer.MaxFireDelay` by).
|
|
23
|
+
*
|
|
24
|
+
* This function supports the following cache flags:
|
|
25
|
+
* - CacheFlag.DAMAGE (1 << 0)
|
|
26
|
+
* - CacheFlag.FIRE_DELAY (1 << 1)
|
|
27
|
+
* - CacheFlag.SHOT_SPEED (1 << 2)
|
|
28
|
+
* - CacheFlag.RANGE (1 << 3)
|
|
29
|
+
* - CacheFlag.SPEED (1 << 4)
|
|
30
|
+
* - CacheFlag.LUCK (1 << 10)
|
|
31
|
+
*/
|
|
32
|
+
function addPlayerStat(player, cacheFlag, amount) {
|
|
33
|
+
if (!STAT_CACHE_FLAGS_SET.has(cacheFlag)) {
|
|
34
|
+
error(`You cannot add a stat to a player with the cache flag of: ${cacheFlag}`);
|
|
35
|
+
}
|
|
36
|
+
switch (cacheFlag) {
|
|
37
|
+
// 1 << 0
|
|
38
|
+
case isaac_typescript_definitions_1.CacheFlag.DAMAGE: {
|
|
39
|
+
player.Damage += amount;
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
// 1 << 1
|
|
43
|
+
case isaac_typescript_definitions_1.CacheFlag.FIRE_DELAY: {
|
|
44
|
+
(0, tears_1.addTearsStat)(player, amount);
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
// 1 << 2
|
|
48
|
+
case isaac_typescript_definitions_1.CacheFlag.SHOT_SPEED: {
|
|
49
|
+
player.ShotSpeed += amount;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
// 1 << 3
|
|
53
|
+
case isaac_typescript_definitions_1.CacheFlag.RANGE: {
|
|
54
|
+
player.TearHeight += amount;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
// 1 << 4
|
|
58
|
+
case isaac_typescript_definitions_1.CacheFlag.SPEED: {
|
|
59
|
+
player.MoveSpeed += amount;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
// 1 << 10
|
|
63
|
+
case isaac_typescript_definitions_1.CacheFlag.LUCK: {
|
|
64
|
+
player.Luck += amount;
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.addPlayerStat = addPlayerStat;
|
|
70
|
+
/**
|
|
71
|
+
* Returns the starting stat that Isaac (the default character) starts with. For example, if you
|
|
72
|
+
* pass this function `CacheFlag.DAMAGE`, it will return 3.5.
|
|
73
|
+
*
|
|
74
|
+
* Note that the default fire delay is represented in the tear stat, not the `MaxFireDelay` value.
|
|
75
|
+
*/
|
|
76
|
+
function getDefaultPlayerStat(cacheFlag) {
|
|
77
|
+
return defaultPlayerStatMap_1.DEFAULT_PLAYER_STAT_MAP.get(cacheFlag);
|
|
78
|
+
}
|
|
79
|
+
exports.getDefaultPlayerStat = getDefaultPlayerStat;
|
|
80
|
+
/** Helper function to get the stat for a player corresponding to the `StatType`. */
|
|
81
|
+
function getPlayerStat(player, playerStat) {
|
|
82
|
+
const playerStats = getPlayerStats(player);
|
|
83
|
+
return playerStats[playerStat];
|
|
84
|
+
}
|
|
85
|
+
exports.getPlayerStat = getPlayerStat;
|
|
86
|
+
/** Helper function to get all of the stat for a player. */
|
|
87
|
+
function getPlayerStats(player) {
|
|
88
|
+
return {
|
|
89
|
+
[PlayerStat_1.PlayerStat.DAMAGE]: player.Damage,
|
|
90
|
+
[PlayerStat_1.PlayerStat.FIRE_DELAY]: player.MaxFireDelay,
|
|
91
|
+
[PlayerStat_1.PlayerStat.SHOT_SPEED]: player.ShotSpeed,
|
|
92
|
+
[PlayerStat_1.PlayerStat.TEAR_HEIGHT]: player.TearHeight,
|
|
93
|
+
[PlayerStat_1.PlayerStat.TEAR_RANGE]: player.TearRange,
|
|
94
|
+
[PlayerStat_1.PlayerStat.TEAR_FALLING_ACCELERATION]: player.TearFallingAcceleration,
|
|
95
|
+
[PlayerStat_1.PlayerStat.TEAR_FALLING_SPEED]: player.TearFallingSpeed,
|
|
96
|
+
[PlayerStat_1.PlayerStat.MOVE_SPEED]: player.MoveSpeed,
|
|
97
|
+
[PlayerStat_1.PlayerStat.TEAR_FLAG]: player.TearFlags,
|
|
98
|
+
[PlayerStat_1.PlayerStat.TEAR_COLOR]: player.TearColor,
|
|
99
|
+
[PlayerStat_1.PlayerStat.FLYING]: player.CanFly,
|
|
100
|
+
[PlayerStat_1.PlayerStat.LUCK]: player.Luck,
|
|
101
|
+
[PlayerStat_1.PlayerStat.SIZE]: player.SpriteScale, // 1 << 11
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
exports.getPlayerStats = getPlayerStats;
|