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,20 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const log_1 = require("./log");
|
|
10
|
-
const tstlClass_1 = require("./tstlClass");
|
|
11
|
-
const types_1 = require("./types");
|
|
1
|
+
import { DefaultMap } from "../classes/DefaultMap";
|
|
2
|
+
import { SerializationBrand } from "../enums/private/SerializationBrand";
|
|
3
|
+
import { SerializationType } from "../enums/SerializationType";
|
|
4
|
+
import { arrayEquals } from "./array";
|
|
5
|
+
import { deepCopy } from "./deepCopy";
|
|
6
|
+
import { log } from "./log";
|
|
7
|
+
import { isDefaultMap, isTSTLMap, isTSTLSet } from "./tstlClass";
|
|
8
|
+
import { isNumber, isString, isTable } from "./types";
|
|
12
9
|
/**
|
|
13
10
|
* Run the suite of tests that prove that the "deepCopy" helper function works properly.
|
|
14
11
|
*
|
|
15
12
|
* This function is only useful if you are troubleshooting the "deepCopy" function.
|
|
16
13
|
*/
|
|
17
|
-
function runDeepCopyTests() {
|
|
14
|
+
export function runDeepCopyTests() {
|
|
18
15
|
copiedObjectIsTable();
|
|
19
16
|
copiedObjectHasKeyAndValueString();
|
|
20
17
|
copiedTableHasKeyAndValueNumber();
|
|
@@ -35,18 +32,18 @@ function runDeepCopyTests() {
|
|
|
35
32
|
copiedSerializedDefaultMapHasStringKey();
|
|
36
33
|
copiedSerializedDefaultMapHasNumberKey();
|
|
37
34
|
const successText = "All deep copy tests passed!";
|
|
38
|
-
|
|
35
|
+
log(successText);
|
|
39
36
|
print(successText);
|
|
40
37
|
}
|
|
41
38
|
function copiedDefaultMapHasBrand() {
|
|
42
39
|
const oldDefaultValue = "foo";
|
|
43
|
-
const oldDefaultMap = new
|
|
44
|
-
const newTable =
|
|
45
|
-
if (!
|
|
40
|
+
const oldDefaultMap = new DefaultMap(oldDefaultValue);
|
|
41
|
+
const newTable = deepCopy(oldDefaultMap, SerializationType.SERIALIZE, "copiedDefaultMapHasBrand");
|
|
42
|
+
if (!isTable(newTable)) {
|
|
46
43
|
error(`The copied DefaultMap was not a table and had a type of: ${typeof newTable}`);
|
|
47
44
|
}
|
|
48
|
-
if (!newTable.has(
|
|
49
|
-
error(`The copied DefaultMap does not have the brand: ${
|
|
45
|
+
if (!newTable.has(SerializationBrand.DEFAULT_MAP)) {
|
|
46
|
+
error(`The copied DefaultMap does not have the brand: ${SerializationBrand.DEFAULT_MAP}`);
|
|
50
47
|
}
|
|
51
48
|
}
|
|
52
49
|
function copiedDefaultMapHasChildDefaultMap() {
|
|
@@ -55,19 +52,19 @@ function copiedDefaultMapHasChildDefaultMap() {
|
|
|
55
52
|
const childMapKey2 = 456;
|
|
56
53
|
const childMapDefaultValue = 1;
|
|
57
54
|
const childMapCustomValue = 2;
|
|
58
|
-
const oldParentMap = new
|
|
55
|
+
const oldParentMap = new DefaultMap(() => new DefaultMap(childMapDefaultValue));
|
|
59
56
|
const oldChildMap = oldParentMap.getAndSetDefault(parentMapKey);
|
|
60
57
|
oldChildMap.getAndSetDefault(childMapKey1);
|
|
61
58
|
oldChildMap.set(childMapKey2, childMapCustomValue);
|
|
62
|
-
const newParentMap =
|
|
63
|
-
if (!
|
|
59
|
+
const newParentMap = deepCopy(oldParentMap, SerializationType.NONE, "copiedDefaultMapHasChildDefaultMap");
|
|
60
|
+
if (!isDefaultMap(newParentMap)) {
|
|
64
61
|
error(`The copied parent DefaultMap was not a DefaultMap and had a type of: ${typeof newParentMap}`);
|
|
65
62
|
}
|
|
66
63
|
const newChildMap = newParentMap.get(parentMapKey);
|
|
67
64
|
if (newChildMap === undefined) {
|
|
68
65
|
error(`The copied DefaultMap did not have a child map at key: ${parentMapKey}`);
|
|
69
66
|
}
|
|
70
|
-
if (!
|
|
67
|
+
if (!isDefaultMap(newChildMap)) {
|
|
71
68
|
error(`The copied child DefaultMap was not a DefaultMap and had a type of: ${typeof newChildMap}`);
|
|
72
69
|
}
|
|
73
70
|
const newChildMapValue1 = newChildMap.get(childMapKey1);
|
|
@@ -93,15 +90,15 @@ function copiedMapHasChildMap() {
|
|
|
93
90
|
const oldMap = new Map([
|
|
94
91
|
[keyToLookFor, oldChildMap],
|
|
95
92
|
]);
|
|
96
|
-
const newMap =
|
|
97
|
-
if (!
|
|
93
|
+
const newMap = deepCopy(oldMap, SerializationType.NONE, "copiedMapHasChildMap");
|
|
94
|
+
if (!isTSTLMap(newMap)) {
|
|
98
95
|
error(`The copied Map was not a Map and had a type of: ${typeof newMap}`);
|
|
99
96
|
}
|
|
100
97
|
const newChildMap = newMap.get(keyToLookFor);
|
|
101
98
|
if (newChildMap === undefined) {
|
|
102
99
|
error(`The copied Map did not have a child map at key: ${keyToLookFor}`);
|
|
103
100
|
}
|
|
104
|
-
if (!
|
|
101
|
+
if (!isTSTLMap(newChildMap)) {
|
|
105
102
|
error(`The copied child Map was not a Map and had a type of: ${typeof newChildMap}`);
|
|
106
103
|
}
|
|
107
104
|
const value = newChildMap.get(childMapKey);
|
|
@@ -116,8 +113,8 @@ function copiedMapHasValue() {
|
|
|
116
113
|
const keyToLookFor = "abc";
|
|
117
114
|
const valueToLookFor = "def";
|
|
118
115
|
const oldMap = new Map([[keyToLookFor, valueToLookFor]]);
|
|
119
|
-
const newMap =
|
|
120
|
-
if (!
|
|
116
|
+
const newMap = deepCopy(oldMap, SerializationType.NONE, "copiedMapHasValue");
|
|
117
|
+
if (!isTSTLMap(newMap)) {
|
|
121
118
|
error(`The copied Map was not a Map and has a type of: ${typeof newMap}`);
|
|
122
119
|
}
|
|
123
120
|
const value = newMap.get(keyToLookFor);
|
|
@@ -132,8 +129,8 @@ function copiedMapIsMap() {
|
|
|
132
129
|
const keyToLookFor = "abc";
|
|
133
130
|
const valueToLookFor = "def";
|
|
134
131
|
const oldMap = new Map([[keyToLookFor, valueToLookFor]]);
|
|
135
|
-
const newMap =
|
|
136
|
-
if (!
|
|
132
|
+
const newMap = deepCopy(oldMap, SerializationType.NONE, "copiedMapIsMap");
|
|
133
|
+
if (!isTSTLMap(newMap)) {
|
|
137
134
|
error(`The copied Map was not a Map and has a type of: ${typeof newMap}`);
|
|
138
135
|
}
|
|
139
136
|
}
|
|
@@ -146,19 +143,19 @@ function copiedObjectHasChildObject() {
|
|
|
146
143
|
def: valueToLookFor,
|
|
147
144
|
},
|
|
148
145
|
};
|
|
149
|
-
const newObject =
|
|
146
|
+
const newObject = deepCopy(oldObject, SerializationType.NONE, "copiedObjectHasChildObject");
|
|
150
147
|
const childObject = newObject[childObjectIndex];
|
|
151
148
|
if (childObject === undefined) {
|
|
152
149
|
error(`Failed to find the child object at index: ${childObjectIndex}`);
|
|
153
150
|
}
|
|
154
|
-
if (!
|
|
151
|
+
if (!isTable(childObject)) {
|
|
155
152
|
error(`The copied child object had a type of: ${typeof childObject}`);
|
|
156
153
|
}
|
|
157
154
|
const value = childObject[keyToLookFor];
|
|
158
155
|
if (value === undefined) {
|
|
159
156
|
error(`The child object did not have a key of: ${keyToLookFor}`);
|
|
160
157
|
}
|
|
161
|
-
if (!
|
|
158
|
+
if (!isString(value)) {
|
|
162
159
|
error(`The child object value had a type of: ${typeof value}`);
|
|
163
160
|
}
|
|
164
161
|
if (value !== valueToLookFor) {
|
|
@@ -169,12 +166,12 @@ function copiedObjectHasKeyAndValueString() {
|
|
|
169
166
|
const keyToLookFor = "abc";
|
|
170
167
|
const valueToLookFor = "def";
|
|
171
168
|
const oldObject = { abc: valueToLookFor };
|
|
172
|
-
const newObject =
|
|
169
|
+
const newObject = deepCopy(oldObject, SerializationType.NONE, "copiedObjectHasKeyAndValueString");
|
|
173
170
|
const value = newObject[keyToLookFor];
|
|
174
171
|
if (value === undefined) {
|
|
175
172
|
error(`The copied object did not have a key of: ${keyToLookFor}`);
|
|
176
173
|
}
|
|
177
|
-
if (!
|
|
174
|
+
if (!isString(value)) {
|
|
178
175
|
error(`The copied object had a value type of: ${typeof value}`);
|
|
179
176
|
}
|
|
180
177
|
if (value !== valueToLookFor) {
|
|
@@ -184,20 +181,20 @@ function copiedObjectHasKeyAndValueString() {
|
|
|
184
181
|
/** In this context, a reference is a pointer. */
|
|
185
182
|
function copiedObjectHasNoReferencesForArray() {
|
|
186
183
|
const oldObject = { abc: [1, 2, 3] };
|
|
187
|
-
const newObject =
|
|
184
|
+
const newObject = deepCopy(oldObject, SerializationType.NONE, "copiedObjectHasNoReferencesForArray");
|
|
188
185
|
if (oldObject.abc === newObject.abc) {
|
|
189
186
|
error("The copied object has the same point to the child array.");
|
|
190
187
|
}
|
|
191
|
-
if (!
|
|
188
|
+
if (!arrayEquals(oldObject.abc, newObject.abc)) {
|
|
192
189
|
error("The copied object does not have an equal array.");
|
|
193
190
|
}
|
|
194
191
|
oldObject.abc[0]++; // eslint-disable-line @typescript-eslint/no-non-null-assertion
|
|
195
|
-
if (
|
|
192
|
+
if (arrayEquals(oldObject.abc, newObject.abc)) {
|
|
196
193
|
error("The copied object has an equal array after a modification to the old array.");
|
|
197
194
|
}
|
|
198
195
|
oldObject.abc[0]--; // eslint-disable-line @typescript-eslint/no-non-null-assertion
|
|
199
196
|
newObject.abc[0]++; // eslint-disable-line @typescript-eslint/no-non-null-assertion
|
|
200
|
-
if (
|
|
197
|
+
if (arrayEquals(oldObject.abc, newObject.abc)) {
|
|
201
198
|
error("The copied object has an equal array after a modification to the new array.");
|
|
202
199
|
}
|
|
203
200
|
newObject.abc[0]--; // eslint-disable-line @typescript-eslint/no-non-null-assertion
|
|
@@ -209,7 +206,7 @@ function copiedObjectHasNoReferencesForPrimitivesBackward() {
|
|
|
209
206
|
abc: originalStringValue,
|
|
210
207
|
def: originalNumberValue,
|
|
211
208
|
};
|
|
212
|
-
const newObject =
|
|
209
|
+
const newObject = deepCopy(oldObject, SerializationType.NONE, "copiedObjectHasNoReferencesForPrimitivesBackward");
|
|
213
210
|
newObject.abc = "newValue";
|
|
214
211
|
if (newObject.abc === oldObject.abc) {
|
|
215
212
|
error("The copied object has a string reference going backward.");
|
|
@@ -227,7 +224,7 @@ function copiedObjectHasNoReferencesForPrimitivesForward() {
|
|
|
227
224
|
abc: originalStringValue,
|
|
228
225
|
def: originalNumberValue,
|
|
229
226
|
};
|
|
230
|
-
const newObject =
|
|
227
|
+
const newObject = deepCopy(oldObject, SerializationType.NONE, "copiedObjectHasNoReferencesForPrimitivesForward");
|
|
231
228
|
oldObject.abc = "newValue";
|
|
232
229
|
if (oldObject.abc === newObject.abc) {
|
|
233
230
|
error("The copied object has a string reference going forward.");
|
|
@@ -239,17 +236,17 @@ function copiedObjectHasNoReferencesForPrimitivesForward() {
|
|
|
239
236
|
}
|
|
240
237
|
function copiedObjectIsTable() {
|
|
241
238
|
const oldObject = { abc: "def" };
|
|
242
|
-
const newObject =
|
|
243
|
-
if (!
|
|
239
|
+
const newObject = deepCopy(oldObject, SerializationType.NONE, "copiedObjectIsTable");
|
|
240
|
+
if (!isTable(newObject)) {
|
|
244
241
|
error(`The copied object had a type of: ${typeof newObject}`);
|
|
245
242
|
}
|
|
246
243
|
}
|
|
247
244
|
function copiedSerializedDefaultMapHasNumberKey() {
|
|
248
245
|
const mapKey = 123;
|
|
249
|
-
const oldDefaultMap = new
|
|
246
|
+
const oldDefaultMap = new DefaultMap(456);
|
|
250
247
|
oldDefaultMap.getAndSetDefault(mapKey);
|
|
251
|
-
const serializedOldDefaultMap =
|
|
252
|
-
const newTable =
|
|
248
|
+
const serializedOldDefaultMap = deepCopy(oldDefaultMap, SerializationType.SERIALIZE, "copiedSerializedDefaultMapHasNumberKey-serialize");
|
|
249
|
+
const newTable = deepCopy(serializedOldDefaultMap, SerializationType.DESERIALIZE, "copiedSerializedDefaultMapHasNumberKey-deserialize");
|
|
253
250
|
const newDefaultMap = newTable;
|
|
254
251
|
if (!newDefaultMap.has(mapKey)) {
|
|
255
252
|
const keyType = type(mapKey);
|
|
@@ -258,10 +255,10 @@ function copiedSerializedDefaultMapHasNumberKey() {
|
|
|
258
255
|
}
|
|
259
256
|
function copiedSerializedDefaultMapHasStringKey() {
|
|
260
257
|
const mapKey = "123";
|
|
261
|
-
const oldDefaultMap = new
|
|
258
|
+
const oldDefaultMap = new DefaultMap(456);
|
|
262
259
|
oldDefaultMap.getAndSetDefault(mapKey);
|
|
263
|
-
const serializedOldDefaultMap =
|
|
264
|
-
const newTable =
|
|
260
|
+
const serializedOldDefaultMap = deepCopy(oldDefaultMap, SerializationType.SERIALIZE, "copiedSerializedDefaultMapHasStringKey-serialize");
|
|
261
|
+
const newTable = deepCopy(serializedOldDefaultMap, SerializationType.DESERIALIZE, "copiedSerializedDefaultMapHasStringKey-deserialize");
|
|
265
262
|
const newDefaultMap = newTable;
|
|
266
263
|
if (!newDefaultMap.has(mapKey)) {
|
|
267
264
|
const keyType = type(mapKey);
|
|
@@ -272,8 +269,8 @@ function copiedSerializedMapHasNumberKey() {
|
|
|
272
269
|
const mapKey = 123;
|
|
273
270
|
const mapValue = 456;
|
|
274
271
|
const oldMap = new Map([[mapKey, mapValue]]);
|
|
275
|
-
const serializedOldMap =
|
|
276
|
-
const newTable =
|
|
272
|
+
const serializedOldMap = deepCopy(oldMap, SerializationType.SERIALIZE, "copiedSerializedMapHasNumberKey-serialize");
|
|
273
|
+
const newTable = deepCopy(serializedOldMap, SerializationType.DESERIALIZE, "copiedSerializedMapHasNumberKey-deserialize");
|
|
277
274
|
const newMap = newTable;
|
|
278
275
|
if (!newMap.has(mapKey)) {
|
|
279
276
|
const keyType = type(mapKey);
|
|
@@ -284,8 +281,8 @@ function copiedSerializedMapHasStringKey() {
|
|
|
284
281
|
const mapKey = "123";
|
|
285
282
|
const mapValue = 456;
|
|
286
283
|
const oldMap = new Map([[mapKey, mapValue]]);
|
|
287
|
-
const serializedOldMap =
|
|
288
|
-
const newTable =
|
|
284
|
+
const serializedOldMap = deepCopy(oldMap, SerializationType.SERIALIZE, "copiedSerializedMapHasStringKey-serialize");
|
|
285
|
+
const newTable = deepCopy(serializedOldMap, SerializationType.DESERIALIZE, "copiedSerializedMapHasStringKey-deserialize");
|
|
289
286
|
const newMap = newTable;
|
|
290
287
|
if (!newMap.has(mapKey)) {
|
|
291
288
|
const keyType = type(mapKey);
|
|
@@ -295,8 +292,8 @@ function copiedSerializedMapHasStringKey() {
|
|
|
295
292
|
function copiedSetHasValue() {
|
|
296
293
|
const valueToLookFor = "abc";
|
|
297
294
|
const oldSet = new Set([valueToLookFor]);
|
|
298
|
-
const newSet =
|
|
299
|
-
if (!
|
|
295
|
+
const newSet = deepCopy(oldSet, SerializationType.NONE, "copiedSetHasValue");
|
|
296
|
+
if (!isTSTLSet(newSet)) {
|
|
300
297
|
error(`The copied Set was not a Set and has a type of: ${typeof newSet}`);
|
|
301
298
|
}
|
|
302
299
|
const hasValue = newSet.has(valueToLookFor);
|
|
@@ -307,8 +304,8 @@ function copiedSetHasValue() {
|
|
|
307
304
|
function copiedSetIsSet() {
|
|
308
305
|
const valueToLookFor = "abc";
|
|
309
306
|
const oldSet = new Set([valueToLookFor]);
|
|
310
|
-
const newSet =
|
|
311
|
-
if (!
|
|
307
|
+
const newSet = deepCopy(oldSet, SerializationType.NONE, "copiedSetIsSet");
|
|
308
|
+
if (!isTSTLSet(newSet)) {
|
|
312
309
|
error(`The copied Set was not a Set and has a type of: ${typeof newSet}`);
|
|
313
310
|
}
|
|
314
311
|
}
|
|
@@ -317,7 +314,7 @@ function copiedTableDoesNotCoerceTypes() {
|
|
|
317
314
|
const valueToLookFor = 456;
|
|
318
315
|
const oldTable = new LuaMap();
|
|
319
316
|
oldTable.set(keyToLookFor, valueToLookFor);
|
|
320
|
-
const newTable =
|
|
317
|
+
const newTable = deepCopy(oldTable, SerializationType.NONE, "copiedTableDoesNotCoerceTypes");
|
|
321
318
|
const keyString = tostring(keyToLookFor);
|
|
322
319
|
const valueString = tostring(valueToLookFor);
|
|
323
320
|
const valueFromString = newTable.get(keyString);
|
|
@@ -334,12 +331,12 @@ function copiedTableHasKeyAndValueNumber() {
|
|
|
334
331
|
const valueToLookFor = 456;
|
|
335
332
|
const oldTable = new LuaMap();
|
|
336
333
|
oldTable.set(keyToLookFor, valueToLookFor);
|
|
337
|
-
const newTable =
|
|
334
|
+
const newTable = deepCopy(oldTable, SerializationType.NONE, "copiedTableHasKeyAndValueNumber");
|
|
338
335
|
const value = newTable.get(keyToLookFor);
|
|
339
336
|
if (value === undefined) {
|
|
340
337
|
error(`The copied object did not have a key of: ${keyToLookFor}`);
|
|
341
338
|
}
|
|
342
|
-
if (!
|
|
339
|
+
if (!isNumber(value)) {
|
|
343
340
|
error(`The copied object had a value type of: ${typeof value}`);
|
|
344
341
|
}
|
|
345
342
|
if (value !== valueToLookFor) {
|
|
@@ -1,21 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
6
|
-
const cachedClasses_1 = require("../core/cachedClasses");
|
|
7
|
-
const constants_1 = require("../core/constants");
|
|
8
|
-
const roomData_1 = require("./roomData");
|
|
1
|
+
import { Dimension } from "isaac-typescript-definitions";
|
|
2
|
+
import { game } from "../core/cachedClasses";
|
|
3
|
+
import { DIMENSIONS } from "../core/constants";
|
|
4
|
+
import { getRoomGridIndex } from "./roomData";
|
|
9
5
|
/**
|
|
10
6
|
* Helper function to get the current dimension. Most of the time, this will be `Dimension.MAIN`,
|
|
11
7
|
* but it can change if e.g. the player is in the mirror world of Downpour/Dross.
|
|
12
8
|
*/
|
|
13
|
-
function getDimension() {
|
|
14
|
-
const level =
|
|
15
|
-
const roomGridIndex =
|
|
16
|
-
const roomDescription = level.GetRoomByIdx(roomGridIndex,
|
|
9
|
+
export function getDimension() {
|
|
10
|
+
const level = game.GetLevel();
|
|
11
|
+
const roomGridIndex = getRoomGridIndex();
|
|
12
|
+
const roomDescription = level.GetRoomByIdx(roomGridIndex, Dimension.CURRENT);
|
|
17
13
|
const currentRoomHash = GetPtrHash(roomDescription);
|
|
18
|
-
for (const dimension of
|
|
14
|
+
for (const dimension of DIMENSIONS) {
|
|
19
15
|
const dimensionRoomDescription = level.GetRoomByIdx(roomGridIndex, dimension);
|
|
20
16
|
const dimensionRoomHash = GetPtrHash(dimensionRoomDescription);
|
|
21
17
|
if (dimensionRoomHash === currentRoomHash) {
|
|
@@ -24,6 +20,6 @@ function getDimension() {
|
|
|
24
20
|
}
|
|
25
21
|
error("Failed to get the current dimension.");
|
|
26
22
|
}
|
|
27
|
-
function inDimension(dimension) {
|
|
23
|
+
export function inDimension(dimension) {
|
|
28
24
|
return dimension === getDimension();
|
|
29
25
|
}
|
|
@@ -1,17 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exports.directionToVector = directionToVector;
|
|
8
|
-
exports.getDirectionName = getDirectionName;
|
|
9
|
-
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
10
|
-
const directionNames_1 = require("../objects/directionNames");
|
|
11
|
-
const directionToDegrees_1 = require("../objects/directionToDegrees");
|
|
12
|
-
const directionToMoveAction_1 = require("../objects/directionToMoveAction");
|
|
13
|
-
const directionToShootAction_1 = require("../objects/directionToShootAction");
|
|
14
|
-
const directionToVector_1 = require("../objects/directionToVector");
|
|
1
|
+
import { Direction } from "isaac-typescript-definitions";
|
|
2
|
+
import { DIRECTION_NAMES } from "../objects/directionNames";
|
|
3
|
+
import { DIRECTION_TO_DEGREES } from "../objects/directionToDegrees";
|
|
4
|
+
import { DIRECTION_TO_MOVE_ACTION } from "../objects/directionToMoveAction";
|
|
5
|
+
import { DIRECTION_TO_SHOOT_ACTION } from "../objects/directionToShootAction";
|
|
6
|
+
import { DIRECTION_TO_VECTOR } from "../objects/directionToVector";
|
|
15
7
|
/**
|
|
16
8
|
* Helper function to convert the degrees of an angle to the `Direction` enum.
|
|
17
9
|
*
|
|
@@ -19,59 +11,59 @@ const directionToVector_1 = require("../objects/directionToVector");
|
|
|
19
11
|
* 0 normally corresponds to up. (This corresponds to how the `Vector.GetAngleDegrees` method
|
|
20
12
|
* works.)
|
|
21
13
|
*/
|
|
22
|
-
function angleToDirection(angleDegrees) {
|
|
14
|
+
export function angleToDirection(angleDegrees) {
|
|
23
15
|
let positiveDegrees = angleDegrees;
|
|
24
16
|
while (positiveDegrees < 0) {
|
|
25
17
|
positiveDegrees += 360;
|
|
26
18
|
}
|
|
27
19
|
const normalizedDegrees = positiveDegrees % 360;
|
|
28
20
|
if (normalizedDegrees < 45) {
|
|
29
|
-
return
|
|
21
|
+
return Direction.RIGHT;
|
|
30
22
|
}
|
|
31
23
|
if (normalizedDegrees < 135) {
|
|
32
|
-
return
|
|
24
|
+
return Direction.DOWN;
|
|
33
25
|
}
|
|
34
26
|
if (normalizedDegrees < 225) {
|
|
35
|
-
return
|
|
27
|
+
return Direction.LEFT;
|
|
36
28
|
}
|
|
37
29
|
if (normalizedDegrees < 315) {
|
|
38
|
-
return
|
|
30
|
+
return Direction.UP;
|
|
39
31
|
}
|
|
40
|
-
return
|
|
32
|
+
return Direction.RIGHT;
|
|
41
33
|
}
|
|
42
34
|
/**
|
|
43
35
|
* Helper function to convert a direction to degrees. For example, `Direction.LEFT` (0) would return
|
|
44
36
|
* 180 and `Direction.RIGHT` (2) would return 0. (This corresponds to how the
|
|
45
37
|
* `Vector.GetAngleDegrees` method works.)
|
|
46
38
|
*/
|
|
47
|
-
function directionToDegrees(direction) {
|
|
48
|
-
return
|
|
39
|
+
export function directionToDegrees(direction) {
|
|
40
|
+
return DIRECTION_TO_DEGREES[direction];
|
|
49
41
|
}
|
|
50
42
|
/**
|
|
51
43
|
* Helper function to convert a direction to a shoot `ButtonAction`. For example, `Direction.LEFT`
|
|
52
44
|
* (0) would return `ButtonAction.LEFT` (0).
|
|
53
45
|
*/
|
|
54
|
-
function directionToMoveAction(direction) {
|
|
55
|
-
return
|
|
46
|
+
export function directionToMoveAction(direction) {
|
|
47
|
+
return DIRECTION_TO_MOVE_ACTION[direction];
|
|
56
48
|
}
|
|
57
49
|
/**
|
|
58
50
|
* Helper function to convert a direction to a shoot `ButtonAction`. For example, `Direction.LEFT`
|
|
59
51
|
* (0) would return `ButtonAction.SHOOT_LEFT` (4).
|
|
60
52
|
*/
|
|
61
|
-
function directionToShootAction(direction) {
|
|
62
|
-
return
|
|
53
|
+
export function directionToShootAction(direction) {
|
|
54
|
+
return DIRECTION_TO_SHOOT_ACTION[direction];
|
|
63
55
|
}
|
|
64
56
|
/**
|
|
65
57
|
* Helper function to convert a direction to a `Vector`. For example, `Direction.LEFT` (0) would
|
|
66
58
|
* convert to `Vector(-1, 0).
|
|
67
59
|
*/
|
|
68
|
-
function directionToVector(direction) {
|
|
69
|
-
return
|
|
60
|
+
export function directionToVector(direction) {
|
|
61
|
+
return DIRECTION_TO_VECTOR[direction];
|
|
70
62
|
}
|
|
71
63
|
/**
|
|
72
64
|
* Helper function to get the lowercase name of a direction. For example, `Direction.LEFT` (0) would
|
|
73
65
|
* return "left".
|
|
74
66
|
*/
|
|
75
|
-
function getDirectionName(direction) {
|
|
76
|
-
return
|
|
67
|
+
export function getDirectionName(direction) {
|
|
68
|
+
return DIRECTION_NAMES[direction];
|
|
77
69
|
}
|