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
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* These functions have to do with the room grid index for the level (i.e. the position that the
|
|
4
3
|
* room is on the grid that represents the map for the level).
|
|
@@ -7,48 +6,22 @@
|
|
|
7
6
|
*
|
|
8
7
|
* @module
|
|
9
8
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
exports.getRoomShapeAdjacentGridIndexDeltas = getRoomShapeAdjacentGridIndexDeltas;
|
|
23
|
-
exports.getRoomShapeAdjacentGridIndexes = getRoomShapeAdjacentGridIndexes;
|
|
24
|
-
exports.getRoomShapeAdjacentNonExistingGridIndexes = getRoomShapeAdjacentNonExistingGridIndexes;
|
|
25
|
-
exports.inGrid = inGrid;
|
|
26
|
-
exports.inRedKeyRoom = inRedKeyRoom;
|
|
27
|
-
exports.isDeadEnd = isDeadEnd;
|
|
28
|
-
exports.isDoorSlotValidAtGridIndex = isDoorSlotValidAtGridIndex;
|
|
29
|
-
exports.isDoorSlotValidAtGridIndexForRedRoom = isDoorSlotValidAtGridIndexForRedRoom;
|
|
30
|
-
exports.isRedKeyRoom = isRedKeyRoom;
|
|
31
|
-
exports.isRoomInsideGrid = isRoomInsideGrid;
|
|
32
|
-
exports.newRoom = newRoom;
|
|
33
|
-
exports.roomExists = roomExists;
|
|
34
|
-
exports.roomGridIndexToVector = roomGridIndexToVector;
|
|
35
|
-
exports.vectorToRoomGridIndex = vectorToRoomGridIndex;
|
|
36
|
-
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
37
|
-
const cachedClasses_1 = require("../core/cachedClasses");
|
|
38
|
-
const constants_1 = require("../core/constants");
|
|
39
|
-
const roomShapeToDoorSlotsToGridIndexDelta_1 = require("../objects/roomShapeToDoorSlotsToGridIndexDelta");
|
|
40
|
-
const array_1 = require("./array");
|
|
41
|
-
const doors_1 = require("./doors");
|
|
42
|
-
const flag_1 = require("./flag");
|
|
43
|
-
const map_1 = require("./map");
|
|
44
|
-
const rng_1 = require("./rng");
|
|
45
|
-
const roomData_1 = require("./roomData");
|
|
46
|
-
const roomShape_1 = require("./roomShape");
|
|
47
|
-
const rooms_1 = require("./rooms");
|
|
9
|
+
import { DisplayFlag, LevelStateFlag, RoomDescriptorFlag, RoomType, } from "isaac-typescript-definitions";
|
|
10
|
+
import { game } from "../core/cachedClasses";
|
|
11
|
+
import { ALL_DISPLAY_FLAGS, LEVEL_GRID_ROW_WIDTH, MAX_LEVEL_GRID_INDEX, } from "../core/constants";
|
|
12
|
+
import { ROOM_SHAPE_TO_DOOR_SLOTS_TO_GRID_INDEX_DELTA } from "../objects/roomShapeToDoorSlotsToGridIndexDelta";
|
|
13
|
+
import { getRandomArrayElement } from "./array";
|
|
14
|
+
import { doorSlotToDoorSlotFlag } from "./doors";
|
|
15
|
+
import { addFlag, hasFlag, removeFlag } from "./flag";
|
|
16
|
+
import { copyMap } from "./map";
|
|
17
|
+
import { isRNG, newRNG } from "./rng";
|
|
18
|
+
import { getRoomAllowedDoors, getRoomData, getRoomDescriptor, getRoomGridIndex, getRoomShape, } from "./roomData";
|
|
19
|
+
import { getGridIndexDelta } from "./roomShape";
|
|
20
|
+
import { getRooms, getRoomsInsideGrid, isMineShaft, isMirrorRoom, isSecretRoomType, } from "./rooms";
|
|
48
21
|
const LEFT = -1;
|
|
49
|
-
const UP = -
|
|
22
|
+
const UP = -LEVEL_GRID_ROW_WIDTH;
|
|
50
23
|
const RIGHT = 1;
|
|
51
|
-
const DOWN =
|
|
24
|
+
const DOWN = LEVEL_GRID_ROW_WIDTH;
|
|
52
25
|
const ADJACENT_ROOM_GRID_INDEX_DELTAS = [LEFT, UP, RIGHT, DOWN];
|
|
53
26
|
/**
|
|
54
27
|
* Helper function to get only the adjacent room grid indexes that exist (i.e. have room data).
|
|
@@ -58,9 +31,9 @@ const ADJACENT_ROOM_GRID_INDEX_DELTAS = [LEFT, UP, RIGHT, DOWN];
|
|
|
58
31
|
*
|
|
59
32
|
* @param roomGridIndex Optional. Default is the current room index.
|
|
60
33
|
*/
|
|
61
|
-
function getAdjacentExistingRoomGridIndexes(roomGridIndex) {
|
|
34
|
+
export function getAdjacentExistingRoomGridIndexes(roomGridIndex) {
|
|
62
35
|
const adjacentRoomGridIndexes = getAdjacentRoomGridIndexes(roomGridIndex);
|
|
63
|
-
return adjacentRoomGridIndexes.filter((adjacentRoomGridIndex) =>
|
|
36
|
+
return adjacentRoomGridIndexes.filter((adjacentRoomGridIndex) => getRoomData(adjacentRoomGridIndex) !== undefined);
|
|
64
37
|
}
|
|
65
38
|
/**
|
|
66
39
|
* Helper function to get only the adjacent room grid indexes that do not exist (i.e. do not have
|
|
@@ -69,9 +42,9 @@ function getAdjacentExistingRoomGridIndexes(roomGridIndex) {
|
|
|
69
42
|
* This is just a filtering of the results of the `getAdjacentExistingRoomGridIndexes` function. See
|
|
70
43
|
* that function for more information.
|
|
71
44
|
*/
|
|
72
|
-
function getAdjacentNonExistingRoomGridIndexes(roomGridIndex) {
|
|
45
|
+
export function getAdjacentNonExistingRoomGridIndexes(roomGridIndex) {
|
|
73
46
|
const adjacentRoomGridIndexes = getAdjacentRoomGridIndexes(roomGridIndex);
|
|
74
|
-
return adjacentRoomGridIndexes.filter((adjacentRoomGridIndex) =>
|
|
47
|
+
return adjacentRoomGridIndexes.filter((adjacentRoomGridIndex) => getRoomData(adjacentRoomGridIndex) === undefined);
|
|
75
48
|
}
|
|
76
49
|
/**
|
|
77
50
|
* Helper function to get all of the room grid indexes that are adjacent to a given room grid index
|
|
@@ -88,8 +61,8 @@ function getAdjacentNonExistingRoomGridIndexes(roomGridIndex) {
|
|
|
88
61
|
*
|
|
89
62
|
* @param roomGridIndex Optional. Default is the current room index.
|
|
90
63
|
*/
|
|
91
|
-
function getAdjacentRoomGridIndexes(roomGridIndex) {
|
|
92
|
-
const roomGridIndexToUse = roomGridIndex ??
|
|
64
|
+
export function getAdjacentRoomGridIndexes(roomGridIndex) {
|
|
65
|
+
const roomGridIndexToUse = roomGridIndex ?? getRoomGridIndex();
|
|
93
66
|
if (!isRoomInsideGrid(roomGridIndexToUse)) {
|
|
94
67
|
return [];
|
|
95
68
|
}
|
|
@@ -102,8 +75,8 @@ function getAdjacentRoomGridIndexes(roomGridIndex) {
|
|
|
102
75
|
*
|
|
103
76
|
* Rooms without any data are assumed to be non-existent and are not included.
|
|
104
77
|
*/
|
|
105
|
-
function getAllRoomGridIndexes() {
|
|
106
|
-
const rooms =
|
|
78
|
+
export function getAllRoomGridIndexes() {
|
|
79
|
+
const rooms = getRooms();
|
|
107
80
|
return rooms.map((roomDescriptor) => roomDescriptor.SafeGridIndex);
|
|
108
81
|
}
|
|
109
82
|
/**
|
|
@@ -123,12 +96,12 @@ function getAllRoomGridIndexes() {
|
|
|
123
96
|
* @returns Either a tuple of adjacent room grid index, `DoorSlot`, and new room grid index, or
|
|
124
97
|
* undefined.
|
|
125
98
|
*/
|
|
126
|
-
function getNewRoomCandidate(seedOrRNG, ensureDeadEnd = true) {
|
|
99
|
+
export function getNewRoomCandidate(seedOrRNG, ensureDeadEnd = true) {
|
|
127
100
|
const newRoomCandidatesForLevel = getNewRoomCandidatesForLevel(ensureDeadEnd);
|
|
128
101
|
if (newRoomCandidatesForLevel.length === 0) {
|
|
129
102
|
return undefined;
|
|
130
103
|
}
|
|
131
|
-
return
|
|
104
|
+
return getRandomArrayElement(newRoomCandidatesForLevel, seedOrRNG);
|
|
132
105
|
}
|
|
133
106
|
/**
|
|
134
107
|
* Helper function to iterate through the possible doors for a room and see if any of them would be
|
|
@@ -140,8 +113,8 @@ function getNewRoomCandidate(seedOrRNG, ensureDeadEnd = true) {
|
|
|
140
113
|
* that would have a red door.
|
|
141
114
|
* @returns A array of tuples of `DoorSlot` and room grid index.
|
|
142
115
|
*/
|
|
143
|
-
function getNewRoomCandidatesBesideRoom(roomGridIndex, ensureDeadEnd = true) {
|
|
144
|
-
const roomDescriptor =
|
|
116
|
+
export function getNewRoomCandidatesBesideRoom(roomGridIndex, ensureDeadEnd = true) {
|
|
117
|
+
const roomDescriptor = getRoomDescriptor(roomGridIndex);
|
|
145
118
|
// First, handle the case of rooms outside of the grid, which obviously cannot have any possible
|
|
146
119
|
// adjacent new room candidates.
|
|
147
120
|
if (!isRoomInsideGrid(roomDescriptor.SafeGridIndex)) {
|
|
@@ -159,8 +132,8 @@ function getNewRoomCandidatesBesideRoom(roomGridIndex, ensureDeadEnd = true) {
|
|
|
159
132
|
// The "getRoomShapeAdjacentNonExistingGridIndexes" returns grid indexes for every possible
|
|
160
133
|
// door, but the real room we are examining will only have a subset of these doors. Thus, we
|
|
161
134
|
// have to exclude adjacent grid indexes where it would not be possible to place a door.
|
|
162
|
-
const doorSlotFlag =
|
|
163
|
-
if (!
|
|
135
|
+
const doorSlotFlag = doorSlotToDoorSlotFlag(doorSlot);
|
|
136
|
+
if (!hasFlag(roomData.Doors, doorSlotFlag)) {
|
|
164
137
|
continue;
|
|
165
138
|
}
|
|
166
139
|
// Check to see if hypothetically creating a room at the given room grid index would be a dead
|
|
@@ -185,14 +158,14 @@ function getNewRoomCandidatesBesideRoom(roomGridIndex, ensureDeadEnd = true) {
|
|
|
185
158
|
* @returns A array of tuples containing the adjacent room grid index, the `DoorSlot`, and the new
|
|
186
159
|
* room grid index.
|
|
187
160
|
*/
|
|
188
|
-
function getNewRoomCandidatesForLevel(ensureDeadEnd = true) {
|
|
161
|
+
export function getNewRoomCandidatesForLevel(ensureDeadEnd = true) {
|
|
189
162
|
// We want to iterate over every room on the floor and search for potential new room spots.
|
|
190
|
-
const roomsInsideGrid =
|
|
163
|
+
const roomsInsideGrid = getRoomsInsideGrid();
|
|
191
164
|
// However, we want to filter out special rooms because they are supposed to be dead ends.
|
|
192
165
|
const normalRooms = roomsInsideGrid.filter((room) => room.Data !== undefined
|
|
193
|
-
&& room.Data.Type ===
|
|
194
|
-
&& !
|
|
195
|
-
&& !
|
|
166
|
+
&& room.Data.Type === RoomType.DEFAULT
|
|
167
|
+
&& !isMirrorRoom(room.Data) // Mirror rooms do not count as special rooms.
|
|
168
|
+
&& !isMineShaft(room.Data));
|
|
196
169
|
const roomsToLookThrough = ensureDeadEnd ? normalRooms : roomsInsideGrid;
|
|
197
170
|
const newRoomCandidates = [];
|
|
198
171
|
for (const room of roomsToLookThrough) {
|
|
@@ -217,8 +190,8 @@ function getNewRoomCandidatesForLevel(ensureDeadEnd = true) {
|
|
|
217
190
|
* @param roomGridIndex Optional. Default is the current room index.
|
|
218
191
|
* @returns A map of `DoorSlot` to the corresponding room grid index.
|
|
219
192
|
*/
|
|
220
|
-
function getRoomAdjacentGridIndexes(roomGridIndex) {
|
|
221
|
-
const roomDescriptor =
|
|
193
|
+
export function getRoomAdjacentGridIndexes(roomGridIndex) {
|
|
194
|
+
const roomDescriptor = getRoomDescriptor(roomGridIndex);
|
|
222
195
|
if (!isRoomInsideGrid(roomDescriptor.SafeGridIndex)) {
|
|
223
196
|
return new Map();
|
|
224
197
|
}
|
|
@@ -237,9 +210,9 @@ function getRoomAdjacentGridIndexes(roomGridIndex) {
|
|
|
237
210
|
* This function is variadic, meaning that you can specify N arguments to get the combined room
|
|
238
211
|
* descriptors for N room types.
|
|
239
212
|
*/
|
|
240
|
-
function getRoomDescriptorsForType(...roomTypes) {
|
|
213
|
+
export function getRoomDescriptorsForType(...roomTypes) {
|
|
241
214
|
const roomTypesSet = new Set(roomTypes);
|
|
242
|
-
const roomsInsideGrid =
|
|
215
|
+
const roomsInsideGrid = getRoomsInsideGrid();
|
|
243
216
|
return roomsInsideGrid.filter((roomDescriptor) => roomDescriptor.Data !== undefined
|
|
244
217
|
&& roomTypesSet.has(roomDescriptor.Data.Type));
|
|
245
218
|
}
|
|
@@ -252,7 +225,7 @@ function getRoomDescriptorsForType(...roomTypes) {
|
|
|
252
225
|
* This function is variadic, meaning that you can specify N arguments to get the combined grid
|
|
253
226
|
* indexes for N room types.
|
|
254
227
|
*/
|
|
255
|
-
function getRoomGridIndexesForType(...roomTypes) {
|
|
228
|
+
export function getRoomGridIndexesForType(...roomTypes) {
|
|
256
229
|
const roomDescriptors = getRoomDescriptorsForType(...roomTypes);
|
|
257
230
|
return roomDescriptors.map((roomDescriptor) => roomDescriptor.SafeGridIndex);
|
|
258
231
|
}
|
|
@@ -263,10 +236,10 @@ function getRoomGridIndexesForType(...roomTypes) {
|
|
|
263
236
|
* This is just a filtering of the results of the `getRoomShapeAdjacentGridIndexes` function. See
|
|
264
237
|
* that function for more information.
|
|
265
238
|
*/
|
|
266
|
-
function getRoomShapeAdjacentExistingGridIndexes(safeRoomGridIndex, roomShape) {
|
|
267
|
-
const roomShapeAdjacentGridIndexes =
|
|
239
|
+
export function getRoomShapeAdjacentExistingGridIndexes(safeRoomGridIndex, roomShape) {
|
|
240
|
+
const roomShapeAdjacentGridIndexes = copyMap(getRoomShapeAdjacentGridIndexes(safeRoomGridIndex, roomShape));
|
|
268
241
|
for (const [doorSlot, roomGridIndex] of roomShapeAdjacentGridIndexes) {
|
|
269
|
-
const roomData =
|
|
242
|
+
const roomData = getRoomData(roomGridIndex);
|
|
270
243
|
if (roomData === undefined) {
|
|
271
244
|
roomShapeAdjacentGridIndexes.delete(doorSlot);
|
|
272
245
|
}
|
|
@@ -281,8 +254,8 @@ function getRoomShapeAdjacentExistingGridIndexes(safeRoomGridIndex, roomShape) {
|
|
|
281
254
|
*
|
|
282
255
|
* @returns A map of `DoorSlot` to the corresponding room grid index delta.
|
|
283
256
|
*/
|
|
284
|
-
function getRoomShapeAdjacentGridIndexDeltas(roomShape) {
|
|
285
|
-
return
|
|
257
|
+
export function getRoomShapeAdjacentGridIndexDeltas(roomShape) {
|
|
258
|
+
return ROOM_SHAPE_TO_DOOR_SLOTS_TO_GRID_INDEX_DELTA[roomShape];
|
|
286
259
|
}
|
|
287
260
|
/**
|
|
288
261
|
* Helper function to get the room grid index that each hypothetical door in a given room shape
|
|
@@ -293,7 +266,7 @@ function getRoomShapeAdjacentGridIndexDeltas(roomShape) {
|
|
|
293
266
|
* @param roomShape The shape of the hypothetical room.
|
|
294
267
|
* @returns A map of `DoorSlot` to the corresponding room grid index.
|
|
295
268
|
*/
|
|
296
|
-
function getRoomShapeAdjacentGridIndexes(safeRoomGridIndex, roomShape) {
|
|
269
|
+
export function getRoomShapeAdjacentGridIndexes(safeRoomGridIndex, roomShape) {
|
|
297
270
|
const roomShapeAdjacentGridIndexDeltas = getRoomShapeAdjacentGridIndexDeltas(roomShape);
|
|
298
271
|
const adjacentGridIndexes = new Map();
|
|
299
272
|
for (const [doorSlot, delta] of roomShapeAdjacentGridIndexDeltas) {
|
|
@@ -311,10 +284,10 @@ function getRoomShapeAdjacentGridIndexes(safeRoomGridIndex, roomShape) {
|
|
|
311
284
|
* This is just a filtering of the results of the `getRoomShapeAdjacentGridIndexes` function. See
|
|
312
285
|
* that function for more information.
|
|
313
286
|
*/
|
|
314
|
-
function getRoomShapeAdjacentNonExistingGridIndexes(safeRoomGridIndex, roomShape) {
|
|
315
|
-
const roomShapeAdjacentGridIndexes =
|
|
287
|
+
export function getRoomShapeAdjacentNonExistingGridIndexes(safeRoomGridIndex, roomShape) {
|
|
288
|
+
const roomShapeAdjacentGridIndexes = copyMap(getRoomShapeAdjacentGridIndexes(safeRoomGridIndex, roomShape));
|
|
316
289
|
for (const [doorSlot, roomGridIndex] of roomShapeAdjacentGridIndexes) {
|
|
317
|
-
const roomData =
|
|
290
|
+
const roomData = getRoomData(roomGridIndex);
|
|
318
291
|
if (roomData !== undefined) {
|
|
319
292
|
roomShapeAdjacentGridIndexes.delete(doorSlot);
|
|
320
293
|
}
|
|
@@ -327,8 +300,8 @@ function getRoomShapeAdjacentNonExistingGridIndexes(safeRoomGridIndex, roomShape
|
|
|
327
300
|
*
|
|
328
301
|
* For example, Devil Rooms and the Mega Satan room are not considered to be inside the grid.
|
|
329
302
|
*/
|
|
330
|
-
function inGrid() {
|
|
331
|
-
const roomGridIndex =
|
|
303
|
+
export function inGrid() {
|
|
304
|
+
const roomGridIndex = getRoomGridIndex();
|
|
332
305
|
return isRoomInsideGrid(roomGridIndex);
|
|
333
306
|
}
|
|
334
307
|
/**
|
|
@@ -336,8 +309,8 @@ function inGrid() {
|
|
|
336
309
|
*
|
|
337
310
|
* Under the hood, this checks for the `RoomDescriptorFlag.FLAG_RED_ROOM` flag.
|
|
338
311
|
*/
|
|
339
|
-
function inRedKeyRoom() {
|
|
340
|
-
const roomGridIndex =
|
|
312
|
+
export function inRedKeyRoom() {
|
|
313
|
+
const roomGridIndex = getRoomGridIndex();
|
|
341
314
|
return isRedKeyRoom(roomGridIndex);
|
|
342
315
|
}
|
|
343
316
|
/**
|
|
@@ -352,24 +325,24 @@ function inRedKeyRoom() {
|
|
|
352
325
|
*
|
|
353
326
|
* @param roomGridIndex Optional. Default is the current room index.
|
|
354
327
|
*/
|
|
355
|
-
function isDeadEnd(roomGridIndex) {
|
|
328
|
+
export function isDeadEnd(roomGridIndex) {
|
|
356
329
|
const adjacentExistingRoomGridIndexes = getAdjacentExistingRoomGridIndexes(roomGridIndex);
|
|
357
330
|
return adjacentExistingRoomGridIndexes.length === 1;
|
|
358
331
|
}
|
|
359
|
-
function isDoorSlotValidAtGridIndex(doorSlot, roomGridIndex) {
|
|
360
|
-
const allowedDoors =
|
|
332
|
+
export function isDoorSlotValidAtGridIndex(doorSlot, roomGridIndex) {
|
|
333
|
+
const allowedDoors = getRoomAllowedDoors(roomGridIndex);
|
|
361
334
|
return allowedDoors.has(doorSlot);
|
|
362
335
|
}
|
|
363
|
-
function isDoorSlotValidAtGridIndexForRedRoom(doorSlot, roomGridIndex) {
|
|
336
|
+
export function isDoorSlotValidAtGridIndexForRedRoom(doorSlot, roomGridIndex) {
|
|
364
337
|
const doorSlotValidAtGridIndex = isDoorSlotValidAtGridIndex(doorSlot, roomGridIndex);
|
|
365
338
|
if (!doorSlotValidAtGridIndex) {
|
|
366
339
|
return false;
|
|
367
340
|
}
|
|
368
|
-
const roomShape =
|
|
341
|
+
const roomShape = getRoomShape(roomGridIndex);
|
|
369
342
|
if (roomShape === undefined) {
|
|
370
343
|
return false;
|
|
371
344
|
}
|
|
372
|
-
const delta =
|
|
345
|
+
const delta = getGridIndexDelta(roomShape, doorSlot);
|
|
373
346
|
if (delta === undefined) {
|
|
374
347
|
return false;
|
|
375
348
|
}
|
|
@@ -383,9 +356,9 @@ function isDoorSlotValidAtGridIndexForRedRoom(doorSlot, roomGridIndex) {
|
|
|
383
356
|
*
|
|
384
357
|
* @param roomGridIndex Optional. Default is the current room index.
|
|
385
358
|
*/
|
|
386
|
-
function isRedKeyRoom(roomGridIndex) {
|
|
387
|
-
const roomDescriptor =
|
|
388
|
-
return
|
|
359
|
+
export function isRedKeyRoom(roomGridIndex) {
|
|
360
|
+
const roomDescriptor = getRoomDescriptor(roomGridIndex);
|
|
361
|
+
return hasFlag(roomDescriptor.Flags, RoomDescriptorFlag.RED_ROOM);
|
|
389
362
|
}
|
|
390
363
|
/**
|
|
391
364
|
* Helper function to determine if a given room grid index is inside of the normal 13x13 level grid.
|
|
@@ -394,9 +367,9 @@ function isRedKeyRoom(roomGridIndex) {
|
|
|
394
367
|
*
|
|
395
368
|
* @param roomGridIndex Optional. Default is the current room index.
|
|
396
369
|
*/
|
|
397
|
-
function isRoomInsideGrid(roomGridIndex) {
|
|
398
|
-
roomGridIndex ??=
|
|
399
|
-
return roomGridIndex >= 0 && roomGridIndex <=
|
|
370
|
+
export function isRoomInsideGrid(roomGridIndex) {
|
|
371
|
+
roomGridIndex ??= getRoomGridIndex();
|
|
372
|
+
return roomGridIndex >= 0 && roomGridIndex <= MAX_LEVEL_GRID_INDEX;
|
|
400
373
|
}
|
|
401
374
|
/**
|
|
402
375
|
* Helper function to generate a new room on the floor.
|
|
@@ -420,10 +393,10 @@ function isRoomInsideGrid(roomGridIndex) {
|
|
|
420
393
|
* @returns The room grid index of the new room or undefined if the floor had no valid dead ends to
|
|
421
394
|
* place a room.
|
|
422
395
|
*/
|
|
423
|
-
function newRoom(seedOrRNG, ensureDeadEnd = true, customRoomData) {
|
|
424
|
-
const level =
|
|
396
|
+
export function newRoom(seedOrRNG, ensureDeadEnd = true, customRoomData) {
|
|
397
|
+
const level = game.GetLevel();
|
|
425
398
|
seedOrRNG ??= level.GetDungeonPlacementSeed();
|
|
426
|
-
const rng =
|
|
399
|
+
const rng = isRNG(seedOrRNG) ? seedOrRNG : newRNG(seedOrRNG);
|
|
427
400
|
const newRoomCandidate = getNewRoomCandidate(rng, ensureDeadEnd);
|
|
428
401
|
if (newRoomCandidate === undefined) {
|
|
429
402
|
return undefined;
|
|
@@ -432,8 +405,8 @@ function newRoom(seedOrRNG, ensureDeadEnd = true, customRoomData) {
|
|
|
432
405
|
level.MakeRedRoomDoor(adjacentRoomGridIndex, doorSlot);
|
|
433
406
|
// By default, the room will be a "red room" and have a red graphical tint, so we want to make it
|
|
434
407
|
// a normal room.
|
|
435
|
-
const roomDescriptor =
|
|
436
|
-
roomDescriptor.Flags =
|
|
408
|
+
const roomDescriptor = getRoomDescriptor(newRoomGridIndex);
|
|
409
|
+
roomDescriptor.Flags = removeFlag(roomDescriptor.Flags, RoomDescriptorFlag.RED_ROOM);
|
|
437
410
|
if (customRoomData !== undefined) {
|
|
438
411
|
roomDescriptor.Data = customRoomData;
|
|
439
412
|
}
|
|
@@ -441,16 +414,16 @@ function newRoom(seedOrRNG, ensureDeadEnd = true, customRoomData) {
|
|
|
441
414
|
// must manually alter the `DisplayFlags` of the room descriptor.
|
|
442
415
|
const roomData = roomDescriptor.Data;
|
|
443
416
|
if (roomData !== undefined) {
|
|
444
|
-
const hasFullMap = level.GetStateFlag(
|
|
445
|
-
const hasCompass = level.GetStateFlag(
|
|
446
|
-
const hasBlueMap = level.GetStateFlag(
|
|
417
|
+
const hasFullMap = level.GetStateFlag(LevelStateFlag.FULL_MAP_EFFECT);
|
|
418
|
+
const hasCompass = level.GetStateFlag(LevelStateFlag.COMPASS_EFFECT);
|
|
419
|
+
const hasBlueMap = level.GetStateFlag(LevelStateFlag.BLUE_MAP_EFFECT);
|
|
447
420
|
const roomType = roomData.Type;
|
|
448
|
-
const isSecretRoom =
|
|
421
|
+
const isSecretRoom = isSecretRoomType(roomType);
|
|
449
422
|
if (hasFullMap) {
|
|
450
|
-
roomDescriptor.DisplayFlags =
|
|
423
|
+
roomDescriptor.DisplayFlags = ALL_DISPLAY_FLAGS;
|
|
451
424
|
}
|
|
452
425
|
else if ((!isSecretRoom && hasCompass) || (isSecretRoom && hasBlueMap)) {
|
|
453
|
-
roomDescriptor.DisplayFlags =
|
|
426
|
+
roomDescriptor.DisplayFlags = addFlag(DisplayFlag.VISIBLE, DisplayFlag.SHOW_ICON);
|
|
454
427
|
}
|
|
455
428
|
}
|
|
456
429
|
return newRoomGridIndex;
|
|
@@ -459,8 +432,8 @@ function newRoom(seedOrRNG, ensureDeadEnd = true, customRoomData) {
|
|
|
459
432
|
* Helper function to check if a room exists at the given room grid index. (A room will exist if it
|
|
460
433
|
* has non-undefined data in the room descriptor.)
|
|
461
434
|
*/
|
|
462
|
-
function roomExists(roomGridIndex) {
|
|
463
|
-
const roomData =
|
|
435
|
+
export function roomExists(roomGridIndex) {
|
|
436
|
+
const roomData = getRoomData(roomGridIndex);
|
|
464
437
|
return roomData !== undefined;
|
|
465
438
|
}
|
|
466
439
|
/**
|
|
@@ -474,9 +447,9 @@ function roomExists(roomGridIndex) {
|
|
|
474
447
|
* - The bottom-left grid index of 156 is equal to coordinates of: (0, 12)
|
|
475
448
|
* - The bottom-right grid index of 168 is equal to coordinates of: (12, 12)
|
|
476
449
|
*/
|
|
477
|
-
function roomGridIndexToVector(roomGridIndex) {
|
|
478
|
-
const x = roomGridIndex %
|
|
479
|
-
const y = Math.floor(roomGridIndex /
|
|
450
|
+
export function roomGridIndexToVector(roomGridIndex) {
|
|
451
|
+
const x = roomGridIndex % LEVEL_GRID_ROW_WIDTH;
|
|
452
|
+
const y = Math.floor(roomGridIndex / LEVEL_GRID_ROW_WIDTH);
|
|
480
453
|
return Vector(x, y);
|
|
481
454
|
}
|
|
482
455
|
/**
|
|
@@ -484,6 +457,6 @@ function roomGridIndexToVector(roomGridIndex) {
|
|
|
484
457
|
*
|
|
485
458
|
* Also see the `roomGridIndexToVector` helper function.
|
|
486
459
|
*/
|
|
487
|
-
function vectorToRoomGridIndex(roomVector) {
|
|
488
|
-
return roomVector.Y *
|
|
460
|
+
export function vectorToRoomGridIndex(roomVector) {
|
|
461
|
+
return roomVector.Y * LEVEL_GRID_ROW_WIDTH + roomVector.X;
|
|
489
462
|
}
|
package/dist/functions/log.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getParentFunctionDescription = getParentFunctionDescription;
|
|
4
|
-
exports.log = log;
|
|
5
|
-
exports.logAndPrint = logAndPrint;
|
|
6
|
-
exports.logError = logError;
|
|
7
|
-
const types_1 = require("./types");
|
|
1
|
+
import { isNumber } from "./types";
|
|
8
2
|
/**
|
|
9
3
|
* Helper function to get the name and the line number of the current calling function.
|
|
10
4
|
*
|
|
@@ -15,7 +9,7 @@ const types_1 = require("./types");
|
|
|
15
9
|
* (because the first level is this function, the second level is the calling
|
|
16
10
|
* function, and the third level is the parent of the calling function).
|
|
17
11
|
*/
|
|
18
|
-
function getParentFunctionDescription(
|
|
12
|
+
export function getParentFunctionDescription(
|
|
19
13
|
// We use 3 as a default because:
|
|
20
14
|
// - The first level is this function.
|
|
21
15
|
// - The second level is the calling function.
|
|
@@ -53,8 +47,8 @@ levels = 3) {
|
|
|
53
47
|
* @param includeParentFunction Optional. Whether to prefix the message with the function name and
|
|
54
48
|
* line number, as shown in the above example. Default is true.
|
|
55
49
|
*/
|
|
56
|
-
function log(msg, includeParentFunction = true) {
|
|
57
|
-
if (
|
|
50
|
+
export function log(msg, includeParentFunction = true) {
|
|
51
|
+
if (isNumber(msg)) {
|
|
58
52
|
msg = msg.toString();
|
|
59
53
|
}
|
|
60
54
|
const parentFunctionDescription = includeParentFunction
|
|
@@ -69,7 +63,7 @@ function log(msg, includeParentFunction = true) {
|
|
|
69
63
|
* Helper function to log a message to the "log.txt" file and to print it to the screen at the same
|
|
70
64
|
* time.
|
|
71
65
|
*/
|
|
72
|
-
function logAndPrint(msg) {
|
|
66
|
+
export function logAndPrint(msg) {
|
|
73
67
|
log(msg);
|
|
74
68
|
print(msg);
|
|
75
69
|
}
|
|
@@ -79,7 +73,7 @@ function logAndPrint(msg) {
|
|
|
79
73
|
* This is useful in situations where using the `error` function would be dangerous (since it
|
|
80
74
|
* prevents all of the subsequent code in the callback from running).
|
|
81
75
|
*/
|
|
82
|
-
function logError(msg) {
|
|
76
|
+
export function logError(msg) {
|
|
83
77
|
const errorMsg = `Error: ${msg}`;
|
|
84
78
|
logAndPrint(errorMsg);
|
|
85
79
|
}
|