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/stats.js
CHANGED
|
@@ -1,21 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
isaac_typescript_definitions_1.CacheFlag.DAMAGE, // 1 << 0
|
|
14
|
-
isaac_typescript_definitions_1.CacheFlag.FIRE_DELAY, // 1 << 1
|
|
15
|
-
isaac_typescript_definitions_1.CacheFlag.SHOT_SPEED, // 1 << 2
|
|
16
|
-
isaac_typescript_definitions_1.CacheFlag.RANGE, // 1 << 3
|
|
17
|
-
isaac_typescript_definitions_1.CacheFlag.SPEED, // 1 << 4
|
|
18
|
-
isaac_typescript_definitions_1.CacheFlag.LUCK, // 1 << 10
|
|
1
|
+
import { CacheFlag } from "isaac-typescript-definitions";
|
|
2
|
+
import { PlayerStat } from "../enums/PlayerStat";
|
|
3
|
+
import { DEFAULT_PLAYER_STAT_MAP } from "../maps/defaultPlayerStatMap";
|
|
4
|
+
import { ReadonlySet } from "../types/ReadonlySet";
|
|
5
|
+
import { addTearsStat } from "./tears";
|
|
6
|
+
const STAT_CACHE_FLAGS_SET = new ReadonlySet([
|
|
7
|
+
CacheFlag.DAMAGE, // 1 << 0
|
|
8
|
+
CacheFlag.FIRE_DELAY, // 1 << 1
|
|
9
|
+
CacheFlag.SHOT_SPEED, // 1 << 2
|
|
10
|
+
CacheFlag.RANGE, // 1 << 3
|
|
11
|
+
CacheFlag.SPEED, // 1 << 4
|
|
12
|
+
CacheFlag.LUCK, // 1 << 10
|
|
19
13
|
]);
|
|
20
14
|
/**
|
|
21
15
|
* Helper function to add a stat to a player based on the `CacheFlag` provided. Call this function
|
|
@@ -32,38 +26,38 @@ const STAT_CACHE_FLAGS_SET = new ReadonlySet_1.ReadonlySet([
|
|
|
32
26
|
* - CacheFlag.SPEED (1 << 4)
|
|
33
27
|
* - CacheFlag.LUCK (1 << 10)
|
|
34
28
|
*/
|
|
35
|
-
function addPlayerStat(player, cacheFlag, amount) {
|
|
29
|
+
export function addPlayerStat(player, cacheFlag, amount) {
|
|
36
30
|
if (!STAT_CACHE_FLAGS_SET.has(cacheFlag)) {
|
|
37
31
|
error(`You cannot add a stat to a player with the cache flag of: ${cacheFlag}`);
|
|
38
32
|
}
|
|
39
33
|
switch (cacheFlag) {
|
|
40
34
|
// 1 << 0
|
|
41
|
-
case
|
|
35
|
+
case CacheFlag.DAMAGE: {
|
|
42
36
|
player.Damage += amount;
|
|
43
37
|
break;
|
|
44
38
|
}
|
|
45
39
|
// 1 << 1
|
|
46
|
-
case
|
|
47
|
-
|
|
40
|
+
case CacheFlag.FIRE_DELAY: {
|
|
41
|
+
addTearsStat(player, amount);
|
|
48
42
|
break;
|
|
49
43
|
}
|
|
50
44
|
// 1 << 2
|
|
51
|
-
case
|
|
45
|
+
case CacheFlag.SHOT_SPEED: {
|
|
52
46
|
player.ShotSpeed += amount;
|
|
53
47
|
break;
|
|
54
48
|
}
|
|
55
49
|
// 1 << 3
|
|
56
|
-
case
|
|
50
|
+
case CacheFlag.RANGE: {
|
|
57
51
|
player.TearRange += amount;
|
|
58
52
|
break;
|
|
59
53
|
}
|
|
60
54
|
// 1 << 4
|
|
61
|
-
case
|
|
55
|
+
case CacheFlag.SPEED: {
|
|
62
56
|
player.MoveSpeed += amount;
|
|
63
57
|
break;
|
|
64
58
|
}
|
|
65
59
|
// 1 << 10
|
|
66
|
-
case
|
|
60
|
+
case CacheFlag.LUCK: {
|
|
67
61
|
player.Luck += amount;
|
|
68
62
|
break;
|
|
69
63
|
}
|
|
@@ -78,29 +72,29 @@ function addPlayerStat(player, cacheFlag, amount) {
|
|
|
78
72
|
*
|
|
79
73
|
* Note that the default fire delay is represented in the tear stat, not the `MaxFireDelay` value.
|
|
80
74
|
*/
|
|
81
|
-
function getDefaultPlayerStat(cacheFlag) {
|
|
82
|
-
return
|
|
75
|
+
export function getDefaultPlayerStat(cacheFlag) {
|
|
76
|
+
return DEFAULT_PLAYER_STAT_MAP.get(cacheFlag);
|
|
83
77
|
}
|
|
84
78
|
/** Helper function to get the stat for a player corresponding to the `StatType`. */
|
|
85
|
-
function getPlayerStat(player, playerStat) {
|
|
79
|
+
export function getPlayerStat(player, playerStat) {
|
|
86
80
|
const playerStats = getPlayerStats(player);
|
|
87
81
|
return playerStats[playerStat];
|
|
88
82
|
}
|
|
89
83
|
/** Helper function to get all of the stat for a player. */
|
|
90
|
-
function getPlayerStats(player) {
|
|
84
|
+
export function getPlayerStats(player) {
|
|
91
85
|
return {
|
|
92
|
-
[
|
|
93
|
-
[
|
|
94
|
-
[
|
|
95
|
-
[
|
|
96
|
-
[
|
|
97
|
-
[
|
|
98
|
-
[
|
|
99
|
-
[
|
|
100
|
-
[
|
|
101
|
-
[
|
|
102
|
-
[
|
|
103
|
-
[
|
|
104
|
-
[
|
|
86
|
+
[PlayerStat.DAMAGE]: player.Damage, // 1 << 0
|
|
87
|
+
[PlayerStat.FIRE_DELAY]: player.MaxFireDelay, // 1 << 1
|
|
88
|
+
[PlayerStat.SHOT_SPEED]: player.ShotSpeed, // 1 << 2
|
|
89
|
+
[PlayerStat.TEAR_HEIGHT]: player.TearHeight, // 1 << 3
|
|
90
|
+
[PlayerStat.TEAR_RANGE]: player.TearRange, // 1 << 3
|
|
91
|
+
[PlayerStat.TEAR_FALLING_ACCELERATION]: player.TearFallingAcceleration, // 1 << 3
|
|
92
|
+
[PlayerStat.TEAR_FALLING_SPEED]: player.TearFallingSpeed, // 1 << 3
|
|
93
|
+
[PlayerStat.MOVE_SPEED]: player.MoveSpeed, // 1 << 4
|
|
94
|
+
[PlayerStat.TEAR_FLAG]: player.TearFlags, // 1 << 5
|
|
95
|
+
[PlayerStat.TEAR_COLOR]: player.TearColor, // 1 << 6
|
|
96
|
+
[PlayerStat.FLYING]: player.CanFly, // 1 << 7
|
|
97
|
+
[PlayerStat.LUCK]: player.Luck, // 1 << 10
|
|
98
|
+
[PlayerStat.SIZE]: player.SpriteScale, // 1 << 11
|
|
105
99
|
};
|
|
106
100
|
}
|
|
@@ -1,55 +1,51 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.isStoryBoss = isStoryBoss;
|
|
4
|
-
exports.isStoryBossID = isStoryBossID;
|
|
5
|
-
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
6
|
-
const ReadonlySet_1 = require("../types/ReadonlySet");
|
|
1
|
+
import { BossID, EntityType } from "isaac-typescript-definitions";
|
|
2
|
+
import { ReadonlySet } from "../types/ReadonlySet";
|
|
7
3
|
const STORY_BOSS_IDS = [
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
4
|
+
BossID.MOM, // 6
|
|
5
|
+
BossID.MOMS_HEART, // 8
|
|
6
|
+
BossID.SATAN, // 24
|
|
7
|
+
BossID.IT_LIVES, // 25
|
|
8
|
+
BossID.ISAAC, // 39
|
|
9
|
+
BossID.BLUE_BABY, // 40
|
|
10
|
+
BossID.LAMB, // 54
|
|
11
|
+
BossID.MEGA_SATAN, // 55 (Mega Satan 2 is in the same room.)
|
|
12
|
+
BossID.ULTRA_GREED, // 62
|
|
13
|
+
BossID.HUSH, // 63
|
|
14
|
+
BossID.DELIRIUM, // 70
|
|
15
|
+
BossID.ULTRA_GREEDIER, // 71
|
|
16
|
+
BossID.MOTHER, // 88
|
|
17
|
+
BossID.MAUSOLEUM_MOM, // 89
|
|
18
|
+
BossID.MAUSOLEUM_MOMS_HEART, // 90
|
|
19
|
+
BossID.DOGMA, // 99
|
|
20
|
+
BossID.BEAST, // 100
|
|
25
21
|
];
|
|
26
|
-
const STORY_BOSS_ENTITY_TYPES_SET = new
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
const STORY_BOSS_ENTITY_TYPES_SET = new ReadonlySet([
|
|
23
|
+
EntityType.MOM, // 45
|
|
24
|
+
EntityType.MOMS_HEART, // 78
|
|
25
|
+
EntityType.SATAN, // 84
|
|
30
26
|
// - It Lives is a variant of Mom's Heart.
|
|
31
|
-
|
|
27
|
+
EntityType.ISAAC, // 102
|
|
32
28
|
// - Blue Baby is a variant of Isaac.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
EntityType.LAMB, // 273
|
|
30
|
+
EntityType.MEGA_SATAN, // 274
|
|
31
|
+
EntityType.MEGA_SATAN_2, // 275
|
|
32
|
+
EntityType.ULTRA_GREED, // 406
|
|
33
|
+
EntityType.HUSH, // 407
|
|
34
|
+
EntityType.DELIRIUM, // 412
|
|
39
35
|
// - Ultra Greedier is a variant of Ultra Greed.
|
|
40
|
-
|
|
36
|
+
EntityType.MOTHER, // 912
|
|
41
37
|
// - Mausoleum Mom is a sub-type of Mom.
|
|
42
38
|
// - Mausoleum Mom's Heart is a sub-type of Mom's Heart.
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
EntityType.DOGMA, // 950
|
|
40
|
+
EntityType.BEAST, // 951
|
|
45
41
|
]);
|
|
46
|
-
const STORY_BOSS_IDS_SET = new
|
|
42
|
+
const STORY_BOSS_IDS_SET = new ReadonlySet(STORY_BOSS_IDS);
|
|
47
43
|
/**
|
|
48
44
|
* Helper function to determine if the specified entity type is an end-game story boss, like Isaac,
|
|
49
45
|
* Blue Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only
|
|
50
46
|
* apply to non-story bosses, like Vanishing Twin.
|
|
51
47
|
*/
|
|
52
|
-
function isStoryBoss(entityType) {
|
|
48
|
+
export function isStoryBoss(entityType) {
|
|
53
49
|
return STORY_BOSS_ENTITY_TYPES_SET.has(entityType);
|
|
54
50
|
}
|
|
55
51
|
/**
|
|
@@ -57,6 +53,6 @@ function isStoryBoss(entityType) {
|
|
|
57
53
|
* Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only apply
|
|
58
54
|
* to non-story bosses, like Vanishing Twin.
|
|
59
55
|
*/
|
|
60
|
-
function isStoryBossID(bossID) {
|
|
56
|
+
export function isStoryBossID(bossID) {
|
|
61
57
|
return STORY_BOSS_IDS_SET.has(bossID);
|
|
62
58
|
}
|
package/dist/functions/string.js
CHANGED
|
@@ -1,20 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
exports.getMapPartialMatch = getMapPartialMatch;
|
|
5
|
-
exports.getObjectPartialMatch = getObjectPartialMatch;
|
|
6
|
-
exports.getPartialMatch = getPartialMatch;
|
|
7
|
-
exports.parseSemanticVersion = parseSemanticVersion;
|
|
8
|
-
exports.removeAllCharacters = removeAllCharacters;
|
|
9
|
-
exports.removeCharactersBefore = removeCharactersBefore;
|
|
10
|
-
exports.removeNonAlphanumericCharacters = removeNonAlphanumericCharacters;
|
|
11
|
-
exports.removeSubstring = removeSubstring;
|
|
12
|
-
exports.trimPrefix = trimPrefix;
|
|
13
|
-
exports.trimSuffix = trimSuffix;
|
|
14
|
-
exports.uncapitalizeFirstLetter = uncapitalizeFirstLetter;
|
|
15
|
-
const types_1 = require("./types");
|
|
16
|
-
const utils_1 = require("./utils");
|
|
17
|
-
function capitalizeFirstLetter(string) {
|
|
1
|
+
import { parseIntSafe } from "./types";
|
|
2
|
+
import { assertDefined } from "./utils";
|
|
3
|
+
export function capitalizeFirstLetter(string) {
|
|
18
4
|
if (string === "") {
|
|
19
5
|
return string;
|
|
20
6
|
}
|
|
@@ -46,14 +32,14 @@ function capitalizeFirstLetter(string) {
|
|
|
46
32
|
* @returns If a match was found, returns a tuple of the map key and value. If a match was not
|
|
47
33
|
* found, returns undefined.
|
|
48
34
|
*/
|
|
49
|
-
function getMapPartialMatch(searchText, map) {
|
|
35
|
+
export function getMapPartialMatch(searchText, map) {
|
|
50
36
|
const keys = [...map.keys()];
|
|
51
37
|
const matchingKey = getPartialMatch(searchText, keys);
|
|
52
38
|
if (matchingKey === undefined) {
|
|
53
39
|
return undefined;
|
|
54
40
|
}
|
|
55
41
|
const value = map.get(matchingKey);
|
|
56
|
-
|
|
42
|
+
assertDefined(value, `Failed to get the map value corresponding to the partial match of: ${matchingKey}`);
|
|
57
43
|
return [matchingKey, value];
|
|
58
44
|
}
|
|
59
45
|
/**
|
|
@@ -79,14 +65,14 @@ function getMapPartialMatch(searchText, map) {
|
|
|
79
65
|
* @returns If a match was found, returns a tuple of the map key and value. If a match was not
|
|
80
66
|
* found, returns undefined.
|
|
81
67
|
*/
|
|
82
|
-
function getObjectPartialMatch(searchText, object) {
|
|
68
|
+
export function getObjectPartialMatch(searchText, object) {
|
|
83
69
|
const keys = Object.keys(object);
|
|
84
70
|
const matchingKey = getPartialMatch(searchText, keys);
|
|
85
71
|
if (matchingKey === undefined) {
|
|
86
72
|
return undefined;
|
|
87
73
|
}
|
|
88
74
|
const value = object[matchingKey];
|
|
89
|
-
|
|
75
|
+
assertDefined(value, `Failed to get the object value corresponding to the partial match of: ${matchingKey}`);
|
|
90
76
|
return [matchingKey, value];
|
|
91
77
|
}
|
|
92
78
|
/**
|
|
@@ -108,7 +94,7 @@ function getObjectPartialMatch(searchText, object) {
|
|
|
108
94
|
* @returns If a match was found, returns the array element. If a match was not found, returns
|
|
109
95
|
* undefined.
|
|
110
96
|
*/
|
|
111
|
-
function getPartialMatch(searchText, array) {
|
|
97
|
+
export function getPartialMatch(searchText, array) {
|
|
112
98
|
const sortedArray = array.toSorted();
|
|
113
99
|
searchText = searchText.toLowerCase();
|
|
114
100
|
searchText = searchText.replaceAll(" ", "");
|
|
@@ -122,16 +108,16 @@ function getPartialMatch(searchText, array) {
|
|
|
122
108
|
*
|
|
123
109
|
* @see https://semver.org/
|
|
124
110
|
*/
|
|
125
|
-
function parseSemanticVersion(versionString) {
|
|
111
|
+
export function parseSemanticVersion(versionString) {
|
|
126
112
|
const [majorVersionString, minorVersionString, patchVersionString] = string.match(versionString, "(%d+).(%d+).(%d+)");
|
|
127
113
|
if (majorVersionString === undefined
|
|
128
114
|
|| minorVersionString === undefined
|
|
129
115
|
|| patchVersionString === undefined) {
|
|
130
116
|
return undefined;
|
|
131
117
|
}
|
|
132
|
-
const majorVersion =
|
|
133
|
-
const minorVersion =
|
|
134
|
-
const patchVersion =
|
|
118
|
+
const majorVersion = parseIntSafe(majorVersionString);
|
|
119
|
+
const minorVersion = parseIntSafe(minorVersionString);
|
|
120
|
+
const patchVersion = parseIntSafe(patchVersionString);
|
|
135
121
|
if (majorVersion === undefined
|
|
136
122
|
|| minorVersion === undefined
|
|
137
123
|
|| patchVersion === undefined) {
|
|
@@ -143,19 +129,19 @@ function parseSemanticVersion(versionString) {
|
|
|
143
129
|
patchVersion,
|
|
144
130
|
};
|
|
145
131
|
}
|
|
146
|
-
function removeAllCharacters(string, character) {
|
|
132
|
+
export function removeAllCharacters(string, character) {
|
|
147
133
|
return string.replaceAll(character, "");
|
|
148
134
|
}
|
|
149
135
|
/**
|
|
150
136
|
* Helper function to remove all of the characters in a string before a given substring. Returns the
|
|
151
137
|
* modified string.
|
|
152
138
|
*/
|
|
153
|
-
function removeCharactersBefore(string, substring) {
|
|
139
|
+
export function removeCharactersBefore(string, substring) {
|
|
154
140
|
const index = string.indexOf(substring);
|
|
155
141
|
return string.slice(index);
|
|
156
142
|
}
|
|
157
143
|
/** Helper function to remove all characters from a string that are not letters or numbers. */
|
|
158
|
-
function removeNonAlphanumericCharacters(str) {
|
|
144
|
+
export function removeNonAlphanumericCharacters(str) {
|
|
159
145
|
const [returnValue, _] = string.gsub(str, "%W", "");
|
|
160
146
|
return returnValue;
|
|
161
147
|
}
|
|
@@ -165,28 +151,28 @@ function removeNonAlphanumericCharacters(str) {
|
|
|
165
151
|
*
|
|
166
152
|
* This function is variadic, meaning that you can pass as many substrings as you want to remove.
|
|
167
153
|
*/
|
|
168
|
-
function removeSubstring(string, ...substrings) {
|
|
154
|
+
export function removeSubstring(string, ...substrings) {
|
|
169
155
|
for (const substring of substrings) {
|
|
170
156
|
string = string.replaceAll(substring, "");
|
|
171
157
|
}
|
|
172
158
|
return string;
|
|
173
159
|
}
|
|
174
160
|
/** Helper function to trim a prefix from a string, if it exists. Returns the trimmed string. */
|
|
175
|
-
function trimPrefix(string, prefix) {
|
|
161
|
+
export function trimPrefix(string, prefix) {
|
|
176
162
|
if (!string.startsWith(prefix)) {
|
|
177
163
|
return string;
|
|
178
164
|
}
|
|
179
165
|
return string.slice(prefix.length);
|
|
180
166
|
}
|
|
181
167
|
/** Helper function to trim a suffix from a string, if it exists. Returns the trimmed string. */
|
|
182
|
-
function trimSuffix(string, prefix) {
|
|
168
|
+
export function trimSuffix(string, prefix) {
|
|
183
169
|
if (!string.endsWith(prefix)) {
|
|
184
170
|
return string;
|
|
185
171
|
}
|
|
186
172
|
const endCharacter = string.length - prefix.length;
|
|
187
173
|
return string.slice(0, endCharacter);
|
|
188
174
|
}
|
|
189
|
-
function uncapitalizeFirstLetter(string) {
|
|
175
|
+
export function uncapitalizeFirstLetter(string) {
|
|
190
176
|
if (string === "") {
|
|
191
177
|
return string;
|
|
192
178
|
}
|
package/dist/functions/table.js
CHANGED
|
@@ -1,27 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.clearTable = clearTable;
|
|
4
|
-
exports.copyUserdataValuesToTable = copyUserdataValuesToTable;
|
|
5
|
-
exports.getBooleansFromTable = getBooleansFromTable;
|
|
6
|
-
exports.getNumbersFromTable = getNumbersFromTable;
|
|
7
|
-
exports.getStringsFromTable = getStringsFromTable;
|
|
8
|
-
exports.isTableEmpty = isTableEmpty;
|
|
9
|
-
exports.iterateTableInOrder = iterateTableInOrder;
|
|
10
|
-
exports.tableHasKeys = tableHasKeys;
|
|
11
|
-
const types_1 = require("./types");
|
|
12
|
-
const utils_1 = require("./utils");
|
|
1
|
+
import { isBoolean, isNumber, isString, isUserdata } from "./types";
|
|
2
|
+
import { assertDefined } from "./utils";
|
|
13
3
|
/**
|
|
14
4
|
* In a `Map`, you can use the `clear` method to delete every element. However, in a `LuaMap`, the
|
|
15
5
|
* `clear` method does not exist. Use this helper function as a drop-in replacement for this.
|
|
16
6
|
*/
|
|
17
|
-
function clearTable(luaMap) {
|
|
7
|
+
export function clearTable(luaMap) {
|
|
18
8
|
for (const [key] of luaMap) {
|
|
19
9
|
luaMap.delete(key);
|
|
20
10
|
}
|
|
21
11
|
}
|
|
22
12
|
/** Helper function to copy specific values from a userdata object (e.g. `Vector`) to a table. */
|
|
23
|
-
function copyUserdataValuesToTable(object, keys, luaMap) {
|
|
24
|
-
if (!
|
|
13
|
+
export function copyUserdataValuesToTable(object, keys, luaMap) {
|
|
14
|
+
if (!isUserdata(object)) {
|
|
25
15
|
error(`Failed to copy an object values to a table, since the object was of type: ${type(object)}`);
|
|
26
16
|
}
|
|
27
17
|
// We can access values on userdata objects similar to a normal table.
|
|
@@ -37,12 +27,12 @@ function copyUserdataValuesToTable(object, keys, luaMap) {
|
|
|
37
27
|
*
|
|
38
28
|
* This function is variadic, meaning that you can specify N arguments to get N values.
|
|
39
29
|
*/
|
|
40
|
-
function getBooleansFromTable(luaMap, objectName, ...keys) {
|
|
30
|
+
export function getBooleansFromTable(luaMap, objectName, ...keys) {
|
|
41
31
|
const booleans = [];
|
|
42
32
|
for (const key of keys) {
|
|
43
33
|
const value = luaMap.get(key);
|
|
44
|
-
|
|
45
|
-
if (
|
|
34
|
+
assertDefined(value, `Failed to find a value for "${key}" in a table representing a "${objectName}" object.`);
|
|
35
|
+
if (isBoolean(value)) {
|
|
46
36
|
booleans.push(value);
|
|
47
37
|
}
|
|
48
38
|
else {
|
|
@@ -58,17 +48,17 @@ function getBooleansFromTable(luaMap, objectName, ...keys) {
|
|
|
58
48
|
*
|
|
59
49
|
* This function is variadic, meaning that you can specify N arguments to get N values.
|
|
60
50
|
*/
|
|
61
|
-
function getNumbersFromTable(luaMap, objectName, ...keys) {
|
|
51
|
+
export function getNumbersFromTable(luaMap, objectName, ...keys) {
|
|
62
52
|
const numbers = [];
|
|
63
53
|
for (const key of keys) {
|
|
64
54
|
const value = luaMap.get(key);
|
|
65
|
-
|
|
66
|
-
if (
|
|
55
|
+
assertDefined(value, `Failed to find a value for "${key}" in a table representing a "${objectName}" object.`);
|
|
56
|
+
if (isNumber(value)) {
|
|
67
57
|
numbers.push(value);
|
|
68
58
|
}
|
|
69
|
-
else if (
|
|
59
|
+
else if (isString(value)) {
|
|
70
60
|
const number = tonumber(value);
|
|
71
|
-
|
|
61
|
+
assertDefined(number, `Failed to convert the "${key}" value of a table representing a "${objectName}" object to a number: ${value}`);
|
|
72
62
|
numbers.push(number);
|
|
73
63
|
}
|
|
74
64
|
else {
|
|
@@ -83,12 +73,12 @@ function getNumbersFromTable(luaMap, objectName, ...keys) {
|
|
|
83
73
|
*
|
|
84
74
|
* This function is variadic, meaning that you can specify N arguments to get N values.
|
|
85
75
|
*/
|
|
86
|
-
function getStringsFromTable(luaMap, objectName, ...keys) {
|
|
76
|
+
export function getStringsFromTable(luaMap, objectName, ...keys) {
|
|
87
77
|
const strings = [];
|
|
88
78
|
for (const key of keys) {
|
|
89
79
|
const value = luaMap.get(key);
|
|
90
|
-
|
|
91
|
-
if (
|
|
80
|
+
assertDefined(value, `Failed to find a value for "${key}" in a table representing a "${objectName}" object.`);
|
|
81
|
+
if (isString(value)) {
|
|
92
82
|
strings.push(value);
|
|
93
83
|
}
|
|
94
84
|
else {
|
|
@@ -99,7 +89,7 @@ function getStringsFromTable(luaMap, objectName, ...keys) {
|
|
|
99
89
|
return strings;
|
|
100
90
|
}
|
|
101
91
|
/** Helper function to check if a Lua table has 0 keys. */
|
|
102
|
-
function isTableEmpty(luaMap) {
|
|
92
|
+
export function isTableEmpty(luaMap) {
|
|
103
93
|
// Using `next` does not seem to work properly, so we use `pairs` instead.
|
|
104
94
|
// eslint-disable-next-line no-unreachable-loop
|
|
105
95
|
for (const [_key, _value] of luaMap) {
|
|
@@ -122,7 +112,7 @@ function isTableEmpty(luaMap) {
|
|
|
122
112
|
* false in situations where iterating randomly would not matter and you need the
|
|
123
113
|
* extra performance.
|
|
124
114
|
*/
|
|
125
|
-
function iterateTableInOrder(luaMap, func, inOrder = true) {
|
|
115
|
+
export function iterateTableInOrder(luaMap, func, inOrder = true) {
|
|
126
116
|
// First, handle the trivial case of a non-deterministic iteration.
|
|
127
117
|
if (!inOrder) {
|
|
128
118
|
for (const [key, value] of luaMap) {
|
|
@@ -131,8 +121,8 @@ function iterateTableInOrder(luaMap, func, inOrder = true) {
|
|
|
131
121
|
return;
|
|
132
122
|
}
|
|
133
123
|
const keys = Object.keys(luaMap);
|
|
134
|
-
const hasAllNumberKeys = keys.every((key) =>
|
|
135
|
-
const hasAllStringKeys = keys.every((key) =>
|
|
124
|
+
const hasAllNumberKeys = keys.every((key) => isNumber(key));
|
|
125
|
+
const hasAllStringKeys = keys.every((key) => isString(key));
|
|
136
126
|
if (!hasAllNumberKeys && !hasAllStringKeys) {
|
|
137
127
|
// Since the table has non-homogenous keys, we won't be able to sort it. Revert to
|
|
138
128
|
// non-deterministic iteration in this case.
|
|
@@ -156,6 +146,6 @@ function iterateTableInOrder(luaMap, func, inOrder = true) {
|
|
|
156
146
|
* This function is variadic, meaning that you can specify as many arguments as you want to check
|
|
157
147
|
* for.
|
|
158
148
|
*/
|
|
159
|
-
function tableHasKeys(luaMap, ...keys) {
|
|
149
|
+
export function tableHasKeys(luaMap, ...keys) {
|
|
160
150
|
return keys.every((key) => luaMap.has(key));
|
|
161
151
|
}
|
package/dist/functions/tears.js
CHANGED
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.addTearsStat = addTearsStat;
|
|
4
|
-
exports.getFireDelay = getFireDelay;
|
|
5
|
-
exports.getTearsStat = getTearsStat;
|
|
6
|
-
exports.isMissedTear = isMissedTear;
|
|
7
|
-
exports.isTearFromFamiliar = isTearFromFamiliar;
|
|
8
|
-
exports.isTearFromPlayer = isTearFromPlayer;
|
|
9
1
|
/**
|
|
10
2
|
* - Converts the specified amount of tears stat into the format of `EntityPlayer.MaxFireDelay` and
|
|
11
3
|
* adds it to the player.
|
|
@@ -22,7 +14,7 @@ exports.isTearFromPlayer = isTearFromPlayer;
|
|
|
22
14
|
* }
|
|
23
15
|
* ```
|
|
24
16
|
*/
|
|
25
|
-
function addTearsStat(player, tearsStat) {
|
|
17
|
+
export function addTearsStat(player, tearsStat) {
|
|
26
18
|
const existingTearsStat = getTearsStat(player.MaxFireDelay);
|
|
27
19
|
const newTearsStat = existingTearsStat + tearsStat;
|
|
28
20
|
const newMaxFireDelay = getFireDelay(newTearsStat);
|
|
@@ -35,7 +27,7 @@ function addTearsStat(player, tearsStat) {
|
|
|
35
27
|
* this function.
|
|
36
28
|
* - In this context, the "tears stat" represents what is shown on the in-game stat UI.
|
|
37
29
|
*/
|
|
38
|
-
function getFireDelay(tearsStat) {
|
|
30
|
+
export function getFireDelay(tearsStat) {
|
|
39
31
|
return Math.max(30 / tearsStat - 1, -0.9999);
|
|
40
32
|
}
|
|
41
33
|
/**
|
|
@@ -44,7 +36,7 @@ function getFireDelay(tearsStat) {
|
|
|
44
36
|
* - If you want to convert this to the "tears" stat that is shown on the in-game stat UI, then use
|
|
45
37
|
* this function.
|
|
46
38
|
*/
|
|
47
|
-
function getTearsStat(fireDelay) {
|
|
39
|
+
export function getTearsStat(fireDelay) {
|
|
48
40
|
return 30 / (fireDelay + 1);
|
|
49
41
|
}
|
|
50
42
|
/**
|
|
@@ -58,7 +50,7 @@ function getTearsStat(fireDelay) {
|
|
|
58
50
|
* Under the hood, this function uses the `Entity.IsDead` method. (Tears will not die if they hit an
|
|
59
51
|
* enemy, but they will die if they hit a wall or object.)
|
|
60
52
|
*/
|
|
61
|
-
function isMissedTear(tear) {
|
|
53
|
+
export function isMissedTear(tear) {
|
|
62
54
|
return tear.IsDead();
|
|
63
55
|
}
|
|
64
56
|
/**
|
|
@@ -81,7 +73,7 @@ function isMissedTear(tear) {
|
|
|
81
73
|
* @param subType Optional. Specify this to check if the tear came from a specific familiar
|
|
82
74
|
* sub-type. Default is undefined, which checks for any familiar.
|
|
83
75
|
*/
|
|
84
|
-
function isTearFromFamiliar(tear, familiarVariant, subType) {
|
|
76
|
+
export function isTearFromFamiliar(tear, familiarVariant, subType) {
|
|
85
77
|
if (tear.FrameCount === 0) {
|
|
86
78
|
error('Failed to check if the given tear was from a player since the tear\'s frame count was equal to 0. (The "isTearFromFamiliar" function must only be used in the "POST_TEAR_INIT_VERY_LATE" callback or on frame 1 and onwards.)');
|
|
87
79
|
}
|
|
@@ -112,7 +104,7 @@ function isTearFromFamiliar(tear, familiarVariant, subType) {
|
|
|
112
104
|
* Note that this function does not work properly when the tear is from a Lead Pencil barrage. In
|
|
113
105
|
* this case, it will always appear as if the tear is coming from a player.
|
|
114
106
|
*/
|
|
115
|
-
function isTearFromPlayer(tear) {
|
|
107
|
+
export function isTearFromPlayer(tear) {
|
|
116
108
|
if (tear.FrameCount === 0) {
|
|
117
109
|
error('Failed to check if the given tear was from a player since the tear\'s frame count was equal to 0. (The "isTearFromPlayer" function must only be used in the "POST_TEAR_INIT_VERY_LATE" callback or on frame 1 and onwards.)');
|
|
118
110
|
}
|