isaacscript-common 84.0.0 → 84.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/arrays/cachedEnumValues.js +33 -0
- package/dist/callbackClasses.js +289 -0
- package/dist/callbacks.js +181 -0
- package/dist/classes/DefaultMap.js +171 -0
- package/dist/classes/ModFeature.js +244 -0
- package/dist/classes/ModUpgraded.js +324 -0
- package/dist/classes/callbacks/EntityTakeDmgFilter.js +19 -0
- package/dist/classes/callbacks/EntityTakeDmgPlayer.js +29 -0
- package/dist/classes/callbacks/InputActionFilter.js +24 -0
- package/dist/classes/callbacks/InputActionPlayer.js +37 -0
- package/dist/classes/callbacks/PostAmbushFinished.js +40 -0
- package/dist/classes/callbacks/PostAmbushStarted.js +40 -0
- package/dist/classes/callbacks/PostBombExploded.js +24 -0
- package/dist/classes/callbacks/PostBombInitFilter.js +21 -0
- package/dist/classes/callbacks/PostBombInitLate.js +31 -0
- package/dist/classes/callbacks/PostBombRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostBombUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostBoneSwing.js +53 -0
- package/dist/classes/callbacks/PostCollectibleEmpty.js +50 -0
- package/dist/classes/callbacks/PostCursedTeleport.js +119 -0
- package/dist/classes/callbacks/PostCustomRevive.js +17 -0
- package/dist/classes/callbacks/PostDiceRoomActivated.js +50 -0
- package/dist/classes/callbacks/PostDoorRender.js +24 -0
- package/dist/classes/callbacks/PostDoorUpdate.js +24 -0
- package/dist/classes/callbacks/PostEffectInitFilter.js +21 -0
- package/dist/classes/callbacks/PostEffectInitLate.js +31 -0
- package/dist/classes/callbacks/PostEffectRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostEffectStateChanged.js +34 -0
- package/dist/classes/callbacks/PostEffectUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostEntityKillFilter.js +21 -0
- package/dist/classes/callbacks/PostEsauJr.js +12 -0
- package/dist/classes/callbacks/PostFamiliarInitFilter.js +21 -0
- package/dist/classes/callbacks/PostFamiliarInitLate.js +31 -0
- package/dist/classes/callbacks/PostFamiliarRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostFamiliarStateChanged.js +34 -0
- package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostFirstEsauJr.js +12 -0
- package/dist/classes/callbacks/PostFirstFlip.js +12 -0
- package/dist/classes/callbacks/PostFlip.js +12 -0
- package/dist/classes/callbacks/PostGameEndFilter.js +21 -0
- package/dist/classes/callbacks/PostGameStartedReordered.js +14 -0
- package/dist/classes/callbacks/PostGameStartedReorderedLast.js +14 -0
- package/dist/classes/callbacks/PostGreedModeWave.js +35 -0
- package/dist/classes/callbacks/PostGridEntityBroken.js +14 -0
- package/dist/classes/callbacks/PostGridEntityCollision.js +28 -0
- package/dist/classes/callbacks/PostGridEntityCustomBroken.js +14 -0
- package/dist/classes/callbacks/PostGridEntityCustomCollision.js +24 -0
- package/dist/classes/callbacks/PostGridEntityCustomInit.js +14 -0
- package/dist/classes/callbacks/PostGridEntityCustomRemove.js +18 -0
- package/dist/classes/callbacks/PostGridEntityCustomRender.js +14 -0
- package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +14 -0
- package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +14 -0
- package/dist/classes/callbacks/PostGridEntityInit.js +14 -0
- package/dist/classes/callbacks/PostGridEntityRemove.js +19 -0
- package/dist/classes/callbacks/PostGridEntityRender.js +14 -0
- package/dist/classes/callbacks/PostGridEntityStateChanged.js +14 -0
- package/dist/classes/callbacks/PostGridEntityUpdate.js +14 -0
- package/dist/classes/callbacks/PostHolyMantleRemoved.js +43 -0
- package/dist/classes/callbacks/PostItemDischarge.js +122 -0
- package/dist/classes/callbacks/PostItemPickup.js +14 -0
- package/dist/classes/callbacks/PostKeyboardChanged.js +46 -0
- package/dist/classes/callbacks/PostKnifeInitFilter.js +21 -0
- package/dist/classes/callbacks/PostKnifeInitLate.js +31 -0
- package/dist/classes/callbacks/PostKnifeRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostKnifeUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostLaserInitFilter.js +21 -0
- package/dist/classes/callbacks/PostLaserInitLate.js +31 -0
- package/dist/classes/callbacks/PostLaserRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostLaserUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostNPCDeathFilter.js +21 -0
- package/dist/classes/callbacks/PostNPCInitFilter.js +21 -0
- package/dist/classes/callbacks/PostNPCInitLate.js +31 -0
- package/dist/classes/callbacks/PostNPCRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostNPCStateChanged.js +34 -0
- package/dist/classes/callbacks/PostNPCUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostNewLevelReordered.js +14 -0
- package/dist/classes/callbacks/PostNewRoomEarly.js +74 -0
- package/dist/classes/callbacks/PostNewRoomReordered.js +14 -0
- package/dist/classes/callbacks/PostPEffectUpdateReordered.js +14 -0
- package/dist/classes/callbacks/PostPickupChanged.js +14 -0
- package/dist/classes/callbacks/PostPickupCollect.js +38 -0
- package/dist/classes/callbacks/PostPickupInitFilter.js +21 -0
- package/dist/classes/callbacks/PostPickupInitFirst.js +33 -0
- package/dist/classes/callbacks/PostPickupInitLate.js +31 -0
- package/dist/classes/callbacks/PostPickupRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostPickupSelectionFilter.js +29 -0
- package/dist/classes/callbacks/PostPickupStateChanged.js +34 -0
- package/dist/classes/callbacks/PostPickupUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostPitRender.js +24 -0
- package/dist/classes/callbacks/PostPitUpdate.js +24 -0
- package/dist/classes/callbacks/PostPlayerChangeHealth.js +47 -0
- package/dist/classes/callbacks/PostPlayerChangeStat.js +79 -0
- package/dist/classes/callbacks/PostPlayerChangeType.js +36 -0
- package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +14 -0
- package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +14 -0
- package/dist/classes/callbacks/PostPlayerFatalDamage.js +83 -0
- package/dist/classes/callbacks/PostPlayerInitFirst.js +41 -0
- package/dist/classes/callbacks/PostPlayerInitLate.js +33 -0
- package/dist/classes/callbacks/PostPlayerRenderReordered.js +14 -0
- package/dist/classes/callbacks/PostPlayerUpdateReordered.js +14 -0
- package/dist/classes/callbacks/PostPoopRender.js +24 -0
- package/dist/classes/callbacks/PostPoopUpdate.js +24 -0
- package/dist/classes/callbacks/PostPressurePlateRender.js +24 -0
- package/dist/classes/callbacks/PostPressurePlateUpdate.js +24 -0
- package/dist/classes/callbacks/PostProjectileInitFilter.js +21 -0
- package/dist/classes/callbacks/PostProjectileInitLate.js +31 -0
- package/dist/classes/callbacks/PostProjectileKill.js +52 -0
- package/dist/classes/callbacks/PostProjectileRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostProjectileUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostPurchase.js +90 -0
- package/dist/classes/callbacks/PostRockRender.js +24 -0
- package/dist/classes/callbacks/PostRockUpdate.js +24 -0
- package/dist/classes/callbacks/PostRoomClearChanged.js +46 -0
- package/dist/classes/callbacks/PostSacrifice.js +36 -0
- package/dist/classes/callbacks/PostSlotAnimationChanged.js +14 -0
- package/dist/classes/callbacks/PostSlotCollision.js +25 -0
- package/dist/classes/callbacks/PostSlotDestroyed.js +14 -0
- package/dist/classes/callbacks/PostSlotInit.js +14 -0
- package/dist/classes/callbacks/PostSlotRender.js +14 -0
- package/dist/classes/callbacks/PostSlotUpdate.js +14 -0
- package/dist/classes/callbacks/PostSpikesRender.js +24 -0
- package/dist/classes/callbacks/PostSpikesUpdate.js +24 -0
- package/dist/classes/callbacks/PostTNTRender.js +24 -0
- package/dist/classes/callbacks/PostTNTUpdate.js +24 -0
- package/dist/classes/callbacks/PostTearInitFilter.js +21 -0
- package/dist/classes/callbacks/PostTearInitLate.js +31 -0
- package/dist/classes/callbacks/PostTearInitVeryLate.js +35 -0
- package/dist/classes/callbacks/PostTearKill.js +52 -0
- package/dist/classes/callbacks/PostTearRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostTearUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostTransformation.js +47 -0
- package/dist/classes/callbacks/PostTrinketBreak.js +70 -0
- package/dist/classes/callbacks/PostUsePillFilter.js +76 -0
- package/dist/classes/callbacks/PreBerserkDeath.js +41 -0
- package/dist/classes/callbacks/PreBombCollisionFilter.js +19 -0
- package/dist/classes/callbacks/PreCustomRevive.js +14 -0
- package/dist/classes/callbacks/PreEntitySpawnFilter.js +24 -0
- package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +19 -0
- package/dist/classes/callbacks/PreGetPedestal.js +46 -0
- package/dist/classes/callbacks/PreItemPickup.js +14 -0
- package/dist/classes/callbacks/PreKnifeCollisionFilter.js +19 -0
- package/dist/classes/callbacks/PreNPCCollisionFilter.js +19 -0
- package/dist/classes/callbacks/PreNPCUpdateFilter.js +19 -0
- package/dist/classes/callbacks/PreNewLevel.js +51 -0
- package/dist/classes/callbacks/PreProjectileCollisionFilter.js +19 -0
- package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +26 -0
- package/dist/classes/callbacks/PreTearCollisionFilter.js +19 -0
- package/dist/classes/features/callbackLogic/CustomGridEntities.js +359 -0
- package/dist/classes/features/callbackLogic/CustomRevive.js +170 -0
- package/dist/classes/features/callbackLogic/EsauJrDetection.js +70 -0
- package/dist/classes/features/callbackLogic/FlipDetection.js +61 -0
- package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +220 -0
- package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +62 -0
- package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +35 -0
- package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +147 -0
- package/dist/classes/features/callbackLogic/ItemPickupDetection.js +68 -0
- package/dist/classes/features/callbackLogic/PickupChangeDetection.js +43 -0
- package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +193 -0
- package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +109 -0
- package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +95 -0
- package/dist/classes/features/callbackLogic/SlotRenderDetection.js +48 -0
- package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +52 -0
- package/dist/classes/features/other/CharacterHealthConversion.js +112 -0
- package/dist/classes/features/other/CharacterStats.js +68 -0
- package/dist/classes/features/other/CollectibleItemPoolType.js +75 -0
- package/dist/classes/features/other/CustomHotkeys.js +144 -0
- package/dist/classes/features/other/CustomItemPools.js +128 -0
- package/dist/classes/features/other/CustomPickups.js +118 -0
- package/dist/classes/features/other/CustomStages.js +471 -0
- package/dist/classes/features/other/CustomTrapdoors.js +596 -0
- package/dist/classes/features/other/DebugDisplay.js +699 -0
- package/dist/classes/features/other/DeployJSONRoom.js +301 -0
- package/dist/classes/features/other/DisableAllSound.js +90 -0
- package/dist/classes/features/other/DisableInputs.js +249 -0
- package/dist/classes/features/other/EdenStartingStatsHealth.js +197 -0
- package/dist/classes/features/other/ExtraConsoleCommands.js +292 -0
- package/dist/classes/features/other/FadeInRemover.js +67 -0
- package/dist/classes/features/other/FastReset.js +88 -0
- package/dist/classes/features/other/FlyingDetection.js +64 -0
- package/dist/classes/features/other/ForgottenSwitch.js +43 -0
- package/dist/classes/features/other/ItemPoolDetection.js +187 -0
- package/dist/classes/features/other/ModdedElementDetection.js +399 -0
- package/dist/classes/features/other/ModdedElementSets.js +1251 -0
- package/dist/classes/features/other/NoSirenSteal.js +88 -0
- package/dist/classes/features/other/Pause.js +197 -0
- package/dist/classes/features/other/PersistentEntities.js +168 -0
- package/dist/classes/features/other/PickupIndexCreation.js +229 -0
- package/dist/classes/features/other/PlayerCollectibleTracking.js +102 -0
- package/dist/classes/features/other/PonyDetection.js +86 -0
- package/dist/classes/features/other/PressInput.js +71 -0
- package/dist/classes/features/other/PreventChildEntities.js +60 -0
- package/dist/classes/features/other/PreventGridEntityRespawn.js +159 -0
- package/dist/classes/features/other/RerunDetection.js +69 -0
- package/dist/classes/features/other/RoomClearFrame.js +94 -0
- package/dist/classes/features/other/RoomHistory.js +196 -0
- package/dist/classes/features/other/RunInNFrames.js +323 -0
- package/dist/classes/features/other/RunNextRoom.js +53 -0
- package/dist/classes/features/other/RunNextRun.js +60 -0
- package/dist/classes/features/other/SaveDataManager.js +383 -0
- package/dist/classes/features/other/SpawnRockAltRewards.js +469 -0
- package/dist/classes/features/other/StageHistory.js +244 -0
- package/dist/classes/features/other/StartAmbush.js +62 -0
- package/dist/classes/features/other/TaintedLazarusPlayers.js +115 -0
- package/dist/classes/features/other/UnlockAchievementsDetection.js +60 -0
- package/dist/classes/features/other/customStages/backdrop.js +195 -0
- package/dist/classes/features/other/customStages/constants.js +19 -0
- package/dist/classes/features/other/customStages/gridEntities.js +177 -0
- package/dist/classes/features/other/customStages/shadows.js +67 -0
- package/dist/classes/features/other/customStages/streakText.js +222 -0
- package/dist/classes/features/other/customStages/utils.js +65 -0
- package/dist/classes/features/other/customStages/v.js +27 -0
- package/dist/classes/features/other/customStages/versusScreen.js +227 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +25 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +25 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +23 -0
- package/dist/classes/features/other/debugDisplay/utils.js +13 -0
- package/dist/classes/features/other/extraConsoleCommands/commands.js +1598 -0
- package/dist/classes/features/other/extraConsoleCommands/subroutines.js +135 -0
- package/dist/classes/features/other/extraConsoleCommands/v.js +30 -0
- package/dist/classes/features/other/saveDataManager/constants.js +4 -0
- package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +106 -0
- package/dist/classes/features/other/saveDataManager/loadFromDisk.js +69 -0
- package/dist/classes/features/other/saveDataManager/restoreDefaults.js +69 -0
- package/dist/classes/features/other/saveDataManager/saveToDisk.js +46 -0
- package/dist/classes/private/CustomCallback.js +59 -0
- package/dist/classes/private/Feature.js +39 -0
- package/dist/core/cachedClasses.js +61 -0
- package/dist/core/constants.js +289 -0
- package/dist/core/constantsFirstLast.js +98 -0
- package/dist/core/constantsVanilla.js +131 -0
- package/dist/core/upgradeMod.js +71 -0
- package/dist/customStageMetadata.json +1 -0
- package/dist/data/itempools.json +16625 -0
- package/dist/decorators.js +21 -0
- package/dist/enums/AmbushType.js +9 -0
- package/dist/enums/CornerType.js +11 -0
- package/dist/enums/HealthType.js +20 -0
- package/dist/enums/ISCFeature.js +65 -0
- package/dist/enums/LadderSubTypeCustom.js +20 -0
- package/dist/enums/ModCallbackCustom.js +2477 -0
- package/dist/enums/MysteriousPaperEffect.js +16 -0
- package/dist/enums/PlayerStat.js +37 -0
- package/dist/enums/PocketItemType.js +13 -0
- package/dist/enums/RockAltType.js +23 -0
- package/dist/enums/SaveDataKey.js +14 -0
- package/dist/enums/SerializationType.js +10 -0
- package/dist/enums/SlotDestructionType.js +22 -0
- package/dist/enums/private/GridEntityTypeCustom.js +10 -0
- package/dist/enums/private/SerializationBrand.js +42 -0
- package/dist/enums/private/StageTravelState.js +13 -0
- package/dist/enums/private/TrapdoorAnimation.js +9 -0
- package/dist/enums/private/UIStreakAnimation.js +10 -0
- package/dist/features.js +150 -0
- package/dist/functions/ambush.js +26 -0
- package/dist/functions/array.js +586 -0
- package/dist/functions/arrayLua.js +81 -0
- package/dist/functions/benchmark.js +36 -0
- package/dist/functions/bitSet128.js +64 -0
- package/dist/functions/bitwise.js +82 -0
- package/dist/functions/bombs.js +14 -0
- package/dist/functions/bosses.js +238 -0
- package/dist/functions/cards.js +164 -0
- package/dist/functions/challenges.js +117 -0
- package/dist/functions/characters.js +182 -0
- package/dist/functions/charge.js +251 -0
- package/dist/functions/chargeBar.js +54 -0
- package/dist/functions/collectibleTag.js +24 -0
- package/dist/functions/collectibles.js +581 -0
- package/dist/functions/color.js +88 -0
- package/dist/functions/console.js +18 -0
- package/dist/functions/curses.js +37 -0
- package/dist/functions/debugFunctions.js +108 -0
- package/dist/functions/decorators.js +113 -0
- package/dist/functions/deepCopy.js +406 -0
- package/dist/functions/deepCopyTests.js +361 -0
- package/dist/functions/dimensions.js +30 -0
- package/dist/functions/direction.js +78 -0
- package/dist/functions/doors.js +524 -0
- package/dist/functions/easing.js +327 -0
- package/dist/functions/effects.js +14 -0
- package/dist/functions/emptyRoom.js +79 -0
- package/dist/functions/entities.js +529 -0
- package/dist/functions/entitiesSpecific.js +582 -0
- package/dist/functions/entityTypes.js +9 -0
- package/dist/functions/enums.js +244 -0
- package/dist/functions/external.js +59 -0
- package/dist/functions/familiars.js +136 -0
- package/dist/functions/flag.js +146 -0
- package/dist/functions/frames.js +166 -0
- package/dist/functions/globals.js +291 -0
- package/dist/functions/gridEntities.js +990 -0
- package/dist/functions/gridEntitiesSpecific.js +456 -0
- package/dist/functions/gridIndex.js +35 -0
- package/dist/functions/hash.js +75 -0
- package/dist/functions/hex.js +57 -0
- package/dist/functions/input.js +185 -0
- package/dist/functions/isaacAPIClass.js +157 -0
- package/dist/functions/itemPool.js +118 -0
- package/dist/functions/jsonHelpers.js +73 -0
- package/dist/functions/jsonRoom.js +184 -0
- package/dist/functions/kColor.js +89 -0
- package/dist/functions/language.js +16 -0
- package/dist/functions/level.js +66 -0
- package/dist/functions/levelGrid.js +497 -0
- package/dist/functions/log.js +86 -0
- package/dist/functions/logEntities.js +308 -0
- package/dist/functions/logMisc.js +510 -0
- package/dist/functions/map.js +121 -0
- package/dist/functions/math.js +149 -0
- package/dist/functions/merge.js +159 -0
- package/dist/functions/mergeTests.js +313 -0
- package/dist/functions/minimap.js +204 -0
- package/dist/functions/modFeatures.js +39 -0
- package/dist/functions/newArray.js +30 -0
- package/dist/functions/nextStage.js +169 -0
- package/dist/functions/npcDataStructures.js +146 -0
- package/dist/functions/npcs.js +132 -0
- package/dist/functions/pickupVariants.js +63 -0
- package/dist/functions/pickups.js +168 -0
- package/dist/functions/pickupsSpecific.js +376 -0
- package/dist/functions/pills.js +200 -0
- package/dist/functions/playerCenter.js +53 -0
- package/dist/functions/playerCollectibles.js +300 -0
- package/dist/functions/playerDataStructures.js +145 -0
- package/dist/functions/playerEffects.js +63 -0
- package/dist/functions/playerHealth.js +604 -0
- package/dist/functions/playerIndex.js +186 -0
- package/dist/functions/playerTrinkets.js +149 -0
- package/dist/functions/players.js +471 -0
- package/dist/functions/pocketItems.js +165 -0
- package/dist/functions/positionVelocity.js +158 -0
- package/dist/functions/pressurePlate.js +26 -0
- package/dist/functions/projectiles.js +57 -0
- package/dist/functions/random.js +90 -0
- package/dist/functions/readOnly.js +33 -0
- package/dist/functions/render.js +36 -0
- package/dist/functions/revive.js +151 -0
- package/dist/functions/rng.js +140 -0
- package/dist/functions/rockAlt.js +50 -0
- package/dist/functions/roomData.js +155 -0
- package/dist/functions/roomGrid.js +97 -0
- package/dist/functions/roomShape.js +143 -0
- package/dist/functions/roomShapeWalls.js +187 -0
- package/dist/functions/roomTransition.js +43 -0
- package/dist/functions/rooms.js +782 -0
- package/dist/functions/run.js +121 -0
- package/dist/functions/seeds.js +22 -0
- package/dist/functions/serialization.js +98 -0
- package/dist/functions/set.js +215 -0
- package/dist/functions/slots.js +41 -0
- package/dist/functions/sort.js +158 -0
- package/dist/functions/sound.js +45 -0
- package/dist/functions/spawnCollectible.js +112 -0
- package/dist/functions/sprites.js +130 -0
- package/dist/functions/stage.js +540 -0
- package/dist/functions/stats.js +104 -0
- package/dist/functions/storyBosses.js +63 -0
- package/dist/functions/string.js +194 -0
- package/dist/functions/table.js +162 -0
- package/dist/functions/tears.js +128 -0
- package/dist/functions/transformations.js +89 -0
- package/dist/functions/trinketGive.js +145 -0
- package/dist/functions/trinkets.js +213 -0
- package/dist/functions/tstlClass.js +97 -0
- package/dist/functions/types.js +225 -0
- package/dist/functions/ui.js +148 -0
- package/dist/functions/utils.d.ts +4 -1
- package/dist/functions/utils.d.ts.map +1 -1
- package/dist/functions/utils.js +195 -0
- package/dist/functions/utils.lua +6 -2
- package/dist/functions/vector.js +150 -0
- package/dist/functions/versusScreen.js +58 -0
- package/dist/functions/weighted.js +57 -0
- package/dist/index.js +219 -0
- package/dist/index.rollup.d.ts +4 -1
- package/dist/indexLua.js +220 -0
- package/dist/interfaces/ChargeBarSprites.js +2 -0
- package/dist/interfaces/Corner.js +2 -0
- package/dist/interfaces/CustomStageTSConfig.js +2 -0
- package/dist/interfaces/GridEntityCustomData.js +2 -0
- package/dist/interfaces/JSONRoomsFile.js +2 -0
- package/dist/interfaces/PlayerHealth.js +2 -0
- package/dist/interfaces/PlayerStats.js +4 -0
- package/dist/interfaces/PocketItemDescription.js +2 -0
- package/dist/interfaces/RoomDescription.js +2 -0
- package/dist/interfaces/SaveData.js +98 -0
- package/dist/interfaces/StageHistoryEntry.js +2 -0
- package/dist/interfaces/TSTLClassMetatable.js +2 -0
- package/dist/interfaces/TrinketSituation.js +2 -0
- package/dist/interfaces/private/AddCallbackParametersCustom.js +4 -0
- package/dist/interfaces/private/CustomStage.js +2 -0
- package/dist/interfaces/private/CustomTrapdoorDescription.js +2 -0
- package/dist/interfaces/private/ModUpgradedInterface.js +2 -0
- package/dist/isaacscript-common.lua +7 -3
- package/dist/maps/PHDPillConversionsMap.js +23 -0
- package/dist/maps/cardNameToTypeMap.js +211 -0
- package/dist/maps/characterNameToTypeMap.js +91 -0
- package/dist/maps/collectibleNameToTypeMap.js +19 -0
- package/dist/maps/defaultPlayerStatMap.js +17 -0
- package/dist/maps/entityTypeVariantToBossIDMap.js +11 -0
- package/dist/maps/falsePHDPillConversionsMap.js +37 -0
- package/dist/maps/gridEntityTypeToBrokenStateMap.js +32 -0
- package/dist/maps/gridEntityXMLMap.js +133 -0
- package/dist/maps/itemPoolTypeToItemPoolName.js +38 -0
- package/dist/maps/keyboardToStringMap.js +71 -0
- package/dist/maps/pillNameToEffectMap.js +91 -0
- package/dist/maps/roomNameToTypeMap.js +43 -0
- package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +17 -0
- package/dist/maps/transformationNameToPlayerFormMap.js +35 -0
- package/dist/maps/trinketNameToTypeMap.js +19 -0
- package/dist/objects/LRoomShapeToRectangles.js +43 -0
- package/dist/objects/backdropTypeToRockAltType.js +68 -0
- package/dist/objects/batteryNames.js +13 -0
- package/dist/objects/bombNames.js +17 -0
- package/dist/objects/bossIDToEntityTypeVariant.js +228 -0
- package/dist/objects/bossNamePNGFileNames.js +120 -0
- package/dist/objects/bossNames.js +119 -0
- package/dist/objects/bossPortraitPNGFileNames.js +123 -0
- package/dist/objects/cardDescriptions.js +106 -0
- package/dist/objects/cardNames.js +106 -0
- package/dist/objects/challengeBosses.js +60 -0
- package/dist/objects/challengeCharacters.js +58 -0
- package/dist/objects/challengeCollectibleTypes.js +255 -0
- package/dist/objects/challengeNames.js +54 -0
- package/dist/objects/challengeTrinketType.js +58 -0
- package/dist/objects/characterDamageMultipliers.js +49 -0
- package/dist/objects/characterNames.js +48 -0
- package/dist/objects/characterSpritePNGFileNames.js +50 -0
- package/dist/objects/characterStartingCollectibleTypes.js +105 -0
- package/dist/objects/characterStartingTrinketTypes.js +90 -0
- package/dist/objects/chestNames.js +20 -0
- package/dist/objects/coinNames.js +16 -0
- package/dist/objects/coinSubTypeToValue.js +15 -0
- package/dist/objects/collectibleDescriptions.js +742 -0
- package/dist/objects/collectibleNames.js +745 -0
- package/dist/objects/colors.js +26 -0
- package/dist/objects/directionNames.js +11 -0
- package/dist/objects/directionToDegrees.js +11 -0
- package/dist/objects/directionToMoveAction.js +11 -0
- package/dist/objects/directionToShootAction.js +11 -0
- package/dist/objects/directionToVector.js +13 -0
- package/dist/objects/doorSlotFlagToDoorSlot.js +15 -0
- package/dist/objects/doorSlotToDirection.js +15 -0
- package/dist/objects/doorSlotToDoorSlotFlag.js +15 -0
- package/dist/objects/gridEntityTypeToANM2Name.js +37 -0
- package/dist/objects/heartNames.js +21 -0
- package/dist/objects/isaacAPIClassTypeToBrand.js +12 -0
- package/dist/objects/isaacAPIClassTypeToFunctions.js +46 -0
- package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +57 -0
- package/dist/objects/kColors.js +27 -0
- package/dist/objects/keyNames.js +13 -0
- package/dist/objects/languageNames.js +13 -0
- package/dist/objects/oppositeDoorSlots.js +15 -0
- package/dist/objects/pillEffectClasses.js +57 -0
- package/dist/objects/pillEffectNames.js +57 -0
- package/dist/objects/pillEffectTypeToPillEffects.js +23 -0
- package/dist/objects/pillEffectTypes.js +57 -0
- package/dist/objects/playerNamePNGFileNames.js +57 -0
- package/dist/objects/playerPortraitPNGFileNames.js +54 -0
- package/dist/objects/roomShapeBounds.js +48 -0
- package/dist/objects/roomShapeCorners.js +330 -0
- package/dist/objects/roomShapeLayoutSizes.js +41 -0
- package/dist/objects/roomShapeToBottomRightPosition.js +25 -0
- package/dist/objects/roomShapeToDoorSlotCoordinates.js +111 -0
- package/dist/objects/roomShapeToDoorSlots.js +72 -0
- package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +118 -0
- package/dist/objects/roomShapeToGridWidth.js +20 -0
- package/dist/objects/roomShapeToTopLeftPosition.js +26 -0
- package/dist/objects/roomShapeVolumes.js +32 -0
- package/dist/objects/roomTypeNames.js +35 -0
- package/dist/objects/roomTypeSpecialGotoPrefixes.js +35 -0
- package/dist/objects/sackNames.js +11 -0
- package/dist/objects/slotNames.js +26 -0
- package/dist/objects/stageIDNames.js +43 -0
- package/dist/objects/stageToMusic.js +91 -0
- package/dist/objects/stageToStageID.js +117 -0
- package/dist/objects/stageTypeSuffixes.js +14 -0
- package/dist/objects/transformationNames.js +20 -0
- package/dist/objects/trinketDescriptions.js +199 -0
- package/dist/objects/trinketNames.js +202 -0
- package/dist/objects/versusScreenBackgroundColors.js +46 -0
- package/dist/objects/versusScreenDirtSpotColors.js +46 -0
- package/dist/patchErrorFunctions.js +65 -0
- package/dist/serialization.js +21 -0
- package/dist/sets/LRoomShapesSet.js +11 -0
- package/dist/sets/bigRoomShapesSet.js +14 -0
- package/dist/sets/bossSets.js +465 -0
- package/dist/sets/charactersThatStartWithAnActiveItemSet.js +18 -0
- package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +9 -0
- package/dist/sets/charactersWithFreeDevilDealsSet.js +6 -0
- package/dist/sets/charactersWithNoRedHeartsSet.js +19 -0
- package/dist/sets/charactersWithNoSoulHeartsSet.js +16 -0
- package/dist/sets/consoleCommandsSet.js +64 -0
- package/dist/sets/entitiesWithArmorSet.js +59 -0
- package/dist/sets/familiarsThatShootPlayerTearsSet.js +15 -0
- package/dist/sets/itemConfigCardTypesForCards.js +14 -0
- package/dist/sets/lostStyleCharactersSet.js +16 -0
- package/dist/sets/mineShaftRoomSubTypesSet.js +12 -0
- package/dist/sets/narrowRoomShapesSet.js +11 -0
- package/dist/sets/poopGridEntityXMLTypesSet.js +16 -0
- package/dist/sets/redHeartSubTypesSet.js +10 -0
- package/dist/sets/repentanceBossIDsSet.js +30 -0
- package/dist/sets/sinEntityTypesSet.js +14 -0
- package/dist/sets/singleUseActiveCollectibleTypesSet.js +15 -0
- package/dist/shaderCrashFix.js +24 -0
- package/dist/shouldFire.js +226 -0
- package/dist/types/AddSubtract.js +2 -0
- package/dist/types/AllButFirst.js +2 -0
- package/dist/types/AllButLast.js +2 -0
- package/dist/types/AnyClass.js +2 -0
- package/dist/types/AnyEntity.js +2 -0
- package/dist/types/AnyFunction.js +2 -0
- package/dist/types/AnyGridEntity.js +2 -0
- package/dist/types/CompositionTypeSatisfiesEnum.js +11 -0
- package/dist/types/ConversionHeartSubType.js +2 -0
- package/dist/types/Decrement.js +2 -0
- package/dist/types/ERange.js +2 -0
- package/dist/types/EntityID.js +2 -0
- package/dist/types/FunctionTuple.js +2 -0
- package/dist/types/GridEntityID.js +2 -0
- package/dist/types/HasFunction.js +2 -0
- package/dist/types/IRange.js +2 -0
- package/dist/types/Immutable.js +2 -0
- package/dist/types/Increment.js +2 -0
- package/dist/types/LowercaseKeys.js +2 -0
- package/dist/types/NaturalNumbersLessThan.js +2 -0
- package/dist/types/NaturalNumbersLessThanOrEqualTo.js +2 -0
- package/dist/types/PickingUpItem.js +44 -0
- package/dist/types/PickupIndex.js +2 -0
- package/dist/types/PlayerIndex.js +2 -0
- package/dist/types/PossibleStatType.js +2 -0
- package/dist/types/PublicInterface.js +2 -0
- package/dist/types/ReadonlyMap.js +6 -0
- package/dist/types/ReadonlyRecord.js +2 -0
- package/dist/types/ReadonlySet.js +6 -0
- package/dist/types/StartsWithLowercase.js +2 -0
- package/dist/types/StartsWithUppercase.js +2 -0
- package/dist/types/TSTLClass.js +2 -0
- package/dist/types/Tuple.js +2 -0
- package/dist/types/TupleKeys.js +2 -0
- package/dist/types/TupleToIntersection.js +2 -0
- package/dist/types/TupleToUnion.js +2 -0
- package/dist/types/TupleWithLengthBetween.js +22 -0
- package/dist/types/TupleWithMaxLength.js +27 -0
- package/dist/types/UnionToIntersection.js +2 -0
- package/dist/types/UppercaseKeys.js +2 -0
- package/dist/types/WeightedArray.js +2 -0
- package/dist/types/WidenLiteral.js +2 -0
- package/dist/types/Writable.js +2 -0
- package/dist/types/private/CallbackTuple.js +2 -0
- package/dist/types/private/ModUpgradedWithFeatures.js +2 -0
- package/package.json +1 -1
- package/src/functions/utils.ts +6 -2
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.StageHistory = void 0;
|
|
10
|
+
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
11
|
+
const cachedClasses_1 = require("../../../core/cachedClasses");
|
|
12
|
+
const decorators_1 = require("../../../decorators");
|
|
13
|
+
const ModCallbackCustom_1 = require("../../../enums/ModCallbackCustom");
|
|
14
|
+
const nextStage_1 = require("../../../functions/nextStage");
|
|
15
|
+
const stage_1 = require("../../../functions/stage");
|
|
16
|
+
const Feature_1 = require("../../private/Feature");
|
|
17
|
+
const v = {
|
|
18
|
+
run: {
|
|
19
|
+
stageHistory: [],
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
class StageHistory extends Feature_1.Feature {
|
|
23
|
+
/** @internal */
|
|
24
|
+
v = v;
|
|
25
|
+
/** @internal */
|
|
26
|
+
constructor() {
|
|
27
|
+
super();
|
|
28
|
+
this.customCallbacksUsed = [
|
|
29
|
+
[ModCallbackCustom_1.ModCallbackCustom.POST_NEW_LEVEL_REORDERED, this.postNewLevelReordered],
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
// ModCallbackCustom.POST_NEW_LEVEL_REORDERED
|
|
33
|
+
postNewLevelReordered = () => {
|
|
34
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
35
|
+
const stage = level.GetStage();
|
|
36
|
+
const stageType = level.GetStageType();
|
|
37
|
+
v.run.stageHistory.push({ stage, stageType });
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Helper function to get the stage type that a trapdoor or heaven door would take the player to,
|
|
41
|
+
* based on the current stage, room, and game state flags.
|
|
42
|
+
*
|
|
43
|
+
* This function accounts for the previous floors that a player has visited thus far on the run so
|
|
44
|
+
* that the next stage type can be properly calculated on The Ascent (which makes it unlike the
|
|
45
|
+
* `getNextStageType` function).
|
|
46
|
+
*
|
|
47
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.STAGE_HISTORY`.
|
|
48
|
+
*
|
|
49
|
+
* @param upwards Whether the player should go up to Cathedral in the case of being on Womb 2.
|
|
50
|
+
* Default is false.
|
|
51
|
+
* @public
|
|
52
|
+
*/
|
|
53
|
+
getNextStageTypeWithHistory(upwards = false) {
|
|
54
|
+
const backwardsPath = cachedClasses_1.game.GetStateFlag(isaac_typescript_definitions_1.GameStateFlag.BACKWARDS_PATH);
|
|
55
|
+
if (!backwardsPath) {
|
|
56
|
+
return (0, nextStage_1.getNextStageType)(upwards);
|
|
57
|
+
}
|
|
58
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
59
|
+
const stage = level.GetStage();
|
|
60
|
+
const repentanceStage = (0, stage_1.onRepentanceStage)();
|
|
61
|
+
const visitedDownpour1 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.BASEMENT_1, isaac_typescript_definitions_1.StageType.REPENTANCE);
|
|
62
|
+
const visitedDross1 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.BASEMENT_1, isaac_typescript_definitions_1.StageType.REPENTANCE_B);
|
|
63
|
+
const visitedDownpour2 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.BASEMENT_2, isaac_typescript_definitions_1.StageType.REPENTANCE);
|
|
64
|
+
const visitedDross2 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.BASEMENT_2, isaac_typescript_definitions_1.StageType.REPENTANCE_B);
|
|
65
|
+
const visitedMines1 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.CAVES_1, isaac_typescript_definitions_1.StageType.REPENTANCE);
|
|
66
|
+
const visitedAshpit1 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.CAVES_1, isaac_typescript_definitions_1.StageType.REPENTANCE_B);
|
|
67
|
+
const visitedMines2 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.DEPTHS_2, isaac_typescript_definitions_1.StageType.REPENTANCE);
|
|
68
|
+
const visitedAshpit2 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.DEPTHS_2, isaac_typescript_definitions_1.StageType.REPENTANCE_B);
|
|
69
|
+
if (stage === isaac_typescript_definitions_1.LevelStage.BASEMENT_2 && repentanceStage) {
|
|
70
|
+
if (visitedDownpour1) {
|
|
71
|
+
return isaac_typescript_definitions_1.StageType.REPENTANCE;
|
|
72
|
+
}
|
|
73
|
+
if (visitedDross1) {
|
|
74
|
+
return isaac_typescript_definitions_1.StageType.REPENTANCE_B;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (stage === isaac_typescript_definitions_1.LevelStage.CAVES_1 && repentanceStage) {
|
|
78
|
+
if (visitedDownpour2) {
|
|
79
|
+
return isaac_typescript_definitions_1.StageType.REPENTANCE;
|
|
80
|
+
}
|
|
81
|
+
if (visitedDross2) {
|
|
82
|
+
return isaac_typescript_definitions_1.StageType.REPENTANCE_B;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (stage === isaac_typescript_definitions_1.LevelStage.CAVES_2 && !repentanceStage) {
|
|
86
|
+
if (visitedDownpour2) {
|
|
87
|
+
return isaac_typescript_definitions_1.StageType.REPENTANCE;
|
|
88
|
+
}
|
|
89
|
+
if (visitedDross2) {
|
|
90
|
+
return isaac_typescript_definitions_1.StageType.REPENTANCE_B;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (stage === isaac_typescript_definitions_1.LevelStage.CAVES_2 && repentanceStage) {
|
|
94
|
+
if (visitedMines1) {
|
|
95
|
+
return isaac_typescript_definitions_1.StageType.REPENTANCE;
|
|
96
|
+
}
|
|
97
|
+
if (visitedAshpit1) {
|
|
98
|
+
return isaac_typescript_definitions_1.StageType.REPENTANCE_B;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (stage === isaac_typescript_definitions_1.LevelStage.DEPTHS_2 && !repentanceStage) {
|
|
102
|
+
if (visitedAshpit2) {
|
|
103
|
+
return isaac_typescript_definitions_1.StageType.REPENTANCE_B;
|
|
104
|
+
}
|
|
105
|
+
if (visitedMines2) {
|
|
106
|
+
return isaac_typescript_definitions_1.StageType.REPENTANCE;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const nextStage = this.getNextStageWithHistory();
|
|
110
|
+
return (0, stage_1.calculateStageType)(nextStage);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Helper function to get the stage that a trapdoor or heaven door would take the player to, based
|
|
114
|
+
* on the current stage, room, and game state flags.
|
|
115
|
+
*
|
|
116
|
+
* This function accounts for the previous floors that a player has visited thus far on the run so
|
|
117
|
+
* that the next stage can be properly calculated on The Ascent (which makes it unlike the
|
|
118
|
+
* `getNextStage` function).
|
|
119
|
+
*
|
|
120
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.STAGE_HISTORY`.
|
|
121
|
+
*/
|
|
122
|
+
getNextStageWithHistory() {
|
|
123
|
+
const backwardsPath = cachedClasses_1.game.GetStateFlag(isaac_typescript_definitions_1.GameStateFlag.BACKWARDS_PATH);
|
|
124
|
+
if (!backwardsPath) {
|
|
125
|
+
return (0, nextStage_1.getNextStage)();
|
|
126
|
+
}
|
|
127
|
+
const level = cachedClasses_1.game.GetLevel();
|
|
128
|
+
const stage = level.GetStage();
|
|
129
|
+
const repentanceStage = (0, stage_1.onRepentanceStage)();
|
|
130
|
+
const visitedDownpour1 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.BASEMENT_1, isaac_typescript_definitions_1.StageType.REPENTANCE);
|
|
131
|
+
const visitedDross1 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.BASEMENT_1, isaac_typescript_definitions_1.StageType.REPENTANCE_B);
|
|
132
|
+
const visitedDownpour2 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.BASEMENT_2, isaac_typescript_definitions_1.StageType.REPENTANCE);
|
|
133
|
+
const visitedDross2 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.BASEMENT_2, isaac_typescript_definitions_1.StageType.REPENTANCE_B);
|
|
134
|
+
const visitedMines1 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.CAVES_1, isaac_typescript_definitions_1.StageType.REPENTANCE);
|
|
135
|
+
const visitedAshpit1 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.CAVES_1, isaac_typescript_definitions_1.StageType.REPENTANCE_B);
|
|
136
|
+
const visitedMines2 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.DEPTHS_2, isaac_typescript_definitions_1.StageType.REPENTANCE);
|
|
137
|
+
const visitedAshpit2 = this.hasVisitedStage(isaac_typescript_definitions_1.LevelStage.DEPTHS_2, isaac_typescript_definitions_1.StageType.REPENTANCE_B);
|
|
138
|
+
if (stage === isaac_typescript_definitions_1.LevelStage.BASEMENT_1) {
|
|
139
|
+
if (repentanceStage) {
|
|
140
|
+
// From Downpour 1 to Basement 1.
|
|
141
|
+
return isaac_typescript_definitions_1.LevelStage.BASEMENT_1;
|
|
142
|
+
}
|
|
143
|
+
// From Basement 1 to Home.
|
|
144
|
+
return isaac_typescript_definitions_1.LevelStage.HOME;
|
|
145
|
+
}
|
|
146
|
+
if (stage === isaac_typescript_definitions_1.LevelStage.BASEMENT_2) {
|
|
147
|
+
if (repentanceStage) {
|
|
148
|
+
if (visitedDownpour1 || visitedDross1) {
|
|
149
|
+
// From Downpour 2 to Downpour 1.
|
|
150
|
+
return isaac_typescript_definitions_1.LevelStage.BASEMENT_1;
|
|
151
|
+
}
|
|
152
|
+
// From Downpour 2 to Basement 2.
|
|
153
|
+
return isaac_typescript_definitions_1.LevelStage.BASEMENT_2;
|
|
154
|
+
}
|
|
155
|
+
// From Basement 2 to Basement 1.
|
|
156
|
+
return isaac_typescript_definitions_1.LevelStage.BASEMENT_1;
|
|
157
|
+
}
|
|
158
|
+
if (stage === isaac_typescript_definitions_1.LevelStage.CAVES_1) {
|
|
159
|
+
if (repentanceStage) {
|
|
160
|
+
if (visitedDownpour2 || visitedDross2) {
|
|
161
|
+
// From Mines 1 to Downpour 1.
|
|
162
|
+
return isaac_typescript_definitions_1.LevelStage.BASEMENT_2;
|
|
163
|
+
}
|
|
164
|
+
// From Mines 1 to Caves 1.
|
|
165
|
+
return isaac_typescript_definitions_1.LevelStage.CAVES_1;
|
|
166
|
+
}
|
|
167
|
+
// From Caves 1 to Basement 2.
|
|
168
|
+
return isaac_typescript_definitions_1.LevelStage.BASEMENT_2;
|
|
169
|
+
}
|
|
170
|
+
if (stage === isaac_typescript_definitions_1.LevelStage.CAVES_2) {
|
|
171
|
+
if (repentanceStage) {
|
|
172
|
+
if (visitedMines1 || visitedAshpit1) {
|
|
173
|
+
// From Mines 2 to Mines 1.
|
|
174
|
+
return isaac_typescript_definitions_1.LevelStage.CAVES_1;
|
|
175
|
+
}
|
|
176
|
+
// From Mines 2 to Caves 2.
|
|
177
|
+
return isaac_typescript_definitions_1.LevelStage.CAVES_2;
|
|
178
|
+
}
|
|
179
|
+
// From Caves 2 to Caves 1.
|
|
180
|
+
return isaac_typescript_definitions_1.LevelStage.CAVES_1;
|
|
181
|
+
}
|
|
182
|
+
if (stage === isaac_typescript_definitions_1.LevelStage.DEPTHS_1) {
|
|
183
|
+
if (repentanceStage) {
|
|
184
|
+
if (visitedMines2 || visitedAshpit2) {
|
|
185
|
+
// From Mausoleum 1 to Mines 2.
|
|
186
|
+
return isaac_typescript_definitions_1.LevelStage.CAVES_2;
|
|
187
|
+
}
|
|
188
|
+
// From Mausoleum 1 to Depths 1.
|
|
189
|
+
return isaac_typescript_definitions_1.LevelStage.DEPTHS_1;
|
|
190
|
+
}
|
|
191
|
+
// From Depths 1 to Caves 2.
|
|
192
|
+
return isaac_typescript_definitions_1.LevelStage.CAVES_2;
|
|
193
|
+
}
|
|
194
|
+
if (stage === isaac_typescript_definitions_1.LevelStage.DEPTHS_2) {
|
|
195
|
+
if (repentanceStage) {
|
|
196
|
+
// From Mausoleum 2 to Depths 2.
|
|
197
|
+
return isaac_typescript_definitions_1.LevelStage.DEPTHS_2;
|
|
198
|
+
}
|
|
199
|
+
// From Depths 2 to Depths 1.
|
|
200
|
+
return isaac_typescript_definitions_1.LevelStage.DEPTHS_1;
|
|
201
|
+
}
|
|
202
|
+
return stage - 1;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Helper function to get all of the stages that a player has visited thus far on this run.
|
|
206
|
+
*
|
|
207
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.STAGE_HISTORY`.
|
|
208
|
+
*
|
|
209
|
+
* @public
|
|
210
|
+
*/
|
|
211
|
+
getStageHistory() {
|
|
212
|
+
return v.run.stageHistory;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Helper function to check if a player has previous visited a particular stage (or stage + stage
|
|
216
|
+
* type combination) on this run.
|
|
217
|
+
*
|
|
218
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.STAGE_HISTORY`.
|
|
219
|
+
*
|
|
220
|
+
* @param stage The stage to check for.
|
|
221
|
+
* @param stageType Optional. If provided, will check for a specific stage and stage type
|
|
222
|
+
* combination.
|
|
223
|
+
*/
|
|
224
|
+
hasVisitedStage(stage, stageType) {
|
|
225
|
+
if (stageType === undefined) {
|
|
226
|
+
return v.run.stageHistory.some((stageHistoryEntry) => stageHistoryEntry.stage === stage);
|
|
227
|
+
}
|
|
228
|
+
return v.run.stageHistory.some((stageHistoryEntry) => stageHistoryEntry.stage === stage &&
|
|
229
|
+
stageHistoryEntry.stageType === stageType);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
exports.StageHistory = StageHistory;
|
|
233
|
+
__decorate([
|
|
234
|
+
decorators_1.Exported
|
|
235
|
+
], StageHistory.prototype, "getNextStageTypeWithHistory", null);
|
|
236
|
+
__decorate([
|
|
237
|
+
decorators_1.Exported
|
|
238
|
+
], StageHistory.prototype, "getNextStageWithHistory", null);
|
|
239
|
+
__decorate([
|
|
240
|
+
decorators_1.Exported
|
|
241
|
+
], StageHistory.prototype, "getStageHistory", null);
|
|
242
|
+
__decorate([
|
|
243
|
+
decorators_1.Exported
|
|
244
|
+
], StageHistory.prototype, "hasVisitedStage", null);
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.StartAmbush = void 0;
|
|
10
|
+
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
11
|
+
const decorators_1 = require("../../../decorators");
|
|
12
|
+
const ISCFeature_1 = require("../../../enums/ISCFeature");
|
|
13
|
+
const entities_1 = require("../../../functions/entities");
|
|
14
|
+
const pickupsSpecific_1 = require("../../../functions/pickupsSpecific");
|
|
15
|
+
const Feature_1 = require("../../private/Feature");
|
|
16
|
+
/** Hard-coding this makes it easier to clean up the pickups afterwards. */
|
|
17
|
+
const SACK_SEED_THAT_SPAWNS_TWO_COINS = 6;
|
|
18
|
+
class StartAmbush extends Feature_1.Feature {
|
|
19
|
+
runInNFrames;
|
|
20
|
+
/** @internal */
|
|
21
|
+
constructor(runInNFrames) {
|
|
22
|
+
super();
|
|
23
|
+
this.featuresUsed = [ISCFeature_1.ISCFeature.RUN_IN_N_FRAMES];
|
|
24
|
+
this.runInNFrames = runInNFrames;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Helper function to start a Challenge Room or the Boss Rush.
|
|
28
|
+
*
|
|
29
|
+
* Specifically, this is performed by spawning a sack on top of the player, waiting a game frame,
|
|
30
|
+
* and then removing the sack and the pickups that the sack dropped.
|
|
31
|
+
*
|
|
32
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.START_AMBUSH`.
|
|
33
|
+
*
|
|
34
|
+
* @public
|
|
35
|
+
*/
|
|
36
|
+
startAmbush() {
|
|
37
|
+
const player = Isaac.GetPlayer();
|
|
38
|
+
const sack = (0, pickupsSpecific_1.spawnSackWithSeed)(isaac_typescript_definitions_1.SackSubType.NULL, player.Position, SACK_SEED_THAT_SPAWNS_TWO_COINS);
|
|
39
|
+
// The sack will play the "Appear" animation and the player will not be able to interact with it
|
|
40
|
+
// while this is occurring. By stopping the animation, it will transition to the "Idle"
|
|
41
|
+
// animation and be interactable on the next game frame.
|
|
42
|
+
const sprite = sack.GetSprite();
|
|
43
|
+
sprite.Stop();
|
|
44
|
+
const sackPtr = EntityPtr(sack);
|
|
45
|
+
this.runInNFrames.runNextGameFrame(() => {
|
|
46
|
+
const futureSack = sackPtr.Ref;
|
|
47
|
+
if (futureSack === undefined) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
futureSack.Remove();
|
|
51
|
+
const sackPtrHash = GetPtrHash(futureSack);
|
|
52
|
+
const coins = (0, pickupsSpecific_1.getCoins)();
|
|
53
|
+
const coinsFromSack = coins.filter((pickup) => pickup.SpawnerEntity !== undefined &&
|
|
54
|
+
GetPtrHash(pickup.SpawnerEntity) === sackPtrHash);
|
|
55
|
+
(0, entities_1.removeEntities)(coinsFromSack);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.StartAmbush = StartAmbush;
|
|
60
|
+
__decorate([
|
|
61
|
+
decorators_1.Exported
|
|
62
|
+
], StartAmbush.prototype, "startAmbush", null);
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.TaintedLazarusPlayers = void 0;
|
|
10
|
+
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
11
|
+
const decorators_1 = require("../../../decorators");
|
|
12
|
+
const log_1 = require("../../../functions/log");
|
|
13
|
+
const Feature_1 = require("../../private/Feature");
|
|
14
|
+
const v = {
|
|
15
|
+
run: {
|
|
16
|
+
queuedTaintedLazarus: [],
|
|
17
|
+
queuedDeadTaintedLazarus: [],
|
|
18
|
+
/**
|
|
19
|
+
* The `POST_PLAYER_INIT` callback fires for Dead Tainted Lazarus at the beginning of the run.
|
|
20
|
+
* However, the player index for the Dead Tainted Lazarus player object at that time does not
|
|
21
|
+
* actually correspond to the player index for the real player once Flip has been used. Thus, we
|
|
22
|
+
* revert to using PtrHash as an index for our map, which is consistent between the Dead Tainted
|
|
23
|
+
* Lazarus object in the `POST_PLAYER_INIT` callback and the "real" Dead Tainted Lazarus.
|
|
24
|
+
*
|
|
25
|
+
* We use `EntityPlayer` as the value for the map instead of `EntityPtr` because using the
|
|
26
|
+
* pointer does not work for some reason. (When we unwrap it after one or more flips have been
|
|
27
|
+
* used, the pointers no longer point to the original objects, even if we manually update the
|
|
28
|
+
* pointers in the `POST_FLIP` callback.)
|
|
29
|
+
*/
|
|
30
|
+
subPlayerMap: new Map(),
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* This feature provides a way for end-users to get the `EntityPlayer` object for the other Tainted
|
|
35
|
+
* Lazarus.
|
|
36
|
+
*/
|
|
37
|
+
class TaintedLazarusPlayers extends Feature_1.Feature {
|
|
38
|
+
/** @internal */
|
|
39
|
+
v = v;
|
|
40
|
+
vConditionalFunc = () => false;
|
|
41
|
+
/** @internal */
|
|
42
|
+
constructor() {
|
|
43
|
+
super();
|
|
44
|
+
this.callbacksUsed = [
|
|
45
|
+
// 9
|
|
46
|
+
[isaac_typescript_definitions_1.ModCallback.POST_PLAYER_INIT, this.postPlayerInit],
|
|
47
|
+
];
|
|
48
|
+
}
|
|
49
|
+
// ModCallback.POST_PLAYER_INIT (9)
|
|
50
|
+
postPlayerInit = (player) => {
|
|
51
|
+
const character = player.GetPlayerType();
|
|
52
|
+
if (character === isaac_typescript_definitions_1.PlayerType.LAZARUS_B) {
|
|
53
|
+
v.run.queuedTaintedLazarus.push(player);
|
|
54
|
+
}
|
|
55
|
+
else if (character === isaac_typescript_definitions_1.PlayerType.LAZARUS_2_B) {
|
|
56
|
+
v.run.queuedDeadTaintedLazarus.push(player);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
this.checkDequeue();
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Indexes are the `PtrHash`, values are the `EntityPtr` of the *other* Lazarus.
|
|
65
|
+
*
|
|
66
|
+
* When starting a run, the `POST_PLAYER_INIT` callback will fire first for Dead Tainted Lazarus,
|
|
67
|
+
* then for Tainted Lazarus. When continuing a run, the `POST_PLAYER_INIT` callback will fire
|
|
68
|
+
* first for the character that is currently active. Thus, since the order of the characters is
|
|
69
|
+
* not certain, we insert each of their pointers into a queue, and then only populate the map when
|
|
70
|
+
* we have one Tainted Lazarus and one Dead Tainted Lazarus.
|
|
71
|
+
*/
|
|
72
|
+
checkDequeue() {
|
|
73
|
+
if (v.run.queuedTaintedLazarus.length === 0 ||
|
|
74
|
+
v.run.queuedDeadTaintedLazarus.length === 0) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const taintedLazarus = v.run.queuedTaintedLazarus.shift();
|
|
78
|
+
const deadTaintedLazarus = v.run.queuedDeadTaintedLazarus.shift();
|
|
79
|
+
if (taintedLazarus === undefined || deadTaintedLazarus === undefined) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const taintedLazarusPtrHash = GetPtrHash(taintedLazarus);
|
|
83
|
+
const deadTaintedLazarusPtrHash = GetPtrHash(deadTaintedLazarus);
|
|
84
|
+
if (taintedLazarusPtrHash === deadTaintedLazarusPtrHash) {
|
|
85
|
+
(0, log_1.logError)("Failed to cache the Tainted Lazarus player objects, since the hash for Tainted Lazarus and Dead Tainted Lazarus were the same.");
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
v.run.subPlayerMap.set(taintedLazarusPtrHash, deadTaintedLazarus);
|
|
89
|
+
v.run.subPlayerMap.set(deadTaintedLazarusPtrHash, taintedLazarus);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Helper function to get the other version of Tainted Lazarus.
|
|
93
|
+
*
|
|
94
|
+
* - On Tainted Lazarus, returns the player object for Dead Tainted Lazarus.
|
|
95
|
+
* - On Dead Tainted Lazarus, returns the player object for Tainted Lazarus.
|
|
96
|
+
* - Returns undefined if player object retrieval failed for any reason.
|
|
97
|
+
*
|
|
98
|
+
* If you call the `EntityPlayer.Exists` method on the returned object, it will return false.
|
|
99
|
+
* However, you can still call the other methods like you normally would (e.g.
|
|
100
|
+
* `EntityPlayer.AddCollectible`).
|
|
101
|
+
*
|
|
102
|
+
* In order to use this function, you must upgrade your mod with
|
|
103
|
+
* `ISCFeature.CHARACTER_HEALTH_CONVERSION`.
|
|
104
|
+
*
|
|
105
|
+
* @public
|
|
106
|
+
*/
|
|
107
|
+
getTaintedLazarusSubPlayer(player) {
|
|
108
|
+
const ptrHash = GetPtrHash(player);
|
|
109
|
+
return v.run.subPlayerMap.get(ptrHash);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.TaintedLazarusPlayers = TaintedLazarusPlayers;
|
|
113
|
+
__decorate([
|
|
114
|
+
decorators_1.Exported
|
|
115
|
+
], TaintedLazarusPlayers.prototype, "getTaintedLazarusSubPlayer", null);
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.UnlockAchievementsDetection = void 0;
|
|
10
|
+
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
11
|
+
const constants_1 = require("../../../core/constants");
|
|
12
|
+
const decorators_1 = require("../../../decorators");
|
|
13
|
+
const ModCallbackCustom_1 = require("../../../enums/ModCallbackCustom");
|
|
14
|
+
const entitiesSpecific_1 = require("../../../functions/entitiesSpecific");
|
|
15
|
+
const Feature_1 = require("../../private/Feature");
|
|
16
|
+
const v = {
|
|
17
|
+
run: {
|
|
18
|
+
canRunUnlockAchievements: true,
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
class UnlockAchievementsDetection extends Feature_1.Feature {
|
|
22
|
+
/** @internal */
|
|
23
|
+
v = v;
|
|
24
|
+
/** @internal */
|
|
25
|
+
constructor() {
|
|
26
|
+
super();
|
|
27
|
+
this.customCallbacksUsed = [
|
|
28
|
+
[
|
|
29
|
+
ModCallbackCustom_1.ModCallbackCustom.POST_GAME_STARTED_REORDERED,
|
|
30
|
+
this.postGameStartedReordered,
|
|
31
|
+
],
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
// ModCallbackCustom.POST_GAME_STARTED_REORDERED
|
|
35
|
+
postGameStartedReordered = () => {
|
|
36
|
+
const greedDonationMachine = (0, entitiesSpecific_1.spawnSlot)(isaac_typescript_definitions_1.SlotVariant.GREED_DONATION_MACHINE, 0, constants_1.VectorZero);
|
|
37
|
+
v.run.canRunUnlockAchievements = greedDonationMachine.Exists();
|
|
38
|
+
greedDonationMachine.Remove();
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Helper function to see if the current run can unlock achievements. For example, if playing on a
|
|
42
|
+
* set seed or in a victory lap, achievements are disabled.
|
|
43
|
+
*
|
|
44
|
+
* Under the hood, this is determined by spawning a Greed Donation Machine at the beginning of the
|
|
45
|
+
* run and then seeing if it exists before removing it. (The results are cached for the entire
|
|
46
|
+
* run.)
|
|
47
|
+
*
|
|
48
|
+
* In order to use this function, you must upgrade your mod with
|
|
49
|
+
* `ISCFeature.UNLOCK_ACHIEVEMENTS_DETECTION`.
|
|
50
|
+
*
|
|
51
|
+
* @public
|
|
52
|
+
*/
|
|
53
|
+
canRunUnlockAchievements() {
|
|
54
|
+
return v.run.canRunUnlockAchievements;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.UnlockAchievementsDetection = UnlockAchievementsDetection;
|
|
58
|
+
__decorate([
|
|
59
|
+
decorators_1.Exported
|
|
60
|
+
], UnlockAchievementsDetection.prototype, "canRunUnlockAchievements", null);
|