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,73 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
exports.logTable = logTable;
|
|
25
|
-
exports.logTableDifferences = logTableDifferences;
|
|
26
|
-
exports.logTableKeys = logTableKeys;
|
|
27
|
-
exports.logTableShallow = logTableShallow;
|
|
28
|
-
exports.logTearFlags = logTearFlags;
|
|
29
|
-
exports.logUseFlags = logUseFlags;
|
|
30
|
-
exports.logUserdata = logUserdata;
|
|
31
|
-
exports.logVector = logVector;
|
|
32
|
-
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
33
|
-
const cachedClasses_1 = require("../core/cachedClasses");
|
|
34
|
-
const ReadonlySet_1 = require("../types/ReadonlySet");
|
|
35
|
-
const array_1 = require("./array");
|
|
36
|
-
const bosses_1 = require("./bosses");
|
|
37
|
-
const collectibles_1 = require("./collectibles");
|
|
38
|
-
const entities_1 = require("./entities");
|
|
39
|
-
const enums_1 = require("./enums");
|
|
40
|
-
const flag_1 = require("./flag");
|
|
41
|
-
const isaacAPIClass_1 = require("./isaacAPIClass");
|
|
42
|
-
const itemPool_1 = require("./itemPool");
|
|
43
|
-
const log_1 = require("./log");
|
|
44
|
-
const playerEffects_1 = require("./playerEffects");
|
|
45
|
-
const playerHealth_1 = require("./playerHealth");
|
|
46
|
-
const players_1 = require("./players");
|
|
47
|
-
const roomData_1 = require("./roomData");
|
|
48
|
-
const set_1 = require("./set");
|
|
49
|
-
const sort_1 = require("./sort");
|
|
50
|
-
const table_1 = require("./table");
|
|
51
|
-
const trinkets_1 = require("./trinkets");
|
|
52
|
-
const tstlClass_1 = require("./tstlClass");
|
|
53
|
-
const types_1 = require("./types");
|
|
54
|
-
const vector_1 = require("./vector");
|
|
1
|
+
import { BossID, DamageFlag, DisplayFlag, EntityFlag, GameStateFlag, GridRoom, HeartSubType, LevelStateFlag, Music, NullItemID, ProjectileFlag, RoomType, SeedEffect, SoundEffect, StageID, TearFlag, UseFlag, } from "isaac-typescript-definitions";
|
|
2
|
+
import { game, musicManager, sfxManager } from "../core/cachedClasses";
|
|
3
|
+
import { ReadonlySet } from "../types/ReadonlySet";
|
|
4
|
+
import { arrayToString, isArray } from "./array";
|
|
5
|
+
import { getBossID } from "./bosses";
|
|
6
|
+
import { getCollectibleName } from "./collectibles";
|
|
7
|
+
import { getEntityID } from "./entities";
|
|
8
|
+
import { getEnumEntries } from "./enums";
|
|
9
|
+
import { hasFlag } from "./flag";
|
|
10
|
+
import { getIsaacAPIClassName } from "./isaacAPIClass";
|
|
11
|
+
import { getItemPoolName } from "./itemPool";
|
|
12
|
+
import { log } from "./log";
|
|
13
|
+
import { getEffectsList } from "./playerEffects";
|
|
14
|
+
import { getPlayerHealth } from "./playerHealth";
|
|
15
|
+
import { getPlayerName } from "./players";
|
|
16
|
+
import { getRoomData, getRoomGridIndex, getRoomListIndex } from "./roomData";
|
|
17
|
+
import { combineSets, getSortedSetValues } from "./set";
|
|
18
|
+
import { sortNormal } from "./sort";
|
|
19
|
+
import { iterateTableInOrder } from "./table";
|
|
20
|
+
import { getTrinketName } from "./trinkets";
|
|
21
|
+
import { isDefaultMap, isTSTLMap, isTSTLSet } from "./tstlClass";
|
|
22
|
+
import { isTable, isUserdata } from "./types";
|
|
23
|
+
import { vectorToString } from "./vector";
|
|
55
24
|
/**
|
|
56
25
|
* Helper function to log all of the values in an array.
|
|
57
26
|
*
|
|
58
27
|
* @param array The array to log.
|
|
59
28
|
* @param name Optional. The name of the array, which will be logged before the elements.
|
|
60
29
|
*/
|
|
61
|
-
function logArray(array, name) {
|
|
30
|
+
export function logArray(array, name) {
|
|
62
31
|
name ??= "array";
|
|
63
32
|
// We do not assume the given array has contiguous values in order to be more permissive about the
|
|
64
33
|
// kinds of arrays that will successfully log without a run-time error.
|
|
65
|
-
if (!
|
|
66
|
-
|
|
34
|
+
if (!isArray(array, false)) {
|
|
35
|
+
log("Tried to log an array, but the given object was not an array.");
|
|
67
36
|
return;
|
|
68
37
|
}
|
|
69
|
-
const arrayString =
|
|
70
|
-
|
|
38
|
+
const arrayString = arrayToString(array);
|
|
39
|
+
log(`Logging ${name}: ${arrayString}`);
|
|
71
40
|
}
|
|
72
41
|
/**
|
|
73
42
|
* Helper function to log the names of a collectible type array.
|
|
@@ -75,13 +44,13 @@ function logArray(array, name) {
|
|
|
75
44
|
* @param collectibleTypes The collectible types to log.
|
|
76
45
|
* @param name Optional. The name of the array, which will be logged before the elements.
|
|
77
46
|
*/
|
|
78
|
-
function logCollectibleTypes(collectibleTypes, name) {
|
|
47
|
+
export function logCollectibleTypes(collectibleTypes, name) {
|
|
79
48
|
name ??= "collectibles";
|
|
80
|
-
|
|
49
|
+
log(`Logging ${name}:`);
|
|
81
50
|
let i = 1;
|
|
82
51
|
for (const collectibleType of collectibleTypes) {
|
|
83
|
-
const collectibleName =
|
|
84
|
-
|
|
52
|
+
const collectibleName = getCollectibleName(collectibleType);
|
|
53
|
+
log(`${i}) ${collectibleName} (${collectibleType})`);
|
|
85
54
|
i++;
|
|
86
55
|
}
|
|
87
56
|
}
|
|
@@ -91,61 +60,61 @@ function logCollectibleTypes(collectibleTypes, name) {
|
|
|
91
60
|
* @param color The `Color` object to log.
|
|
92
61
|
* @param name Optional. The name of the object, which will be logged before the properties.
|
|
93
62
|
*/
|
|
94
|
-
function logColor(color, name) {
|
|
63
|
+
export function logColor(color, name) {
|
|
95
64
|
name ??= "color";
|
|
96
|
-
|
|
65
|
+
log(`Logging ${name}: R${color.R}, G${color.G}, B${color.B}, A${color.A}, RO${color.RO}, BO${color.BO}, GO${color.GO}`);
|
|
97
66
|
}
|
|
98
67
|
/** Helper function to log every damage flag that is turned on. Useful when debugging. */
|
|
99
|
-
function logDamageFlags(damageFlags) {
|
|
100
|
-
logFlags(damageFlags,
|
|
68
|
+
export function logDamageFlags(damageFlags) {
|
|
69
|
+
logFlags(damageFlags, DamageFlag, "damage");
|
|
101
70
|
}
|
|
102
71
|
/** Helper function to log every display flag that is turned on. Useful when debugging. */
|
|
103
|
-
function logDisplayFlags(displayFlags) {
|
|
104
|
-
logFlags(displayFlags,
|
|
72
|
+
export function logDisplayFlags(displayFlags) {
|
|
73
|
+
logFlags(displayFlags, DisplayFlag, "display");
|
|
105
74
|
}
|
|
106
75
|
/** Helper function to log every entity flag that is turned on. Useful when debugging. */
|
|
107
|
-
function logEntityFlags(entityFlags) {
|
|
108
|
-
logFlags(entityFlags,
|
|
76
|
+
export function logEntityFlags(entityFlags) {
|
|
77
|
+
logFlags(entityFlags, EntityFlag, "entity");
|
|
109
78
|
}
|
|
110
|
-
function logEntityID(entity) {
|
|
111
|
-
const entityID =
|
|
112
|
-
|
|
79
|
+
export function logEntityID(entity) {
|
|
80
|
+
const entityID = getEntityID(entity);
|
|
81
|
+
log(`Logging entity: ${entityID}`);
|
|
113
82
|
}
|
|
114
83
|
/** Helper function for logging every flag that is turned on. Useful when debugging. */
|
|
115
|
-
function logFlags(flags, flagEnum, description = "") {
|
|
84
|
+
export function logFlags(flags, flagEnum, description = "") {
|
|
116
85
|
if (description !== "") {
|
|
117
86
|
description = "flag";
|
|
118
87
|
}
|
|
119
88
|
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
120
|
-
|
|
89
|
+
log(`Logging ${description} values for: ${flags}`);
|
|
121
90
|
let hasNoFlags = true;
|
|
122
|
-
const entries =
|
|
91
|
+
const entries = getEnumEntries(flagEnum);
|
|
123
92
|
for (const [key, value] of entries) {
|
|
124
|
-
if (!
|
|
93
|
+
if (!hasFlag(flags, value)) {
|
|
125
94
|
continue;
|
|
126
95
|
}
|
|
127
96
|
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
128
|
-
|
|
97
|
+
log(` Has flag: ${key} (${value})`);
|
|
129
98
|
hasNoFlags = false;
|
|
130
99
|
}
|
|
131
100
|
if (hasNoFlags) {
|
|
132
|
-
|
|
101
|
+
log(" n/a (no flags)");
|
|
133
102
|
}
|
|
134
103
|
}
|
|
135
104
|
/** Helper function for logging every game state flag that is turned on. Useful when debugging. */
|
|
136
|
-
function logGameStateFlags() {
|
|
137
|
-
|
|
138
|
-
const gameStateFlagEntries =
|
|
105
|
+
export function logGameStateFlags() {
|
|
106
|
+
log("Logging game state flags:");
|
|
107
|
+
const gameStateFlagEntries = getEnumEntries(GameStateFlag);
|
|
139
108
|
let hasNoFlags = true;
|
|
140
109
|
for (const [key, gameStateFlag] of gameStateFlagEntries) {
|
|
141
|
-
const flagValue =
|
|
110
|
+
const flagValue = game.GetStateFlag(gameStateFlag);
|
|
142
111
|
if (flagValue) {
|
|
143
|
-
|
|
112
|
+
log(` Has flag: ${key} (${gameStateFlag})`);
|
|
144
113
|
hasNoFlags = false;
|
|
145
114
|
}
|
|
146
115
|
}
|
|
147
116
|
if (hasNoFlags) {
|
|
148
|
-
|
|
117
|
+
log(" n/a (no flags)");
|
|
149
118
|
}
|
|
150
119
|
}
|
|
151
120
|
/**
|
|
@@ -154,13 +123,13 @@ function logGameStateFlags() {
|
|
|
154
123
|
* @param itemPoolTypes The item pool types to log.
|
|
155
124
|
* @param name Optional. The name of the array, which will be logged before the elements.
|
|
156
125
|
*/
|
|
157
|
-
function logItemPoolTypes(itemPoolTypes, name) {
|
|
126
|
+
export function logItemPoolTypes(itemPoolTypes, name) {
|
|
158
127
|
name ??= "item pool types";
|
|
159
|
-
|
|
128
|
+
log(`Logging ${name}:`);
|
|
160
129
|
let i = 1;
|
|
161
130
|
for (const itemPoolType of itemPoolTypes) {
|
|
162
|
-
const itemPoolName =
|
|
163
|
-
|
|
131
|
+
const itemPoolName = getItemPoolName(itemPoolType);
|
|
132
|
+
log(`${i}) ${itemPoolName} (${itemPoolType})`);
|
|
164
133
|
i++;
|
|
165
134
|
}
|
|
166
135
|
}
|
|
@@ -170,25 +139,25 @@ function logItemPoolTypes(itemPoolTypes, name) {
|
|
|
170
139
|
* @param kColor The `KColor` object to log.
|
|
171
140
|
* @param name Optional. The name of the object, which will be logged before the properties.
|
|
172
141
|
*/
|
|
173
|
-
function logKColor(kColor, name) {
|
|
142
|
+
export function logKColor(kColor, name) {
|
|
174
143
|
name ??= "KColor";
|
|
175
|
-
|
|
144
|
+
log(`Logging ${name}: R${kColor.Red}, G${kColor.Green}, B${kColor.Blue}, A${kColor.Alpha}`);
|
|
176
145
|
}
|
|
177
146
|
/** Helper function for logging every level state flag that is turned on. Useful when debugging. */
|
|
178
|
-
function logLevelStateFlags() {
|
|
179
|
-
const level =
|
|
180
|
-
const levelStateFlagEntries =
|
|
181
|
-
|
|
147
|
+
export function logLevelStateFlags() {
|
|
148
|
+
const level = game.GetLevel();
|
|
149
|
+
const levelStateFlagEntries = getEnumEntries(LevelStateFlag);
|
|
150
|
+
log("Logging level state flags:");
|
|
182
151
|
let hasNoFlags = true;
|
|
183
152
|
for (const [key, levelStateFlag] of levelStateFlagEntries) {
|
|
184
153
|
const flagValue = level.GetStateFlag(levelStateFlag);
|
|
185
154
|
if (flagValue) {
|
|
186
|
-
|
|
155
|
+
log(` Has flag: ${key} (${levelStateFlag})`);
|
|
187
156
|
hasNoFlags = false;
|
|
188
157
|
}
|
|
189
158
|
}
|
|
190
159
|
if (hasNoFlags) {
|
|
191
|
-
|
|
160
|
+
log(" n/a (no flags)");
|
|
192
161
|
}
|
|
193
162
|
}
|
|
194
163
|
/**
|
|
@@ -197,121 +166,121 @@ function logLevelStateFlags() {
|
|
|
197
166
|
* @param map The TSTL `Map` to log.
|
|
198
167
|
* @param name Optional. The name of the map, which will be logged before the elements.
|
|
199
168
|
*/
|
|
200
|
-
function logMap(map, name) {
|
|
201
|
-
if (!
|
|
202
|
-
|
|
169
|
+
export function logMap(map, name) {
|
|
170
|
+
if (!isTSTLMap(map) && !isDefaultMap(map)) {
|
|
171
|
+
log("Tried to log a TSTL map, but the given object was not a TSTL map.");
|
|
203
172
|
return;
|
|
204
173
|
}
|
|
205
174
|
const suffix = name === undefined ? "" : ` "${name}"`;
|
|
206
|
-
|
|
175
|
+
log(`Logging a TSTL map${suffix}:`);
|
|
207
176
|
const mapKeys = [...map.keys()];
|
|
208
|
-
mapKeys.sort(
|
|
177
|
+
mapKeys.sort(sortNormal);
|
|
209
178
|
for (const key of mapKeys) {
|
|
210
179
|
const value = map.get(key);
|
|
211
|
-
|
|
180
|
+
log(` ${key} --> ${value}`);
|
|
212
181
|
}
|
|
213
|
-
|
|
182
|
+
log(` The size of the map was: ${map.size}`);
|
|
214
183
|
}
|
|
215
|
-
function logMusic() {
|
|
216
|
-
const currentMusic =
|
|
217
|
-
|
|
184
|
+
export function logMusic() {
|
|
185
|
+
const currentMusic = musicManager.GetCurrentMusicID();
|
|
186
|
+
log(`Currently playing music track: ${Music[currentMusic]} (${currentMusic})`);
|
|
218
187
|
}
|
|
219
|
-
function logPlayerEffects(player) {
|
|
220
|
-
const effects =
|
|
221
|
-
|
|
188
|
+
export function logPlayerEffects(player) {
|
|
189
|
+
const effects = getEffectsList(player);
|
|
190
|
+
log("Logging player effects:");
|
|
222
191
|
if (effects.length === 0) {
|
|
223
|
-
|
|
192
|
+
log(" n/a (no effects)");
|
|
224
193
|
return;
|
|
225
194
|
}
|
|
226
195
|
for (const [i, effect] of effects.entries()) {
|
|
227
196
|
let effectDescription;
|
|
228
197
|
if (effect.Item.IsCollectible()) {
|
|
229
|
-
const collectibleName =
|
|
198
|
+
const collectibleName = getCollectibleName(effect.Item.ID);
|
|
230
199
|
effectDescription = `Collectible: ${collectibleName}`;
|
|
231
200
|
}
|
|
232
201
|
else if (effect.Item.IsTrinket()) {
|
|
233
|
-
const trinketName =
|
|
202
|
+
const trinketName = getTrinketName(effect.Item.ID);
|
|
234
203
|
effectDescription = `Trinket: ${trinketName}`;
|
|
235
204
|
}
|
|
236
205
|
else if (effect.Item.IsNull()) {
|
|
237
|
-
const nullItemName =
|
|
206
|
+
const nullItemName = NullItemID[effect.Item.ID];
|
|
238
207
|
effectDescription = `Null item: ${nullItemName}`;
|
|
239
208
|
}
|
|
240
209
|
else {
|
|
241
210
|
effectDescription = `Unknown type of effect: ${effect.Item.ID}`;
|
|
242
211
|
}
|
|
243
|
-
|
|
212
|
+
log(` ${i + 1}) ${effectDescription} (${effect.Item.ID}) x${effect.Count}`);
|
|
244
213
|
}
|
|
245
214
|
}
|
|
246
|
-
function logPlayerHealth(player) {
|
|
247
|
-
const playerName =
|
|
248
|
-
const playerHealth =
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
215
|
+
export function logPlayerHealth(player) {
|
|
216
|
+
const playerName = getPlayerName(player);
|
|
217
|
+
const playerHealth = getPlayerHealth(player);
|
|
218
|
+
log(`Player health for ${playerName}:`);
|
|
219
|
+
log(` Max hearts: ${playerHealth.maxHearts}`);
|
|
220
|
+
log(` Hearts: ${playerHealth.hearts}`);
|
|
221
|
+
log(` Eternal hearts: ${playerHealth.eternalHearts}`);
|
|
222
|
+
log(` Soul hearts: ${playerHealth.soulHearts}`);
|
|
223
|
+
log(` Bone hearts: ${playerHealth.boneHearts}`);
|
|
224
|
+
log(` Golden hearts: ${playerHealth.goldenHearts}`);
|
|
225
|
+
log(` Rotten hearts: ${playerHealth.rottenHearts}`);
|
|
226
|
+
log(` Broken hearts: ${playerHealth.brokenHearts}`);
|
|
227
|
+
log(` Soul charges: ${playerHealth.soulCharges}`);
|
|
228
|
+
log(` Blood charges: ${playerHealth.bloodCharges}`);
|
|
229
|
+
log(" Soul heart types: [");
|
|
261
230
|
for (const soulHeartType of playerHealth.soulHeartTypes) {
|
|
262
|
-
|
|
231
|
+
log(` HeartSubType.${HeartSubType[soulHeartType]}`);
|
|
263
232
|
}
|
|
264
|
-
|
|
233
|
+
log(" ]");
|
|
265
234
|
}
|
|
266
235
|
/** Helper function for logging every projectile flag that is turned on. Useful when debugging. */
|
|
267
|
-
function logProjectileFlags(projectileFlags) {
|
|
268
|
-
logFlags(projectileFlags,
|
|
236
|
+
export function logProjectileFlags(projectileFlags) {
|
|
237
|
+
logFlags(projectileFlags, ProjectileFlag, "projectile");
|
|
269
238
|
}
|
|
270
239
|
/** Helper function for logging information about the current room. */
|
|
271
|
-
function logRoom() {
|
|
272
|
-
const bossID =
|
|
273
|
-
const roomGridIndex =
|
|
274
|
-
const roomListIndex =
|
|
275
|
-
const roomData =
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
const roomGridIndexName =
|
|
240
|
+
export function logRoom() {
|
|
241
|
+
const bossID = getBossID();
|
|
242
|
+
const roomGridIndex = getRoomGridIndex();
|
|
243
|
+
const roomListIndex = getRoomListIndex();
|
|
244
|
+
const roomData = getRoomData();
|
|
245
|
+
log("Logging room information:");
|
|
246
|
+
log(`- Room stage ID: ${StageID[roomData.StageID]} (roomData.StageID)`);
|
|
247
|
+
log(`- Room type: ${RoomType[roomData.Type]} (${roomData.Type})`);
|
|
248
|
+
log(`- Variant: ${roomData.Variant}`);
|
|
249
|
+
log(`- Sub-type: ${roomData.Subtype}`);
|
|
250
|
+
log(`- Name: ${roomData.Name}`);
|
|
251
|
+
const roomGridIndexName = GridRoom[roomGridIndex];
|
|
283
252
|
if (roomGridIndexName === undefined) {
|
|
284
|
-
|
|
253
|
+
log(`- Grid index: ${roomGridIndex}`);
|
|
285
254
|
}
|
|
286
255
|
else {
|
|
287
|
-
|
|
256
|
+
log(`- Grid index: ${roomGridIndexName} (${roomGridIndex})`);
|
|
288
257
|
}
|
|
289
|
-
|
|
258
|
+
log(`- List index: ${roomListIndex}`);
|
|
290
259
|
if (bossID === undefined) {
|
|
291
|
-
|
|
260
|
+
log("- Boss ID: undefined");
|
|
292
261
|
}
|
|
293
262
|
else {
|
|
294
|
-
|
|
263
|
+
log(`- Boss ID: ${BossID[bossID]} (${bossID})`);
|
|
295
264
|
}
|
|
296
265
|
}
|
|
297
266
|
/**
|
|
298
267
|
* Helper function for logging every seed effect (i.e. Easter Egg) that is turned on for the
|
|
299
268
|
* particular run.
|
|
300
269
|
*/
|
|
301
|
-
function logSeedEffects() {
|
|
302
|
-
const seeds =
|
|
303
|
-
const seedEffectEntries =
|
|
304
|
-
|
|
270
|
+
export function logSeedEffects() {
|
|
271
|
+
const seeds = game.GetSeeds();
|
|
272
|
+
const seedEffectEntries = getEnumEntries(SeedEffect);
|
|
273
|
+
log("Logging seed effects:");
|
|
305
274
|
let hasNoSeedEffects = true;
|
|
306
275
|
for (const [key, seedEffect] of seedEffectEntries) {
|
|
307
276
|
if (!seeds.HasSeedEffect(seedEffect)) {
|
|
308
277
|
continue;
|
|
309
278
|
}
|
|
310
|
-
|
|
279
|
+
log(` ${key} (${seedEffect})`);
|
|
311
280
|
hasNoSeedEffects = false;
|
|
312
281
|
}
|
|
313
282
|
if (hasNoSeedEffects) {
|
|
314
|
-
|
|
283
|
+
log(" n/a (no seed effects)");
|
|
315
284
|
}
|
|
316
285
|
}
|
|
317
286
|
/**
|
|
@@ -320,25 +289,25 @@ function logSeedEffects() {
|
|
|
320
289
|
* @param set The TSTL `Set` to log.
|
|
321
290
|
* @param name Optional. The name of the set, which will be logged before the elements.
|
|
322
291
|
*/
|
|
323
|
-
function logSet(set, name) {
|
|
324
|
-
if (!
|
|
325
|
-
|
|
292
|
+
export function logSet(set, name) {
|
|
293
|
+
if (!isTSTLSet(set)) {
|
|
294
|
+
log("Tried to log a TSTL set, but the given object was not a TSTL set.");
|
|
326
295
|
return;
|
|
327
296
|
}
|
|
328
297
|
const suffix = name === undefined ? "" : ` "${name}"`;
|
|
329
|
-
|
|
330
|
-
const values =
|
|
298
|
+
log(`Logging a TSTL set${suffix}:`);
|
|
299
|
+
const values = getSortedSetValues(set);
|
|
331
300
|
for (const value of values) {
|
|
332
|
-
|
|
301
|
+
log(` Value: ${value}`);
|
|
333
302
|
}
|
|
334
|
-
|
|
303
|
+
log(` The size of the set was: ${set.size}`);
|
|
335
304
|
}
|
|
336
305
|
/** Helper function for logging every sound effect that is currently playing. */
|
|
337
|
-
function logSounds() {
|
|
338
|
-
const soundEffects =
|
|
306
|
+
export function logSounds() {
|
|
307
|
+
const soundEffects = getEnumEntries(SoundEffect);
|
|
339
308
|
for (const [key, soundEffect] of soundEffects) {
|
|
340
|
-
if (
|
|
341
|
-
|
|
309
|
+
if (sfxManager.IsPlaying(soundEffect)) {
|
|
310
|
+
log(`Currently playing sound effect: ${key} (${soundEffect})`);
|
|
342
311
|
}
|
|
343
312
|
}
|
|
344
313
|
}
|
|
@@ -352,26 +321,26 @@ function logSounds() {
|
|
|
352
321
|
* In order to prevent infinite recursion, this function will not log a sub-table when there are 10
|
|
353
322
|
* or more parent tables.
|
|
354
323
|
*/
|
|
355
|
-
function logTable(luaTable, parentTables = 0) {
|
|
324
|
+
export function logTable(luaTable, parentTables = 0) {
|
|
356
325
|
if (parentTables === 0) {
|
|
357
|
-
|
|
326
|
+
log("Logging a Lua table:", false);
|
|
358
327
|
}
|
|
359
328
|
else if (parentTables > 10) {
|
|
360
329
|
return;
|
|
361
330
|
}
|
|
362
331
|
const numSpaces = (parentTables + 1) * 2; // 2, 4, 6, etc.
|
|
363
332
|
const indentation = " ".repeat(numSpaces);
|
|
364
|
-
if (!
|
|
365
|
-
|
|
333
|
+
if (!isTable(luaTable)) {
|
|
334
|
+
log(`${indentation}n/a (encountered a variable of type "${typeof luaTable}" instead of a table)`, false);
|
|
366
335
|
return;
|
|
367
336
|
}
|
|
368
337
|
let numElements = 0;
|
|
369
|
-
|
|
338
|
+
iterateTableInOrder(luaTable, (key, value) => {
|
|
370
339
|
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
371
|
-
|
|
372
|
-
if (
|
|
340
|
+
log(`${indentation}${key} --> ${value}`, false);
|
|
341
|
+
if (isTable(value)) {
|
|
373
342
|
if (key === "__class") {
|
|
374
|
-
|
|
343
|
+
log(`${indentation} (skipping enumerating this key to avoid infinite recursion)`, false);
|
|
375
344
|
}
|
|
376
345
|
else {
|
|
377
346
|
logTable(value, parentTables + 1);
|
|
@@ -379,19 +348,19 @@ function logTable(luaTable, parentTables = 0) {
|
|
|
379
348
|
}
|
|
380
349
|
numElements++;
|
|
381
350
|
});
|
|
382
|
-
|
|
351
|
+
log(`${indentation}The size of the table was: ${numElements}`, false);
|
|
383
352
|
}
|
|
384
353
|
/**
|
|
385
354
|
* Helper function to log the differences between the entries of two tables. Note that this will
|
|
386
355
|
* only do a shallow comparison.
|
|
387
356
|
*/
|
|
388
|
-
function logTableDifferences(table1, table2) {
|
|
389
|
-
|
|
357
|
+
export function logTableDifferences(table1, table2) {
|
|
358
|
+
log("Comparing two Lua tables:");
|
|
390
359
|
const table1Keys = Object.keys(table1);
|
|
391
|
-
const table1KeysSet = new
|
|
360
|
+
const table1KeysSet = new ReadonlySet(table1Keys);
|
|
392
361
|
const table2Keys = Object.keys(table2);
|
|
393
|
-
const table2KeysSet = new
|
|
394
|
-
const keysSet =
|
|
362
|
+
const table2KeysSet = new ReadonlySet(table2Keys);
|
|
363
|
+
const keysSet = combineSets(table1KeysSet, table2KeysSet);
|
|
395
364
|
const keys = [...keysSet];
|
|
396
365
|
keys.sort(); // eslint-disable-line @typescript-eslint/require-array-sort-compare
|
|
397
366
|
for (const key of keys) {
|
|
@@ -399,15 +368,15 @@ function logTableDifferences(table1, table2) {
|
|
|
399
368
|
const value2 = table2.get(key);
|
|
400
369
|
if (value1 === undefined) {
|
|
401
370
|
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
402
|
-
|
|
371
|
+
log(` Table 1 is missing key: ${key}`);
|
|
403
372
|
}
|
|
404
373
|
if (value2 === undefined) {
|
|
405
374
|
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
406
|
-
|
|
375
|
+
log(` Table 2 is missing key: ${key}`);
|
|
407
376
|
}
|
|
408
377
|
if (value1 !== value2) {
|
|
409
378
|
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
410
|
-
|
|
379
|
+
log(` ${key} --> "${value1}" versus "${value2}"`);
|
|
411
380
|
}
|
|
412
381
|
}
|
|
413
382
|
}
|
|
@@ -417,19 +386,19 @@ function logTableDifferences(table1, table2) {
|
|
|
417
386
|
*
|
|
418
387
|
* This function is useful for tables that have recursive references.
|
|
419
388
|
*/
|
|
420
|
-
function logTableKeys(luaTable) {
|
|
421
|
-
|
|
422
|
-
if (!
|
|
423
|
-
|
|
389
|
+
export function logTableKeys(luaTable) {
|
|
390
|
+
log("Logging the keys of a Lua table:");
|
|
391
|
+
if (!isTable(luaTable)) {
|
|
392
|
+
log(` n/a (encountered a variable of type "${typeof luaTable}" instead of a table)`);
|
|
424
393
|
return;
|
|
425
394
|
}
|
|
426
395
|
let numElements = 0;
|
|
427
|
-
|
|
396
|
+
iterateTableInOrder(luaTable, (key) => {
|
|
428
397
|
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
429
|
-
|
|
398
|
+
log(String(key));
|
|
430
399
|
numElements++;
|
|
431
400
|
});
|
|
432
|
-
|
|
401
|
+
log(` The size of the table was: ${numElements}`);
|
|
433
402
|
}
|
|
434
403
|
/**
|
|
435
404
|
* Helper function to log every table key and value. This is a shallow log; the function will not
|
|
@@ -438,49 +407,49 @@ function logTableKeys(luaTable) {
|
|
|
438
407
|
* This function will only work on tables that have string keys (because it logs the keys in order,
|
|
439
408
|
* instead of randomly). It will throw a run-time error if it encounters a non-string key.
|
|
440
409
|
*/
|
|
441
|
-
function logTableShallow(luaTable) {
|
|
442
|
-
|
|
443
|
-
if (!
|
|
444
|
-
|
|
410
|
+
export function logTableShallow(luaTable) {
|
|
411
|
+
log("Logging a Lua table (shallow):", false);
|
|
412
|
+
if (!isTable(luaTable)) {
|
|
413
|
+
log(`n/a (encountered a variable of type "${typeof luaTable}" instead of a table)`, false);
|
|
445
414
|
return;
|
|
446
415
|
}
|
|
447
416
|
let numElements = 0;
|
|
448
417
|
const indentation = " ";
|
|
449
|
-
|
|
418
|
+
iterateTableInOrder(luaTable, (key, value) => {
|
|
450
419
|
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
451
|
-
|
|
420
|
+
log(`${indentation}${key} --> ${value}`, false);
|
|
452
421
|
numElements++;
|
|
453
422
|
});
|
|
454
|
-
|
|
423
|
+
log(`${indentation}The size of the table was: ${numElements}`, false);
|
|
455
424
|
}
|
|
456
425
|
/** Helper function for log every tear flag that is turned on. Useful when debugging. */
|
|
457
|
-
function logTearFlags(tearFlags) {
|
|
458
|
-
logFlags(tearFlags,
|
|
426
|
+
export function logTearFlags(tearFlags) {
|
|
427
|
+
logFlags(tearFlags, TearFlag, "tear");
|
|
459
428
|
}
|
|
460
429
|
/** Helper function for printing out every use flag that is turned on. Useful when debugging. */
|
|
461
|
-
function logUseFlags(useFlags) {
|
|
462
|
-
logFlags(useFlags,
|
|
430
|
+
export function logUseFlags(useFlags) {
|
|
431
|
+
logFlags(useFlags, UseFlag, "use");
|
|
463
432
|
}
|
|
464
433
|
/**
|
|
465
434
|
* Helper function to enumerate all of the properties of a "userdata" object (i.e. an object from
|
|
466
435
|
* the Isaac API).
|
|
467
436
|
*/
|
|
468
|
-
function logUserdata(userdata) {
|
|
469
|
-
if (!
|
|
470
|
-
|
|
437
|
+
export function logUserdata(userdata) {
|
|
438
|
+
if (!isUserdata(userdata)) {
|
|
439
|
+
log("Userdata: [not userdata]");
|
|
471
440
|
return;
|
|
472
441
|
}
|
|
473
442
|
const metatable = getmetatable(userdata);
|
|
474
443
|
if (metatable === undefined) {
|
|
475
|
-
|
|
444
|
+
log("Userdata: [no metatable]");
|
|
476
445
|
return;
|
|
477
446
|
}
|
|
478
|
-
const classType =
|
|
447
|
+
const classType = getIsaacAPIClassName(userdata);
|
|
479
448
|
if (classType === undefined) {
|
|
480
|
-
|
|
449
|
+
log("Userdata: [no class type]");
|
|
481
450
|
}
|
|
482
451
|
else {
|
|
483
|
-
|
|
452
|
+
log(`Userdata: ${classType}`);
|
|
484
453
|
}
|
|
485
454
|
logTable(metatable);
|
|
486
455
|
}
|
|
@@ -492,8 +461,8 @@ function logUserdata(userdata) {
|
|
|
492
461
|
* @param round Optional. If true, will round the vector values to the nearest integer. Default is
|
|
493
462
|
* false.
|
|
494
463
|
*/
|
|
495
|
-
function logVector(vector, name, round = false) {
|
|
464
|
+
export function logVector(vector, name, round = false) {
|
|
496
465
|
name ??= "vector";
|
|
497
|
-
const vectorString =
|
|
498
|
-
|
|
466
|
+
const vectorString = vectorToString(vector, round);
|
|
467
|
+
log(`Logging ${name}: ${vectorString}`);
|
|
499
468
|
}
|