isaacscript-common 87.9.7 → 87.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cachedEnumValues.js +29 -32
- package/dist/callbackClasses.js +142 -289
- package/dist/callbacks.js +147 -183
- package/dist/classes/DefaultMap.js +4 -8
- package/dist/classes/ModFeature.js +21 -25
- package/dist/classes/ModUpgraded.js +43 -47
- package/dist/classes/callbacks/EntityTakeDmgFilter.js +6 -10
- package/dist/classes/callbacks/EntityTakeDmgPlayer.js +7 -11
- package/dist/classes/callbacks/InputActionFilter.js +4 -8
- package/dist/classes/callbacks/InputActionPlayer.js +4 -8
- package/dist/classes/callbacks/PostAmbushFinished.js +10 -14
- package/dist/classes/callbacks/PostAmbushStarted.js +10 -14
- package/dist/classes/callbacks/PostBombExploded.js +8 -12
- package/dist/classes/callbacks/PostBombInitFilter.js +6 -10
- package/dist/classes/callbacks/PostBombInitLate.js +6 -10
- package/dist/classes/callbacks/PostBombRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostBombUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostBoneSwing.js +7 -11
- package/dist/classes/callbacks/PostCollectibleEmpty.js +6 -10
- package/dist/classes/callbacks/PostCursedTeleport.js +30 -34
- package/dist/classes/callbacks/PostCustomRevive.js +4 -8
- package/dist/classes/callbacks/PostDiceRoomActivated.js +9 -13
- package/dist/classes/callbacks/PostDoorRender.js +8 -12
- package/dist/classes/callbacks/PostDoorUpdate.js +8 -12
- package/dist/classes/callbacks/PostEffectInitFilter.js +6 -10
- package/dist/classes/callbacks/PostEffectInitLate.js +6 -10
- package/dist/classes/callbacks/PostEffectRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostEffectStateChanged.js +8 -12
- package/dist/classes/callbacks/PostEffectUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostEntityKillFilter.js +6 -10
- package/dist/classes/callbacks/PostEntityRemoveFilter.js +6 -10
- package/dist/classes/callbacks/PostEsauJr.js +4 -8
- package/dist/classes/callbacks/PostFamiliarInitFilter.js +6 -10
- package/dist/classes/callbacks/PostFamiliarInitLate.js +6 -10
- package/dist/classes/callbacks/PostFamiliarRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostFamiliarStateChanged.js +8 -12
- package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostFirstEsauJr.js +4 -8
- package/dist/classes/callbacks/PostFirstFlip.js +4 -8
- package/dist/classes/callbacks/PostFlip.js +4 -8
- package/dist/classes/callbacks/PostGameEndFilter.js +6 -10
- package/dist/classes/callbacks/PostGameStartedReordered.js +6 -10
- package/dist/classes/callbacks/PostGameStartedReorderedLast.js +6 -10
- package/dist/classes/callbacks/PostGreedModeWave.js +7 -11
- package/dist/classes/callbacks/PostGridEntityBroken.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCollision.js +4 -8
- package/dist/classes/callbacks/PostGridEntityCustomBroken.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomCollision.js +4 -8
- package/dist/classes/callbacks/PostGridEntityCustomInit.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomRemove.js +4 -8
- package/dist/classes/callbacks/PostGridEntityCustomRender.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +6 -10
- package/dist/classes/callbacks/PostGridEntityInit.js +6 -10
- package/dist/classes/callbacks/PostGridEntityRemove.js +4 -8
- package/dist/classes/callbacks/PostGridEntityRender.js +6 -10
- package/dist/classes/callbacks/PostGridEntityStateChanged.js +6 -10
- package/dist/classes/callbacks/PostGridEntityUpdate.js +6 -10
- package/dist/classes/callbacks/PostHolyMantleRemoved.js +15 -19
- package/dist/classes/callbacks/PostItemDischarge.js +23 -27
- package/dist/classes/callbacks/PostItemPickup.js +6 -10
- package/dist/classes/callbacks/PostKeyboardChanged.js +9 -13
- package/dist/classes/callbacks/PostKnifeInitFilter.js +6 -10
- package/dist/classes/callbacks/PostKnifeInitLate.js +6 -10
- package/dist/classes/callbacks/PostKnifeRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostKnifeUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostLaserInitFilter.js +6 -10
- package/dist/classes/callbacks/PostLaserInitLate.js +6 -10
- package/dist/classes/callbacks/PostLaserRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostLaserUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCDeathFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCInitFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCInitLate.js +6 -10
- package/dist/classes/callbacks/PostNPCRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCStateChanged.js +8 -12
- package/dist/classes/callbacks/PostNPCUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostNewLevelReordered.js +6 -10
- package/dist/classes/callbacks/PostNewRoomEarly.js +17 -21
- package/dist/classes/callbacks/PostNewRoomReordered.js +6 -10
- package/dist/classes/callbacks/PostPEffectUpdateReordered.js +6 -10
- package/dist/classes/callbacks/PostPickupChanged.js +6 -10
- package/dist/classes/callbacks/PostPickupCollect.js +8 -12
- package/dist/classes/callbacks/PostPickupInitFilter.js +6 -10
- package/dist/classes/callbacks/PostPickupInitFirst.js +10 -14
- package/dist/classes/callbacks/PostPickupInitLate.js +6 -10
- package/dist/classes/callbacks/PostPickupRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostPickupSelectionFilter.js +4 -8
- package/dist/classes/callbacks/PostPickupStateChanged.js +8 -12
- package/dist/classes/callbacks/PostPickupUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostPitRender.js +8 -12
- package/dist/classes/callbacks/PostPitUpdate.js +8 -12
- package/dist/classes/callbacks/PostPlayerChangeHealth.js +14 -18
- package/dist/classes/callbacks/PostPlayerChangeStat.js +26 -30
- package/dist/classes/callbacks/PostPlayerChangeType.js +11 -15
- package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +6 -10
- package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +6 -10
- package/dist/classes/callbacks/PostPlayerFatalDamage.js +24 -28
- package/dist/classes/callbacks/PostPlayerInitFirst.js +12 -16
- package/dist/classes/callbacks/PostPlayerInitLate.js +9 -13
- package/dist/classes/callbacks/PostPlayerRenderReordered.js +6 -10
- package/dist/classes/callbacks/PostPlayerUpdateReordered.js +6 -10
- package/dist/classes/callbacks/PostPoopRender.js +8 -12
- package/dist/classes/callbacks/PostPoopUpdate.js +8 -12
- package/dist/classes/callbacks/PostPressurePlateRender.js +8 -12
- package/dist/classes/callbacks/PostPressurePlateUpdate.js +8 -12
- package/dist/classes/callbacks/PostProjectileInitFilter.js +6 -10
- package/dist/classes/callbacks/PostProjectileInitLate.js +6 -10
- package/dist/classes/callbacks/PostProjectileKill.js +8 -12
- package/dist/classes/callbacks/PostProjectileRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostProjectileUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostPurchase.js +21 -25
- package/dist/classes/callbacks/PostRockRender.js +8 -12
- package/dist/classes/callbacks/PostRockUpdate.js +8 -12
- package/dist/classes/callbacks/PostRoomClearChanged.js +9 -13
- package/dist/classes/callbacks/PostSacrifice.js +12 -16
- package/dist/classes/callbacks/PostSlotAnimationChanged.js +6 -10
- package/dist/classes/callbacks/PostSlotCollision.js +8 -12
- package/dist/classes/callbacks/PostSlotDestroyed.js +6 -10
- package/dist/classes/callbacks/PostSlotInit.js +6 -10
- package/dist/classes/callbacks/PostSlotRender.js +6 -10
- package/dist/classes/callbacks/PostSlotUpdate.js +6 -10
- package/dist/classes/callbacks/PostSpikesRender.js +8 -12
- package/dist/classes/callbacks/PostSpikesUpdate.js +8 -12
- package/dist/classes/callbacks/PostTNTRender.js +8 -12
- package/dist/classes/callbacks/PostTNTUpdate.js +8 -12
- package/dist/classes/callbacks/PostTearInitFilter.js +6 -10
- package/dist/classes/callbacks/PostTearInitLate.js +6 -10
- package/dist/classes/callbacks/PostTearInitVeryLate.js +6 -10
- package/dist/classes/callbacks/PostTearKill.js +8 -12
- package/dist/classes/callbacks/PostTearRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostTearUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostTransformation.js +10 -14
- package/dist/classes/callbacks/PostTrinketBreak.js +16 -20
- package/dist/classes/callbacks/PostUsePillFilter.js +18 -22
- package/dist/classes/callbacks/PreBerserkDeath.js +14 -18
- package/dist/classes/callbacks/PreBombCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreCustomRevive.js +6 -10
- package/dist/classes/callbacks/PreEntitySpawnFilter.js +4 -8
- package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreGetPedestal.js +8 -12
- package/dist/classes/callbacks/PreItemPickup.js +6 -10
- package/dist/classes/callbacks/PreKnifeCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreNPCCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreNPCUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PreNewLevel.js +10 -14
- package/dist/classes/callbacks/PreProjectileCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +4 -8
- package/dist/classes/callbacks/PreTearCollisionFilter.js +6 -10
- package/dist/classes/features/callbackLogic/CustomGridEntities.js +46 -50
- package/dist/classes/features/callbackLogic/CustomRevive.js +28 -32
- package/dist/classes/features/callbackLogic/EsauJrDetection.js +11 -15
- package/dist/classes/features/callbackLogic/FlipDetection.js +11 -15
- package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +26 -30
- package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +10 -14
- package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +6 -10
- package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +12 -16
- package/dist/classes/features/callbackLogic/ItemPickupDetection.js +17 -21
- package/dist/classes/features/callbackLogic/PickupChangeDetection.js +6 -10
- package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +39 -43
- package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +18 -22
- package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +17 -21
- package/dist/classes/features/callbackLogic/SlotRenderDetection.js +8 -12
- package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +9 -13
- package/dist/classes/features/other/CharacterHealthConversion.js +13 -17
- package/dist/classes/features/other/CharacterStats.js +9 -13
- package/dist/classes/features/other/CollectibleItemPoolType.js +17 -21
- package/dist/classes/features/other/CustomHotkeys.js +15 -19
- package/dist/classes/features/other/CustomItemPools.js +20 -24
- package/dist/classes/features/other/CustomPickups.js +15 -19
- package/dist/classes/features/other/CustomStages.js +116 -153
- package/dist/classes/features/other/CustomTrapdoors.js +119 -123
- package/dist/classes/features/other/DebugDisplay.js +77 -81
- package/dist/classes/features/other/DeployJSONRoom.js +65 -69
- package/dist/classes/features/other/DisableAllSound.js +14 -18
- package/dist/classes/features/other/DisableInputs.js +24 -28
- package/dist/classes/features/other/EdenStartingStatsHealth.js +36 -40
- package/dist/classes/features/other/ExtraConsoleCommands.js +65 -102
- package/dist/classes/features/other/FadeInRemover.js +9 -13
- package/dist/classes/features/other/FastReset.js +18 -22
- package/dist/classes/features/other/FlyingDetection.js +10 -14
- package/dist/classes/features/other/ForgottenSwitch.js +8 -12
- package/dist/classes/features/other/ItemPoolDetection.js +35 -39
- package/dist/classes/features/other/ModdedElementDetection.js +43 -47
- package/dist/classes/features/other/ModdedElementSets.js +135 -139
- package/dist/classes/features/other/NoSirenSteal.js +7 -11
- package/dist/classes/features/other/Pause.js +48 -52
- package/dist/classes/features/other/PersistentEntities.js +16 -20
- package/dist/classes/features/other/PickupIndexCreation.js +31 -35
- package/dist/classes/features/other/PlayerCollectibleTracking.js +18 -22
- package/dist/classes/features/other/PonyDetection.js +22 -26
- package/dist/classes/features/other/PressInput.js +10 -14
- package/dist/classes/features/other/PreventChildEntities.js +6 -10
- package/dist/classes/features/other/PreventGridEntityRespawn.js +34 -38
- package/dist/classes/features/other/RerunDetection.js +11 -15
- package/dist/classes/features/other/RoomClearFrame.js +11 -15
- package/dist/classes/features/other/RoomHistory.js +30 -34
- package/dist/classes/features/other/RunInNFrames.js +24 -28
- package/dist/classes/features/other/RunNextRoom.js +8 -12
- package/dist/classes/features/other/RunNextRun.js +8 -12
- package/dist/classes/features/other/SaveDataManager.js +61 -65
- package/dist/classes/features/other/SpawnRockAltRewards.js +115 -119
- package/dist/classes/features/other/StageHistory.js +76 -80
- package/dist/classes/features/other/StartAmbush.js +12 -16
- package/dist/classes/features/other/TaintedLazarusPlayers.js +10 -14
- package/dist/classes/features/other/UnlockAchievementsDetection.js +10 -14
- package/dist/classes/features/other/customStages/backdrop.js +68 -71
- package/dist/classes/features/other/customStages/constants.js +7 -10
- package/dist/classes/features/other/customStages/gridEntities.js +23 -30
- package/dist/classes/features/other/customStages/shadows.js +27 -30
- package/dist/classes/features/other/customStages/streakText.js +55 -60
- package/dist/classes/features/other/customStages/utils.js +13 -17
- package/dist/classes/features/other/customStages/v.js +4 -7
- package/dist/classes/features/other/customStages/versusScreen.js +46 -50
- package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +8 -12
- package/dist/classes/features/other/debugDisplay/utils.js +6 -10
- package/dist/classes/features/other/extraConsoleCommands/commands.js +411 -557
- package/dist/classes/features/other/extraConsoleCommands/subroutines.js +47 -57
- package/dist/classes/features/other/extraConsoleCommands/v.js +1 -4
- package/dist/classes/features/other/saveDataManager/constants.js +1 -4
- package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +17 -21
- package/dist/classes/features/other/saveDataManager/loadFromDisk.js +19 -22
- package/dist/classes/features/other/saveDataManager/restoreDefaults.js +20 -25
- package/dist/classes/features/other/saveDataManager/saveToDisk.js +13 -16
- package/dist/classes/private/CustomCallback.js +4 -8
- package/dist/classes/private/Feature.js +1 -5
- package/dist/core/cachedClasses.js +12 -15
- package/dist/core/constants.js +126 -130
- package/dist/core/constantsFirstLast.js +22 -25
- package/dist/core/constantsVanilla.js +25 -28
- package/dist/core/upgradeMod.js +7 -10
- package/dist/decorators.js +6 -10
- package/dist/enums/AmbushType.js +2 -5
- package/dist/enums/CornerType.js +2 -5
- package/dist/enums/HealthType.js +2 -5
- package/dist/enums/ISCFeature.js +2 -5
- package/dist/enums/LadderSubTypeCustom.js +2 -5
- package/dist/enums/ModCallbackCustom.js +2 -5
- package/dist/enums/MysteriousPaperEffect.js +2 -5
- package/dist/enums/PlayerStat.js +2 -5
- package/dist/enums/PocketItemType.js +2 -5
- package/dist/enums/RockAltType.js +2 -5
- package/dist/enums/SaveDataKey.js +2 -5
- package/dist/enums/SerializationType.js +2 -5
- package/dist/enums/SlotDestructionType.js +2 -5
- package/dist/enums/private/GridEntityTypeCustom.js +1 -4
- package/dist/enums/private/SerializationBrand.js +2 -5
- package/dist/enums/private/StageTravelState.js +2 -5
- package/dist/enums/private/TrapdoorAnimation.js +2 -5
- package/dist/enums/private/UIStreakAnimation.js +2 -5
- package/dist/features.js +138 -141
- package/dist/functions/ambush.js +9 -12
- package/dist/functions/array.js +45 -76
- package/dist/functions/arrayLua.js +7 -16
- package/dist/functions/benchmark.js +4 -7
- package/dist/functions/bitSet128.js +19 -26
- package/dist/functions/bitwise.js +14 -23
- package/dist/functions/bombs.js +1 -4
- package/dist/functions/bosses.js +68 -85
- package/dist/functions/cards.js +44 -62
- package/dist/functions/challenges.js +28 -39
- package/dist/functions/characters.js +68 -87
- package/dist/functions/charge.js +41 -52
- package/dist/functions/chargeBar.js +2 -6
- package/dist/functions/collectibleTag.js +9 -13
- package/dist/functions/collectibles.js +133 -172
- package/dist/functions/color.js +29 -38
- package/dist/functions/console.js +4 -8
- package/dist/functions/curses.js +6 -10
- package/dist/functions/debugFunctions.js +7 -14
- package/dist/functions/decorators.js +13 -19
- package/dist/functions/deepCopy.js +96 -99
- package/dist/functions/deepCopyTests.js +56 -59
- package/dist/functions/dimensions.js +10 -14
- package/dist/functions/direction.js +22 -30
- package/dist/functions/doors.js +104 -154
- package/dist/functions/easing.js +30 -62
- package/dist/functions/effects.js +6 -10
- package/dist/functions/emptyRoom.js +30 -34
- package/dist/functions/entities.js +88 -115
- package/dist/functions/entitiesSpecific.js +83 -125
- package/dist/functions/entityTypes.js +3 -6
- package/dist/functions/enums.js +27 -41
- package/dist/functions/external.js +4 -8
- package/dist/functions/familiars.js +17 -25
- package/dist/functions/flag.js +10 -19
- package/dist/functions/frames.js +31 -51
- package/dist/functions/globals.js +26 -66
- package/dist/functions/gridEntities.js +231 -269
- package/dist/functions/gridEntitiesSpecific.js +86 -126
- package/dist/functions/gridIndex.js +8 -11
- package/dist/functions/hash.js +1 -4
- package/dist/functions/hex.js +7 -11
- package/dist/functions/input.js +65 -88
- package/dist/functions/isaacAPIClass.js +28 -53
- package/dist/functions/itemPool.js +39 -48
- package/dist/functions/jsonHelpers.js +5 -42
- package/dist/functions/jsonRoom.js +39 -46
- package/dist/functions/kColor.js +30 -39
- package/dist/functions/language.js +3 -6
- package/dist/functions/level.js +20 -26
- package/dist/functions/levelGrid.js +81 -108
- package/dist/functions/log.js +6 -12
- package/dist/functions/logEntities.js +49 -59
- package/dist/functions/logMisc.js +183 -214
- package/dist/functions/map.js +10 -20
- package/dist/functions/math.js +16 -31
- package/dist/functions/merge.js +48 -51
- package/dist/functions/mergeTests.js +34 -37
- package/dist/functions/minimap.js +34 -46
- package/dist/functions/modFeatures.js +1 -4
- package/dist/functions/newArray.js +5 -8
- package/dist/functions/nextStage.js +63 -67
- package/dist/functions/npcDataStructures.js +9 -20
- package/dist/functions/npcs.js +37 -45
- package/dist/functions/pickupVariants.js +26 -39
- package/dist/functions/pickups.js +43 -59
- package/dist/functions/pickupsSpecific.js +76 -118
- package/dist/functions/pills.js +52 -72
- package/dist/functions/playerCenter.js +13 -16
- package/dist/functions/playerCollectibles.js +59 -79
- package/dist/functions/playerDataStructures.js +18 -29
- package/dist/functions/playerEffects.js +12 -19
- package/dist/functions/playerHealth.js +91 -113
- package/dist/functions/playerIndex.js +22 -33
- package/dist/functions/playerTrinkets.js +31 -43
- package/dist/functions/players.js +87 -126
- package/dist/functions/pocketItems.js +33 -43
- package/dist/functions/positionVelocity.js +23 -32
- package/dist/functions/pressurePlate.js +7 -10
- package/dist/functions/projectiles.js +11 -15
- package/dist/functions/random.js +8 -13
- package/dist/functions/readOnly.js +3 -8
- package/dist/functions/render.js +7 -12
- package/dist/functions/revive.js +38 -45
- package/dist/functions/rng.js +31 -44
- package/dist/functions/rockAlt.js +18 -22
- package/dist/functions/roomData.js +24 -40
- package/dist/functions/roomGrid.js +17 -25
- package/dist/functions/roomShape.js +39 -55
- package/dist/functions/roomShapeWalls.js +67 -71
- package/dist/functions/roomTransition.js +13 -17
- package/dist/functions/rooms.js +181 -244
- package/dist/functions/run.js +29 -39
- package/dist/functions/seeds.js +6 -10
- package/dist/functions/serialization.js +27 -34
- package/dist/functions/set.js +24 -40
- package/dist/functions/slots.js +18 -22
- package/dist/functions/sort.js +9 -15
- package/dist/functions/sound.js +12 -16
- package/dist/functions/spawnCollectible.js +21 -26
- package/dist/functions/sprites.js +16 -24
- package/dist/functions/stage.js +122 -164
- package/dist/functions/stats.js +37 -43
- package/dist/functions/storyBosses.js +36 -40
- package/dist/functions/string.js +19 -33
- package/dist/functions/table.js +21 -31
- package/dist/functions/tears.js +6 -14
- package/dist/functions/transformations.js +35 -42
- package/dist/functions/trinketGive.js +29 -36
- package/dist/functions/trinkets.js +45 -60
- package/dist/functions/tstlClass.js +11 -20
- package/dist/functions/types.js +22 -46
- package/dist/functions/ui.js +25 -40
- package/dist/functions/utils.js +22 -36
- package/dist/functions/vector.js +33 -46
- package/dist/functions/versusScreen.js +12 -18
- package/dist/functions/weighted.js +8 -12
- package/dist/index.js +150 -166
- package/dist/indexLua.js +151 -167
- package/dist/interfaces/ChargeBarSprites.js +1 -2
- package/dist/interfaces/Corner.js +1 -2
- package/dist/interfaces/CustomStageTSConfig.js +1 -2
- package/dist/interfaces/GridEntityCustomData.js +1 -2
- package/dist/interfaces/JSONRoomsFile.js +1 -2
- package/dist/interfaces/PlayerHealth.js +1 -2
- package/dist/interfaces/PlayerStats.js +2 -4
- package/dist/interfaces/PocketItemDescription.js +1 -2
- package/dist/interfaces/RoomDescription.js +1 -2
- package/dist/interfaces/SaveData.js +1 -2
- package/dist/interfaces/StageHistoryEntry.js +1 -2
- package/dist/interfaces/TSTLClassMetatable.js +1 -2
- package/dist/interfaces/TrinketSituation.js +1 -2
- package/dist/interfaces/private/AddCallbackParametersCustom.js +2 -4
- package/dist/interfaces/private/CustomStage.js +1 -2
- package/dist/interfaces/private/CustomTrapdoorDescription.js +1 -2
- package/dist/interfaces/private/ModUpgradedInterface.js +1 -2
- package/dist/isaacscript-common.lua +1 -1
- package/dist/maps/PHDPillConversionsMap.js +19 -22
- package/dist/maps/cardNameToTypeMap.js +205 -208
- package/dist/maps/characterNameToTypeMap.js +85 -88
- package/dist/maps/collectibleNameToTypeMap.js +5 -8
- package/dist/maps/defaultPlayerStatMap.js +10 -13
- package/dist/maps/entityTypeVariantToBossIDMap.js +3 -6
- package/dist/maps/falsePHDPillConversionsMap.js +33 -36
- package/dist/maps/gridEntityTypeToBrokenStateMap.js +15 -18
- package/dist/maps/gridEntityXMLMap.js +52 -55
- package/dist/maps/itemPoolTypeToItemPoolName.js +33 -36
- package/dist/maps/keyboardToStringMap.js +66 -69
- package/dist/maps/pillNameToEffectMap.js +83 -86
- package/dist/maps/roomNameToTypeMap.js +38 -41
- package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +9 -12
- package/dist/maps/transformationNameToPlayerFormMap.js +30 -33
- package/dist/maps/trinketNameToTypeMap.js +5 -8
- package/dist/objects/LRoomShapeToRectangles.js +22 -25
- package/dist/objects/backdropTypeToRockAltType.js +65 -68
- package/dist/objects/batteryNames.js +8 -11
- package/dist/objects/bombNames.js +11 -14
- package/dist/objects/bossIDToEntityTypeVariant.js +116 -119
- package/dist/objects/bossNamePNGFileNames.js +104 -107
- package/dist/objects/bossNames.js +105 -108
- package/dist/objects/bossPortraitPNGFileNames.js +104 -107
- package/dist/objects/cardDescriptions.js +101 -104
- package/dist/objects/cardNames.js +101 -104
- package/dist/objects/challengeBosses.js +49 -52
- package/dist/objects/challengeCharacters.js +49 -52
- package/dist/objects/challengeCollectibleTypes.js +160 -163
- package/dist/objects/challengeNames.js +49 -52
- package/dist/objects/challengeTrinketType.js +48 -51
- package/dist/objects/characterDamageMultipliers.js +44 -47
- package/dist/objects/characterNames.js +44 -47
- package/dist/objects/characterSpritePNGFileNames.js +44 -47
- package/dist/objects/characterStartingCollectibleTypes.js +49 -52
- package/dist/objects/characterStartingTrinketTypes.js +44 -47
- package/dist/objects/chestNames.js +15 -18
- package/dist/objects/coinNames.js +11 -14
- package/dist/objects/coinSubTypeToValue.js +11 -14
- package/dist/objects/collectibleDescriptions.js +725 -728
- package/dist/objects/collectibleNames.js +725 -728
- package/dist/objects/colors.js +1 -4
- package/dist/objects/directionNames.js +7 -10
- package/dist/objects/directionToDegrees.js +7 -10
- package/dist/objects/directionToMoveAction.js +7 -10
- package/dist/objects/directionToShootAction.js +7 -10
- package/dist/objects/directionToVector.js +9 -12
- package/dist/objects/doorSlotFlagToDoorSlot.js +11 -14
- package/dist/objects/doorSlotToDirection.js +11 -14
- package/dist/objects/doorSlotToDoorSlotFlag.js +11 -14
- package/dist/objects/gridEntityTypeToANM2Name.js +30 -33
- package/dist/objects/heartNames.js +16 -19
- package/dist/objects/isaacAPIClassTypeToBrand.js +8 -11
- package/dist/objects/isaacAPIClassTypeToFunctions.js +37 -40
- package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +9 -45
- package/dist/objects/kColors.js +1 -4
- package/dist/objects/keyNames.js +8 -11
- package/dist/objects/languageNames.js +9 -12
- package/dist/objects/oppositeDoorSlots.js +11 -14
- package/dist/objects/pillEffectClasses.js +53 -56
- package/dist/objects/pillEffectNames.js +53 -56
- package/dist/objects/pillEffectTypeToPillEffects.js +11 -14
- package/dist/objects/pillEffectTypes.js +53 -56
- package/dist/objects/playerNamePNGFileNames.js +44 -47
- package/dist/objects/playerPortraitPNGFileNames.js +44 -47
- package/dist/objects/roomShapeBounds.js +23 -26
- package/dist/objects/roomShapeCorners.js +128 -131
- package/dist/objects/roomShapeLayoutSizes.js +23 -26
- package/dist/objects/roomShapeToBottomRightPosition.js +17 -20
- package/dist/objects/roomShapeToDoorSlotCoordinates.js +78 -81
- package/dist/objects/roomShapeToDoorSlots.js +48 -51
- package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +82 -85
- package/dist/objects/roomShapeToGridWidth.js +14 -17
- package/dist/objects/roomShapeToTopLeftPosition.js +18 -21
- package/dist/objects/roomShapeVolumes.js +21 -24
- package/dist/objects/roomTypeNames.js +32 -35
- package/dist/objects/roomTypeSpecialGotoPrefixes.js +32 -35
- package/dist/objects/sackNames.js +6 -9
- package/dist/objects/slotNames.js +21 -24
- package/dist/objects/stageIDNames.js +33 -36
- package/dist/objects/stageToMusic.js +69 -72
- package/dist/objects/stageToStageID.js +90 -93
- package/dist/objects/stageTypeSuffixes.js +8 -11
- package/dist/objects/transformationNames.js +16 -19
- package/dist/objects/trinketDescriptions.js +192 -195
- package/dist/objects/trinketNames.js +192 -195
- package/dist/objects/versusScreenBackgroundColors.js +39 -42
- package/dist/objects/versusScreenDirtSpotColors.js +39 -42
- package/dist/patchErrorFunctions.js +4 -7
- package/dist/serialization.js +6 -9
- package/dist/sets/LRoomShapesSet.js +7 -10
- package/dist/sets/bigRoomShapesSet.js +10 -13
- package/dist/sets/bossSets.js +261 -264
- package/dist/sets/charactersThatStartWithAnActiveItemSet.js +14 -17
- package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +5 -8
- package/dist/sets/charactersWithFreeDevilDealsSet.js +3 -6
- package/dist/sets/charactersWithNoRedHeartsSet.js +11 -14
- package/dist/sets/charactersWithNoSoulHeartsSet.js +8 -11
- package/dist/sets/consoleCommandsSet.js +2 -5
- package/dist/sets/entitiesWithArmorSet.js +44 -47
- package/dist/sets/familiarsThatShootPlayerTearsSet.js +11 -14
- package/dist/sets/itemConfigCardTypesForCards.js +7 -10
- package/dist/sets/lostStyleCharactersSet.js +8 -11
- package/dist/sets/mineShaftRoomSubTypesSet.js +8 -11
- package/dist/sets/narrowRoomShapesSet.js +7 -10
- package/dist/sets/poopGridEntityXMLTypesSet.js +12 -15
- package/dist/sets/redHeartSubTypesSet.js +6 -9
- package/dist/sets/repentanceBossIDsSet.js +26 -29
- package/dist/sets/sinEntityTypesSet.js +10 -13
- package/dist/sets/singleUseActiveCollectibleTypesSet.js +11 -14
- package/dist/shaderCrashFix.js +4 -7
- package/dist/shouldFire.js +28 -58
- package/dist/types/AddSubtract.js +1 -2
- package/dist/types/AllButFirst.js +1 -2
- package/dist/types/AllButLast.js +1 -2
- package/dist/types/AnyClass.js +1 -2
- package/dist/types/AnyEntity.js +1 -2
- package/dist/types/AnyFunction.js +1 -2
- package/dist/types/AnyGridEntity.js +1 -2
- package/dist/types/CompositionTypeSatisfiesEnum.js +1 -2
- package/dist/types/ConversionHeartSubType.js +1 -2
- package/dist/types/Decrement.js +1 -2
- package/dist/types/ERange.js +1 -2
- package/dist/types/EntityID.js +1 -2
- package/dist/types/FunctionTuple.js +1 -2
- package/dist/types/GridEntityID.js +1 -2
- package/dist/types/HasFunction.js +1 -2
- package/dist/types/IRange.js +1 -2
- package/dist/types/Immutable.js +1 -2
- package/dist/types/Increment.js +1 -2
- package/dist/types/LowercaseKeys.js +1 -2
- package/dist/types/NaturalNumbersLessThan.js +1 -2
- package/dist/types/NaturalNumbersLessThanOrEqualTo.js +1 -2
- package/dist/types/ObjectValues.js +1 -2
- package/dist/types/PickingUpItem.js +15 -22
- package/dist/types/PickupIndex.js +1 -2
- package/dist/types/PlayerIndex.js +1 -2
- package/dist/types/PossibleStatType.js +1 -2
- package/dist/types/PublicInterface.js +1 -2
- package/dist/types/ReadonlyMap.js +1 -4
- package/dist/types/ReadonlyRecord.js +1 -2
- package/dist/types/ReadonlySet.js +1 -4
- package/dist/types/StartsWithLowercase.js +1 -2
- package/dist/types/StartsWithUppercase.js +1 -2
- package/dist/types/TSTLClass.js +1 -2
- package/dist/types/Tuple.js +1 -2
- package/dist/types/TupleKeys.js +1 -2
- package/dist/types/TupleToIntersection.js +1 -2
- package/dist/types/TupleToUnion.js +1 -2
- package/dist/types/TupleWithLengthBetween.js +1 -2
- package/dist/types/TupleWithMaxLength.js +1 -2
- package/dist/types/UnionToIntersection.js +1 -2
- package/dist/types/UppercaseKeys.js +1 -2
- package/dist/types/WeightedArray.js +1 -2
- package/dist/types/WidenLiteral.js +1 -2
- package/dist/types/Writable.js +1 -2
- package/dist/types/private/CallbackTuple.js +1 -2
- package/dist/types/private/ModUpgradedWithFeatures.js +1 -2
- package/package.json +3 -3
|
@@ -1,43 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
[
|
|
17
|
-
[
|
|
18
|
-
[
|
|
19
|
-
[
|
|
20
|
-
[isaac_typescript_definitions_1.PlayerForm.BOB, isaac_typescript_definitions_1.ItemConfigTag.BOB], // 4
|
|
21
|
-
[isaac_typescript_definitions_1.PlayerForm.SPUN, isaac_typescript_definitions_1.ItemConfigTag.SYRINGE], // 5
|
|
22
|
-
[isaac_typescript_definitions_1.PlayerForm.YES_MOTHER, isaac_typescript_definitions_1.ItemConfigTag.MOM], // 6
|
|
23
|
-
[isaac_typescript_definitions_1.PlayerForm.CONJOINED, isaac_typescript_definitions_1.ItemConfigTag.BABY], // 7
|
|
24
|
-
[isaac_typescript_definitions_1.PlayerForm.LEVIATHAN, isaac_typescript_definitions_1.ItemConfigTag.DEVIL], // 8
|
|
25
|
-
[isaac_typescript_definitions_1.PlayerForm.OH_CRAP, isaac_typescript_definitions_1.ItemConfigTag.POOP], // 9
|
|
26
|
-
[isaac_typescript_definitions_1.PlayerForm.BOOKWORM, isaac_typescript_definitions_1.ItemConfigTag.BOOK], // 10
|
|
1
|
+
import { ItemConfigTag, PlayerForm } from "isaac-typescript-definitions";
|
|
2
|
+
import { PLAYER_FORM_VALUES } from "../cachedEnumValues";
|
|
3
|
+
import { TRANSFORMATION_NAMES } from "../objects/transformationNames";
|
|
4
|
+
import { ReadonlyMap } from "../types/ReadonlyMap";
|
|
5
|
+
import { ReadonlySet } from "../types/ReadonlySet";
|
|
6
|
+
import { getCollectibleTags } from "./collectibles";
|
|
7
|
+
import { hasFlag } from "./flag";
|
|
8
|
+
const TRANSFORMATION_TO_TAG_MAP = new ReadonlyMap([
|
|
9
|
+
[PlayerForm.GUPPY, ItemConfigTag.GUPPY], // 0
|
|
10
|
+
[PlayerForm.BEELZEBUB, ItemConfigTag.FLY], // 1
|
|
11
|
+
[PlayerForm.FUN_GUY, ItemConfigTag.MUSHROOM], // 2
|
|
12
|
+
[PlayerForm.SERAPHIM, ItemConfigTag.ANGEL], // 3
|
|
13
|
+
[PlayerForm.BOB, ItemConfigTag.BOB], // 4
|
|
14
|
+
[PlayerForm.SPUN, ItemConfigTag.SYRINGE], // 5
|
|
15
|
+
[PlayerForm.YES_MOTHER, ItemConfigTag.MOM], // 6
|
|
16
|
+
[PlayerForm.CONJOINED, ItemConfigTag.BABY], // 7
|
|
17
|
+
[PlayerForm.LEVIATHAN, ItemConfigTag.DEVIL], // 8
|
|
18
|
+
[PlayerForm.OH_CRAP, ItemConfigTag.POOP], // 9
|
|
19
|
+
[PlayerForm.BOOKWORM, ItemConfigTag.BOOK], // 10
|
|
27
20
|
// PlayerForm.ADULTHOOD (11) is based on pill usage.
|
|
28
|
-
[
|
|
21
|
+
[PlayerForm.SPIDER_BABY, ItemConfigTag.SPIDER], // 12
|
|
29
22
|
// PlayerForm.STOMPY (13) is based on size.
|
|
30
23
|
]);
|
|
31
|
-
const TRANSFORMATIONS_THAT_GRANT_FLYING = new
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
24
|
+
const TRANSFORMATIONS_THAT_GRANT_FLYING = new ReadonlySet([
|
|
25
|
+
PlayerForm.GUPPY, // 0
|
|
26
|
+
PlayerForm.BEELZEBUB, // 1
|
|
27
|
+
PlayerForm.SERAPHIM, // 3
|
|
28
|
+
PlayerForm.LEVIATHAN, // 8
|
|
36
29
|
]);
|
|
37
30
|
/** Returns a set of the player's current transformations. */
|
|
38
|
-
function getPlayerTransformations(player) {
|
|
31
|
+
export function getPlayerTransformations(player) {
|
|
39
32
|
const transformations = new Set();
|
|
40
|
-
for (const playerForm of
|
|
33
|
+
for (const playerForm of PLAYER_FORM_VALUES) {
|
|
41
34
|
if (player.HasPlayerForm(playerForm)) {
|
|
42
35
|
transformations.add(playerForm);
|
|
43
36
|
}
|
|
@@ -54,28 +47,28 @@ function getPlayerTransformations(player) {
|
|
|
54
47
|
* // transformationName is "Beelzebub"
|
|
55
48
|
* ```
|
|
56
49
|
*/
|
|
57
|
-
function getTransformationName(playerForm) {
|
|
58
|
-
return
|
|
50
|
+
export function getTransformationName(playerForm) {
|
|
51
|
+
return TRANSFORMATION_NAMES[playerForm];
|
|
59
52
|
}
|
|
60
53
|
/**
|
|
61
54
|
* Returns a set containing all of the transformations that the given collectible types contribute
|
|
62
55
|
* towards.
|
|
63
56
|
*/
|
|
64
|
-
function getTransformationsForCollectibleType(collectibleType) {
|
|
65
|
-
const itemConfigTags =
|
|
57
|
+
export function getTransformationsForCollectibleType(collectibleType) {
|
|
58
|
+
const itemConfigTags = getCollectibleTags(collectibleType);
|
|
66
59
|
const transformationSet = new Set();
|
|
67
|
-
for (const playerForm of
|
|
60
|
+
for (const playerForm of PLAYER_FORM_VALUES) {
|
|
68
61
|
const itemConfigTag = TRANSFORMATION_TO_TAG_MAP.get(playerForm);
|
|
69
62
|
if (itemConfigTag === undefined) {
|
|
70
63
|
continue;
|
|
71
64
|
}
|
|
72
|
-
if (
|
|
65
|
+
if (hasFlag(itemConfigTags, itemConfigTag)) {
|
|
73
66
|
transformationSet.add(playerForm);
|
|
74
67
|
}
|
|
75
68
|
}
|
|
76
69
|
return transformationSet;
|
|
77
70
|
}
|
|
78
|
-
function hasFlyingTransformation(player) {
|
|
71
|
+
export function hasFlyingTransformation(player) {
|
|
79
72
|
for (const playerForm of TRANSFORMATIONS_THAT_GRANT_FLYING) {
|
|
80
73
|
if (player.HasPlayerForm(playerForm)) {
|
|
81
74
|
return true;
|
|
@@ -83,6 +76,6 @@ function hasFlyingTransformation(player) {
|
|
|
83
76
|
}
|
|
84
77
|
return false;
|
|
85
78
|
}
|
|
86
|
-
function isTransformationFlying(playerForm) {
|
|
79
|
+
export function isTransformationFlying(playerForm) {
|
|
87
80
|
return TRANSFORMATIONS_THAT_GRANT_FLYING.has(playerForm);
|
|
88
81
|
}
|
|
@@ -1,44 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exports.smeltTrinkets = smeltTrinkets;
|
|
6
|
-
exports.temporarilyRemoveTrinket = temporarilyRemoveTrinket;
|
|
7
|
-
exports.temporarilyRemoveTrinkets = temporarilyRemoveTrinkets;
|
|
8
|
-
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
9
|
-
const playerCollectibles_1 = require("./playerCollectibles");
|
|
10
|
-
const trinkets_1 = require("./trinkets");
|
|
11
|
-
const utils_1 = require("./utils");
|
|
1
|
+
import { CollectibleType, TrinketSlot, TrinketType, } from "isaac-typescript-definitions";
|
|
2
|
+
import { useActiveItemTemp } from "./playerCollectibles";
|
|
3
|
+
import { getGoldenTrinketType } from "./trinkets";
|
|
4
|
+
import { repeat } from "./utils";
|
|
12
5
|
/**
|
|
13
6
|
* Helper function to restore the player's trinkets back to the way they were before the
|
|
14
7
|
* `temporarilyRemoveTrinket` function was used. It will re-smelt any smelted trinkets that were
|
|
15
8
|
* removed.
|
|
16
9
|
*/
|
|
17
|
-
function giveTrinketsBack(player, trinketSituation) {
|
|
10
|
+
export function giveTrinketsBack(player, trinketSituation) {
|
|
18
11
|
// A trinket situation of undefined signifies that we did not have to remove the trinket. If this
|
|
19
12
|
// is the case, we do not have to give anything back.
|
|
20
13
|
if (trinketSituation === undefined) {
|
|
21
14
|
return;
|
|
22
15
|
}
|
|
23
|
-
const trinketType1 = player.GetTrinket(
|
|
24
|
-
const trinketType2 = player.GetTrinket(
|
|
16
|
+
const trinketType1 = player.GetTrinket(TrinketSlot.SLOT_1);
|
|
17
|
+
const trinketType2 = player.GetTrinket(TrinketSlot.SLOT_2);
|
|
25
18
|
// Remove any existing trinkets.
|
|
26
|
-
if (trinketType1 !==
|
|
19
|
+
if (trinketType1 !== TrinketType.NULL) {
|
|
27
20
|
player.TryRemoveTrinket(trinketType1);
|
|
28
21
|
}
|
|
29
|
-
if (trinketType2 !==
|
|
22
|
+
if (trinketType2 !== TrinketType.NULL) {
|
|
30
23
|
player.TryRemoveTrinket(trinketType2);
|
|
31
24
|
}
|
|
32
25
|
// First, add the smelted trinkets back.
|
|
33
|
-
|
|
26
|
+
repeat(trinketSituation.numSmeltedTrinkets, () => {
|
|
34
27
|
player.AddTrinket(trinketSituation.trinketTypeRemoved, false);
|
|
35
|
-
|
|
28
|
+
useActiveItemTemp(player, CollectibleType.SMELTER);
|
|
36
29
|
});
|
|
37
30
|
// Second, add back the stored trinkets.
|
|
38
|
-
if (trinketSituation.trinketType1 !==
|
|
31
|
+
if (trinketSituation.trinketType1 !== TrinketType.NULL) {
|
|
39
32
|
player.AddTrinket(trinketSituation.trinketType1, false);
|
|
40
33
|
}
|
|
41
|
-
if (trinketSituation.trinketType2 !==
|
|
34
|
+
if (trinketSituation.trinketType2 !== TrinketType.NULL) {
|
|
42
35
|
player.AddTrinket(trinketSituation.trinketType2, false);
|
|
43
36
|
}
|
|
44
37
|
}
|
|
@@ -52,11 +45,11 @@ function giveTrinketsBack(player, trinketSituation) {
|
|
|
52
45
|
* @param numTrinkets Optional. If specified, will smelt the given number of trinkets. Use this to
|
|
53
46
|
* avoid calling this function multiple times. Default is 1.
|
|
54
47
|
*/
|
|
55
|
-
function smeltTrinket(player, trinketType, numTrinkets = 1) {
|
|
48
|
+
export function smeltTrinket(player, trinketType, numTrinkets = 1) {
|
|
56
49
|
const trinketSituation = temporarilyRemoveTrinkets(player);
|
|
57
|
-
|
|
50
|
+
repeat(numTrinkets, () => {
|
|
58
51
|
player.AddTrinket(trinketType);
|
|
59
|
-
|
|
52
|
+
useActiveItemTemp(player, CollectibleType.SMELTER);
|
|
60
53
|
});
|
|
61
54
|
giveTrinketsBack(player, trinketSituation);
|
|
62
55
|
}
|
|
@@ -72,7 +65,7 @@ function smeltTrinket(player, trinketType, numTrinkets = 1) {
|
|
|
72
65
|
* @param player The player to smelt the trinkets to.
|
|
73
66
|
* @param trinketTypes The trinket types to smelt.
|
|
74
67
|
*/
|
|
75
|
-
function smeltTrinkets(player, ...trinketTypes) {
|
|
68
|
+
export function smeltTrinkets(player, ...trinketTypes) {
|
|
76
69
|
for (const trinketType of trinketTypes) {
|
|
77
70
|
smeltTrinket(player, trinketType);
|
|
78
71
|
}
|
|
@@ -87,12 +80,12 @@ function smeltTrinkets(player, ...trinketTypes) {
|
|
|
87
80
|
*
|
|
88
81
|
* @returns Undefined if the player does not have the trinket, or TrinketSituation if they do.
|
|
89
82
|
*/
|
|
90
|
-
function temporarilyRemoveTrinket(player, trinketType) {
|
|
83
|
+
export function temporarilyRemoveTrinket(player, trinketType) {
|
|
91
84
|
if (!player.HasTrinket(trinketType)) {
|
|
92
85
|
return undefined;
|
|
93
86
|
}
|
|
94
|
-
const trinketType1 = player.GetTrinket(
|
|
95
|
-
const trinketType2 = player.GetTrinket(
|
|
87
|
+
const trinketType1 = player.GetTrinket(TrinketSlot.SLOT_1);
|
|
88
|
+
const trinketType2 = player.GetTrinket(TrinketSlot.SLOT_2);
|
|
96
89
|
let numTrinkets = 0;
|
|
97
90
|
while (player.HasTrinket(trinketType)) {
|
|
98
91
|
player.TryRemoveTrinket(trinketType);
|
|
@@ -100,12 +93,12 @@ function temporarilyRemoveTrinket(player, trinketType) {
|
|
|
100
93
|
}
|
|
101
94
|
let numSmeltedTrinkets = numTrinkets;
|
|
102
95
|
const trinketWasInSlot1 = trinketType1 === trinketType
|
|
103
|
-
|| trinketType1 ===
|
|
96
|
+
|| trinketType1 === getGoldenTrinketType(trinketType);
|
|
104
97
|
if (trinketWasInSlot1) {
|
|
105
98
|
numSmeltedTrinkets--;
|
|
106
99
|
}
|
|
107
100
|
const trinketWasInSlot2 = trinketType2 === trinketType
|
|
108
|
-
|| trinketType2 ===
|
|
101
|
+
|| trinketType2 === getGoldenTrinketType(trinketType);
|
|
109
102
|
if (trinketWasInSlot2) {
|
|
110
103
|
numSmeltedTrinkets--;
|
|
111
104
|
}
|
|
@@ -123,20 +116,20 @@ function temporarilyRemoveTrinket(player, trinketType) {
|
|
|
123
116
|
*
|
|
124
117
|
* @returns Undefined if the player does not have any trinkets, or TrinketSituation if they do.
|
|
125
118
|
*/
|
|
126
|
-
function temporarilyRemoveTrinkets(player) {
|
|
127
|
-
const trinketType1 = player.GetTrinket(
|
|
128
|
-
const trinketType2 = player.GetTrinket(
|
|
129
|
-
if (trinketType1 ===
|
|
119
|
+
export function temporarilyRemoveTrinkets(player) {
|
|
120
|
+
const trinketType1 = player.GetTrinket(TrinketSlot.SLOT_1);
|
|
121
|
+
const trinketType2 = player.GetTrinket(TrinketSlot.SLOT_2);
|
|
122
|
+
if (trinketType1 === TrinketType.NULL && trinketType2 === TrinketType.NULL) {
|
|
130
123
|
return undefined;
|
|
131
124
|
}
|
|
132
|
-
if (trinketType1 !==
|
|
125
|
+
if (trinketType1 !== TrinketType.NULL) {
|
|
133
126
|
player.TryRemoveTrinket(trinketType1);
|
|
134
127
|
}
|
|
135
|
-
if (trinketType2 !==
|
|
128
|
+
if (trinketType2 !== TrinketType.NULL) {
|
|
136
129
|
player.TryRemoveTrinket(trinketType2);
|
|
137
130
|
}
|
|
138
131
|
return {
|
|
139
|
-
trinketTypeRemoved:
|
|
132
|
+
trinketTypeRemoved: TrinketType.NULL,
|
|
140
133
|
trinketType1,
|
|
141
134
|
trinketType2,
|
|
142
135
|
numSmeltedTrinkets: 0,
|
|
@@ -1,31 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
exports.setTrinketSprite = setTrinketSprite;
|
|
15
|
-
exports.trinketHasCacheFlag = trinketHasCacheFlag;
|
|
16
|
-
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
17
|
-
const cachedClasses_1 = require("../core/cachedClasses");
|
|
18
|
-
const constants_1 = require("../core/constants");
|
|
19
|
-
const constantsFirstLast_1 = require("../core/constantsFirstLast");
|
|
20
|
-
const MysteriousPaperEffect_1 = require("../enums/MysteriousPaperEffect");
|
|
21
|
-
const trinketDescriptions_1 = require("../objects/trinketDescriptions");
|
|
22
|
-
const trinketNames_1 = require("../objects/trinketNames");
|
|
23
|
-
const entities_1 = require("./entities");
|
|
24
|
-
const enums_1 = require("./enums");
|
|
25
|
-
const flag_1 = require("./flag");
|
|
26
|
-
const pickupVariants_1 = require("./pickupVariants");
|
|
27
|
-
const sprites_1 = require("./sprites");
|
|
28
|
-
const types_1 = require("./types");
|
|
1
|
+
import { TrinketType } from "isaac-typescript-definitions";
|
|
2
|
+
import { itemConfig } from "../core/cachedClasses";
|
|
3
|
+
import { BLIND_ITEM_PNG_PATH } from "../core/constants";
|
|
4
|
+
import { LAST_VANILLA_TRINKET_TYPE } from "../core/constantsFirstLast";
|
|
5
|
+
import { MysteriousPaperEffect } from "../enums/MysteriousPaperEffect";
|
|
6
|
+
import { DEFAULT_TRINKET_DESCRIPTION, TRINKET_DESCRIPTIONS, } from "../objects/trinketDescriptions";
|
|
7
|
+
import { DEFAULT_TRINKET_NAME, TRINKET_NAMES } from "../objects/trinketNames";
|
|
8
|
+
import { getEntityID } from "./entities";
|
|
9
|
+
import { getEnumLength } from "./enums";
|
|
10
|
+
import { hasFlag } from "./flag";
|
|
11
|
+
import { isTrinket } from "./pickupVariants";
|
|
12
|
+
import { clearSprite } from "./sprites";
|
|
13
|
+
import { asNumber, asTrinketType } from "./types";
|
|
29
14
|
/**
|
|
30
15
|
* Add this to a `TrinketType` to get the corresponding golden trinket type.
|
|
31
16
|
*
|
|
@@ -34,7 +19,7 @@ const types_1 = require("./types");
|
|
|
34
19
|
* 1 << 15
|
|
35
20
|
*/
|
|
36
21
|
const GOLDEN_TRINKET_ADJUSTMENT = 32_768;
|
|
37
|
-
const NUM_MYSTERIOUS_PAPER_EFFECTS =
|
|
22
|
+
const NUM_MYSTERIOUS_PAPER_EFFECTS = getEnumLength(MysteriousPaperEffect);
|
|
38
23
|
const TRINKET_ANM2_PATH = "gfx/005.350_trinket.anm2";
|
|
39
24
|
const TRINKET_SPRITE_LAYER = 0;
|
|
40
25
|
/**
|
|
@@ -46,7 +31,7 @@ const TRINKET_SPRITE_LAYER = 0;
|
|
|
46
31
|
* For example, passing `TrinketType.SWALLOWED_PENNY` would result in 32769, which is the value that
|
|
47
32
|
* corresponds to the golden trinket sub-type for Swallowed Penny.
|
|
48
33
|
*/
|
|
49
|
-
function getGoldenTrinketType(trinketType) {
|
|
34
|
+
export function getGoldenTrinketType(trinketType) {
|
|
50
35
|
return isGoldenTrinketType(trinketType)
|
|
51
36
|
? trinketType
|
|
52
37
|
: trinketType + GOLDEN_TRINKET_ADJUSTMENT;
|
|
@@ -71,9 +56,9 @@ function getGoldenTrinketType(trinketType) {
|
|
|
71
56
|
* @param frameCount Optional. The frame count that corresponds to time the effect will be active.
|
|
72
57
|
* Default is the current frame.
|
|
73
58
|
*/
|
|
74
|
-
function getMysteriousPaperEffectForFrame(player, frameCount) {
|
|
59
|
+
export function getMysteriousPaperEffectForFrame(player, frameCount) {
|
|
75
60
|
frameCount ??= player.FrameCount;
|
|
76
|
-
if (!player.HasTrinket(
|
|
61
|
+
if (!player.HasTrinket(TrinketType.MYSTERIOUS_PAPER)) {
|
|
77
62
|
return undefined;
|
|
78
63
|
}
|
|
79
64
|
return frameCount % NUM_MYSTERIOUS_PAPER_EFFECTS;
|
|
@@ -84,7 +69,7 @@ function getMysteriousPaperEffectForFrame(player, frameCount) {
|
|
|
84
69
|
* If the provided trinket type is already a normal trinket type, then the trinket type will be
|
|
85
70
|
* returned unmodified.
|
|
86
71
|
*/
|
|
87
|
-
function getNormalTrinketType(trinketType) {
|
|
72
|
+
export function getNormalTrinketType(trinketType) {
|
|
88
73
|
return isGoldenTrinketType(trinketType)
|
|
89
74
|
? trinketType - GOLDEN_TRINKET_ADJUSTMENT
|
|
90
75
|
: trinketType;
|
|
@@ -95,18 +80,18 @@ function getNormalTrinketType(trinketType) {
|
|
|
95
80
|
*
|
|
96
81
|
* This function works for both vanilla and modded trinkets.
|
|
97
82
|
*/
|
|
98
|
-
function getTrinketDescription(trinketType) {
|
|
83
|
+
export function getTrinketDescription(trinketType) {
|
|
99
84
|
// "ItemConfigItem.Description" is bugged with vanilla items on patch v1.7.6, so we use a
|
|
100
85
|
// hard-coded object as a workaround.
|
|
101
|
-
const trinketDescription =
|
|
86
|
+
const trinketDescription = TRINKET_DESCRIPTIONS[trinketType];
|
|
102
87
|
if (trinketDescription !== undefined) {
|
|
103
88
|
return trinketDescription;
|
|
104
89
|
}
|
|
105
|
-
const itemConfigItem =
|
|
90
|
+
const itemConfigItem = itemConfig.GetTrinket(trinketType);
|
|
106
91
|
if (itemConfigItem !== undefined) {
|
|
107
92
|
return itemConfigItem.Description;
|
|
108
93
|
}
|
|
109
|
-
return
|
|
94
|
+
return DEFAULT_TRINKET_DESCRIPTION;
|
|
110
95
|
}
|
|
111
96
|
/**
|
|
112
97
|
* Helper function to get the path to a trinket PNG file. Returns the path to the question mark
|
|
@@ -116,10 +101,10 @@ function getTrinketDescription(trinketType) {
|
|
|
116
101
|
* function is named "GfxFilename" to correspond to the associated `ItemConfigItem.GfxFileName`
|
|
117
102
|
* field.
|
|
118
103
|
*/
|
|
119
|
-
function getTrinketGfxFilename(trinketType) {
|
|
120
|
-
const itemConfigItem =
|
|
104
|
+
export function getTrinketGfxFilename(trinketType) {
|
|
105
|
+
const itemConfigItem = itemConfig.GetTrinket(trinketType);
|
|
121
106
|
if (itemConfigItem === undefined) {
|
|
122
|
-
return
|
|
107
|
+
return BLIND_ITEM_PNG_PATH;
|
|
123
108
|
}
|
|
124
109
|
return itemConfigItem.GfxFileName;
|
|
125
110
|
}
|
|
@@ -131,38 +116,38 @@ function getTrinketGfxFilename(trinketType) {
|
|
|
131
116
|
*
|
|
132
117
|
* For example, `getTrinketName(TrinketType.SWALLOWED_PENNY)` would return "Swallowed Penny".
|
|
133
118
|
*/
|
|
134
|
-
function getTrinketName(trinketType) {
|
|
119
|
+
export function getTrinketName(trinketType) {
|
|
135
120
|
// "ItemConfigItem.Name" is bugged with vanilla items on patch v1.7.6, so we use a hard-coded
|
|
136
121
|
// object as a workaround.
|
|
137
|
-
const trinketName =
|
|
122
|
+
const trinketName = TRINKET_NAMES[trinketType];
|
|
138
123
|
if (trinketName !== undefined) {
|
|
139
124
|
return trinketName;
|
|
140
125
|
}
|
|
141
|
-
const itemConfigItem =
|
|
126
|
+
const itemConfigItem = itemConfig.GetTrinket(trinketType);
|
|
142
127
|
if (itemConfigItem !== undefined) {
|
|
143
128
|
return itemConfigItem.Name;
|
|
144
129
|
}
|
|
145
|
-
return
|
|
130
|
+
return DEFAULT_TRINKET_NAME;
|
|
146
131
|
}
|
|
147
|
-
function isGoldenTrinketType(trinketType) {
|
|
148
|
-
return
|
|
132
|
+
export function isGoldenTrinketType(trinketType) {
|
|
133
|
+
return asNumber(trinketType) > GOLDEN_TRINKET_ADJUSTMENT;
|
|
149
134
|
}
|
|
150
|
-
function isModdedTrinketType(trinketType) {
|
|
135
|
+
export function isModdedTrinketType(trinketType) {
|
|
151
136
|
return !isVanillaTrinketType(trinketType);
|
|
152
137
|
}
|
|
153
|
-
function isValidTrinketType(trinketType) {
|
|
154
|
-
const potentialTrinketType =
|
|
155
|
-
const itemConfigItem =
|
|
138
|
+
export function isValidTrinketType(trinketType) {
|
|
139
|
+
const potentialTrinketType = asTrinketType(trinketType);
|
|
140
|
+
const itemConfigItem = itemConfig.GetTrinket(potentialTrinketType);
|
|
156
141
|
return itemConfigItem !== undefined;
|
|
157
142
|
}
|
|
158
|
-
function isVanillaTrinketType(trinketType) {
|
|
159
|
-
return trinketType <=
|
|
143
|
+
export function isVanillaTrinketType(trinketType) {
|
|
144
|
+
return trinketType <= LAST_VANILLA_TRINKET_TYPE;
|
|
160
145
|
}
|
|
161
146
|
/**
|
|
162
147
|
* Helper function to generate a new sprite based on a collectible. If the provided collectible type
|
|
163
148
|
* is invalid, a sprite with a Curse of the Blind question mark will be returned.
|
|
164
149
|
*/
|
|
165
|
-
function newTrinketSprite(trinketType) {
|
|
150
|
+
export function newTrinketSprite(trinketType) {
|
|
166
151
|
const sprite = Sprite();
|
|
167
152
|
sprite.Load(TRINKET_ANM2_PATH, false);
|
|
168
153
|
const gfxFileName = getTrinketGfxFilename(trinketType);
|
|
@@ -184,16 +169,16 @@ function newTrinketSprite(trinketType) {
|
|
|
184
169
|
* the sprite will be removed, making the trinket effectively invisible (except for
|
|
185
170
|
* the shadow underneath it).
|
|
186
171
|
*/
|
|
187
|
-
function setTrinketSprite(trinket, pngPath) {
|
|
188
|
-
if (!
|
|
189
|
-
const entityID =
|
|
172
|
+
export function setTrinketSprite(trinket, pngPath) {
|
|
173
|
+
if (!isTrinket(trinket)) {
|
|
174
|
+
const entityID = getEntityID(trinket);
|
|
190
175
|
error(`The "setTrinketSprite" function was given a non-trinket: ${entityID}`);
|
|
191
176
|
}
|
|
192
177
|
const sprite = trinket.GetSprite();
|
|
193
178
|
if (pngPath === undefined) {
|
|
194
179
|
// We use `clearSpriteLayer` instead of `Sprite.Reset` to maintain parity with the
|
|
195
180
|
// `setCollectibleSprite` function.
|
|
196
|
-
|
|
181
|
+
clearSprite(sprite);
|
|
197
182
|
}
|
|
198
183
|
else {
|
|
199
184
|
sprite.ReplaceSpritesheet(TRINKET_SPRITE_LAYER, pngPath);
|
|
@@ -201,10 +186,10 @@ function setTrinketSprite(trinket, pngPath) {
|
|
|
201
186
|
}
|
|
202
187
|
}
|
|
203
188
|
/** Helper function to check in the item config if a given trinket has a given cache flag. */
|
|
204
|
-
function trinketHasCacheFlag(trinketType, cacheFlag) {
|
|
205
|
-
const itemConfigItem =
|
|
189
|
+
export function trinketHasCacheFlag(trinketType, cacheFlag) {
|
|
190
|
+
const itemConfigItem = itemConfig.GetTrinket(trinketType);
|
|
206
191
|
if (itemConfigItem === undefined) {
|
|
207
192
|
return false;
|
|
208
193
|
}
|
|
209
|
-
return
|
|
194
|
+
return hasFlag(itemConfigItem.CacheFlags, cacheFlag);
|
|
210
195
|
}
|
|
@@ -1,22 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.getTSTLClassConstructor = getTSTLClassConstructor;
|
|
4
|
-
exports.getTSTLClassName = getTSTLClassName;
|
|
5
|
-
exports.isDefaultMap = isDefaultMap;
|
|
6
|
-
exports.isTSTLClass = isTSTLClass;
|
|
7
|
-
exports.isTSTLMap = isTSTLMap;
|
|
8
|
-
exports.isTSTLSet = isTSTLSet;
|
|
9
|
-
exports.newTSTLClass = newTSTLClass;
|
|
10
|
-
const types_1 = require("./types");
|
|
11
|
-
const utils_1 = require("./utils");
|
|
1
|
+
import { isTable } from "./types";
|
|
2
|
+
import { assertDefined } from "./utils";
|
|
12
3
|
/**
|
|
13
4
|
* Helper function to get the constructor from an instantiated TypeScriptToLua class, which is
|
|
14
5
|
* located on the metatable.
|
|
15
6
|
*
|
|
16
7
|
* Returns undefined if passed a non-table or if the provided table does not have a metatable.
|
|
17
8
|
*/
|
|
18
|
-
function getTSTLClassConstructor(object) {
|
|
19
|
-
if (!
|
|
9
|
+
export function getTSTLClassConstructor(object) {
|
|
10
|
+
if (!isTable(object)) {
|
|
20
11
|
return undefined;
|
|
21
12
|
}
|
|
22
13
|
const metatable = getmetatable(object);
|
|
@@ -35,7 +26,7 @@ function getTSTLClassConstructor(object) {
|
|
|
35
26
|
*
|
|
36
27
|
* Returns undefined if passed a non-table or if the provided table does not have a metatable.
|
|
37
28
|
*/
|
|
38
|
-
function getTSTLClassName(object) {
|
|
29
|
+
export function getTSTLClassName(object) {
|
|
39
30
|
const constructor = getTSTLClassConstructor(object);
|
|
40
31
|
if (constructor === undefined) {
|
|
41
32
|
return undefined;
|
|
@@ -48,12 +39,12 @@ function getTSTLClassName(object) {
|
|
|
48
39
|
* It is not reliable to use the `instanceof` operator to determine this because each Lua module has
|
|
49
40
|
* their own copies of the entire lualib and thus their own instantiated version of a `DefaultMap`.
|
|
50
41
|
*/
|
|
51
|
-
function isDefaultMap(object) {
|
|
42
|
+
export function isDefaultMap(object) {
|
|
52
43
|
const className = getTSTLClassName(object);
|
|
53
44
|
return className === "DefaultMap";
|
|
54
45
|
}
|
|
55
46
|
/** Helper function to check if a given table is a class table created by TypeScriptToLua. */
|
|
56
|
-
function isTSTLClass(object) {
|
|
47
|
+
export function isTSTLClass(object) {
|
|
57
48
|
const tstlClassName = getTSTLClassName(object);
|
|
58
49
|
return tstlClassName !== undefined;
|
|
59
50
|
}
|
|
@@ -64,7 +55,7 @@ function isTSTLClass(object) {
|
|
|
64
55
|
* might have their own copy of the entire lualib and thus their own instantiated version of a
|
|
65
56
|
* `Map`.
|
|
66
57
|
*/
|
|
67
|
-
function isTSTLMap(object) {
|
|
58
|
+
export function isTSTLMap(object) {
|
|
68
59
|
const className = getTSTLClassName(object);
|
|
69
60
|
return className === "Map";
|
|
70
61
|
}
|
|
@@ -75,7 +66,7 @@ function isTSTLMap(object) {
|
|
|
75
66
|
* might have their own copy of the entire lualib and thus their own instantiated version of a
|
|
76
67
|
* `Set`.
|
|
77
68
|
*/
|
|
78
|
-
function isTSTLSet(object) {
|
|
69
|
+
export function isTSTLSet(object) {
|
|
79
70
|
const className = getTSTLClassName(object);
|
|
80
71
|
return className === "Set";
|
|
81
72
|
}
|
|
@@ -85,9 +76,9 @@ function isTSTLSet(object) {
|
|
|
85
76
|
* use the class constructor that is present on the other object's metatable to initialize the new
|
|
86
77
|
* class.
|
|
87
78
|
*/
|
|
88
|
-
function newTSTLClass(oldClass) {
|
|
79
|
+
export function newTSTLClass(oldClass) {
|
|
89
80
|
const constructor = getTSTLClassConstructor(oldClass);
|
|
90
|
-
|
|
81
|
+
assertDefined(constructor, "Failed to instantiate a new TypeScriptToLua class since the provided old class does not have a metatable/constructor.");
|
|
91
82
|
// We re-implement some of the logic from the transpiled "__TS__New" function.
|
|
92
83
|
const newClass = new LuaMap();
|
|
93
84
|
const newClassMetatable = setmetatable(newClass, constructor.prototype);
|