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/bosses.js
CHANGED
|
@@ -1,42 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const bossNames_1 = require("../objects/bossNames");
|
|
24
|
-
const bossSets_1 = require("../sets/bossSets");
|
|
25
|
-
const repentanceBossIDsSet_1 = require("../sets/repentanceBossIDsSet");
|
|
26
|
-
const sinEntityTypesSet_1 = require("../sets/sinEntityTypesSet");
|
|
27
|
-
const ReadonlySet_1 = require("../types/ReadonlySet");
|
|
28
|
-
const entities_1 = require("./entities");
|
|
29
|
-
const entitiesSpecific_1 = require("./entitiesSpecific");
|
|
30
|
-
const npcs_1 = require("./npcs");
|
|
31
|
-
const rng_1 = require("./rng");
|
|
32
|
-
const rooms_1 = require("./rooms");
|
|
33
|
-
const utils_1 = require("./utils");
|
|
34
|
-
const BOSSES_THAT_REQUIRE_MULTIPLE_SPAWNS = new ReadonlySet_1.ReadonlySet([
|
|
35
|
-
isaac_typescript_definitions_1.EntityType.LARRY_JR, // 19 (and The Hollow / Tuff Twins / The Shell)
|
|
36
|
-
isaac_typescript_definitions_1.EntityType.CHUB, // 28 (and C.H.A.D. / The Carrion Queen)
|
|
37
|
-
isaac_typescript_definitions_1.EntityType.LOKI, // 69 (only for Lokii)
|
|
38
|
-
isaac_typescript_definitions_1.EntityType.GURGLING, // 237 (and Turdling)
|
|
39
|
-
isaac_typescript_definitions_1.EntityType.TURDLET, // 918
|
|
1
|
+
import { BossID, EntityType, LokiVariant, UltraGreedVariant, } from "isaac-typescript-definitions";
|
|
2
|
+
import { game } from "../core/cachedClasses";
|
|
3
|
+
import { VectorZero } from "../core/constants";
|
|
4
|
+
import { ENTITY_TYPE_VARIANT_TO_BOSS_ID_MAP } from "../maps/entityTypeVariantToBossIDMap";
|
|
5
|
+
import { BOSS_ID_TO_ENTITY_TYPE_VARIANT } from "../objects/bossIDToEntityTypeVariant";
|
|
6
|
+
import { BOSS_NAMES, DEFAULT_BOSS_NAME } from "../objects/bossNames";
|
|
7
|
+
import { ALL_BOSSES, BOSS_ID_TO_STAGE_IDS, NON_STORY_BOSSES, STAGE_ID_TO_BOSS_IDS, STAGE_TO_COMBINED_BOSS_SET_MAP, } from "../sets/bossSets";
|
|
8
|
+
import { REPENTANCE_ONLY_BOSS_IDS_SET } from "../sets/repentanceBossIDsSet";
|
|
9
|
+
import { SIN_ENTITY_TYPES_SET } from "../sets/sinEntityTypesSet";
|
|
10
|
+
import { ReadonlySet } from "../types/ReadonlySet";
|
|
11
|
+
import { doesEntityExist } from "./entities";
|
|
12
|
+
import { getNPCs, spawnNPC } from "./entitiesSpecific";
|
|
13
|
+
import { getAliveNPCs } from "./npcs";
|
|
14
|
+
import { isRNG } from "./rng";
|
|
15
|
+
import { inBeastRoom, inDogmaRoom } from "./rooms";
|
|
16
|
+
import { repeat } from "./utils";
|
|
17
|
+
const BOSSES_THAT_REQUIRE_MULTIPLE_SPAWNS = new ReadonlySet([
|
|
18
|
+
EntityType.LARRY_JR, // 19 (and The Hollow / Tuff Twins / The Shell)
|
|
19
|
+
EntityType.CHUB, // 28 (and C.H.A.D. / The Carrion Queen)
|
|
20
|
+
EntityType.LOKI, // 69 (only for Lokii)
|
|
21
|
+
EntityType.GURGLING, // 237 (and Turdling)
|
|
22
|
+
EntityType.TURDLET, // 918
|
|
40
23
|
]);
|
|
41
24
|
const DEFAULT_BOSS_MULTI_SEGMENTS = 4;
|
|
42
25
|
/**
|
|
@@ -53,8 +36,8 @@ const DEFAULT_BOSS_MULTI_SEGMENTS = 4;
|
|
|
53
36
|
* is -1, which matches every sub-type.
|
|
54
37
|
* @param ignoreFriendly Optional. Default is false.
|
|
55
38
|
*/
|
|
56
|
-
function getAliveBosses(entityType = -1, variant = -1, subType = -1, ignoreFriendly = false) {
|
|
57
|
-
const aliveNPCs =
|
|
39
|
+
export function getAliveBosses(entityType = -1, variant = -1, subType = -1, ignoreFriendly = false) {
|
|
40
|
+
const aliveNPCs = getAliveNPCs(entityType, variant, subType, ignoreFriendly);
|
|
58
41
|
return aliveNPCs.filter((aliveNPC) => aliveNPC.IsBoss());
|
|
59
42
|
}
|
|
60
43
|
/**
|
|
@@ -74,16 +57,16 @@ function getAliveBosses(entityType = -1, variant = -1, subType = -1, ignoreFrien
|
|
|
74
57
|
*
|
|
75
58
|
* Also see the `getAllNonStoryBosses` function.
|
|
76
59
|
*/
|
|
77
|
-
function getAllBosses() {
|
|
78
|
-
return
|
|
60
|
+
export function getAllBosses() {
|
|
61
|
+
return ALL_BOSSES;
|
|
79
62
|
}
|
|
80
63
|
/**
|
|
81
64
|
* Helper function to get an array with every boss in the game. This is derived from the `BossID`
|
|
82
65
|
* enum. This is the same thing as the `getAllBosses` helper function, but with story bosses
|
|
83
66
|
* filtered out.
|
|
84
67
|
*/
|
|
85
|
-
function getAllNonStoryBosses() {
|
|
86
|
-
return
|
|
68
|
+
export function getAllNonStoryBosses() {
|
|
69
|
+
return NON_STORY_BOSSES;
|
|
87
70
|
}
|
|
88
71
|
/**
|
|
89
72
|
* Helper function to get all of the bosses in the room.
|
|
@@ -96,8 +79,8 @@ function getAllNonStoryBosses() {
|
|
|
96
79
|
* is -1, which matches every sub-type.
|
|
97
80
|
* @param ignoreFriendly Optional. Default is false.
|
|
98
81
|
*/
|
|
99
|
-
function getBosses(entityType, variant, subType, ignoreFriendly = false) {
|
|
100
|
-
const npcs =
|
|
82
|
+
export function getBosses(entityType, variant, subType, ignoreFriendly = false) {
|
|
83
|
+
const npcs = getNPCs(entityType, variant, subType, ignoreFriendly);
|
|
101
84
|
return npcs.filter((npc) => npc.IsBoss());
|
|
102
85
|
}
|
|
103
86
|
/**
|
|
@@ -107,33 +90,33 @@ function getBosses(entityType, variant, subType, ignoreFriendly = false) {
|
|
|
107
90
|
* Use this instead of the vanilla `Room.GetBossID` method since it has a saner return type and it
|
|
108
91
|
* correctly handles Dogma, The Beast, and Ultra Greedier.
|
|
109
92
|
*/
|
|
110
|
-
function getBossID() {
|
|
111
|
-
if (
|
|
112
|
-
return
|
|
93
|
+
export function getBossID() {
|
|
94
|
+
if (inDogmaRoom()) {
|
|
95
|
+
return BossID.DOGMA;
|
|
113
96
|
}
|
|
114
|
-
if (
|
|
115
|
-
return
|
|
97
|
+
if (inBeastRoom()) {
|
|
98
|
+
return BossID.BEAST;
|
|
116
99
|
}
|
|
117
|
-
const room =
|
|
100
|
+
const room = game.GetRoom();
|
|
118
101
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
119
102
|
const bossID = room.GetBossID();
|
|
120
103
|
if (bossID === 0) {
|
|
121
104
|
return undefined;
|
|
122
105
|
}
|
|
123
106
|
// The Ultra Greed room holds both Ultra Greed and Ultra Greedier.
|
|
124
|
-
if (bossID ===
|
|
125
|
-
&&
|
|
126
|
-
return
|
|
107
|
+
if (bossID === BossID.ULTRA_GREED
|
|
108
|
+
&& doesEntityExist(EntityType.ULTRA_GREED, UltraGreedVariant.ULTRA_GREEDIER)) {
|
|
109
|
+
return BossID.ULTRA_GREEDIER;
|
|
127
110
|
}
|
|
128
111
|
return bossID;
|
|
129
112
|
}
|
|
130
|
-
function getBossIDFromEntityTypeVariant(entityType, variant) {
|
|
113
|
+
export function getBossIDFromEntityTypeVariant(entityType, variant) {
|
|
131
114
|
// First, handle some special cases.
|
|
132
|
-
if (entityType ===
|
|
133
|
-
return
|
|
115
|
+
if (entityType === EntityType.HORSEMAN_HEAD) {
|
|
116
|
+
return BossID.HEADLESS_HORSEMAN;
|
|
134
117
|
}
|
|
135
118
|
const entityTypeVariant = `${entityType}.${variant}`;
|
|
136
|
-
return
|
|
119
|
+
return ENTITY_TYPE_VARIANT_TO_BOSS_ID_MAP.get(entityTypeVariant);
|
|
137
120
|
}
|
|
138
121
|
/**
|
|
139
122
|
* Helper function to get the set of vanilla bosses for a particular stage across all of the stage
|
|
@@ -142,8 +125,8 @@ function getBossIDFromEntityTypeVariant(entityType, variant) {
|
|
|
142
125
|
*
|
|
143
126
|
* Also see the `getAllBossesSet` and `getBossIDsForStageID` functions.
|
|
144
127
|
*/
|
|
145
|
-
function getBossIDsForStage(stage) {
|
|
146
|
-
return
|
|
128
|
+
export function getBossIDsForStage(stage) {
|
|
129
|
+
return STAGE_TO_COMBINED_BOSS_SET_MAP.get(stage);
|
|
147
130
|
}
|
|
148
131
|
/**
|
|
149
132
|
* Helper function to get the set of vanilla bosses that can randomly appear on a particular stage
|
|
@@ -151,24 +134,24 @@ function getBossIDsForStage(stage) {
|
|
|
151
134
|
*
|
|
152
135
|
* Also see the `getAllBossesSet` and `getBossIDsForStage` functions.
|
|
153
136
|
*/
|
|
154
|
-
function getBossIDsForStageID(stageID) {
|
|
155
|
-
return
|
|
137
|
+
export function getBossIDsForStageID(stageID) {
|
|
138
|
+
return STAGE_ID_TO_BOSS_IDS.get(stageID);
|
|
156
139
|
}
|
|
157
140
|
/**
|
|
158
141
|
* Helper function to get the proper English name for a boss. For example, the name for
|
|
159
142
|
* `BossID.WRETCHED` (36) is "The Wretched".
|
|
160
143
|
*/
|
|
161
|
-
function getBossName(bossID) {
|
|
144
|
+
export function getBossName(bossID) {
|
|
162
145
|
// Handle modded boss IDs.
|
|
163
146
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
164
|
-
return
|
|
147
|
+
return BOSS_NAMES[bossID] ?? DEFAULT_BOSS_NAME;
|
|
165
148
|
}
|
|
166
149
|
/** Helper function to get the set of stage IDs that a particular boss naturally appears in. */
|
|
167
|
-
function getBossStageIDs(bossID) {
|
|
168
|
-
return
|
|
150
|
+
export function getBossStageIDs(bossID) {
|
|
151
|
+
return BOSS_ID_TO_STAGE_IDS[bossID];
|
|
169
152
|
}
|
|
170
|
-
function getEntityTypeVariantFromBossID(bossID) {
|
|
171
|
-
return
|
|
153
|
+
export function getEntityTypeVariantFromBossID(bossID) {
|
|
154
|
+
return BOSS_ID_TO_ENTITY_TYPE_VARIANT[bossID];
|
|
172
155
|
}
|
|
173
156
|
/**
|
|
174
157
|
* Helper function to check if a boss is only found on a Repentance floor such as Dross, Mines, and
|
|
@@ -177,12 +160,12 @@ function getEntityTypeVariantFromBossID(bossID) {
|
|
|
177
160
|
* For example, The Pile is a boss that was added in Repentance, but since it can appear in
|
|
178
161
|
* Necropolis, it is not considered a Repentance boss for the purposes of this function.
|
|
179
162
|
*/
|
|
180
|
-
function isRepentanceBoss(bossID) {
|
|
181
|
-
return
|
|
163
|
+
export function isRepentanceBoss(bossID) {
|
|
164
|
+
return REPENTANCE_ONLY_BOSS_IDS_SET.has(bossID);
|
|
182
165
|
}
|
|
183
166
|
/** Helper function to check if the provided NPC is a Sin miniboss, such as Sloth or Lust. */
|
|
184
|
-
function isSin(npc) {
|
|
185
|
-
return
|
|
167
|
+
export function isSin(npc) {
|
|
168
|
+
return SIN_ENTITY_TYPES_SET.has(npc.Type);
|
|
186
169
|
}
|
|
187
170
|
/**
|
|
188
171
|
* Helper function to spawn a boss.
|
|
@@ -194,14 +177,14 @@ function isSin(npc) {
|
|
|
194
177
|
* Gurglings/Turdlings with 2 copies, and other multi-segment bosses with 4 segments. You can
|
|
195
178
|
* customize this via the "numSegments" argument.
|
|
196
179
|
*/
|
|
197
|
-
function spawnBoss(entityType, variant, subType, positionOrGridIndex, velocity =
|
|
198
|
-
const seed =
|
|
199
|
-
const npc =
|
|
180
|
+
export function spawnBoss(entityType, variant, subType, positionOrGridIndex, velocity = VectorZero, spawner, seedOrRNG, numSegments) {
|
|
181
|
+
const seed = isRNG(seedOrRNG) ? seedOrRNG.Next() : seedOrRNG;
|
|
182
|
+
const npc = spawnNPC(entityType, variant, subType, positionOrGridIndex, velocity, spawner, seed);
|
|
200
183
|
if (BOSSES_THAT_REQUIRE_MULTIPLE_SPAWNS.has(entityType)) {
|
|
201
184
|
const numBossSegments = getNumBossSegments(entityType, variant, numSegments);
|
|
202
185
|
const remainingSegmentsToSpawn = numBossSegments - 1;
|
|
203
|
-
|
|
204
|
-
|
|
186
|
+
repeat(remainingSegmentsToSpawn, () => {
|
|
187
|
+
spawnNPC(entityType, variant, subType, positionOrGridIndex, velocity, spawner, seed);
|
|
205
188
|
});
|
|
206
189
|
}
|
|
207
190
|
return npc;
|
|
@@ -211,8 +194,8 @@ function spawnBoss(entityType, variant, subType, positionOrGridIndex, velocity =
|
|
|
211
194
|
*
|
|
212
195
|
* For more information, see the documentation for the `spawnBoss` function.
|
|
213
196
|
*/
|
|
214
|
-
function spawnBossWithSeed(entityType, variant, subType, positionOrGridIndex, seedOrRNG, velocity =
|
|
215
|
-
const seed =
|
|
197
|
+
export function spawnBossWithSeed(entityType, variant, subType, positionOrGridIndex, seedOrRNG, velocity = VectorZero, spawner, numSegments) {
|
|
198
|
+
const seed = isRNG(seedOrRNG) ? seedOrRNG.Next() : seedOrRNG;
|
|
216
199
|
return spawnBoss(entityType, variant, subType, positionOrGridIndex, velocity, spawner, seed, numSegments);
|
|
217
200
|
}
|
|
218
201
|
function getNumBossSegments(entityType, variant, numSegments) {
|
|
@@ -221,17 +204,17 @@ function getNumBossSegments(entityType, variant, numSegments) {
|
|
|
221
204
|
}
|
|
222
205
|
switch (entityType) {
|
|
223
206
|
// 28
|
|
224
|
-
case
|
|
207
|
+
case EntityType.CHUB: {
|
|
225
208
|
// Chub is always composed of 3 segments.
|
|
226
209
|
return 3;
|
|
227
210
|
}
|
|
228
211
|
// 69
|
|
229
|
-
case
|
|
212
|
+
case EntityType.LOKI: {
|
|
230
213
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
231
|
-
return variant ===
|
|
214
|
+
return variant === LokiVariant.LOKII ? 2 : 1;
|
|
232
215
|
}
|
|
233
216
|
// 237
|
|
234
|
-
case
|
|
217
|
+
case EntityType.GURGLING: {
|
|
235
218
|
// Gurglings & Turdlings are always encountered in groups of 2.
|
|
236
219
|
return 2;
|
|
237
220
|
}
|
package/dist/functions/cards.js
CHANGED
|
@@ -1,30 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
exports.isPocketItemObject = isPocketItemObject;
|
|
11
|
-
exports.isReverseTarotCard = isReverseTarotCard;
|
|
12
|
-
exports.isRune = isRune;
|
|
13
|
-
exports.isSpecialCard = isSpecialCard;
|
|
14
|
-
exports.isSuitCard = isSuitCard;
|
|
15
|
-
exports.isTarotCard = isTarotCard;
|
|
16
|
-
exports.isValidCardType = isValidCardType;
|
|
17
|
-
exports.isVanillaCardType = isVanillaCardType;
|
|
18
|
-
exports.useCardTemp = useCardTemp;
|
|
19
|
-
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
20
|
-
const cachedEnumValues_1 = require("../cachedEnumValues");
|
|
21
|
-
const cachedClasses_1 = require("../core/cachedClasses");
|
|
22
|
-
const constantsFirstLast_1 = require("../core/constantsFirstLast");
|
|
23
|
-
const cardDescriptions_1 = require("../objects/cardDescriptions");
|
|
24
|
-
const cardNames_1 = require("../objects/cardNames");
|
|
25
|
-
const itemConfigCardTypesForCards_1 = require("../sets/itemConfigCardTypesForCards");
|
|
26
|
-
const flag_1 = require("./flag");
|
|
27
|
-
const types_1 = require("./types");
|
|
1
|
+
import { ItemConfigCardType, UseFlag } from "isaac-typescript-definitions";
|
|
2
|
+
import { POCKET_ITEM_SLOT_VALUES } from "../cachedEnumValues";
|
|
3
|
+
import { itemConfig } from "../core/cachedClasses";
|
|
4
|
+
import { LAST_VANILLA_CARD_TYPE } from "../core/constantsFirstLast";
|
|
5
|
+
import { CARD_DESCRIPTIONS, DEFAULT_CARD_DESCRIPTION, } from "../objects/cardDescriptions";
|
|
6
|
+
import { CARD_NAMES, DEFAULT_CARD_NAME } from "../objects/cardNames";
|
|
7
|
+
import { ITEM_CONFIG_CARD_TYPES_FOR_CARDS } from "../sets/itemConfigCardTypesForCards";
|
|
8
|
+
import { addFlag } from "./flag";
|
|
9
|
+
import { asCardType } from "./types";
|
|
28
10
|
/**
|
|
29
11
|
* Helper function to get a card description from a `CardType` value. Returns "Unknown" if the
|
|
30
12
|
* provided card type is not valid.
|
|
@@ -33,20 +15,20 @@ const types_1 = require("./types");
|
|
|
33
15
|
*
|
|
34
16
|
* For example, `getCardDescription(CardType.FOOL)` would return "Where journey begins".
|
|
35
17
|
*/
|
|
36
|
-
function getCardDescription(cardType) {
|
|
18
|
+
export function getCardDescription(cardType) {
|
|
37
19
|
// "ItemConfigCard.Description" is bugged with vanilla cards on patch v1.7.6, so we use a
|
|
38
20
|
// hard-coded map as a workaround.
|
|
39
|
-
const cardDescription =
|
|
21
|
+
const cardDescription = CARD_DESCRIPTIONS[cardType];
|
|
40
22
|
// Handle modded cards.
|
|
41
23
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
42
24
|
if (cardDescription !== undefined) {
|
|
43
25
|
return cardDescription;
|
|
44
26
|
}
|
|
45
|
-
const itemConfigCard =
|
|
27
|
+
const itemConfigCard = itemConfig.GetCard(cardType);
|
|
46
28
|
if (itemConfigCard !== undefined) {
|
|
47
29
|
return itemConfigCard.Description;
|
|
48
30
|
}
|
|
49
|
-
return
|
|
31
|
+
return DEFAULT_CARD_DESCRIPTION;
|
|
50
32
|
}
|
|
51
33
|
/**
|
|
52
34
|
* Helper function to get the name of a card. Returns "Unknown" if the provided card type is not
|
|
@@ -56,20 +38,20 @@ function getCardDescription(cardType) {
|
|
|
56
38
|
*
|
|
57
39
|
* For example, `getCardName(Card.FOOL)` would return "0 - The Fool".
|
|
58
40
|
*/
|
|
59
|
-
function getCardName(cardType) {
|
|
41
|
+
export function getCardName(cardType) {
|
|
60
42
|
// "ItemConfigCard.Name" is bugged with vanilla cards on patch v1.7.6, so we use a hard-coded map
|
|
61
43
|
// as a workaround.
|
|
62
|
-
const cardName =
|
|
44
|
+
const cardName = CARD_NAMES[cardType];
|
|
63
45
|
// Handle modded cards.
|
|
64
46
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
65
47
|
if (cardName !== undefined) {
|
|
66
48
|
return cardName;
|
|
67
49
|
}
|
|
68
|
-
const itemConfigCard =
|
|
50
|
+
const itemConfigCard = itemConfig.GetCard(cardType);
|
|
69
51
|
if (itemConfigCard !== undefined) {
|
|
70
52
|
return itemConfigCard.Name;
|
|
71
53
|
}
|
|
72
|
-
return
|
|
54
|
+
return DEFAULT_CARD_NAME;
|
|
73
55
|
}
|
|
74
56
|
/**
|
|
75
57
|
* Helper function to get the item config card type of a particular card, rune, or object. For
|
|
@@ -77,8 +59,8 @@ function getCardName(cardType) {
|
|
|
77
59
|
*
|
|
78
60
|
* Returns undefined if the provided card type was not valid.
|
|
79
61
|
*/
|
|
80
|
-
function getItemConfigCardType(cardType) {
|
|
81
|
-
const itemConfigCard =
|
|
62
|
+
export function getItemConfigCardType(cardType) {
|
|
63
|
+
const itemConfigCard = itemConfig.GetCard(cardType);
|
|
82
64
|
if (itemConfigCard === undefined) {
|
|
83
65
|
return undefined;
|
|
84
66
|
}
|
|
@@ -91,9 +73,9 @@ function getItemConfigCardType(cardType) {
|
|
|
91
73
|
* This function is variadic, meaning that you can pass as many cards as you want to check for. The
|
|
92
74
|
* function will return true if the player has any of the cards.
|
|
93
75
|
*/
|
|
94
|
-
function hasCard(player, ...cardTypes) {
|
|
76
|
+
export function hasCard(player, ...cardTypes) {
|
|
95
77
|
const cardTypesSet = new Set(cardTypes);
|
|
96
|
-
return
|
|
78
|
+
return POCKET_ITEM_SLOT_VALUES.some((pocketItemSlot) => {
|
|
97
79
|
const cardType = player.GetCard(pocketItemSlot);
|
|
98
80
|
return cardTypesSet.has(cardType);
|
|
99
81
|
});
|
|
@@ -106,58 +88,58 @@ function hasCard(player, ...cardTypes) {
|
|
|
106
88
|
* - `ItemConfigCardType.SPECIAL` (3)
|
|
107
89
|
* - `ItemConfigCardType.TAROT_REVERSE` (5)
|
|
108
90
|
*/
|
|
109
|
-
function isCard(cardType) {
|
|
91
|
+
export function isCard(cardType) {
|
|
110
92
|
const itemConfigCardType = getItemConfigCardType(cardType);
|
|
111
93
|
if (itemConfigCardType === undefined) {
|
|
112
94
|
return false;
|
|
113
95
|
}
|
|
114
|
-
return
|
|
96
|
+
return ITEM_CONFIG_CARD_TYPES_FOR_CARDS.has(itemConfigCardType);
|
|
115
97
|
}
|
|
116
98
|
/** Returns whether the given card type matches the specified item config card type. */
|
|
117
|
-
function isCardType(cardType, itemConfigCardType) {
|
|
99
|
+
export function isCardType(cardType, itemConfigCardType) {
|
|
118
100
|
return itemConfigCardType === getItemConfigCardType(cardType);
|
|
119
101
|
}
|
|
120
102
|
/** Returns true for any card type added by a mod. */
|
|
121
|
-
function isModdedCardType(cardType) {
|
|
103
|
+
export function isModdedCardType(cardType) {
|
|
122
104
|
return !isVanillaCardType(cardType);
|
|
123
105
|
}
|
|
124
106
|
/** Returns true for card types that have `ItemConfigCardType.SPECIAL_OBJECT`. */
|
|
125
|
-
function isPocketItemObject(cardType) {
|
|
126
|
-
return isCardType(cardType,
|
|
107
|
+
export function isPocketItemObject(cardType) {
|
|
108
|
+
return isCardType(cardType, ItemConfigCardType.SPECIAL_OBJECT);
|
|
127
109
|
}
|
|
128
110
|
/** Returns true for card types that have `ItemConfigCardType.TAROT_REVERSE`. */
|
|
129
|
-
function isReverseTarotCard(cardType) {
|
|
130
|
-
return isCardType(cardType,
|
|
111
|
+
export function isReverseTarotCard(cardType) {
|
|
112
|
+
return isCardType(cardType, ItemConfigCardType.TAROT_REVERSE);
|
|
131
113
|
}
|
|
132
114
|
/** Returns true for card types that have `ItemConfigCardType.RUNE`. */
|
|
133
|
-
function isRune(cardType) {
|
|
134
|
-
return isCardType(cardType,
|
|
115
|
+
export function isRune(cardType) {
|
|
116
|
+
return isCardType(cardType, ItemConfigCardType.RUNE);
|
|
135
117
|
}
|
|
136
118
|
/** Returns true for card types that have `ItemConfigCardType.SPECIAL`. */
|
|
137
|
-
function isSpecialCard(cardType) {
|
|
138
|
-
return isCardType(cardType,
|
|
119
|
+
export function isSpecialCard(cardType) {
|
|
120
|
+
return isCardType(cardType, ItemConfigCardType.SPECIAL);
|
|
139
121
|
}
|
|
140
122
|
/** Returns true for card types that have `ItemConfigCardType.SUIT`. */
|
|
141
|
-
function isSuitCard(cardType) {
|
|
142
|
-
return isCardType(cardType,
|
|
123
|
+
export function isSuitCard(cardType) {
|
|
124
|
+
return isCardType(cardType, ItemConfigCardType.SUIT);
|
|
143
125
|
}
|
|
144
126
|
/** Returns true for card types that have `ItemConfigCardType.TAROT`. */
|
|
145
|
-
function isTarotCard(cardType) {
|
|
146
|
-
return isCardType(cardType,
|
|
127
|
+
export function isTarotCard(cardType) {
|
|
128
|
+
return isCardType(cardType, ItemConfigCardType.TAROT);
|
|
147
129
|
}
|
|
148
|
-
function isValidCardType(cardType) {
|
|
149
|
-
const potentialCardType =
|
|
150
|
-
const itemConfigCard =
|
|
130
|
+
export function isValidCardType(cardType) {
|
|
131
|
+
const potentialCardType = asCardType(cardType);
|
|
132
|
+
const itemConfigCard = itemConfig.GetCard(potentialCardType);
|
|
151
133
|
return itemConfigCard !== undefined;
|
|
152
134
|
}
|
|
153
|
-
function isVanillaCardType(cardType) {
|
|
154
|
-
return cardType <=
|
|
135
|
+
export function isVanillaCardType(cardType) {
|
|
136
|
+
return cardType <= LAST_VANILLA_CARD_TYPE;
|
|
155
137
|
}
|
|
156
138
|
/**
|
|
157
139
|
* Helper function to use a card without showing an animation and without the announcer voice
|
|
158
140
|
* playing.
|
|
159
141
|
*/
|
|
160
|
-
function useCardTemp(player, cardType) {
|
|
161
|
-
const useFlags =
|
|
142
|
+
export function useCardTemp(player, cardType) {
|
|
143
|
+
const useFlags = addFlag(UseFlag.NO_ANIMATION, UseFlag.NO_ANNOUNCER_VOICE);
|
|
162
144
|
player.UseCard(cardType, useFlags);
|
|
163
145
|
}
|
|
@@ -1,21 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.getChallengeTrinketType = getChallengeTrinketType;
|
|
9
|
-
exports.onAnyChallenge = onAnyChallenge;
|
|
10
|
-
exports.onChallenge = onChallenge;
|
|
11
|
-
exports.setChallenge = setChallenge;
|
|
12
|
-
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
13
|
-
const challengeBosses_1 = require("../objects/challengeBosses");
|
|
14
|
-
const challengeCharacters_1 = require("../objects/challengeCharacters");
|
|
15
|
-
const challengeCollectibleTypes_1 = require("../objects/challengeCollectibleTypes");
|
|
16
|
-
const challengeNames_1 = require("../objects/challengeNames");
|
|
17
|
-
const challengeTrinketType_1 = require("../objects/challengeTrinketType");
|
|
18
|
-
const log_1 = require("./log");
|
|
1
|
+
import { Challenge } from "isaac-typescript-definitions";
|
|
2
|
+
import { CHALLENGE_BOSSES, DEFAULT_CHALLENGE_BOSS_ID, } from "../objects/challengeBosses";
|
|
3
|
+
import { CHALLENGE_CHARACTERS, DEFAULT_CHALLENGE_CHARACTER, } from "../objects/challengeCharacters";
|
|
4
|
+
import { CHALLENGE_COLLECTIBLE_TYPES } from "../objects/challengeCollectibleTypes";
|
|
5
|
+
import { CHALLENGE_NAMES, DEFAULT_CHALLENGE_NAME, } from "../objects/challengeNames";
|
|
6
|
+
import { CHALLENGE_TRINKET_TYPE } from "../objects/challengeTrinketType";
|
|
7
|
+
import { log } from "./log";
|
|
19
8
|
/**
|
|
20
9
|
* Helper function to clear the current challenge, which will restart the run on a new random
|
|
21
10
|
* non-challenge seed with the current character.
|
|
@@ -24,12 +13,12 @@ const log_1 = require("./log");
|
|
|
24
13
|
*
|
|
25
14
|
* Under the hood, this function executes the `challenge 0` console command.
|
|
26
15
|
*/
|
|
27
|
-
function clearChallenge() {
|
|
16
|
+
export function clearChallenge() {
|
|
28
17
|
if (!onAnyChallenge()) {
|
|
29
18
|
return;
|
|
30
19
|
}
|
|
31
|
-
const command = `challenge ${
|
|
32
|
-
|
|
20
|
+
const command = `challenge ${Challenge.NULL}`;
|
|
21
|
+
log(`Restarting the run to clear the current challenge with a console command of: ${command}`);
|
|
33
22
|
Isaac.ExecuteCommand(command);
|
|
34
23
|
}
|
|
35
24
|
/**
|
|
@@ -40,41 +29,41 @@ function clearChallenge() {
|
|
|
40
29
|
* Note that for `Challenge.BACKASSWARDS` (31), this function will return `BossID.MEGA_SATAN` (55),
|
|
41
30
|
* but this is not actually the final boss. (There is no final boss for this challenge.)
|
|
42
31
|
*/
|
|
43
|
-
function getChallengeBoss(challenge) {
|
|
44
|
-
const challengeBossID =
|
|
32
|
+
export function getChallengeBoss(challenge) {
|
|
33
|
+
const challengeBossID = CHALLENGE_BOSSES[challenge];
|
|
45
34
|
// Handle modded challenges.
|
|
46
35
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
47
|
-
return challengeBossID ??
|
|
36
|
+
return challengeBossID ?? DEFAULT_CHALLENGE_BOSS_ID;
|
|
48
37
|
}
|
|
49
38
|
/**
|
|
50
39
|
* Get the starting character of a challenge. This will only work for vanilla challenges.
|
|
51
40
|
*
|
|
52
41
|
* For modded challenges, `PlayerType.ISAAC` (0) will be returned.
|
|
53
42
|
*/
|
|
54
|
-
function getChallengeCharacter(challenge) {
|
|
55
|
-
const challengeCharacter =
|
|
43
|
+
export function getChallengeCharacter(challenge) {
|
|
44
|
+
const challengeCharacter = CHALLENGE_CHARACTERS[challenge];
|
|
56
45
|
// Handle modded challenges.
|
|
57
46
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
58
|
-
return challengeCharacter ??
|
|
47
|
+
return challengeCharacter ?? DEFAULT_CHALLENGE_CHARACTER;
|
|
59
48
|
}
|
|
60
49
|
/**
|
|
61
50
|
* Get the extra starting collectibles for a challenge. This will only work for vanilla challenges.
|
|
62
51
|
*
|
|
63
52
|
* For modded challenges, an empty array will be returned.
|
|
64
53
|
*/
|
|
65
|
-
function getChallengeCollectibleTypes(challenge) {
|
|
66
|
-
return
|
|
54
|
+
export function getChallengeCollectibleTypes(challenge) {
|
|
55
|
+
return CHALLENGE_COLLECTIBLE_TYPES[challenge];
|
|
67
56
|
}
|
|
68
57
|
/**
|
|
69
58
|
* Get the proper name for a `Challenge` enum. This will only work for vanilla challenges.
|
|
70
59
|
*
|
|
71
60
|
* For modded challenges, "Unknown" will be returned.
|
|
72
61
|
*/
|
|
73
|
-
function getChallengeName(challenge) {
|
|
74
|
-
const challengeName =
|
|
62
|
+
export function getChallengeName(challenge) {
|
|
63
|
+
const challengeName = CHALLENGE_NAMES[challenge];
|
|
75
64
|
// Handle modded challenges.
|
|
76
65
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
77
|
-
return challengeName ??
|
|
66
|
+
return challengeName ?? DEFAULT_CHALLENGE_NAME;
|
|
78
67
|
}
|
|
79
68
|
/**
|
|
80
69
|
* Get the extra starting trinket for a challenge. This will only work for vanilla challenges.
|
|
@@ -83,13 +72,13 @@ function getChallengeName(challenge) {
|
|
|
83
72
|
*
|
|
84
73
|
* For modded challenges, `undefined` will be returned.
|
|
85
74
|
*/
|
|
86
|
-
function getChallengeTrinketType(challenge) {
|
|
87
|
-
return
|
|
75
|
+
export function getChallengeTrinketType(challenge) {
|
|
76
|
+
return CHALLENGE_TRINKET_TYPE[challenge];
|
|
88
77
|
}
|
|
89
78
|
/** Helper function to see if the player is playing any challenge. */
|
|
90
|
-
function onAnyChallenge() {
|
|
79
|
+
export function onAnyChallenge() {
|
|
91
80
|
const challenge = Isaac.GetChallenge();
|
|
92
|
-
return challenge !==
|
|
81
|
+
return challenge !== Challenge.NULL;
|
|
93
82
|
}
|
|
94
83
|
/**
|
|
95
84
|
* Helper function to check to see if the player is playing a particular challenge.
|
|
@@ -97,7 +86,7 @@ function onAnyChallenge() {
|
|
|
97
86
|
* This function is variadic, meaning that you can specify as many challenges as you want to check
|
|
98
87
|
* for.
|
|
99
88
|
*/
|
|
100
|
-
function onChallenge(...challenges) {
|
|
89
|
+
export function onChallenge(...challenges) {
|
|
101
90
|
const challenge = Isaac.GetChallenge();
|
|
102
91
|
return challenges.includes(challenge);
|
|
103
92
|
}
|
|
@@ -108,11 +97,11 @@ function onChallenge(...challenges) {
|
|
|
108
97
|
*
|
|
109
98
|
* Under the hood, this function executes the `challenge 0` console command.
|
|
110
99
|
*/
|
|
111
|
-
function setChallenge(challenge) {
|
|
100
|
+
export function setChallenge(challenge) {
|
|
112
101
|
if (onChallenge(challenge)) {
|
|
113
102
|
return;
|
|
114
103
|
}
|
|
115
104
|
const command = `challenge ${challenge}`;
|
|
116
|
-
|
|
105
|
+
log(`Restarting the run to set a challenge with a console command of: ${command}`);
|
|
117
106
|
Isaac.ExecuteCommand(command);
|
|
118
107
|
}
|