isaacscript-common 87.9.7 → 87.9.8
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/cachedEnumValues.js +29 -32
- package/dist/callbackClasses.js +142 -289
- package/dist/callbacks.js +147 -183
- package/dist/classes/DefaultMap.js +4 -8
- package/dist/classes/ModFeature.js +21 -25
- package/dist/classes/ModUpgraded.js +43 -47
- package/dist/classes/callbacks/EntityTakeDmgFilter.js +6 -10
- package/dist/classes/callbacks/EntityTakeDmgPlayer.js +7 -11
- package/dist/classes/callbacks/InputActionFilter.js +4 -8
- package/dist/classes/callbacks/InputActionPlayer.js +4 -8
- package/dist/classes/callbacks/PostAmbushFinished.js +10 -14
- package/dist/classes/callbacks/PostAmbushStarted.js +10 -14
- package/dist/classes/callbacks/PostBombExploded.js +8 -12
- package/dist/classes/callbacks/PostBombInitFilter.js +6 -10
- package/dist/classes/callbacks/PostBombInitLate.js +6 -10
- package/dist/classes/callbacks/PostBombRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostBombUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostBoneSwing.js +7 -11
- package/dist/classes/callbacks/PostCollectibleEmpty.js +6 -10
- package/dist/classes/callbacks/PostCursedTeleport.js +30 -34
- package/dist/classes/callbacks/PostCustomRevive.js +4 -8
- package/dist/classes/callbacks/PostDiceRoomActivated.js +9 -13
- package/dist/classes/callbacks/PostDoorRender.js +8 -12
- package/dist/classes/callbacks/PostDoorUpdate.js +8 -12
- package/dist/classes/callbacks/PostEffectInitFilter.js +6 -10
- package/dist/classes/callbacks/PostEffectInitLate.js +6 -10
- package/dist/classes/callbacks/PostEffectRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostEffectStateChanged.js +8 -12
- package/dist/classes/callbacks/PostEffectUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostEntityKillFilter.js +6 -10
- package/dist/classes/callbacks/PostEntityRemoveFilter.js +6 -10
- package/dist/classes/callbacks/PostEsauJr.js +4 -8
- package/dist/classes/callbacks/PostFamiliarInitFilter.js +6 -10
- package/dist/classes/callbacks/PostFamiliarInitLate.js +6 -10
- package/dist/classes/callbacks/PostFamiliarRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostFamiliarStateChanged.js +8 -12
- package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostFirstEsauJr.js +4 -8
- package/dist/classes/callbacks/PostFirstFlip.js +4 -8
- package/dist/classes/callbacks/PostFlip.js +4 -8
- package/dist/classes/callbacks/PostGameEndFilter.js +6 -10
- package/dist/classes/callbacks/PostGameStartedReordered.js +6 -10
- package/dist/classes/callbacks/PostGameStartedReorderedLast.js +6 -10
- package/dist/classes/callbacks/PostGreedModeWave.js +7 -11
- package/dist/classes/callbacks/PostGridEntityBroken.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCollision.js +4 -8
- package/dist/classes/callbacks/PostGridEntityCustomBroken.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomCollision.js +4 -8
- package/dist/classes/callbacks/PostGridEntityCustomInit.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomRemove.js +4 -8
- package/dist/classes/callbacks/PostGridEntityCustomRender.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +6 -10
- package/dist/classes/callbacks/PostGridEntityInit.js +6 -10
- package/dist/classes/callbacks/PostGridEntityRemove.js +4 -8
- package/dist/classes/callbacks/PostGridEntityRender.js +6 -10
- package/dist/classes/callbacks/PostGridEntityStateChanged.js +6 -10
- package/dist/classes/callbacks/PostGridEntityUpdate.js +6 -10
- package/dist/classes/callbacks/PostHolyMantleRemoved.js +15 -19
- package/dist/classes/callbacks/PostItemDischarge.js +23 -27
- package/dist/classes/callbacks/PostItemPickup.js +6 -10
- package/dist/classes/callbacks/PostKeyboardChanged.js +9 -13
- package/dist/classes/callbacks/PostKnifeInitFilter.js +6 -10
- package/dist/classes/callbacks/PostKnifeInitLate.js +6 -10
- package/dist/classes/callbacks/PostKnifeRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostKnifeUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostLaserInitFilter.js +6 -10
- package/dist/classes/callbacks/PostLaserInitLate.js +6 -10
- package/dist/classes/callbacks/PostLaserRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostLaserUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCDeathFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCInitFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCInitLate.js +6 -10
- package/dist/classes/callbacks/PostNPCRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCStateChanged.js +8 -12
- package/dist/classes/callbacks/PostNPCUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostNewLevelReordered.js +6 -10
- package/dist/classes/callbacks/PostNewRoomEarly.js +17 -21
- package/dist/classes/callbacks/PostNewRoomReordered.js +6 -10
- package/dist/classes/callbacks/PostPEffectUpdateReordered.js +6 -10
- package/dist/classes/callbacks/PostPickupChanged.js +6 -10
- package/dist/classes/callbacks/PostPickupCollect.js +8 -12
- package/dist/classes/callbacks/PostPickupInitFilter.js +6 -10
- package/dist/classes/callbacks/PostPickupInitFirst.js +10 -14
- package/dist/classes/callbacks/PostPickupInitLate.js +6 -10
- package/dist/classes/callbacks/PostPickupRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostPickupSelectionFilter.js +4 -8
- package/dist/classes/callbacks/PostPickupStateChanged.js +8 -12
- package/dist/classes/callbacks/PostPickupUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostPitRender.js +8 -12
- package/dist/classes/callbacks/PostPitUpdate.js +8 -12
- package/dist/classes/callbacks/PostPlayerChangeHealth.js +14 -18
- package/dist/classes/callbacks/PostPlayerChangeStat.js +26 -30
- package/dist/classes/callbacks/PostPlayerChangeType.js +11 -15
- package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +6 -10
- package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +6 -10
- package/dist/classes/callbacks/PostPlayerFatalDamage.js +24 -28
- package/dist/classes/callbacks/PostPlayerInitFirst.js +12 -16
- package/dist/classes/callbacks/PostPlayerInitLate.js +9 -13
- package/dist/classes/callbacks/PostPlayerRenderReordered.js +6 -10
- package/dist/classes/callbacks/PostPlayerUpdateReordered.js +6 -10
- package/dist/classes/callbacks/PostPoopRender.js +8 -12
- package/dist/classes/callbacks/PostPoopUpdate.js +8 -12
- package/dist/classes/callbacks/PostPressurePlateRender.js +8 -12
- package/dist/classes/callbacks/PostPressurePlateUpdate.js +8 -12
- package/dist/classes/callbacks/PostProjectileInitFilter.js +6 -10
- package/dist/classes/callbacks/PostProjectileInitLate.js +6 -10
- package/dist/classes/callbacks/PostProjectileKill.js +8 -12
- package/dist/classes/callbacks/PostProjectileRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostProjectileUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostPurchase.js +21 -25
- package/dist/classes/callbacks/PostRockRender.js +8 -12
- package/dist/classes/callbacks/PostRockUpdate.js +8 -12
- package/dist/classes/callbacks/PostRoomClearChanged.js +9 -13
- package/dist/classes/callbacks/PostSacrifice.js +12 -16
- package/dist/classes/callbacks/PostSlotAnimationChanged.js +6 -10
- package/dist/classes/callbacks/PostSlotCollision.js +8 -12
- package/dist/classes/callbacks/PostSlotDestroyed.js +6 -10
- package/dist/classes/callbacks/PostSlotInit.js +6 -10
- package/dist/classes/callbacks/PostSlotRender.js +6 -10
- package/dist/classes/callbacks/PostSlotUpdate.js +6 -10
- package/dist/classes/callbacks/PostSpikesRender.js +8 -12
- package/dist/classes/callbacks/PostSpikesUpdate.js +8 -12
- package/dist/classes/callbacks/PostTNTRender.js +8 -12
- package/dist/classes/callbacks/PostTNTUpdate.js +8 -12
- package/dist/classes/callbacks/PostTearInitFilter.js +6 -10
- package/dist/classes/callbacks/PostTearInitLate.js +6 -10
- package/dist/classes/callbacks/PostTearInitVeryLate.js +6 -10
- package/dist/classes/callbacks/PostTearKill.js +8 -12
- package/dist/classes/callbacks/PostTearRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostTearUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostTransformation.js +10 -14
- package/dist/classes/callbacks/PostTrinketBreak.js +16 -20
- package/dist/classes/callbacks/PostUsePillFilter.js +18 -22
- package/dist/classes/callbacks/PreBerserkDeath.js +14 -18
- package/dist/classes/callbacks/PreBombCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreCustomRevive.js +6 -10
- package/dist/classes/callbacks/PreEntitySpawnFilter.js +4 -8
- package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreGetPedestal.js +8 -12
- package/dist/classes/callbacks/PreItemPickup.js +6 -10
- package/dist/classes/callbacks/PreKnifeCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreNPCCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreNPCUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PreNewLevel.js +10 -14
- package/dist/classes/callbacks/PreProjectileCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +4 -8
- package/dist/classes/callbacks/PreTearCollisionFilter.js +6 -10
- package/dist/classes/features/callbackLogic/CustomGridEntities.js +46 -50
- package/dist/classes/features/callbackLogic/CustomRevive.js +28 -32
- package/dist/classes/features/callbackLogic/EsauJrDetection.js +11 -15
- package/dist/classes/features/callbackLogic/FlipDetection.js +11 -15
- package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +26 -30
- package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +10 -14
- package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +6 -10
- package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +12 -16
- package/dist/classes/features/callbackLogic/ItemPickupDetection.js +17 -21
- package/dist/classes/features/callbackLogic/PickupChangeDetection.js +6 -10
- package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +39 -43
- package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +18 -22
- package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +17 -21
- package/dist/classes/features/callbackLogic/SlotRenderDetection.js +8 -12
- package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +9 -13
- package/dist/classes/features/other/CharacterHealthConversion.js +13 -17
- package/dist/classes/features/other/CharacterStats.js +9 -13
- package/dist/classes/features/other/CollectibleItemPoolType.js +17 -21
- package/dist/classes/features/other/CustomHotkeys.js +15 -19
- package/dist/classes/features/other/CustomItemPools.js +20 -24
- package/dist/classes/features/other/CustomPickups.js +15 -19
- package/dist/classes/features/other/CustomStages.js +116 -153
- package/dist/classes/features/other/CustomTrapdoors.js +119 -123
- package/dist/classes/features/other/DebugDisplay.js +77 -81
- package/dist/classes/features/other/DeployJSONRoom.js +65 -69
- package/dist/classes/features/other/DisableAllSound.js +14 -18
- package/dist/classes/features/other/DisableInputs.js +24 -28
- package/dist/classes/features/other/EdenStartingStatsHealth.js +36 -40
- package/dist/classes/features/other/ExtraConsoleCommands.js +65 -102
- package/dist/classes/features/other/FadeInRemover.js +9 -13
- package/dist/classes/features/other/FastReset.js +18 -22
- package/dist/classes/features/other/FlyingDetection.js +10 -14
- package/dist/classes/features/other/ForgottenSwitch.js +8 -12
- package/dist/classes/features/other/ItemPoolDetection.js +35 -39
- package/dist/classes/features/other/ModdedElementDetection.js +43 -47
- package/dist/classes/features/other/ModdedElementSets.js +135 -139
- package/dist/classes/features/other/NoSirenSteal.js +7 -11
- package/dist/classes/features/other/Pause.js +48 -52
- package/dist/classes/features/other/PersistentEntities.js +16 -20
- package/dist/classes/features/other/PickupIndexCreation.js +31 -35
- package/dist/classes/features/other/PlayerCollectibleTracking.js +18 -22
- package/dist/classes/features/other/PonyDetection.js +22 -26
- package/dist/classes/features/other/PressInput.js +10 -14
- package/dist/classes/features/other/PreventChildEntities.js +6 -10
- package/dist/classes/features/other/PreventGridEntityRespawn.js +34 -38
- package/dist/classes/features/other/RerunDetection.js +11 -15
- package/dist/classes/features/other/RoomClearFrame.js +11 -15
- package/dist/classes/features/other/RoomHistory.js +30 -34
- package/dist/classes/features/other/RunInNFrames.js +24 -28
- package/dist/classes/features/other/RunNextRoom.js +8 -12
- package/dist/classes/features/other/RunNextRun.js +8 -12
- package/dist/classes/features/other/SaveDataManager.js +61 -65
- package/dist/classes/features/other/SpawnRockAltRewards.js +115 -119
- package/dist/classes/features/other/StageHistory.js +76 -80
- package/dist/classes/features/other/StartAmbush.js +12 -16
- package/dist/classes/features/other/TaintedLazarusPlayers.js +10 -14
- package/dist/classes/features/other/UnlockAchievementsDetection.js +10 -14
- package/dist/classes/features/other/customStages/backdrop.js +68 -71
- package/dist/classes/features/other/customStages/constants.js +7 -10
- package/dist/classes/features/other/customStages/gridEntities.js +23 -30
- package/dist/classes/features/other/customStages/shadows.js +27 -30
- package/dist/classes/features/other/customStages/streakText.js +55 -60
- package/dist/classes/features/other/customStages/utils.js +13 -17
- package/dist/classes/features/other/customStages/v.js +4 -7
- package/dist/classes/features/other/customStages/versusScreen.js +46 -50
- package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +8 -12
- package/dist/classes/features/other/debugDisplay/utils.js +6 -10
- package/dist/classes/features/other/extraConsoleCommands/commands.js +411 -557
- package/dist/classes/features/other/extraConsoleCommands/subroutines.js +47 -57
- package/dist/classes/features/other/extraConsoleCommands/v.js +1 -4
- package/dist/classes/features/other/saveDataManager/constants.js +1 -4
- package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +17 -21
- package/dist/classes/features/other/saveDataManager/loadFromDisk.js +19 -22
- package/dist/classes/features/other/saveDataManager/restoreDefaults.js +20 -25
- package/dist/classes/features/other/saveDataManager/saveToDisk.js +13 -16
- package/dist/classes/private/CustomCallback.js +4 -8
- package/dist/classes/private/Feature.js +1 -5
- package/dist/core/cachedClasses.js +12 -15
- package/dist/core/constants.js +126 -130
- package/dist/core/constantsFirstLast.js +22 -25
- package/dist/core/constantsVanilla.js +25 -28
- package/dist/core/upgradeMod.js +7 -10
- package/dist/decorators.js +6 -10
- package/dist/enums/AmbushType.js +2 -5
- package/dist/enums/CornerType.js +2 -5
- package/dist/enums/HealthType.js +2 -5
- package/dist/enums/ISCFeature.js +2 -5
- package/dist/enums/LadderSubTypeCustom.js +2 -5
- package/dist/enums/ModCallbackCustom.js +2 -5
- package/dist/enums/MysteriousPaperEffect.js +2 -5
- package/dist/enums/PlayerStat.js +2 -5
- package/dist/enums/PocketItemType.js +2 -5
- package/dist/enums/RockAltType.js +2 -5
- package/dist/enums/SaveDataKey.js +2 -5
- package/dist/enums/SerializationType.js +2 -5
- package/dist/enums/SlotDestructionType.js +2 -5
- package/dist/enums/private/GridEntityTypeCustom.js +1 -4
- package/dist/enums/private/SerializationBrand.js +2 -5
- package/dist/enums/private/StageTravelState.js +2 -5
- package/dist/enums/private/TrapdoorAnimation.js +2 -5
- package/dist/enums/private/UIStreakAnimation.js +2 -5
- package/dist/features.js +138 -141
- package/dist/functions/ambush.js +9 -12
- package/dist/functions/array.js +45 -76
- package/dist/functions/arrayLua.js +7 -16
- package/dist/functions/benchmark.js +4 -7
- package/dist/functions/bitSet128.js +19 -26
- package/dist/functions/bitwise.js +14 -23
- package/dist/functions/bombs.js +1 -4
- package/dist/functions/bosses.js +68 -85
- package/dist/functions/cards.js +44 -62
- package/dist/functions/challenges.js +28 -39
- package/dist/functions/characters.js +68 -87
- package/dist/functions/charge.js +41 -52
- package/dist/functions/chargeBar.js +2 -6
- package/dist/functions/collectibleTag.js +9 -13
- package/dist/functions/collectibles.js +133 -172
- package/dist/functions/color.js +29 -38
- package/dist/functions/console.js +4 -8
- package/dist/functions/curses.js +6 -10
- package/dist/functions/debugFunctions.js +7 -14
- package/dist/functions/decorators.js +13 -19
- package/dist/functions/deepCopy.js +96 -99
- package/dist/functions/deepCopyTests.js +56 -59
- package/dist/functions/dimensions.js +10 -14
- package/dist/functions/direction.js +22 -30
- package/dist/functions/doors.js +104 -154
- package/dist/functions/easing.js +30 -62
- package/dist/functions/effects.js +6 -10
- package/dist/functions/emptyRoom.js +30 -34
- package/dist/functions/entities.js +88 -115
- package/dist/functions/entitiesSpecific.js +83 -125
- package/dist/functions/entityTypes.js +3 -6
- package/dist/functions/enums.js +27 -41
- package/dist/functions/external.js +4 -8
- package/dist/functions/familiars.js +17 -25
- package/dist/functions/flag.js +10 -19
- package/dist/functions/frames.js +31 -51
- package/dist/functions/globals.js +26 -66
- package/dist/functions/gridEntities.js +231 -269
- package/dist/functions/gridEntitiesSpecific.js +86 -126
- package/dist/functions/gridIndex.js +8 -11
- package/dist/functions/hash.js +1 -4
- package/dist/functions/hex.js +7 -11
- package/dist/functions/input.js +65 -88
- package/dist/functions/isaacAPIClass.js +28 -53
- package/dist/functions/itemPool.js +39 -48
- package/dist/functions/jsonHelpers.js +5 -42
- package/dist/functions/jsonRoom.js +39 -46
- package/dist/functions/kColor.js +30 -39
- package/dist/functions/language.js +3 -6
- package/dist/functions/level.js +20 -26
- package/dist/functions/levelGrid.js +81 -108
- package/dist/functions/log.js +6 -12
- package/dist/functions/logEntities.js +49 -59
- package/dist/functions/logMisc.js +183 -214
- package/dist/functions/map.js +10 -20
- package/dist/functions/math.js +16 -31
- package/dist/functions/merge.js +48 -51
- package/dist/functions/mergeTests.js +34 -37
- package/dist/functions/minimap.js +34 -46
- package/dist/functions/modFeatures.js +1 -4
- package/dist/functions/newArray.js +5 -8
- package/dist/functions/nextStage.js +63 -67
- package/dist/functions/npcDataStructures.js +9 -20
- package/dist/functions/npcs.js +37 -45
- package/dist/functions/pickupVariants.js +26 -39
- package/dist/functions/pickups.js +43 -59
- package/dist/functions/pickupsSpecific.js +76 -118
- package/dist/functions/pills.js +52 -72
- package/dist/functions/playerCenter.js +13 -16
- package/dist/functions/playerCollectibles.js +59 -79
- package/dist/functions/playerDataStructures.js +18 -29
- package/dist/functions/playerEffects.js +12 -19
- package/dist/functions/playerHealth.js +91 -113
- package/dist/functions/playerIndex.js +22 -33
- package/dist/functions/playerTrinkets.js +31 -43
- package/dist/functions/players.js +87 -126
- package/dist/functions/pocketItems.js +33 -43
- package/dist/functions/positionVelocity.js +23 -32
- package/dist/functions/pressurePlate.js +7 -10
- package/dist/functions/projectiles.js +11 -15
- package/dist/functions/random.js +8 -13
- package/dist/functions/readOnly.js +3 -8
- package/dist/functions/render.js +7 -12
- package/dist/functions/revive.js +38 -45
- package/dist/functions/rng.js +31 -44
- package/dist/functions/rockAlt.js +18 -22
- package/dist/functions/roomData.js +24 -40
- package/dist/functions/roomGrid.js +17 -25
- package/dist/functions/roomShape.js +39 -55
- package/dist/functions/roomShapeWalls.js +67 -71
- package/dist/functions/roomTransition.js +13 -17
- package/dist/functions/rooms.js +181 -244
- package/dist/functions/run.js +29 -39
- package/dist/functions/seeds.js +6 -10
- package/dist/functions/serialization.js +27 -34
- package/dist/functions/set.js +24 -40
- package/dist/functions/slots.js +18 -22
- package/dist/functions/sort.js +9 -15
- package/dist/functions/sound.js +12 -16
- package/dist/functions/spawnCollectible.js +21 -26
- package/dist/functions/sprites.js +16 -24
- package/dist/functions/stage.js +122 -164
- package/dist/functions/stats.js +37 -43
- package/dist/functions/storyBosses.js +36 -40
- package/dist/functions/string.js +19 -33
- package/dist/functions/table.js +21 -31
- package/dist/functions/tears.js +6 -14
- package/dist/functions/transformations.js +35 -42
- package/dist/functions/trinketGive.js +29 -36
- package/dist/functions/trinkets.js +45 -60
- package/dist/functions/tstlClass.js +11 -20
- package/dist/functions/types.js +22 -46
- package/dist/functions/ui.js +25 -40
- package/dist/functions/utils.js +22 -36
- package/dist/functions/vector.js +33 -46
- package/dist/functions/versusScreen.js +12 -18
- package/dist/functions/weighted.js +8 -12
- package/dist/index.js +150 -166
- package/dist/indexLua.js +151 -167
- package/dist/interfaces/ChargeBarSprites.js +1 -2
- package/dist/interfaces/Corner.js +1 -2
- package/dist/interfaces/CustomStageTSConfig.js +1 -2
- package/dist/interfaces/GridEntityCustomData.js +1 -2
- package/dist/interfaces/JSONRoomsFile.js +1 -2
- package/dist/interfaces/PlayerHealth.js +1 -2
- package/dist/interfaces/PlayerStats.js +2 -4
- package/dist/interfaces/PocketItemDescription.js +1 -2
- package/dist/interfaces/RoomDescription.js +1 -2
- package/dist/interfaces/SaveData.js +1 -2
- package/dist/interfaces/StageHistoryEntry.js +1 -2
- package/dist/interfaces/TSTLClassMetatable.js +1 -2
- package/dist/interfaces/TrinketSituation.js +1 -2
- package/dist/interfaces/private/AddCallbackParametersCustom.js +2 -4
- package/dist/interfaces/private/CustomStage.js +1 -2
- package/dist/interfaces/private/CustomTrapdoorDescription.js +1 -2
- package/dist/interfaces/private/ModUpgradedInterface.js +1 -2
- package/dist/isaacscript-common.lua +1 -1
- package/dist/maps/PHDPillConversionsMap.js +19 -22
- package/dist/maps/cardNameToTypeMap.js +205 -208
- package/dist/maps/characterNameToTypeMap.js +85 -88
- package/dist/maps/collectibleNameToTypeMap.js +5 -8
- package/dist/maps/defaultPlayerStatMap.js +10 -13
- package/dist/maps/entityTypeVariantToBossIDMap.js +3 -6
- package/dist/maps/falsePHDPillConversionsMap.js +33 -36
- package/dist/maps/gridEntityTypeToBrokenStateMap.js +15 -18
- package/dist/maps/gridEntityXMLMap.js +52 -55
- package/dist/maps/itemPoolTypeToItemPoolName.js +33 -36
- package/dist/maps/keyboardToStringMap.js +66 -69
- package/dist/maps/pillNameToEffectMap.js +83 -86
- package/dist/maps/roomNameToTypeMap.js +38 -41
- package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +9 -12
- package/dist/maps/transformationNameToPlayerFormMap.js +30 -33
- package/dist/maps/trinketNameToTypeMap.js +5 -8
- package/dist/objects/LRoomShapeToRectangles.js +22 -25
- package/dist/objects/backdropTypeToRockAltType.js +65 -68
- package/dist/objects/batteryNames.js +8 -11
- package/dist/objects/bombNames.js +11 -14
- package/dist/objects/bossIDToEntityTypeVariant.js +116 -119
- package/dist/objects/bossNamePNGFileNames.js +104 -107
- package/dist/objects/bossNames.js +105 -108
- package/dist/objects/bossPortraitPNGFileNames.js +104 -107
- package/dist/objects/cardDescriptions.js +101 -104
- package/dist/objects/cardNames.js +101 -104
- package/dist/objects/challengeBosses.js +49 -52
- package/dist/objects/challengeCharacters.js +49 -52
- package/dist/objects/challengeCollectibleTypes.js +160 -163
- package/dist/objects/challengeNames.js +49 -52
- package/dist/objects/challengeTrinketType.js +48 -51
- package/dist/objects/characterDamageMultipliers.js +44 -47
- package/dist/objects/characterNames.js +44 -47
- package/dist/objects/characterSpritePNGFileNames.js +44 -47
- package/dist/objects/characterStartingCollectibleTypes.js +49 -52
- package/dist/objects/characterStartingTrinketTypes.js +44 -47
- package/dist/objects/chestNames.js +15 -18
- package/dist/objects/coinNames.js +11 -14
- package/dist/objects/coinSubTypeToValue.js +11 -14
- package/dist/objects/collectibleDescriptions.js +725 -728
- package/dist/objects/collectibleNames.js +725 -728
- package/dist/objects/colors.js +1 -4
- package/dist/objects/directionNames.js +7 -10
- package/dist/objects/directionToDegrees.js +7 -10
- package/dist/objects/directionToMoveAction.js +7 -10
- package/dist/objects/directionToShootAction.js +7 -10
- package/dist/objects/directionToVector.js +9 -12
- package/dist/objects/doorSlotFlagToDoorSlot.js +11 -14
- package/dist/objects/doorSlotToDirection.js +11 -14
- package/dist/objects/doorSlotToDoorSlotFlag.js +11 -14
- package/dist/objects/gridEntityTypeToANM2Name.js +30 -33
- package/dist/objects/heartNames.js +16 -19
- package/dist/objects/isaacAPIClassTypeToBrand.js +8 -11
- package/dist/objects/isaacAPIClassTypeToFunctions.js +37 -40
- package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +9 -45
- package/dist/objects/kColors.js +1 -4
- package/dist/objects/keyNames.js +8 -11
- package/dist/objects/languageNames.js +9 -12
- package/dist/objects/oppositeDoorSlots.js +11 -14
- package/dist/objects/pillEffectClasses.js +53 -56
- package/dist/objects/pillEffectNames.js +53 -56
- package/dist/objects/pillEffectTypeToPillEffects.js +11 -14
- package/dist/objects/pillEffectTypes.js +53 -56
- package/dist/objects/playerNamePNGFileNames.js +44 -47
- package/dist/objects/playerPortraitPNGFileNames.js +44 -47
- package/dist/objects/roomShapeBounds.js +23 -26
- package/dist/objects/roomShapeCorners.js +128 -131
- package/dist/objects/roomShapeLayoutSizes.js +23 -26
- package/dist/objects/roomShapeToBottomRightPosition.js +17 -20
- package/dist/objects/roomShapeToDoorSlotCoordinates.js +78 -81
- package/dist/objects/roomShapeToDoorSlots.js +48 -51
- package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +82 -85
- package/dist/objects/roomShapeToGridWidth.js +14 -17
- package/dist/objects/roomShapeToTopLeftPosition.js +18 -21
- package/dist/objects/roomShapeVolumes.js +21 -24
- package/dist/objects/roomTypeNames.js +32 -35
- package/dist/objects/roomTypeSpecialGotoPrefixes.js +32 -35
- package/dist/objects/sackNames.js +6 -9
- package/dist/objects/slotNames.js +21 -24
- package/dist/objects/stageIDNames.js +33 -36
- package/dist/objects/stageToMusic.js +69 -72
- package/dist/objects/stageToStageID.js +90 -93
- package/dist/objects/stageTypeSuffixes.js +8 -11
- package/dist/objects/transformationNames.js +16 -19
- package/dist/objects/trinketDescriptions.js +192 -195
- package/dist/objects/trinketNames.js +192 -195
- package/dist/objects/versusScreenBackgroundColors.js +39 -42
- package/dist/objects/versusScreenDirtSpotColors.js +39 -42
- package/dist/patchErrorFunctions.js +4 -7
- package/dist/serialization.js +6 -9
- package/dist/sets/LRoomShapesSet.js +7 -10
- package/dist/sets/bigRoomShapesSet.js +10 -13
- package/dist/sets/bossSets.js +261 -264
- package/dist/sets/charactersThatStartWithAnActiveItemSet.js +14 -17
- package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +5 -8
- package/dist/sets/charactersWithFreeDevilDealsSet.js +3 -6
- package/dist/sets/charactersWithNoRedHeartsSet.js +11 -14
- package/dist/sets/charactersWithNoSoulHeartsSet.js +8 -11
- package/dist/sets/consoleCommandsSet.js +2 -5
- package/dist/sets/entitiesWithArmorSet.js +44 -47
- package/dist/sets/familiarsThatShootPlayerTearsSet.js +11 -14
- package/dist/sets/itemConfigCardTypesForCards.js +7 -10
- package/dist/sets/lostStyleCharactersSet.js +8 -11
- package/dist/sets/mineShaftRoomSubTypesSet.js +8 -11
- package/dist/sets/narrowRoomShapesSet.js +7 -10
- package/dist/sets/poopGridEntityXMLTypesSet.js +12 -15
- package/dist/sets/redHeartSubTypesSet.js +6 -9
- package/dist/sets/repentanceBossIDsSet.js +26 -29
- package/dist/sets/sinEntityTypesSet.js +10 -13
- package/dist/sets/singleUseActiveCollectibleTypesSet.js +11 -14
- package/dist/shaderCrashFix.js +4 -7
- package/dist/shouldFire.js +28 -58
- package/dist/types/AddSubtract.js +1 -2
- package/dist/types/AllButFirst.js +1 -2
- package/dist/types/AllButLast.js +1 -2
- package/dist/types/AnyClass.js +1 -2
- package/dist/types/AnyEntity.js +1 -2
- package/dist/types/AnyFunction.js +1 -2
- package/dist/types/AnyGridEntity.js +1 -2
- package/dist/types/CompositionTypeSatisfiesEnum.js +1 -2
- package/dist/types/ConversionHeartSubType.js +1 -2
- package/dist/types/Decrement.js +1 -2
- package/dist/types/ERange.js +1 -2
- package/dist/types/EntityID.js +1 -2
- package/dist/types/FunctionTuple.js +1 -2
- package/dist/types/GridEntityID.js +1 -2
- package/dist/types/HasFunction.js +1 -2
- package/dist/types/IRange.js +1 -2
- package/dist/types/Immutable.js +1 -2
- package/dist/types/Increment.js +1 -2
- package/dist/types/LowercaseKeys.js +1 -2
- package/dist/types/NaturalNumbersLessThan.js +1 -2
- package/dist/types/NaturalNumbersLessThanOrEqualTo.js +1 -2
- package/dist/types/ObjectValues.js +1 -2
- package/dist/types/PickingUpItem.js +15 -22
- package/dist/types/PickupIndex.js +1 -2
- package/dist/types/PlayerIndex.js +1 -2
- package/dist/types/PossibleStatType.js +1 -2
- package/dist/types/PublicInterface.js +1 -2
- package/dist/types/ReadonlyMap.js +1 -4
- package/dist/types/ReadonlyRecord.js +1 -2
- package/dist/types/ReadonlySet.js +1 -4
- package/dist/types/StartsWithLowercase.js +1 -2
- package/dist/types/StartsWithUppercase.js +1 -2
- package/dist/types/TSTLClass.js +1 -2
- package/dist/types/Tuple.js +1 -2
- package/dist/types/TupleKeys.js +1 -2
- package/dist/types/TupleToIntersection.js +1 -2
- package/dist/types/TupleToUnion.js +1 -2
- package/dist/types/TupleWithLengthBetween.js +1 -2
- package/dist/types/TupleWithMaxLength.js +1 -2
- package/dist/types/UnionToIntersection.js +1 -2
- package/dist/types/UppercaseKeys.js +1 -2
- package/dist/types/WeightedArray.js +1 -2
- package/dist/types/WidenLiteral.js +1 -2
- package/dist/types/Writable.js +1 -2
- package/dist/types/private/CallbackTuple.js +1 -2
- package/dist/types/private/ModUpgradedWithFeatures.js +1 -2
- package/package.json +3 -3
package/dist/functions/stage.js
CHANGED
|
@@ -1,59 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
exports.getStageIDName = getStageIDName;
|
|
11
|
-
exports.getStageType = getStageType;
|
|
12
|
-
exports.getStageTypeSuffix = getStageTypeSuffix;
|
|
13
|
-
exports.isFinalFloor = isFinalFloor;
|
|
14
|
-
exports.isRepentanceStage = isRepentanceStage;
|
|
15
|
-
exports.isStageWithNaturalDevilRoom = isStageWithNaturalDevilRoom;
|
|
16
|
-
exports.isStageWithRandomBossCollectible = isStageWithRandomBossCollectible;
|
|
17
|
-
exports.isStageWithSecretExitToDownpour = isStageWithSecretExitToDownpour;
|
|
18
|
-
exports.isStageWithSecretExitToMausoleum = isStageWithSecretExitToMausoleum;
|
|
19
|
-
exports.isStageWithSecretExitToMines = isStageWithSecretExitToMines;
|
|
20
|
-
exports.isStageWithShovelTrapdoors = isStageWithShovelTrapdoors;
|
|
21
|
-
exports.isStageWithStoryBoss = isStageWithStoryBoss;
|
|
22
|
-
exports.onAscent = onAscent;
|
|
23
|
-
exports.onCathedral = onCathedral;
|
|
24
|
-
exports.onChest = onChest;
|
|
25
|
-
exports.onDarkRoom = onDarkRoom;
|
|
26
|
-
exports.onEffectiveStage = onEffectiveStage;
|
|
27
|
-
exports.onFinalFloor = onFinalFloor;
|
|
28
|
-
exports.onFirstFloor = onFirstFloor;
|
|
29
|
-
exports.onRepentanceStage = onRepentanceStage;
|
|
30
|
-
exports.onSheol = onSheol;
|
|
31
|
-
exports.onStage = onStage;
|
|
32
|
-
exports.onStageOrHigher = onStageOrHigher;
|
|
33
|
-
exports.onStageOrLower = onStageOrLower;
|
|
34
|
-
exports.onStageType = onStageType;
|
|
35
|
-
exports.onStageWithNaturalDevilRoom = onStageWithNaturalDevilRoom;
|
|
36
|
-
exports.onStageWithRandomBossCollectible = onStageWithRandomBossCollectible;
|
|
37
|
-
exports.onStageWithSecretExitToDownpour = onStageWithSecretExitToDownpour;
|
|
38
|
-
exports.onStageWithSecretExitToMausoleum = onStageWithSecretExitToMausoleum;
|
|
39
|
-
exports.onStageWithSecretExitToMines = onStageWithSecretExitToMines;
|
|
40
|
-
exports.onStageWithShovelTrapdoors = onStageWithShovelTrapdoors;
|
|
41
|
-
exports.onStageWithStoryBoss = onStageWithStoryBoss;
|
|
42
|
-
exports.setStage = setStage;
|
|
43
|
-
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
44
|
-
const cachedClasses_1 = require("../core/cachedClasses");
|
|
45
|
-
const roomTypeSpecialGotoPrefixes_1 = require("../objects/roomTypeSpecialGotoPrefixes");
|
|
46
|
-
const stageIDNames_1 = require("../objects/stageIDNames");
|
|
47
|
-
const stageToStageID_1 = require("../objects/stageToStageID");
|
|
48
|
-
const stageTypeSuffixes_1 = require("../objects/stageTypeSuffixes");
|
|
49
|
-
const log_1 = require("./log");
|
|
50
|
-
const types_1 = require("./types");
|
|
51
|
-
const utils_1 = require("./utils");
|
|
1
|
+
import { GameStateFlag, LevelStage, RoomType, StageID, StageType, } from "isaac-typescript-definitions";
|
|
2
|
+
import { game } from "../core/cachedClasses";
|
|
3
|
+
import { ROOM_TYPE_SPECIAL_GOTO_PREFIXES } from "../objects/roomTypeSpecialGotoPrefixes";
|
|
4
|
+
import { STAGE_ID_NAMES } from "../objects/stageIDNames";
|
|
5
|
+
import { STAGE_TO_STAGE_ID, STAGE_TO_STAGE_ID_GREED_MODE, } from "../objects/stageToStageID";
|
|
6
|
+
import { STAGE_TYPE_SUFFIXES } from "../objects/stageTypeSuffixes";
|
|
7
|
+
import { log } from "./log";
|
|
8
|
+
import { asLevelStage } from "./types";
|
|
9
|
+
import { inRange } from "./utils";
|
|
52
10
|
/**
|
|
53
11
|
* Helper function that calculates what the stage type should be for the provided stage. This
|
|
54
12
|
* emulates what the game's internal code does.
|
|
55
13
|
*/
|
|
56
|
-
function calculateStageType(stage) {
|
|
14
|
+
export function calculateStageType(stage) {
|
|
57
15
|
// The following is the game's internal code to determine the floor type. (This came directly from
|
|
58
16
|
// Spider.)
|
|
59
17
|
/*
|
|
@@ -68,44 +26,44 @@ function calculateStageType(stage) {
|
|
|
68
26
|
if (Seed % 3 == 0 && NextStage < STAGE5)
|
|
69
27
|
StageType = STAGE_TYPE_AFTERBIRTH;
|
|
70
28
|
*/
|
|
71
|
-
const seeds =
|
|
29
|
+
const seeds = game.GetSeeds();
|
|
72
30
|
const stageSeed = seeds.GetStageSeed(stage);
|
|
73
31
|
if (stageSeed % 2 === 0) {
|
|
74
|
-
return
|
|
32
|
+
return StageType.WRATH_OF_THE_LAMB;
|
|
75
33
|
}
|
|
76
34
|
if (stageSeed % 3 === 0) {
|
|
77
|
-
return
|
|
35
|
+
return StageType.AFTERBIRTH;
|
|
78
36
|
}
|
|
79
|
-
return
|
|
37
|
+
return StageType.ORIGINAL;
|
|
80
38
|
}
|
|
81
39
|
/**
|
|
82
40
|
* Helper function that calculates what the Repentance stage type should be for the provided stage.
|
|
83
41
|
* This emulates what the game's internal code does.
|
|
84
42
|
*/
|
|
85
|
-
function calculateStageTypeRepentance(stage) {
|
|
43
|
+
export function calculateStageTypeRepentance(stage) {
|
|
86
44
|
// There is no alternate floor for Corpse.
|
|
87
|
-
if (stage ===
|
|
88
|
-
return
|
|
45
|
+
if (stage === LevelStage.WOMB_1 || stage === LevelStage.WOMB_2) {
|
|
46
|
+
return StageType.REPENTANCE;
|
|
89
47
|
}
|
|
90
48
|
// This algorithm is from Kilburn. We add one because the alt path is offset by 1 relative to the
|
|
91
49
|
// normal path.
|
|
92
|
-
const seeds =
|
|
93
|
-
const adjustedStage =
|
|
50
|
+
const seeds = game.GetSeeds();
|
|
51
|
+
const adjustedStage = asLevelStage(stage + 1);
|
|
94
52
|
const stageSeed = seeds.GetStageSeed(adjustedStage);
|
|
95
53
|
// Kilburn does not know why he divided the stage seed by 2 first.
|
|
96
54
|
const halfStageSeed = Math.floor(stageSeed / 2);
|
|
97
55
|
if (halfStageSeed % 2 === 0) {
|
|
98
|
-
return
|
|
56
|
+
return StageType.REPENTANCE_B;
|
|
99
57
|
}
|
|
100
|
-
return
|
|
58
|
+
return StageType.REPENTANCE;
|
|
101
59
|
}
|
|
102
60
|
/**
|
|
103
61
|
* Helper function to account for Repentance floors being offset by 1. For example, Downpour 2 is
|
|
104
62
|
* the third level of the run, but the game considers it to have a stage of 2. This function will
|
|
105
63
|
* consider Downpour 2 to have a stage of 3.
|
|
106
64
|
*/
|
|
107
|
-
function getEffectiveStage() {
|
|
108
|
-
const level =
|
|
65
|
+
export function getEffectiveStage() {
|
|
66
|
+
const level = game.GetLevel();
|
|
109
67
|
const stage = level.GetStage();
|
|
110
68
|
if (onRepentanceStage()) {
|
|
111
69
|
return stage + 1;
|
|
@@ -122,9 +80,9 @@ function getEffectiveStage() {
|
|
|
122
80
|
* the `goto` command (instead of `d`) if the room type is
|
|
123
81
|
* `RoomType.DEFAULT` (1). False by default.
|
|
124
82
|
*/
|
|
125
|
-
function getGotoCommand(roomType, roomVariant, useSpecialRoomsForRoomTypeDefault = false) {
|
|
126
|
-
const isNormalRoom = roomType ===
|
|
127
|
-
const roomTypeSpecialGotoPrefix =
|
|
83
|
+
export function getGotoCommand(roomType, roomVariant, useSpecialRoomsForRoomTypeDefault = false) {
|
|
84
|
+
const isNormalRoom = roomType === RoomType.DEFAULT && !useSpecialRoomsForRoomTypeDefault;
|
|
85
|
+
const roomTypeSpecialGotoPrefix = ROOM_TYPE_SPECIAL_GOTO_PREFIXES[roomType];
|
|
128
86
|
const prefix = isNormalRoom ? "d" : `s.${roomTypeSpecialGotoPrefix}`;
|
|
129
87
|
return `goto ${prefix}.${roomVariant}`;
|
|
130
88
|
}
|
|
@@ -139,25 +97,25 @@ function getGotoCommand(roomType, roomVariant, useSpecialRoomsForRoomTypeDefault
|
|
|
139
97
|
* @param stage Optional. If not specified, the current stage will be used.
|
|
140
98
|
* @param stageType Optional. If not specified, the current stage type will be used.
|
|
141
99
|
*/
|
|
142
|
-
function getLevelName(stage, stageType) {
|
|
143
|
-
const level =
|
|
100
|
+
export function getLevelName(stage, stageType) {
|
|
101
|
+
const level = game.GetLevel();
|
|
144
102
|
stage ??= level.GetStage();
|
|
145
103
|
stageType ??= level.GetStageType();
|
|
146
104
|
const stageID = getStageID(stage, stageType);
|
|
147
105
|
const stageIDName = getStageIDName(stageID);
|
|
148
106
|
let suffix;
|
|
149
107
|
switch (stage) {
|
|
150
|
-
case
|
|
151
|
-
case
|
|
152
|
-
case
|
|
153
|
-
case
|
|
108
|
+
case LevelStage.BASEMENT_1:
|
|
109
|
+
case LevelStage.CAVES_1:
|
|
110
|
+
case LevelStage.DEPTHS_1:
|
|
111
|
+
case LevelStage.WOMB_1: {
|
|
154
112
|
suffix = " 1";
|
|
155
113
|
break;
|
|
156
114
|
}
|
|
157
|
-
case
|
|
158
|
-
case
|
|
159
|
-
case
|
|
160
|
-
case
|
|
115
|
+
case LevelStage.BASEMENT_2:
|
|
116
|
+
case LevelStage.CAVES_2:
|
|
117
|
+
case LevelStage.DEPTHS_2:
|
|
118
|
+
case LevelStage.WOMB_2: {
|
|
161
119
|
suffix = " 2";
|
|
162
120
|
break;
|
|
163
121
|
}
|
|
@@ -169,8 +127,8 @@ function getLevelName(stage, stageType) {
|
|
|
169
127
|
return stageIDName + suffix;
|
|
170
128
|
}
|
|
171
129
|
/** Alias for the `Level.GetStage` method. */
|
|
172
|
-
function getStage() {
|
|
173
|
-
const level =
|
|
130
|
+
export function getStage() {
|
|
131
|
+
const level = game.GetLevel();
|
|
174
132
|
return level.GetStage();
|
|
175
133
|
}
|
|
176
134
|
/**
|
|
@@ -187,18 +145,18 @@ function getStage() {
|
|
|
187
145
|
* @param stageType Optional. If not specified, the stage type corresponding to the current floor
|
|
188
146
|
* will be used.
|
|
189
147
|
*/
|
|
190
|
-
function getStageID(stage, stageType) {
|
|
191
|
-
const level =
|
|
148
|
+
export function getStageID(stage, stageType) {
|
|
149
|
+
const level = game.GetLevel();
|
|
192
150
|
stage ??= level.GetStage();
|
|
193
151
|
stageType ??= level.GetStageType();
|
|
194
|
-
if (
|
|
195
|
-
const stageTypeToStageID =
|
|
152
|
+
if (game.IsGreedMode()) {
|
|
153
|
+
const stageTypeToStageID = STAGE_TO_STAGE_ID_GREED_MODE.get(stage);
|
|
196
154
|
if (stageTypeToStageID === undefined) {
|
|
197
|
-
return
|
|
155
|
+
return StageID.SPECIAL_ROOMS;
|
|
198
156
|
}
|
|
199
157
|
return stageTypeToStageID[stageType];
|
|
200
158
|
}
|
|
201
|
-
const stageTypeToStageID =
|
|
159
|
+
const stageTypeToStageID = STAGE_TO_STAGE_ID[stage];
|
|
202
160
|
return stageTypeToStageID[stageType];
|
|
203
161
|
}
|
|
204
162
|
/**
|
|
@@ -209,12 +167,12 @@ function getStageID(stage, stageType) {
|
|
|
209
167
|
* Note that unlike "stages.xml", Blue Womb is specified with a name of "Blue Womb" instead of
|
|
210
168
|
* "???".
|
|
211
169
|
*/
|
|
212
|
-
function getStageIDName(stageID) {
|
|
213
|
-
return
|
|
170
|
+
export function getStageIDName(stageID) {
|
|
171
|
+
return STAGE_ID_NAMES[stageID];
|
|
214
172
|
}
|
|
215
173
|
/** Alias for the `Level.GetStageType` method. */
|
|
216
|
-
function getStageType() {
|
|
217
|
-
const level =
|
|
174
|
+
export function getStageType() {
|
|
175
|
+
const level = game.GetLevel();
|
|
218
176
|
return level.GetStageType();
|
|
219
177
|
}
|
|
220
178
|
/**
|
|
@@ -223,8 +181,8 @@ function getStageType() {
|
|
|
223
181
|
* console command to go to Downpour is "stage 1c", so this function converts `StageType.REPENTANCE`
|
|
224
182
|
* to "c".
|
|
225
183
|
*/
|
|
226
|
-
function getStageTypeSuffix(stageType) {
|
|
227
|
-
return
|
|
184
|
+
export function getStageTypeSuffix(stageType) {
|
|
185
|
+
return STAGE_TYPE_SUFFIXES[stageType];
|
|
228
186
|
}
|
|
229
187
|
/**
|
|
230
188
|
* Returns whether the provided stage and stage type represent a "final floor". This is defined as a
|
|
@@ -234,19 +192,19 @@ function getStageTypeSuffix(stageType) {
|
|
|
234
192
|
* the Secret Room and a 50% chance of teleporting the player to the Super Secret Room, because the
|
|
235
193
|
* I AM ERROR room is never entered into the list of possibilities.
|
|
236
194
|
*/
|
|
237
|
-
function isFinalFloor(stage, stageType) {
|
|
238
|
-
return (stage ===
|
|
239
|
-
|| stage ===
|
|
240
|
-
|| stage ===
|
|
241
|
-
|| (stage ===
|
|
195
|
+
export function isFinalFloor(stage, stageType) {
|
|
196
|
+
return (stage === LevelStage.DARK_ROOM_CHEST
|
|
197
|
+
|| stage === LevelStage.VOID
|
|
198
|
+
|| stage === LevelStage.HOME
|
|
199
|
+
|| (stage === LevelStage.WOMB_2 && isRepentanceStage(stageType)) // Corpse 2
|
|
242
200
|
);
|
|
243
201
|
}
|
|
244
202
|
/**
|
|
245
203
|
* Helper function to check if the provided stage type is equal to `StageType.REPENTANCE` or
|
|
246
204
|
* `StageType.REPENTANCE_B`.
|
|
247
205
|
*/
|
|
248
|
-
function isRepentanceStage(stageType) {
|
|
249
|
-
return (stageType ===
|
|
206
|
+
export function isRepentanceStage(stageType) {
|
|
207
|
+
return (stageType === StageType.REPENTANCE || stageType === StageType.REPENTANCE_B);
|
|
250
208
|
}
|
|
251
209
|
/**
|
|
252
210
|
* Helper function to check if the provided effective stage is one that has the possibility to grant
|
|
@@ -256,9 +214,9 @@ function isRepentanceStage(stageType) {
|
|
|
256
214
|
* stage (e.g. from the `getEffectiveStage` helper function) and not the absolute stage (e.g. from
|
|
257
215
|
* the `Level.GetStage` method).
|
|
258
216
|
*/
|
|
259
|
-
function isStageWithNaturalDevilRoom(effectiveStage) {
|
|
260
|
-
return (
|
|
261
|
-
&& effectiveStage !==
|
|
217
|
+
export function isStageWithNaturalDevilRoom(effectiveStage) {
|
|
218
|
+
return (inRange(effectiveStage, LevelStage.BASEMENT_2, LevelStage.WOMB_2)
|
|
219
|
+
&& effectiveStage !== LevelStage.BLUE_WOMB);
|
|
262
220
|
}
|
|
263
221
|
/**
|
|
264
222
|
* Helper function to check if the provided stage is one that will have a random collectible drop
|
|
@@ -271,42 +229,42 @@ function isStageWithNaturalDevilRoom(effectiveStage) {
|
|
|
271
229
|
* considered to be a stage that has a random boss collectible since all of the non-Delirium Boss
|
|
272
230
|
* Rooms will drop random boss collectibles.
|
|
273
231
|
*/
|
|
274
|
-
function isStageWithRandomBossCollectible(stage) {
|
|
275
|
-
return !isStageWithStoryBoss(stage) || stage ===
|
|
232
|
+
export function isStageWithRandomBossCollectible(stage) {
|
|
233
|
+
return !isStageWithStoryBoss(stage) || stage === LevelStage.VOID;
|
|
276
234
|
}
|
|
277
235
|
/**
|
|
278
236
|
* Helper function to check if the provided stage will spawn a locked door to Downpour/Dross after
|
|
279
237
|
* defeating the boss.
|
|
280
238
|
*/
|
|
281
|
-
function isStageWithSecretExitToDownpour(stage) {
|
|
282
|
-
return stage ===
|
|
239
|
+
export function isStageWithSecretExitToDownpour(stage) {
|
|
240
|
+
return stage === LevelStage.BASEMENT_1 || stage === LevelStage.BASEMENT_2;
|
|
283
241
|
}
|
|
284
242
|
/**
|
|
285
243
|
* Helper function to check if the provided stage and stage type will spawn a spiked door to
|
|
286
244
|
* Mausoleum/Gehenna after defeating the boss.
|
|
287
245
|
*/
|
|
288
|
-
function isStageWithSecretExitToMausoleum(stage, stageType) {
|
|
246
|
+
export function isStageWithSecretExitToMausoleum(stage, stageType) {
|
|
289
247
|
const repentanceStage = isRepentanceStage(stageType);
|
|
290
|
-
return ((stage ===
|
|
291
|
-
|| (stage ===
|
|
248
|
+
return ((stage === LevelStage.DEPTHS_1 && !repentanceStage)
|
|
249
|
+
|| (stage === LevelStage.CAVES_2 && repentanceStage));
|
|
292
250
|
}
|
|
293
251
|
/**
|
|
294
252
|
* Helper function to check if the provided stage and stage type will spawn a wooden door to
|
|
295
253
|
* Mines/Ashpit after defeating the boss.
|
|
296
254
|
*/
|
|
297
|
-
function isStageWithSecretExitToMines(stage, stageType) {
|
|
255
|
+
export function isStageWithSecretExitToMines(stage, stageType) {
|
|
298
256
|
const repentanceStage = isRepentanceStage(stageType);
|
|
299
|
-
return ((stage ===
|
|
300
|
-
|| (stage ===
|
|
257
|
+
return ((stage === LevelStage.CAVES_1 && !repentanceStage)
|
|
258
|
+
|| (stage === LevelStage.BASEMENT_2 && repentanceStage));
|
|
301
259
|
}
|
|
302
260
|
/**
|
|
303
261
|
* Helper function to check if the current stage is one that would create a trapdoor if We Need to
|
|
304
262
|
* Go Deeper was used.
|
|
305
263
|
*/
|
|
306
|
-
function isStageWithShovelTrapdoors(stage, stageType) {
|
|
264
|
+
export function isStageWithShovelTrapdoors(stage, stageType) {
|
|
307
265
|
const repentanceStage = isRepentanceStage(stageType);
|
|
308
|
-
return (stage <
|
|
309
|
-
|| (stage ===
|
|
266
|
+
return (stage < LevelStage.WOMB_2
|
|
267
|
+
|| (stage === LevelStage.WOMB_2 && !repentanceStage));
|
|
310
268
|
}
|
|
311
269
|
/**
|
|
312
270
|
* Helper function to check if the provided stage is one with a story boss. Specifically, this is
|
|
@@ -314,35 +272,35 @@ function isStageWithShovelTrapdoors(stage, stageType) {
|
|
|
314
272
|
* (Isaac), Dark Room (Lamb), The Chest (Blue Baby), The Void (Delirium), and Home (Dogma / The
|
|
315
273
|
* Beast).
|
|
316
274
|
*/
|
|
317
|
-
function isStageWithStoryBoss(stage) {
|
|
318
|
-
return stage ===
|
|
275
|
+
export function isStageWithStoryBoss(stage) {
|
|
276
|
+
return stage === LevelStage.DEPTHS_2 || stage >= LevelStage.WOMB_2;
|
|
319
277
|
}
|
|
320
278
|
/**
|
|
321
279
|
* Helper function to check if the player has taken Dad's Note. This sets the game state flag of
|
|
322
280
|
* `GameStateFlag.BACKWARDS_PATH` and causes floor generation to change.
|
|
323
281
|
*/
|
|
324
|
-
function onAscent() {
|
|
325
|
-
return
|
|
282
|
+
export function onAscent() {
|
|
283
|
+
return game.GetStateFlag(GameStateFlag.BACKWARDS_PATH);
|
|
326
284
|
}
|
|
327
|
-
function onCathedral() {
|
|
328
|
-
const level =
|
|
285
|
+
export function onCathedral() {
|
|
286
|
+
const level = game.GetLevel();
|
|
329
287
|
const stage = level.GetStage();
|
|
330
288
|
const stageType = level.GetStageType();
|
|
331
|
-
return (stage ===
|
|
332
|
-
&& stageType ===
|
|
289
|
+
return (stage === LevelStage.SHEOL_CATHEDRAL
|
|
290
|
+
&& stageType === StageType.WRATH_OF_THE_LAMB);
|
|
333
291
|
}
|
|
334
|
-
function onChest() {
|
|
335
|
-
const level =
|
|
292
|
+
export function onChest() {
|
|
293
|
+
const level = game.GetLevel();
|
|
336
294
|
const stage = level.GetStage();
|
|
337
295
|
const stageType = level.GetStageType();
|
|
338
|
-
return (stage ===
|
|
339
|
-
&& stageType ===
|
|
296
|
+
return (stage === LevelStage.DARK_ROOM_CHEST
|
|
297
|
+
&& stageType === StageType.WRATH_OF_THE_LAMB);
|
|
340
298
|
}
|
|
341
|
-
function onDarkRoom() {
|
|
342
|
-
const level =
|
|
299
|
+
export function onDarkRoom() {
|
|
300
|
+
const level = game.GetLevel();
|
|
343
301
|
const stage = level.GetStage();
|
|
344
302
|
const stageType = level.GetStageType();
|
|
345
|
-
return (stage ===
|
|
303
|
+
return (stage === LevelStage.DARK_ROOM_CHEST && stageType === StageType.ORIGINAL);
|
|
346
304
|
}
|
|
347
305
|
/**
|
|
348
306
|
* Helper function to check if the current stage matches one of the given stages. This uses the
|
|
@@ -350,7 +308,7 @@ function onDarkRoom() {
|
|
|
350
308
|
*
|
|
351
309
|
* This function is variadic, which means you can pass as many stages as you want to match for.
|
|
352
310
|
*/
|
|
353
|
-
function onEffectiveStage(...effectiveStages) {
|
|
311
|
+
export function onEffectiveStage(...effectiveStages) {
|
|
354
312
|
const thisEffectiveStage = getEffectiveStage();
|
|
355
313
|
return effectiveStages.includes(thisEffectiveStage);
|
|
356
314
|
}
|
|
@@ -362,8 +320,8 @@ function onEffectiveStage(...effectiveStages) {
|
|
|
362
320
|
* the Secret Room and a 50% chance of teleporting the player to the Super Secret Room, because the
|
|
363
321
|
* I AM ERROR room is never entered into the list of possibilities.
|
|
364
322
|
*/
|
|
365
|
-
function onFinalFloor() {
|
|
366
|
-
const level =
|
|
323
|
+
export function onFinalFloor() {
|
|
324
|
+
const level = game.GetLevel();
|
|
367
325
|
const stage = level.GetStage();
|
|
368
326
|
const stageType = level.GetStageType();
|
|
369
327
|
return isFinalFloor(stage, stageType);
|
|
@@ -374,45 +332,45 @@ function onFinalFloor() {
|
|
|
374
332
|
* This is tricky to determine because we have to handle the cases of Downpour/Dross 1 not being the
|
|
375
333
|
* first floor and The Ascent.
|
|
376
334
|
*/
|
|
377
|
-
function onFirstFloor() {
|
|
335
|
+
export function onFirstFloor() {
|
|
378
336
|
const effectiveStage = getEffectiveStage();
|
|
379
337
|
const isOnAscent = onAscent();
|
|
380
|
-
return effectiveStage ===
|
|
338
|
+
return effectiveStage === LevelStage.BASEMENT_1 && !isOnAscent;
|
|
381
339
|
}
|
|
382
340
|
/**
|
|
383
341
|
* Helper function to check if the current stage type is equal to `StageType.REPENTANCE` or
|
|
384
342
|
* `StageType.REPENTANCE_B`.
|
|
385
343
|
*/
|
|
386
|
-
function onRepentanceStage() {
|
|
387
|
-
const level =
|
|
344
|
+
export function onRepentanceStage() {
|
|
345
|
+
const level = game.GetLevel();
|
|
388
346
|
const stageType = level.GetStageType();
|
|
389
347
|
return isRepentanceStage(stageType);
|
|
390
348
|
}
|
|
391
|
-
function onSheol() {
|
|
392
|
-
const level =
|
|
349
|
+
export function onSheol() {
|
|
350
|
+
const level = game.GetLevel();
|
|
393
351
|
const stage = level.GetStage();
|
|
394
352
|
const stageType = level.GetStageType();
|
|
395
|
-
return (stage ===
|
|
353
|
+
return (stage === LevelStage.SHEOL_CATHEDRAL && stageType === StageType.ORIGINAL);
|
|
396
354
|
}
|
|
397
355
|
/**
|
|
398
356
|
* Helper function to check if the current stage matches one of the given stages.
|
|
399
357
|
*
|
|
400
358
|
* This function is variadic, which means you can pass as many stages as you want to match for.
|
|
401
359
|
*/
|
|
402
|
-
function onStage(...stages) {
|
|
403
|
-
const level =
|
|
360
|
+
export function onStage(...stages) {
|
|
361
|
+
const level = game.GetLevel();
|
|
404
362
|
const thisStage = level.GetStage();
|
|
405
363
|
return stages.includes(thisStage);
|
|
406
364
|
}
|
|
407
365
|
/** Helper function to check if the current stage is equal to or higher than the given stage. */
|
|
408
|
-
function onStageOrHigher(stage) {
|
|
409
|
-
const level =
|
|
366
|
+
export function onStageOrHigher(stage) {
|
|
367
|
+
const level = game.GetLevel();
|
|
410
368
|
const thisStage = level.GetStage();
|
|
411
369
|
return thisStage >= stage;
|
|
412
370
|
}
|
|
413
371
|
/** Helper function to check if the current stage is equal to or higher than the given stage. */
|
|
414
|
-
function onStageOrLower(stage) {
|
|
415
|
-
const level =
|
|
372
|
+
export function onStageOrLower(stage) {
|
|
373
|
+
const level = game.GetLevel();
|
|
416
374
|
const thisStage = level.GetStage();
|
|
417
375
|
return thisStage <= stage;
|
|
418
376
|
}
|
|
@@ -421,8 +379,8 @@ function onStageOrLower(stage) {
|
|
|
421
379
|
*
|
|
422
380
|
* This function is variadic, which means you can pass as many room types as you want to match for.
|
|
423
381
|
*/
|
|
424
|
-
function onStageType(...stageTypes) {
|
|
425
|
-
const level =
|
|
382
|
+
export function onStageType(...stageTypes) {
|
|
383
|
+
const level = game.GetLevel();
|
|
426
384
|
const thisStageType = level.GetStageType();
|
|
427
385
|
return stageTypes.includes(thisStageType);
|
|
428
386
|
}
|
|
@@ -430,7 +388,7 @@ function onStageType(...stageTypes) {
|
|
|
430
388
|
* Helper function to check if the current stage is one that has the possibility to grant a natural
|
|
431
389
|
* Devil Room or Angel Room after killing the boss.
|
|
432
390
|
*/
|
|
433
|
-
function onStageWithNaturalDevilRoom() {
|
|
391
|
+
export function onStageWithNaturalDevilRoom() {
|
|
434
392
|
const effectiveStage = getEffectiveStage();
|
|
435
393
|
return isStageWithNaturalDevilRoom(effectiveStage);
|
|
436
394
|
}
|
|
@@ -445,8 +403,8 @@ function onStageWithNaturalDevilRoom() {
|
|
|
445
403
|
* considered to be a stage that has a random boss collectible since all of the non-Delirium Boss
|
|
446
404
|
* Rooms will drop random boss collectibles.
|
|
447
405
|
*/
|
|
448
|
-
function onStageWithRandomBossCollectible() {
|
|
449
|
-
const level =
|
|
406
|
+
export function onStageWithRandomBossCollectible() {
|
|
407
|
+
const level = game.GetLevel();
|
|
450
408
|
const stage = level.GetStage();
|
|
451
409
|
return isStageWithRandomBossCollectible(stage);
|
|
452
410
|
}
|
|
@@ -454,8 +412,8 @@ function onStageWithRandomBossCollectible() {
|
|
|
454
412
|
* Helper function to check if the current stage will spawn a locked door to Downpour/Dross after
|
|
455
413
|
* defeating the boss.
|
|
456
414
|
*/
|
|
457
|
-
function onStageWithSecretExitToDownpour() {
|
|
458
|
-
const level =
|
|
415
|
+
export function onStageWithSecretExitToDownpour() {
|
|
416
|
+
const level = game.GetLevel();
|
|
459
417
|
const stage = level.GetStage();
|
|
460
418
|
return isStageWithSecretExitToDownpour(stage);
|
|
461
419
|
}
|
|
@@ -463,8 +421,8 @@ function onStageWithSecretExitToDownpour() {
|
|
|
463
421
|
* Helper function to check if the current stage will spawn a spiked door to Mausoleum/Gehenna after
|
|
464
422
|
* defeating the boss.
|
|
465
423
|
*/
|
|
466
|
-
function onStageWithSecretExitToMausoleum() {
|
|
467
|
-
const level =
|
|
424
|
+
export function onStageWithSecretExitToMausoleum() {
|
|
425
|
+
const level = game.GetLevel();
|
|
468
426
|
const stage = level.GetStage();
|
|
469
427
|
const stageType = level.GetStageType();
|
|
470
428
|
return isStageWithSecretExitToMausoleum(stage, stageType);
|
|
@@ -473,8 +431,8 @@ function onStageWithSecretExitToMausoleum() {
|
|
|
473
431
|
* Helper function to check if the current stage will spawn a wooden door to Mines/Ashpit after
|
|
474
432
|
* defeating the boss.
|
|
475
433
|
*/
|
|
476
|
-
function onStageWithSecretExitToMines() {
|
|
477
|
-
const level =
|
|
434
|
+
export function onStageWithSecretExitToMines() {
|
|
435
|
+
const level = game.GetLevel();
|
|
478
436
|
const stage = level.GetStage();
|
|
479
437
|
const stageType = level.GetStageType();
|
|
480
438
|
return isStageWithSecretExitToMines(stage, stageType);
|
|
@@ -483,8 +441,8 @@ function onStageWithSecretExitToMines() {
|
|
|
483
441
|
* Helper function to check if the current stage is one that would create a trapdoor if We Need to
|
|
484
442
|
* Go Deeper was used.
|
|
485
443
|
*/
|
|
486
|
-
function onStageWithShovelTrapdoors() {
|
|
487
|
-
const level =
|
|
444
|
+
export function onStageWithShovelTrapdoors() {
|
|
445
|
+
const level = game.GetLevel();
|
|
488
446
|
const stage = level.GetStage();
|
|
489
447
|
const stageType = level.GetStageType();
|
|
490
448
|
return isStageWithShovelTrapdoors(stage, stageType);
|
|
@@ -495,8 +453,8 @@ function onStageWithShovelTrapdoors() {
|
|
|
495
453
|
* (Isaac), Dark Room (Lamb), The Chest (Blue Baby), The Void (Delirium), and Home (Dogma / The
|
|
496
454
|
* Beast).
|
|
497
455
|
*/
|
|
498
|
-
function onStageWithStoryBoss() {
|
|
499
|
-
const level =
|
|
456
|
+
export function onStageWithStoryBoss() {
|
|
457
|
+
const level = game.GetLevel();
|
|
500
458
|
const stage = level.GetStage();
|
|
501
459
|
return isStageWithStoryBoss(stage);
|
|
502
460
|
}
|
|
@@ -517,15 +475,15 @@ function onStageWithStoryBoss() {
|
|
|
517
475
|
* true if you are warping to the same stage but a different stage type (or else the
|
|
518
476
|
* floor layout will be identical to the old floor).
|
|
519
477
|
*/
|
|
520
|
-
function setStage(stage, stageType, reseed = false) {
|
|
478
|
+
export function setStage(stage, stageType, reseed = false) {
|
|
521
479
|
// Build the command that will take us to the next floor.
|
|
522
480
|
const stageTypeSuffix = getStageTypeSuffix(stageType);
|
|
523
481
|
const command = `stage ${stage}${stageTypeSuffix}`;
|
|
524
|
-
|
|
482
|
+
log(`Warping to a stage with a console command of: ${command}`);
|
|
525
483
|
Isaac.ExecuteCommand(command);
|
|
526
484
|
if (reseed) {
|
|
527
485
|
// Doing a "reseed" immediately after a "stage" command won't mess anything up.
|
|
528
|
-
|
|
486
|
+
log("Reseeding the floor with a console command of: reseed");
|
|
529
487
|
Isaac.ExecuteCommand("reseed");
|
|
530
488
|
}
|
|
531
489
|
}
|