isaacscript-common 87.9.7 → 87.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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/index.rollup.d.ts +11 -11
- 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.d.ts +11 -11
- package/dist/interfaces/PlayerHealth.d.ts.map +1 -1
- package/dist/interfaces/PlayerHealth.js +1 -2
- package/dist/interfaces/PlayerStats.js +2 -4
- package/dist/interfaces/PocketItemDescription.js +1 -2
- package/dist/interfaces/RoomDescription.js +1 -2
- package/dist/interfaces/SaveData.js +1 -2
- package/dist/interfaces/StageHistoryEntry.js +1 -2
- package/dist/interfaces/TSTLClassMetatable.js +1 -2
- package/dist/interfaces/TrinketSituation.js +1 -2
- package/dist/interfaces/private/AddCallbackParametersCustom.js +2 -4
- package/dist/interfaces/private/CustomStage.js +1 -2
- package/dist/interfaces/private/CustomTrapdoorDescription.js +1 -2
- package/dist/interfaces/private/ModUpgradedInterface.js +1 -2
- package/dist/isaacscript-common.lua +1 -1
- package/dist/maps/PHDPillConversionsMap.js +19 -22
- package/dist/maps/cardNameToTypeMap.js +205 -208
- package/dist/maps/characterNameToTypeMap.js +85 -88
- package/dist/maps/collectibleNameToTypeMap.js +5 -8
- package/dist/maps/defaultPlayerStatMap.js +10 -13
- package/dist/maps/entityTypeVariantToBossIDMap.js +3 -6
- package/dist/maps/falsePHDPillConversionsMap.js +33 -36
- package/dist/maps/gridEntityTypeToBrokenStateMap.js +15 -18
- package/dist/maps/gridEntityXMLMap.js +52 -55
- package/dist/maps/itemPoolTypeToItemPoolName.js +33 -36
- package/dist/maps/keyboardToStringMap.js +66 -69
- package/dist/maps/pillNameToEffectMap.js +83 -86
- package/dist/maps/roomNameToTypeMap.js +38 -41
- package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +9 -12
- package/dist/maps/transformationNameToPlayerFormMap.js +30 -33
- package/dist/maps/trinketNameToTypeMap.js +5 -8
- package/dist/objects/LRoomShapeToRectangles.js +22 -25
- package/dist/objects/backdropTypeToRockAltType.js +65 -68
- package/dist/objects/batteryNames.js +8 -11
- package/dist/objects/bombNames.js +11 -14
- package/dist/objects/bossIDToEntityTypeVariant.js +116 -119
- package/dist/objects/bossNamePNGFileNames.js +104 -107
- package/dist/objects/bossNames.js +105 -108
- package/dist/objects/bossPortraitPNGFileNames.js +104 -107
- package/dist/objects/cardDescriptions.js +101 -104
- package/dist/objects/cardNames.js +101 -104
- package/dist/objects/challengeBosses.js +49 -52
- package/dist/objects/challengeCharacters.js +49 -52
- package/dist/objects/challengeCollectibleTypes.js +160 -163
- package/dist/objects/challengeNames.js +49 -52
- package/dist/objects/challengeTrinketType.js +48 -51
- package/dist/objects/characterDamageMultipliers.js +44 -47
- package/dist/objects/characterNames.js +44 -47
- package/dist/objects/characterSpritePNGFileNames.js +44 -47
- package/dist/objects/characterStartingCollectibleTypes.js +49 -52
- package/dist/objects/characterStartingTrinketTypes.js +44 -47
- package/dist/objects/chestNames.js +15 -18
- package/dist/objects/coinNames.js +11 -14
- package/dist/objects/coinSubTypeToValue.js +11 -14
- package/dist/objects/collectibleDescriptions.js +725 -728
- package/dist/objects/collectibleNames.js +725 -728
- package/dist/objects/colors.js +1 -4
- package/dist/objects/directionNames.js +7 -10
- package/dist/objects/directionToDegrees.js +7 -10
- package/dist/objects/directionToMoveAction.js +7 -10
- package/dist/objects/directionToShootAction.js +7 -10
- package/dist/objects/directionToVector.js +9 -12
- package/dist/objects/doorSlotFlagToDoorSlot.js +11 -14
- package/dist/objects/doorSlotToDirection.js +11 -14
- package/dist/objects/doorSlotToDoorSlotFlag.js +11 -14
- package/dist/objects/gridEntityTypeToANM2Name.js +30 -33
- package/dist/objects/heartNames.js +16 -19
- package/dist/objects/isaacAPIClassTypeToBrand.js +8 -11
- package/dist/objects/isaacAPIClassTypeToFunctions.js +37 -40
- package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +9 -45
- package/dist/objects/kColors.js +1 -4
- package/dist/objects/keyNames.js +8 -11
- package/dist/objects/languageNames.js +9 -12
- package/dist/objects/oppositeDoorSlots.js +11 -14
- package/dist/objects/pillEffectClasses.js +53 -56
- package/dist/objects/pillEffectNames.js +53 -56
- package/dist/objects/pillEffectTypeToPillEffects.js +11 -14
- package/dist/objects/pillEffectTypes.js +53 -56
- package/dist/objects/playerNamePNGFileNames.js +44 -47
- package/dist/objects/playerPortraitPNGFileNames.js +44 -47
- package/dist/objects/roomShapeBounds.js +23 -26
- package/dist/objects/roomShapeCorners.js +128 -131
- package/dist/objects/roomShapeLayoutSizes.js +23 -26
- package/dist/objects/roomShapeToBottomRightPosition.js +17 -20
- package/dist/objects/roomShapeToDoorSlotCoordinates.js +78 -81
- package/dist/objects/roomShapeToDoorSlots.js +48 -51
- package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +82 -85
- package/dist/objects/roomShapeToGridWidth.js +14 -17
- package/dist/objects/roomShapeToTopLeftPosition.js +18 -21
- package/dist/objects/roomShapeVolumes.js +21 -24
- package/dist/objects/roomTypeNames.js +32 -35
- package/dist/objects/roomTypeSpecialGotoPrefixes.js +32 -35
- package/dist/objects/sackNames.js +6 -9
- package/dist/objects/slotNames.js +21 -24
- package/dist/objects/stageIDNames.js +33 -36
- package/dist/objects/stageToMusic.js +69 -72
- package/dist/objects/stageToStageID.js +90 -93
- package/dist/objects/stageTypeSuffixes.js +8 -11
- package/dist/objects/transformationNames.js +16 -19
- package/dist/objects/trinketDescriptions.js +192 -195
- package/dist/objects/trinketNames.js +192 -195
- package/dist/objects/versusScreenBackgroundColors.js +39 -42
- package/dist/objects/versusScreenDirtSpotColors.js +39 -42
- package/dist/patchErrorFunctions.js +4 -7
- package/dist/serialization.js +6 -9
- package/dist/sets/LRoomShapesSet.js +7 -10
- package/dist/sets/bigRoomShapesSet.js +10 -13
- package/dist/sets/bossSets.js +261 -264
- package/dist/sets/charactersThatStartWithAnActiveItemSet.js +14 -17
- package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +5 -8
- package/dist/sets/charactersWithFreeDevilDealsSet.js +3 -6
- package/dist/sets/charactersWithNoRedHeartsSet.js +11 -14
- package/dist/sets/charactersWithNoSoulHeartsSet.js +8 -11
- package/dist/sets/consoleCommandsSet.js +2 -5
- package/dist/sets/entitiesWithArmorSet.js +44 -47
- package/dist/sets/familiarsThatShootPlayerTearsSet.js +11 -14
- package/dist/sets/itemConfigCardTypesForCards.js +7 -10
- package/dist/sets/lostStyleCharactersSet.js +8 -11
- package/dist/sets/mineShaftRoomSubTypesSet.js +8 -11
- package/dist/sets/narrowRoomShapesSet.js +7 -10
- package/dist/sets/poopGridEntityXMLTypesSet.js +12 -15
- package/dist/sets/redHeartSubTypesSet.js +6 -9
- package/dist/sets/repentanceBossIDsSet.js +26 -29
- package/dist/sets/sinEntityTypesSet.js +10 -13
- package/dist/sets/singleUseActiveCollectibleTypesSet.js +11 -14
- package/dist/shaderCrashFix.js +4 -7
- package/dist/shouldFire.js +28 -58
- package/dist/types/AddSubtract.js +1 -2
- package/dist/types/AllButFirst.js +1 -2
- package/dist/types/AllButLast.js +1 -2
- package/dist/types/AnyClass.js +1 -2
- package/dist/types/AnyEntity.js +1 -2
- package/dist/types/AnyFunction.js +1 -2
- package/dist/types/AnyGridEntity.js +1 -2
- package/dist/types/CompositionTypeSatisfiesEnum.js +1 -2
- package/dist/types/ConversionHeartSubType.js +1 -2
- package/dist/types/Decrement.js +1 -2
- package/dist/types/ERange.js +1 -2
- package/dist/types/EntityID.js +1 -2
- package/dist/types/FunctionTuple.js +1 -2
- package/dist/types/GridEntityID.js +1 -2
- package/dist/types/HasFunction.js +1 -2
- package/dist/types/IRange.js +1 -2
- package/dist/types/Immutable.js +1 -2
- package/dist/types/Increment.js +1 -2
- package/dist/types/LowercaseKeys.js +1 -2
- package/dist/types/NaturalNumbersLessThan.js +1 -2
- package/dist/types/NaturalNumbersLessThanOrEqualTo.js +1 -2
- package/dist/types/ObjectValues.js +1 -2
- package/dist/types/PickingUpItem.js +15 -22
- package/dist/types/PickupIndex.js +1 -2
- package/dist/types/PlayerIndex.js +1 -2
- package/dist/types/PossibleStatType.js +1 -2
- package/dist/types/PublicInterface.js +1 -2
- package/dist/types/ReadonlyMap.js +1 -4
- package/dist/types/ReadonlyRecord.js +1 -2
- package/dist/types/ReadonlySet.js +1 -4
- package/dist/types/StartsWithLowercase.js +1 -2
- package/dist/types/StartsWithUppercase.js +1 -2
- package/dist/types/TSTLClass.js +1 -2
- package/dist/types/Tuple.js +1 -2
- package/dist/types/TupleKeys.js +1 -2
- package/dist/types/TupleToIntersection.js +1 -2
- package/dist/types/TupleToUnion.js +1 -2
- package/dist/types/TupleWithLengthBetween.js +1 -2
- package/dist/types/TupleWithMaxLength.js +1 -2
- package/dist/types/UnionToIntersection.js +1 -2
- package/dist/types/UppercaseKeys.js +1 -2
- package/dist/types/WeightedArray.js +1 -2
- package/dist/types/WidenLiteral.js +1 -2
- package/dist/types/Writable.js +1 -2
- package/dist/types/private/CallbackTuple.js +1 -2
- package/dist/types/private/ModUpgradedWithFeatures.js +1 -2
- package/package.json +3 -3
- package/src/interfaces/PlayerHealth.ts +12 -11
package/dist/functions/rng.js
CHANGED
|
@@ -1,24 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
exports.rngEquals = rngEquals;
|
|
10
|
-
exports.serializeRNG = serializeRNG;
|
|
11
|
-
exports.setAllRNGToSeed = setAllRNGToSeed;
|
|
12
|
-
exports.setAllRNGToStartSeed = setAllRNGToStartSeed;
|
|
13
|
-
exports.setSeed = setSeed;
|
|
14
|
-
const cachedClasses_1 = require("../core/cachedClasses");
|
|
15
|
-
const SerializationBrand_1 = require("../enums/private/SerializationBrand");
|
|
16
|
-
const debugFunctions_1 = require("./debugFunctions");
|
|
17
|
-
const isaacAPIClass_1 = require("./isaacAPIClass");
|
|
18
|
-
const log_1 = require("./log");
|
|
19
|
-
const table_1 = require("./table");
|
|
20
|
-
const types_1 = require("./types");
|
|
21
|
-
const utils_1 = require("./utils");
|
|
1
|
+
import { game } from "../core/cachedClasses";
|
|
2
|
+
import { SerializationBrand } from "../enums/private/SerializationBrand";
|
|
3
|
+
import { traceback } from "./debugFunctions";
|
|
4
|
+
import { isaacAPIClassEquals, isIsaacAPIClassOfType } from "./isaacAPIClass";
|
|
5
|
+
import { logError } from "./log";
|
|
6
|
+
import { getNumbersFromTable, tableHasKeys } from "./table";
|
|
7
|
+
import { isTable } from "./types";
|
|
8
|
+
import { assertDefined } from "./utils";
|
|
22
9
|
/**
|
|
23
10
|
* This is the ShiftIdx that Blade recommended after having reviewing the game's internal functions.
|
|
24
11
|
* Any value between 0 and 80 should work equally well.
|
|
@@ -29,7 +16,7 @@ const RECOMMENDED_SHIFT_IDX = 35;
|
|
|
29
16
|
const OBJECT_NAME = "RNG";
|
|
30
17
|
const KEYS = ["seed"];
|
|
31
18
|
/** Helper function to copy an `RNG` Isaac API class. */
|
|
32
|
-
function copyRNG(rng) {
|
|
19
|
+
export function copyRNG(rng) {
|
|
33
20
|
if (!isRNG(rng)) {
|
|
34
21
|
error(`Failed to copy a ${OBJECT_NAME} object since the provided object was not a userdata ${OBJECT_NAME} class.`);
|
|
35
22
|
}
|
|
@@ -40,12 +27,12 @@ function copyRNG(rng) {
|
|
|
40
27
|
* Helper function to convert a `SerializedRNG` object to a normal `RNG` object. (This is used by
|
|
41
28
|
* the save data manager when reading data from the "save#.dat" file.)
|
|
42
29
|
*/
|
|
43
|
-
function deserializeRNG(rng) {
|
|
44
|
-
if (!
|
|
30
|
+
export function deserializeRNG(rng) {
|
|
31
|
+
if (!isTable(rng)) {
|
|
45
32
|
error(`Failed to deserialize a ${OBJECT_NAME} object since the provided object was not a Lua table.`);
|
|
46
33
|
}
|
|
47
|
-
const [seed] =
|
|
48
|
-
|
|
34
|
+
const [seed] = getNumbersFromTable(rng, OBJECT_NAME, ...KEYS);
|
|
35
|
+
assertDefined(seed, `Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: seed`);
|
|
49
36
|
return newRNG(seed);
|
|
50
37
|
}
|
|
51
38
|
/**
|
|
@@ -53,58 +40,58 @@ function deserializeRNG(rng) {
|
|
|
53
40
|
* instead of calling the `Random` function directly since that can return a value of 0 and crash
|
|
54
41
|
* the game.
|
|
55
42
|
*/
|
|
56
|
-
function getRandomSeed() {
|
|
43
|
+
export function getRandomSeed() {
|
|
57
44
|
const randomNumber = Random(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
58
45
|
const safeRandomNumber = randomNumber === 0 ? 1 : randomNumber;
|
|
59
46
|
return safeRandomNumber;
|
|
60
47
|
}
|
|
61
48
|
/** Helper function to check if something is an instantiated `RNG` object. */
|
|
62
|
-
function isRNG(object) {
|
|
63
|
-
return
|
|
49
|
+
export function isRNG(object) {
|
|
50
|
+
return isIsaacAPIClassOfType(object, OBJECT_NAME);
|
|
64
51
|
}
|
|
65
52
|
/**
|
|
66
53
|
* Used to determine is the given table is a serialized `RNG` object created by the `deepCopy`
|
|
67
54
|
* function.
|
|
68
55
|
*/
|
|
69
|
-
function isSerializedRNG(object) {
|
|
70
|
-
if (!
|
|
56
|
+
export function isSerializedRNG(object) {
|
|
57
|
+
if (!isTable(object)) {
|
|
71
58
|
return false;
|
|
72
59
|
}
|
|
73
|
-
return
|
|
60
|
+
return tableHasKeys(object, ...KEYS) && object.has(SerializationBrand.RNG);
|
|
74
61
|
}
|
|
75
62
|
/**
|
|
76
63
|
* Helper function to initialize a new RNG object using Blade's recommended shift index.
|
|
77
64
|
*
|
|
78
65
|
* @param seed Optional. The seed to initialize it with. Default is a random seed.
|
|
79
66
|
*/
|
|
80
|
-
function newRNG(seed = getRandomSeed()) {
|
|
67
|
+
export function newRNG(seed = getRandomSeed()) {
|
|
81
68
|
const rng = RNG();
|
|
82
69
|
setSeed(rng, seed);
|
|
83
70
|
return rng;
|
|
84
71
|
}
|
|
85
|
-
function rngEquals(rng1, rng2) {
|
|
86
|
-
return
|
|
72
|
+
export function rngEquals(rng1, rng2) {
|
|
73
|
+
return isaacAPIClassEquals(rng1, rng2, KEYS);
|
|
87
74
|
}
|
|
88
75
|
/**
|
|
89
76
|
* Helper function to convert a `RNG` object to a `SerializedRNG` object. (This is used by the save
|
|
90
77
|
* data manager when writing data from the "save#.dat" file.)
|
|
91
78
|
*/
|
|
92
|
-
function serializeRNG(rng) {
|
|
79
|
+
export function serializeRNG(rng) {
|
|
93
80
|
if (!isRNG(rng)) {
|
|
94
81
|
error(`Failed to serialize a ${OBJECT_NAME} object since the provided object was not a userdata ${OBJECT_NAME} class.`);
|
|
95
82
|
}
|
|
96
83
|
const seed = rng.GetSeed();
|
|
97
84
|
const rngTable = new LuaMap();
|
|
98
85
|
rngTable.set("seed", seed);
|
|
99
|
-
rngTable.set(
|
|
86
|
+
rngTable.set(SerializationBrand.RNG, "");
|
|
100
87
|
return rngTable;
|
|
101
88
|
}
|
|
102
89
|
/**
|
|
103
90
|
* Helper function to iterate over the provided object and set the seed for all of the values that
|
|
104
91
|
* are RNG objects equal to a particular seed.
|
|
105
92
|
*/
|
|
106
|
-
function setAllRNGToSeed(object, seed) {
|
|
107
|
-
if (!
|
|
93
|
+
export function setAllRNGToSeed(object, seed) {
|
|
94
|
+
if (!isTable(object)) {
|
|
108
95
|
error(`Failed to iterate over the object containing RNG objects since the type of the provided object was: ${typeof object}`);
|
|
109
96
|
}
|
|
110
97
|
let didSomething = false;
|
|
@@ -123,17 +110,17 @@ function setAllRNGToSeed(object, seed) {
|
|
|
123
110
|
* Helper function to iterate over the provided object and set the seed for all of the values that
|
|
124
111
|
* are RNG objects equal to the start seed for the current run.
|
|
125
112
|
*/
|
|
126
|
-
function setAllRNGToStartSeed(object) {
|
|
127
|
-
const seeds =
|
|
113
|
+
export function setAllRNGToStartSeed(object) {
|
|
114
|
+
const seeds = game.GetSeeds();
|
|
128
115
|
const startSeed = seeds.GetStartSeed();
|
|
129
116
|
setAllRNGToSeed(object, startSeed);
|
|
130
117
|
}
|
|
131
118
|
/** Helper function to set a seed to an RNG object using Blade's recommended shift index. */
|
|
132
|
-
function setSeed(rng, seed) {
|
|
119
|
+
export function setSeed(rng, seed) {
|
|
133
120
|
if (seed === 0) {
|
|
134
121
|
seed = getRandomSeed();
|
|
135
|
-
|
|
136
|
-
|
|
122
|
+
logError("Failed to set a RNG object to a seed of 0. Using a random value instead.");
|
|
123
|
+
traceback();
|
|
137
124
|
}
|
|
138
125
|
// The game expects seeds in the range of 1 to 4294967295 (1^32 - 1).
|
|
139
126
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const backdropTypeToRockAltType_1 = require("../objects/backdropTypeToRockAltType");
|
|
8
|
-
const entitiesSpecific_1 = require("./entitiesSpecific");
|
|
9
|
-
const gridEntities_1 = require("./gridEntities");
|
|
10
|
-
const pickupsSpecific_1 = require("./pickupsSpecific");
|
|
1
|
+
import { CollectibleType, EntityType, TrinketType, } from "isaac-typescript-definitions";
|
|
2
|
+
import { game } from "../core/cachedClasses";
|
|
3
|
+
import { BACKDROP_TYPE_TO_ROCK_ALT_TYPE } from "../objects/backdropTypeToRockAltType";
|
|
4
|
+
import { getNPCs } from "./entitiesSpecific";
|
|
5
|
+
import { removeEntitiesSpawnedFromGridEntity } from "./gridEntities";
|
|
6
|
+
import { getCoins, getCollectibles, getTrinkets } from "./pickupsSpecific";
|
|
11
7
|
/**
|
|
12
8
|
* Helper function to get the alternate rock type (i.e. urn, mushroom, etc.) that the current room
|
|
13
9
|
* will have.
|
|
@@ -22,10 +18,10 @@ const pickupsSpecific_1 = require("./pickupsSpecific");
|
|
|
22
18
|
* `BackdropType.CAVES`, the graphic of the urn will not switch to a mushroom. However, when
|
|
23
19
|
* destroyed, the urn will still generate mushroom-appropriate rewards.
|
|
24
20
|
*/
|
|
25
|
-
function getRockAltType() {
|
|
26
|
-
const room =
|
|
21
|
+
export function getRockAltType() {
|
|
22
|
+
const room = game.GetRoom();
|
|
27
23
|
const backdropType = room.GetBackdropType();
|
|
28
|
-
return
|
|
24
|
+
return BACKDROP_TYPE_TO_ROCK_ALT_TYPE[backdropType];
|
|
29
25
|
}
|
|
30
26
|
/**
|
|
31
27
|
* Helper function to remove all coins, trinkets, and so on that spawned from breaking an urn.
|
|
@@ -33,17 +29,17 @@ function getRockAltType() {
|
|
|
33
29
|
* The rewards are based on the ones from the wiki:
|
|
34
30
|
* https://bindingofisaacrebirth.fandom.com/wiki/Rocks#Urns
|
|
35
31
|
*/
|
|
36
|
-
function removeUrnRewards(gridEntity) {
|
|
32
|
+
export function removeUrnRewards(gridEntity) {
|
|
37
33
|
// Coins
|
|
38
|
-
const coins =
|
|
39
|
-
|
|
34
|
+
const coins = getCoins();
|
|
35
|
+
removeEntitiesSpawnedFromGridEntity(coins, gridEntity);
|
|
40
36
|
// A Quarter
|
|
41
|
-
const quarters =
|
|
42
|
-
|
|
37
|
+
const quarters = getCollectibles(CollectibleType.QUARTER);
|
|
38
|
+
removeEntitiesSpawnedFromGridEntity(quarters, gridEntity);
|
|
43
39
|
// Swallowed Penny
|
|
44
|
-
const swallowedPennies =
|
|
45
|
-
|
|
40
|
+
const swallowedPennies = getTrinkets(TrinketType.SWALLOWED_PENNY);
|
|
41
|
+
removeEntitiesSpawnedFromGridEntity(swallowedPennies, gridEntity);
|
|
46
42
|
// Spiders
|
|
47
|
-
const spiders =
|
|
48
|
-
|
|
43
|
+
const spiders = getNPCs(EntityType.SPIDER);
|
|
44
|
+
removeEntitiesSpawnedFromGridEntity(spiders, gridEntity);
|
|
49
45
|
}
|
|
@@ -1,43 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exports.getRoomDescriptor = getRoomDescriptor;
|
|
6
|
-
exports.getRoomDescriptorReadOnly = getRoomDescriptorReadOnly;
|
|
7
|
-
exports.getRoomGridIndex = getRoomGridIndex;
|
|
8
|
-
exports.getRoomListIndex = getRoomListIndex;
|
|
9
|
-
exports.getRoomName = getRoomName;
|
|
10
|
-
exports.getRoomShape = getRoomShape;
|
|
11
|
-
exports.getRoomStageID = getRoomStageID;
|
|
12
|
-
exports.getRoomSubType = getRoomSubType;
|
|
13
|
-
exports.getRoomType = getRoomType;
|
|
14
|
-
exports.getRoomVariant = getRoomVariant;
|
|
15
|
-
exports.getRoomVisitedCount = getRoomVisitedCount;
|
|
16
|
-
exports.setRoomData = setRoomData;
|
|
17
|
-
const cachedEnumValues_1 = require("../cachedEnumValues");
|
|
18
|
-
const cachedClasses_1 = require("../core/cachedClasses");
|
|
19
|
-
const doors_1 = require("./doors");
|
|
20
|
-
const flag_1 = require("./flag");
|
|
1
|
+
import { DOOR_SLOT_FLAG_VALUES } from "../cachedEnumValues";
|
|
2
|
+
import { game } from "../core/cachedClasses";
|
|
3
|
+
import { doorSlotFlagToDoorSlot } from "./doors";
|
|
4
|
+
import { hasFlag } from "./flag";
|
|
21
5
|
/**
|
|
22
6
|
* Helper function to get the set of allowed door slots for the room at the supplied grid index.
|
|
23
7
|
* This corresponds to the doors that are enabled in the STB/XML file for the room.
|
|
24
8
|
*/
|
|
25
|
-
function getRoomAllowedDoors(roomGridIndex) {
|
|
9
|
+
export function getRoomAllowedDoors(roomGridIndex) {
|
|
26
10
|
const allowedDoors = new Set();
|
|
27
11
|
const roomData = getRoomData(roomGridIndex);
|
|
28
12
|
if (roomData === undefined) {
|
|
29
13
|
return allowedDoors;
|
|
30
14
|
}
|
|
31
|
-
for (const doorSlotFlag of
|
|
32
|
-
if (!
|
|
15
|
+
for (const doorSlotFlag of DOOR_SLOT_FLAG_VALUES) {
|
|
16
|
+
if (!hasFlag(roomData.Doors, doorSlotFlag)) {
|
|
33
17
|
continue;
|
|
34
18
|
}
|
|
35
|
-
const doorSlot =
|
|
19
|
+
const doorSlot = doorSlotFlagToDoorSlot(doorSlotFlag);
|
|
36
20
|
allowedDoors.add(doorSlot);
|
|
37
21
|
}
|
|
38
22
|
return allowedDoors;
|
|
39
23
|
}
|
|
40
|
-
function getRoomData(roomGridIndex) {
|
|
24
|
+
export function getRoomData(roomGridIndex) {
|
|
41
25
|
const roomDescriptor = getRoomDescriptor(roomGridIndex);
|
|
42
26
|
return roomDescriptor.Data;
|
|
43
27
|
}
|
|
@@ -46,8 +30,8 @@ function getRoomData(roomGridIndex) {
|
|
|
46
30
|
*
|
|
47
31
|
* @param roomGridIndex Optional. Default is the current room index.
|
|
48
32
|
*/
|
|
49
|
-
function getRoomDescriptor(roomGridIndex) {
|
|
50
|
-
const level =
|
|
33
|
+
export function getRoomDescriptor(roomGridIndex) {
|
|
34
|
+
const level = game.GetLevel();
|
|
51
35
|
roomGridIndex ??= getRoomGridIndex();
|
|
52
36
|
return level.GetRoomByIdx(roomGridIndex);
|
|
53
37
|
}
|
|
@@ -55,8 +39,8 @@ function getRoomDescriptor(roomGridIndex) {
|
|
|
55
39
|
* Alias for the `Level.GetCurrentRoomDesc` method. Use this to make it more clear what type of
|
|
56
40
|
* `RoomDescriptor` object that you are retrieving.
|
|
57
41
|
*/
|
|
58
|
-
function getRoomDescriptorReadOnly() {
|
|
59
|
-
const level =
|
|
42
|
+
export function getRoomDescriptorReadOnly() {
|
|
43
|
+
const level = game.GetLevel();
|
|
60
44
|
return level.GetCurrentRoomDesc();
|
|
61
45
|
}
|
|
62
46
|
/**
|
|
@@ -78,8 +62,8 @@ function getRoomDescriptorReadOnly() {
|
|
|
78
62
|
* Data structures that store data per room should use the room's `ListIndex` instead of
|
|
79
63
|
* `SafeGridIndex`, since the former is unique across different dimensions.
|
|
80
64
|
*/
|
|
81
|
-
function getRoomGridIndex() {
|
|
82
|
-
const level =
|
|
65
|
+
export function getRoomGridIndex() {
|
|
66
|
+
const level = game.GetLevel();
|
|
83
67
|
const currentRoomIndex = level.GetCurrentRoomIndex();
|
|
84
68
|
if (currentRoomIndex < 0) {
|
|
85
69
|
return currentRoomIndex;
|
|
@@ -97,23 +81,23 @@ function getRoomGridIndex() {
|
|
|
97
81
|
*
|
|
98
82
|
* @param roomGridIndex Optional. Default is the current room index.
|
|
99
83
|
*/
|
|
100
|
-
function getRoomListIndex(roomGridIndex) {
|
|
84
|
+
export function getRoomListIndex(roomGridIndex) {
|
|
101
85
|
const roomDescriptor = getRoomDescriptor(roomGridIndex);
|
|
102
86
|
return roomDescriptor.ListIndex;
|
|
103
87
|
}
|
|
104
|
-
function getRoomName(roomGridIndex) {
|
|
88
|
+
export function getRoomName(roomGridIndex) {
|
|
105
89
|
const roomData = getRoomData(roomGridIndex);
|
|
106
90
|
return roomData === undefined ? undefined : roomData.Name;
|
|
107
91
|
}
|
|
108
|
-
function getRoomShape(roomGridIndex) {
|
|
92
|
+
export function getRoomShape(roomGridIndex) {
|
|
109
93
|
const roomData = getRoomData(roomGridIndex);
|
|
110
94
|
return roomData === undefined ? undefined : roomData.Shape;
|
|
111
95
|
}
|
|
112
|
-
function getRoomStageID(roomGridIndex) {
|
|
96
|
+
export function getRoomStageID(roomGridIndex) {
|
|
113
97
|
const roomData = getRoomData(roomGridIndex);
|
|
114
98
|
return roomData === undefined ? undefined : roomData.StageID;
|
|
115
99
|
}
|
|
116
|
-
function getRoomSubType(roomGridIndex) {
|
|
100
|
+
export function getRoomSubType(roomGridIndex) {
|
|
117
101
|
const roomData = getRoomData(roomGridIndex);
|
|
118
102
|
return roomData === undefined ? undefined : roomData.Subtype;
|
|
119
103
|
}
|
|
@@ -123,11 +107,11 @@ function getRoomSubType(roomGridIndex) {
|
|
|
123
107
|
* @param roomGridIndex Optional. Default is the current room index.
|
|
124
108
|
* @returns The room data type. Returns -1 if the room data was not found.
|
|
125
109
|
*/
|
|
126
|
-
function getRoomType(roomGridIndex) {
|
|
110
|
+
export function getRoomType(roomGridIndex) {
|
|
127
111
|
const roomData = getRoomData(roomGridIndex);
|
|
128
112
|
return roomData === undefined ? undefined : roomData.Type;
|
|
129
113
|
}
|
|
130
|
-
function getRoomVariant(roomGridIndex) {
|
|
114
|
+
export function getRoomVariant(roomGridIndex) {
|
|
131
115
|
const roomData = getRoomData(roomGridIndex);
|
|
132
116
|
return roomData === undefined ? -1 : roomData.Variant;
|
|
133
117
|
}
|
|
@@ -139,7 +123,7 @@ function getRoomVariant(roomGridIndex) {
|
|
|
139
123
|
*
|
|
140
124
|
* @param roomGridIndex Optional. Default is the current room index.
|
|
141
125
|
*/
|
|
142
|
-
function getRoomVisitedCount(roomGridIndex) {
|
|
126
|
+
export function getRoomVisitedCount(roomGridIndex) {
|
|
143
127
|
const roomDescriptor = getRoomDescriptor(roomGridIndex);
|
|
144
128
|
return roomDescriptor.VisitedCount;
|
|
145
129
|
}
|
|
@@ -147,7 +131,7 @@ function getRoomVisitedCount(roomGridIndex) {
|
|
|
147
131
|
* Helper function to set the data for a given room. This will change the room type, contents, and
|
|
148
132
|
* so on.
|
|
149
133
|
*/
|
|
150
|
-
function setRoomData(roomGridIndex, roomData) {
|
|
134
|
+
export function setRoomData(roomGridIndex, roomData) {
|
|
151
135
|
const roomDescriptor = getRoomDescriptor(roomGridIndex);
|
|
152
136
|
roomDescriptor.Data = roomData;
|
|
153
137
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* These functions have to do with the grid index inside of a room (i.e. the grid index that grid
|
|
4
3
|
* entities use).
|
|
@@ -7,22 +6,15 @@
|
|
|
7
6
|
*
|
|
8
7
|
* @module
|
|
9
8
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
exports.gridPositionToWorldPosition = gridPositionToWorldPosition;
|
|
14
|
-
exports.isValidGridPosition = isValidGridPosition;
|
|
15
|
-
exports.worldPositionToGridPosition = worldPositionToGridPosition;
|
|
16
|
-
exports.worldPositionToGridPositionFast = worldPositionToGridPositionFast;
|
|
17
|
-
const LRoomShapeToRectangles_1 = require("../objects/LRoomShapeToRectangles");
|
|
18
|
-
const math_1 = require("./math");
|
|
19
|
-
const roomShape_1 = require("./roomShape");
|
|
9
|
+
import { L_ROOM_SHAPE_TO_RECTANGLES } from "../objects/LRoomShapeToRectangles";
|
|
10
|
+
import { inRectangle } from "./math";
|
|
11
|
+
import { getRoomShapeBottomRightPosition, getRoomShapeTopLeftPosition, getRoomShapeWidth, isLRoomShape, } from "./roomShape";
|
|
20
12
|
/**
|
|
21
13
|
* Helper function to convert grid coordinates to a world position `Vector`.
|
|
22
14
|
*
|
|
23
15
|
* For example, the coordinates of (0, 0) are equal to `Vector(80, 160)`.
|
|
24
16
|
*/
|
|
25
|
-
function gridCoordinatesToWorldPosition(x, y) {
|
|
17
|
+
export function gridCoordinatesToWorldPosition(x, y) {
|
|
26
18
|
const gridPosition = Vector(x, y);
|
|
27
19
|
return gridPositionToWorldPosition(gridPosition);
|
|
28
20
|
}
|
|
@@ -32,8 +24,8 @@ function gridCoordinatesToWorldPosition(x, y) {
|
|
|
32
24
|
* For example, in a 1x1 room, grid index 0 is equal to "Vector(-1, -1) and grid index 16 is equal
|
|
33
25
|
* to "Vector(0, 0)".
|
|
34
26
|
*/
|
|
35
|
-
function gridIndexToGridPosition(gridIndex, roomShape) {
|
|
36
|
-
const gridWidth =
|
|
27
|
+
export function gridIndexToGridPosition(gridIndex, roomShape) {
|
|
28
|
+
const gridWidth = getRoomShapeWidth(roomShape);
|
|
37
29
|
const x = (gridIndex % gridWidth) - 1;
|
|
38
30
|
const y = Math.floor(gridIndex / gridWidth) - 1;
|
|
39
31
|
return Vector(x, y);
|
|
@@ -43,7 +35,7 @@ function gridIndexToGridPosition(gridIndex, roomShape) {
|
|
|
43
35
|
*
|
|
44
36
|
* For example, the coordinates of (0, 0) are equal to `Vector(80, 160)`.
|
|
45
37
|
*/
|
|
46
|
-
function gridPositionToWorldPosition(gridPosition) {
|
|
38
|
+
export function gridPositionToWorldPosition(gridPosition) {
|
|
47
39
|
const x = (gridPosition.X + 2) * 40;
|
|
48
40
|
const y = (gridPosition.Y + 4) * 40;
|
|
49
41
|
return Vector(x, y);
|
|
@@ -53,8 +45,8 @@ function gridPositionToWorldPosition(gridPosition) {
|
|
|
53
45
|
*
|
|
54
46
|
* In this context, the grid position of the top-left wall is "Vector(-1, -1)".
|
|
55
47
|
*/
|
|
56
|
-
function isValidGridPosition(gridPosition, roomShape) {
|
|
57
|
-
return
|
|
48
|
+
export function isValidGridPosition(gridPosition, roomShape) {
|
|
49
|
+
return isLRoomShape(roomShape)
|
|
58
50
|
? isValidGridPositionLRoom(gridPosition, roomShape)
|
|
59
51
|
: isValidGridPositionNormal(gridPosition, roomShape);
|
|
60
52
|
}
|
|
@@ -63,7 +55,7 @@ function isValidGridPosition(gridPosition, roomShape) {
|
|
|
63
55
|
*
|
|
64
56
|
* In this context, the grid position of the top-left wall is "Vector(-1, -1)".
|
|
65
57
|
*/
|
|
66
|
-
function worldPositionToGridPosition(worldPos) {
|
|
58
|
+
export function worldPositionToGridPosition(worldPos) {
|
|
67
59
|
const x = Math.round(worldPos.X / 40 - 2);
|
|
68
60
|
const y = Math.round(worldPos.Y / 40 - 4);
|
|
69
61
|
return Vector(x, y);
|
|
@@ -75,22 +67,22 @@ function worldPositionToGridPosition(worldPos) {
|
|
|
75
67
|
*
|
|
76
68
|
* This is similar to the `worldPositionToGridPosition` function, but the values are not rounded.
|
|
77
69
|
*/
|
|
78
|
-
function worldPositionToGridPositionFast(worldPos) {
|
|
70
|
+
export function worldPositionToGridPositionFast(worldPos) {
|
|
79
71
|
const x = worldPos.X / 40 - 2;
|
|
80
72
|
const y = worldPos.Y / 40 - 4;
|
|
81
73
|
return Vector(x, y);
|
|
82
74
|
}
|
|
83
75
|
function isValidGridPositionLRoom(gridPosition, roomShape) {
|
|
84
|
-
const rectangles =
|
|
76
|
+
const rectangles = L_ROOM_SHAPE_TO_RECTANGLES[roomShape];
|
|
85
77
|
if (rectangles === undefined) {
|
|
86
78
|
return false;
|
|
87
79
|
}
|
|
88
80
|
const { verticalTopLeft, verticalBottomRight, horizontalTopLeft, horizontalBottomRight, } = rectangles;
|
|
89
|
-
return (
|
|
90
|
-
||
|
|
81
|
+
return (inRectangle(gridPosition, verticalTopLeft, verticalBottomRight)
|
|
82
|
+
|| inRectangle(gridPosition, horizontalTopLeft, horizontalBottomRight));
|
|
91
83
|
}
|
|
92
84
|
function isValidGridPositionNormal(gridPosition, roomShape) {
|
|
93
|
-
const topLeft =
|
|
94
|
-
const bottomRight =
|
|
95
|
-
return
|
|
85
|
+
const topLeft = getRoomShapeTopLeftPosition(roomShape);
|
|
86
|
+
const bottomRight = getRoomShapeBottomRightPosition(roomShape);
|
|
87
|
+
return inRectangle(gridPosition, topLeft, bottomRight);
|
|
96
88
|
}
|
|
@@ -1,39 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
exports.isBigRoomShape = isBigRoomShape;
|
|
14
|
-
exports.isLRoomShape = isLRoomShape;
|
|
15
|
-
exports.isNarrowRoom = isNarrowRoom;
|
|
16
|
-
exports.isRoomShapeDoubleCharge = isRoomShapeDoubleCharge;
|
|
17
|
-
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
18
|
-
const roomShapeBounds_1 = require("../objects/roomShapeBounds");
|
|
19
|
-
const roomShapeCorners_1 = require("../objects/roomShapeCorners");
|
|
20
|
-
const roomShapeLayoutSizes_1 = require("../objects/roomShapeLayoutSizes");
|
|
21
|
-
const roomShapeToBottomRightPosition_1 = require("../objects/roomShapeToBottomRightPosition");
|
|
22
|
-
const roomShapeToDoorSlotsToGridIndexDelta_1 = require("../objects/roomShapeToDoorSlotsToGridIndexDelta");
|
|
23
|
-
const roomShapeToGridWidth_1 = require("../objects/roomShapeToGridWidth");
|
|
24
|
-
const roomShapeToTopLeftPosition_1 = require("../objects/roomShapeToTopLeftPosition");
|
|
25
|
-
const roomShapeVolumes_1 = require("../objects/roomShapeVolumes");
|
|
26
|
-
const LRoomShapesSet_1 = require("../sets/LRoomShapesSet");
|
|
27
|
-
const bigRoomShapesSet_1 = require("../sets/bigRoomShapesSet");
|
|
28
|
-
const narrowRoomShapesSet_1 = require("../sets/narrowRoomShapesSet");
|
|
1
|
+
import { RoomShape } from "isaac-typescript-definitions";
|
|
2
|
+
import { ROOM_SHAPE_BOUNDS } from "../objects/roomShapeBounds";
|
|
3
|
+
import { ROOM_SHAPE_CORNERS } from "../objects/roomShapeCorners";
|
|
4
|
+
import { ROOM_SHAPE_LAYOUT_SIZES } from "../objects/roomShapeLayoutSizes";
|
|
5
|
+
import { ROOM_SHAPE_TO_BOTTOM_RIGHT_POSITION } from "../objects/roomShapeToBottomRightPosition";
|
|
6
|
+
import { ROOM_SHAPE_TO_DOOR_SLOTS_TO_GRID_INDEX_DELTA } from "../objects/roomShapeToDoorSlotsToGridIndexDelta";
|
|
7
|
+
import { ROOM_SHAPE_TO_GRID_WIDTH } from "../objects/roomShapeToGridWidth";
|
|
8
|
+
import { ROOM_SHAPE_TO_TOP_LEFT_POSITION } from "../objects/roomShapeToTopLeftPosition";
|
|
9
|
+
import { ROOM_SHAPE_VOLUMES } from "../objects/roomShapeVolumes";
|
|
10
|
+
import { L_ROOM_SHAPES_SET } from "../sets/LRoomShapesSet";
|
|
11
|
+
import { BIG_ROOM_SHAPES_SET } from "../sets/bigRoomShapesSet";
|
|
12
|
+
import { NARROW_ROOM_SHAPES_SET } from "../sets/narrowRoomShapesSet";
|
|
29
13
|
/**
|
|
30
14
|
* Helper function to get the grid index delta that a door out of the given room shape would lead
|
|
31
15
|
* to. For example, if you went through the bottom door in a room of `RoomShape.SHAPE_1x2`, you
|
|
32
16
|
* would end up in a room with a grid index that is +26 units from the `SafeGridIndex` of where you
|
|
33
17
|
* started.
|
|
34
18
|
*/
|
|
35
|
-
function getGridIndexDelta(roomShape, doorSlot) {
|
|
36
|
-
const doorSlotToGridIndexMap =
|
|
19
|
+
export function getGridIndexDelta(roomShape, doorSlot) {
|
|
20
|
+
const doorSlotToGridIndexMap = ROOM_SHAPE_TO_DOOR_SLOTS_TO_GRID_INDEX_DELTA[roomShape];
|
|
37
21
|
return doorSlotToGridIndexMap.get(doorSlot);
|
|
38
22
|
}
|
|
39
23
|
/**
|
|
@@ -42,8 +26,8 @@ function getGridIndexDelta(roomShape, doorSlot) {
|
|
|
42
26
|
*
|
|
43
27
|
* For example, `RoomShape.SHAPE_2x2` will return 2.
|
|
44
28
|
*/
|
|
45
|
-
function getRoomShapeBottomRightPosition(roomShape) {
|
|
46
|
-
return
|
|
29
|
+
export function getRoomShapeBottomRightPosition(roomShape) {
|
|
30
|
+
return ROOM_SHAPE_TO_BOTTOM_RIGHT_POSITION[roomShape];
|
|
47
31
|
}
|
|
48
32
|
/**
|
|
49
33
|
* Helper function to get the grid position of the bottom-right tile of a given room shape.
|
|
@@ -51,8 +35,8 @@ function getRoomShapeBottomRightPosition(roomShape) {
|
|
|
51
35
|
* "Vector(0, 0)" corresponds to the top left tile of a room, not including the walls. (The top-left
|
|
52
36
|
* wall would be at "Vector(-1, -1)".)
|
|
53
37
|
*/
|
|
54
|
-
function getRoomShapeBounds(roomShape) {
|
|
55
|
-
return
|
|
38
|
+
export function getRoomShapeBounds(roomShape) {
|
|
39
|
+
return ROOM_SHAPE_BOUNDS[roomShape];
|
|
56
40
|
}
|
|
57
41
|
/**
|
|
58
42
|
* Helper function to get the number of charges that a given room shape will grant to a player upon
|
|
@@ -60,7 +44,7 @@ function getRoomShapeBounds(roomShape) {
|
|
|
60
44
|
*
|
|
61
45
|
* For example, `RoomShape.SHAPE_2x2` will return 2.
|
|
62
46
|
*/
|
|
63
|
-
function getRoomShapeCharges(roomShape) {
|
|
47
|
+
export function getRoomShapeCharges(roomShape) {
|
|
64
48
|
return isRoomShapeDoubleCharge(roomShape) ? 2 : 1;
|
|
65
49
|
}
|
|
66
50
|
/**
|
|
@@ -69,8 +53,8 @@ function getRoomShapeCharges(roomShape) {
|
|
|
69
53
|
* Note that these corner locations are not accurate for the Mother Boss Room and the Home closet
|
|
70
54
|
* rooms. (Those rooms have custom shapes.)
|
|
71
55
|
*/
|
|
72
|
-
function getRoomShapeCorners(roomShape) {
|
|
73
|
-
return
|
|
56
|
+
export function getRoomShapeCorners(roomShape) {
|
|
57
|
+
return ROOM_SHAPE_CORNERS[roomShape];
|
|
74
58
|
}
|
|
75
59
|
/**
|
|
76
60
|
* Helper function to get the dimensions of a room shape's layout. This is NOT the size of the
|
|
@@ -78,8 +62,8 @@ function getRoomShapeCorners(roomShape) {
|
|
|
78
62
|
*
|
|
79
63
|
* For example, a horizontal narrow room has a layout size of equal to that of a 1x1 room.
|
|
80
64
|
*/
|
|
81
|
-
function getRoomShapeLayoutSize(roomShape) {
|
|
82
|
-
return
|
|
65
|
+
export function getRoomShapeLayoutSize(roomShape) {
|
|
66
|
+
return ROOM_SHAPE_LAYOUT_SIZES[roomShape];
|
|
83
67
|
}
|
|
84
68
|
/**
|
|
85
69
|
* Helper function to get the grid position of the top-left tile of a given room shape.
|
|
@@ -87,8 +71,8 @@ function getRoomShapeLayoutSize(roomShape) {
|
|
|
87
71
|
* "Vector(0, 0)" corresponds to the top left tile of a room, not including the walls. (The top-left
|
|
88
72
|
* wall would be at "Vector(-1, -1)".)
|
|
89
73
|
*/
|
|
90
|
-
function getRoomShapeTopLeftPosition(roomShape) {
|
|
91
|
-
return
|
|
74
|
+
export function getRoomShapeTopLeftPosition(roomShape) {
|
|
75
|
+
return ROOM_SHAPE_TO_TOP_LEFT_POSITION[roomShape];
|
|
92
76
|
}
|
|
93
77
|
/**
|
|
94
78
|
* Helper function to get the volume of a room shape, which is the amount of tiles that are inside
|
|
@@ -96,39 +80,39 @@ function getRoomShapeTopLeftPosition(roomShape) {
|
|
|
96
80
|
*
|
|
97
81
|
* (This cannot be directly calculated from the bounds since L rooms are a special case.)
|
|
98
82
|
*/
|
|
99
|
-
function getRoomShapeVolume(roomShape) {
|
|
100
|
-
return
|
|
83
|
+
export function getRoomShapeVolume(roomShape) {
|
|
84
|
+
return ROOM_SHAPE_VOLUMES[roomShape];
|
|
101
85
|
}
|
|
102
|
-
function getRoomShapeWidth(roomShape) {
|
|
103
|
-
return
|
|
86
|
+
export function getRoomShapeWidth(roomShape) {
|
|
87
|
+
return ROOM_SHAPE_TO_GRID_WIDTH[roomShape];
|
|
104
88
|
}
|
|
105
89
|
/**
|
|
106
90
|
* Helper function to determine if the provided room is equal to `RoomShape.1x2` (4) or
|
|
107
91
|
* `RoomShape.2x1` (6).
|
|
108
92
|
*/
|
|
109
|
-
function is2x1RoomShape(roomShape) {
|
|
110
|
-
return roomShape ===
|
|
93
|
+
export function is2x1RoomShape(roomShape) {
|
|
94
|
+
return roomShape === RoomShape.SHAPE_1x2 || roomShape === RoomShape.SHAPE_2x1;
|
|
111
95
|
}
|
|
112
96
|
/**
|
|
113
97
|
* Helper function to detect if the provided room shape is big. Specifically, this is all 1x2 rooms,
|
|
114
98
|
* 2x2 rooms, and L rooms.
|
|
115
99
|
*/
|
|
116
|
-
function isBigRoomShape(roomShape) {
|
|
117
|
-
return
|
|
100
|
+
export function isBigRoomShape(roomShape) {
|
|
101
|
+
return BIG_ROOM_SHAPES_SET.has(roomShape);
|
|
118
102
|
}
|
|
119
103
|
/**
|
|
120
104
|
* Helper function to determine if the provided room is equal to `RoomShape.LTL` (9),
|
|
121
105
|
* `RoomShape.LTR` (10), `RoomShape.LBL` (11), or `RoomShape.LBR` (12).
|
|
122
106
|
*/
|
|
123
|
-
function isLRoomShape(roomShape) {
|
|
124
|
-
return
|
|
107
|
+
export function isLRoomShape(roomShape) {
|
|
108
|
+
return L_ROOM_SHAPES_SET.has(roomShape);
|
|
125
109
|
}
|
|
126
110
|
/**
|
|
127
111
|
* Helper function to determine if the provided room is equal to `RoomShape.IH` (2), `RoomShape.IV`
|
|
128
112
|
* (3), `RoomShape.IIV` (5), or `RoomShape.IIH` (7).
|
|
129
113
|
*/
|
|
130
|
-
function isNarrowRoom(roomShape) {
|
|
131
|
-
return
|
|
114
|
+
export function isNarrowRoom(roomShape) {
|
|
115
|
+
return NARROW_ROOM_SHAPES_SET.has(roomShape);
|
|
132
116
|
}
|
|
133
117
|
/**
|
|
134
118
|
* Helper function to see if a given room shape will grant a single charge or a double charge to the
|
|
@@ -136,7 +120,7 @@ function isNarrowRoom(roomShape) {
|
|
|
136
120
|
*
|
|
137
121
|
* For example, `RoomShape.SHAPE_2x2` will return true.
|
|
138
122
|
*/
|
|
139
|
-
function isRoomShapeDoubleCharge(roomShape) {
|
|
123
|
+
export function isRoomShapeDoubleCharge(roomShape) {
|
|
140
124
|
// 2x2 rooms and L rooms should grant 2 charges.
|
|
141
|
-
return roomShape >=
|
|
125
|
+
return roomShape >= RoomShape.SHAPE_2x2;
|
|
142
126
|
}
|