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
|
@@ -1,65 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
exports.getCollectiblePedestalType = getCollectiblePedestalType;
|
|
16
|
-
exports.getCollectibleQuality = getCollectibleQuality;
|
|
17
|
-
exports.getCollectibleTags = getCollectibleTags;
|
|
18
|
-
exports.getVanillaCollectibleTypesOfQuality = getVanillaCollectibleTypesOfQuality;
|
|
19
|
-
exports.isActiveCollectible = isActiveCollectible;
|
|
20
|
-
exports.isBlindCollectible = isBlindCollectible;
|
|
21
|
-
exports.isFamiliarCollectible = isFamiliarCollectible;
|
|
22
|
-
exports.isGlitchedCollectible = isGlitchedCollectible;
|
|
23
|
-
exports.isHiddenCollectible = isHiddenCollectible;
|
|
24
|
-
exports.isModdedCollectibleType = isModdedCollectibleType;
|
|
25
|
-
exports.isPassiveOrFamiliarCollectible = isPassiveOrFamiliarCollectible;
|
|
26
|
-
exports.isQuality = isQuality;
|
|
27
|
-
exports.isSingleUseCollectible = isSingleUseCollectible;
|
|
28
|
-
exports.isValidCollectibleType = isValidCollectibleType;
|
|
29
|
-
exports.isVanillaCollectibleType = isVanillaCollectibleType;
|
|
30
|
-
exports.newCollectibleSprite = newCollectibleSprite;
|
|
31
|
-
exports.preventCollectibleRotation = preventCollectibleRotation;
|
|
32
|
-
exports.removeCollectiblePickupDelay = removeCollectiblePickupDelay;
|
|
33
|
-
exports.setCollectibleBlind = setCollectibleBlind;
|
|
34
|
-
exports.setCollectibleEmpty = setCollectibleEmpty;
|
|
35
|
-
exports.setCollectibleGlitched = setCollectibleGlitched;
|
|
36
|
-
exports.setCollectiblePedestalType = setCollectiblePedestalType;
|
|
37
|
-
exports.setCollectibleSprite = setCollectibleSprite;
|
|
38
|
-
exports.setCollectiblesRerolledForItemTracker = setCollectiblesRerolledForItemTracker;
|
|
39
|
-
exports.setCollectibleSubType = setCollectibleSubType;
|
|
40
|
-
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
41
|
-
const cachedClasses_1 = require("../core/cachedClasses");
|
|
42
|
-
const constants_1 = require("../core/constants");
|
|
43
|
-
const constantsFirstLast_1 = require("../core/constantsFirstLast");
|
|
44
|
-
const constantsVanilla_1 = require("../core/constantsVanilla");
|
|
45
|
-
const collectibleDescriptions_1 = require("../objects/collectibleDescriptions");
|
|
46
|
-
const collectibleNames_1 = require("../objects/collectibleNames");
|
|
47
|
-
const singleUseActiveCollectibleTypesSet_1 = require("../sets/singleUseActiveCollectibleTypesSet");
|
|
48
|
-
const entities_1 = require("./entities");
|
|
49
|
-
const flag_1 = require("./flag");
|
|
50
|
-
const pickupVariants_1 = require("./pickupVariants");
|
|
51
|
-
const sprites_1 = require("./sprites");
|
|
52
|
-
const types_1 = require("./types");
|
|
53
|
-
const utils_1 = require("./utils");
|
|
1
|
+
import { CollectibleSpriteLayer, CollectibleType, EntityType, ItemConfigChargeType, ItemConfigTagZero, ItemType, PickupPrice, PickupVariant, RenderMode, } from "isaac-typescript-definitions";
|
|
2
|
+
import { game, itemConfig } from "../core/cachedClasses";
|
|
3
|
+
import { BLIND_ITEM_PNG_PATH, DEFAULT_ITEM_POOL_TYPE, QUALITIES, } from "../core/constants";
|
|
4
|
+
import { LAST_VANILLA_COLLECTIBLE_TYPE } from "../core/constantsFirstLast";
|
|
5
|
+
import { VANILLA_COLLECTIBLE_TYPES } from "../core/constantsVanilla";
|
|
6
|
+
import { COLLECTIBLE_DESCRIPTIONS, DEFAULT_COLLECTIBLE_DESCRIPTION, } from "../objects/collectibleDescriptions";
|
|
7
|
+
import { COLLECTIBLE_NAMES, DEFAULT_COLLECTIBLE_NAME, } from "../objects/collectibleNames";
|
|
8
|
+
import { SINGLE_USE_ACTIVE_COLLECTIBLE_TYPES_SET } from "../sets/singleUseActiveCollectibleTypesSet";
|
|
9
|
+
import { getEntityID } from "./entities";
|
|
10
|
+
import { hasFlag } from "./flag";
|
|
11
|
+
import { isCollectible } from "./pickupVariants";
|
|
12
|
+
import { clearSprite, spriteEquals } from "./sprites";
|
|
13
|
+
import { asCollectibleType, isInteger } from "./types";
|
|
14
|
+
import { assertDefined } from "./utils";
|
|
54
15
|
const COLLECTIBLE_ANM2_PATH = "gfx/005.100_collectible.anm2";
|
|
55
16
|
const DEFAULT_COLLECTIBLE_PRICE = 15;
|
|
56
17
|
/** Glitched items start at id 4294967295 (the final 32-bit integer) and increment backwards. */
|
|
57
18
|
const GLITCHED_ITEM_THRESHOLD = 4_000_000_000;
|
|
58
19
|
const QUALITY_TO_VANILLA_COLLECTIBLE_TYPES_MAP = (() => {
|
|
59
20
|
const qualityToCollectibleTypesMap = new Map();
|
|
60
|
-
for (const quality of
|
|
21
|
+
for (const quality of QUALITIES) {
|
|
61
22
|
const collectibleTypes = [];
|
|
62
|
-
for (const collectibleType of
|
|
23
|
+
for (const collectibleType of VANILLA_COLLECTIBLE_TYPES) {
|
|
63
24
|
const collectibleTypeQuality = getCollectibleQuality(collectibleType);
|
|
64
25
|
if (collectibleTypeQuality === quality) {
|
|
65
26
|
collectibleTypes.push(collectibleType);
|
|
@@ -77,24 +38,24 @@ const questionMarkSprite = (() => {
|
|
|
77
38
|
sprite.LoadGraphics();
|
|
78
39
|
return sprite;
|
|
79
40
|
})();
|
|
80
|
-
function clearCollectibleSprite(collectible) {
|
|
81
|
-
if (!
|
|
82
|
-
const entityID =
|
|
41
|
+
export function clearCollectibleSprite(collectible) {
|
|
42
|
+
if (!isCollectible(collectible)) {
|
|
43
|
+
const entityID = getEntityID(collectible);
|
|
83
44
|
error(`The "clearCollectibleSprite" function was given a non-collectible: ${entityID}`);
|
|
84
45
|
}
|
|
85
46
|
setCollectibleSprite(collectible, undefined);
|
|
86
47
|
}
|
|
87
48
|
/** Helper function to check in the item config if a given collectible has a given cache flag. */
|
|
88
|
-
function collectibleHasCacheFlag(collectibleOrCollectibleType, cacheFlag) {
|
|
49
|
+
export function collectibleHasCacheFlag(collectibleOrCollectibleType, cacheFlag) {
|
|
89
50
|
const collectibleType = getCollectibleTypeFromArg(collectibleOrCollectibleType, "collectibleHasCacheFlag");
|
|
90
|
-
const itemConfigItem =
|
|
51
|
+
const itemConfigItem = itemConfig.GetCollectible(collectibleType);
|
|
91
52
|
if (itemConfigItem === undefined) {
|
|
92
53
|
return false;
|
|
93
54
|
}
|
|
94
|
-
return
|
|
55
|
+
return hasFlag(itemConfigItem.CacheFlags, cacheFlag);
|
|
95
56
|
}
|
|
96
57
|
/** Helper function to check if two collectible sprites have the same sprite sheet loaded. */
|
|
97
|
-
function collectibleSpriteEquals(sprite1, sprite2) {
|
|
58
|
+
export function collectibleSpriteEquals(sprite1, sprite2) {
|
|
98
59
|
// We start at negative 40 texels upwards, as by default we assume a collectible that is sitting
|
|
99
60
|
// on a pedestal. We finish at positive 10 texels downwards, in order to make comparing shop items
|
|
100
61
|
// more accurate.
|
|
@@ -104,17 +65,17 @@ function collectibleSpriteEquals(sprite1, sprite2) {
|
|
|
104
65
|
const yStart = -40;
|
|
105
66
|
const yFinish = 10;
|
|
106
67
|
const yIncrement = 3;
|
|
107
|
-
return
|
|
68
|
+
return spriteEquals(sprite1, sprite2, CollectibleSpriteLayer.HEAD, xStart, xFinish, xIncrement, yStart, yFinish, yIncrement);
|
|
108
69
|
}
|
|
109
70
|
/**
|
|
110
71
|
* Helper function to get the charge type that a collectible has. Returns
|
|
111
72
|
* `ItemConfigChargeType.NORMAL` if the provided collectible type was not valid.
|
|
112
73
|
*/
|
|
113
|
-
function getCollectibleChargeType(collectibleOrCollectibleType) {
|
|
74
|
+
export function getCollectibleChargeType(collectibleOrCollectibleType) {
|
|
114
75
|
const collectibleType = getCollectibleTypeFromArg(collectibleOrCollectibleType, "getCollectibleChargeType");
|
|
115
|
-
const itemConfigItem =
|
|
76
|
+
const itemConfigItem = itemConfig.GetCollectible(collectibleType);
|
|
116
77
|
if (itemConfigItem === undefined) {
|
|
117
|
-
return
|
|
78
|
+
return ItemConfigChargeType.NORMAL;
|
|
118
79
|
}
|
|
119
80
|
return itemConfigItem.ChargeType;
|
|
120
81
|
}
|
|
@@ -124,30 +85,30 @@ function getCollectibleChargeType(collectibleOrCollectibleType) {
|
|
|
124
85
|
*
|
|
125
86
|
* This function works for both vanilla and modded collectibles.
|
|
126
87
|
*/
|
|
127
|
-
function getCollectibleDescription(collectibleOrCollectibleType) {
|
|
88
|
+
export function getCollectibleDescription(collectibleOrCollectibleType) {
|
|
128
89
|
const collectibleType = getCollectibleTypeFromArg(collectibleOrCollectibleType, "getCollectibleDescription");
|
|
129
90
|
// "ItemConfigItem.Description" is bugged with vanilla items on patch v1.7.6, so we use a
|
|
130
91
|
// hard-coded map as a workaround.
|
|
131
|
-
const collectibleDescription =
|
|
92
|
+
const collectibleDescription = COLLECTIBLE_DESCRIPTIONS[collectibleType];
|
|
132
93
|
if (collectibleDescription !== undefined) {
|
|
133
94
|
return collectibleDescription;
|
|
134
95
|
}
|
|
135
|
-
const itemConfigItem =
|
|
96
|
+
const itemConfigItem = itemConfig.GetCollectible(collectibleType);
|
|
136
97
|
if (itemConfigItem !== undefined) {
|
|
137
98
|
return itemConfigItem.Description;
|
|
138
99
|
}
|
|
139
|
-
return
|
|
100
|
+
return DEFAULT_COLLECTIBLE_DESCRIPTION;
|
|
140
101
|
}
|
|
141
102
|
/**
|
|
142
103
|
* Helper function to get the coin cost that a collectible item would be if it were being offered in
|
|
143
104
|
* a Devil Room deal. Returns 0 if passed `CollectibleType.NULL`.
|
|
144
105
|
*/
|
|
145
|
-
function getCollectibleDevilCoinPrice(collectibleOrCollectibleType) {
|
|
106
|
+
export function getCollectibleDevilCoinPrice(collectibleOrCollectibleType) {
|
|
146
107
|
const collectibleType = getCollectibleTypeFromArg(collectibleOrCollectibleType, "getCollectibleDescription");
|
|
147
|
-
if (collectibleType ===
|
|
108
|
+
if (collectibleType === CollectibleType.NULL) {
|
|
148
109
|
return 0;
|
|
149
110
|
}
|
|
150
|
-
const itemConfigItem =
|
|
111
|
+
const itemConfigItem = itemConfig.GetCollectible(collectibleType);
|
|
151
112
|
if (itemConfigItem === undefined) {
|
|
152
113
|
return DEFAULT_COLLECTIBLE_PRICE;
|
|
153
114
|
}
|
|
@@ -157,26 +118,26 @@ function getCollectibleDevilCoinPrice(collectibleOrCollectibleType) {
|
|
|
157
118
|
* Helper function to get the heart cost that a collectible item would be if it were being offered
|
|
158
119
|
* in a Devil Room deal. Returns 0 if passed `CollectibleType.NULL`.
|
|
159
120
|
*/
|
|
160
|
-
function getCollectibleDevilHeartPrice(collectibleOrCollectibleType, player) {
|
|
121
|
+
export function getCollectibleDevilHeartPrice(collectibleOrCollectibleType, player) {
|
|
161
122
|
const collectibleType = getCollectibleTypeFromArg(collectibleOrCollectibleType, "getCollectibleDevilHeartPrice");
|
|
162
|
-
if (collectibleType ===
|
|
123
|
+
if (collectibleType === CollectibleType.NULL) {
|
|
163
124
|
return 0;
|
|
164
125
|
}
|
|
165
126
|
const maxHearts = player.GetMaxHearts();
|
|
166
127
|
if (maxHearts === 0) {
|
|
167
|
-
return
|
|
128
|
+
return PickupPrice.THREE_SOUL_HEARTS;
|
|
168
129
|
}
|
|
169
|
-
const defaultCollectiblePrice =
|
|
170
|
-
const itemConfigItem =
|
|
130
|
+
const defaultCollectiblePrice = PickupPrice.ONE_HEART;
|
|
131
|
+
const itemConfigItem = itemConfig.GetCollectible(collectibleType);
|
|
171
132
|
if (itemConfigItem === undefined) {
|
|
172
133
|
return defaultCollectiblePrice;
|
|
173
134
|
}
|
|
174
135
|
const twoHeartPrice = maxHearts === 2
|
|
175
|
-
?
|
|
176
|
-
:
|
|
136
|
+
? PickupPrice.ONE_HEART_AND_TWO_SOUL_HEARTS
|
|
137
|
+
: PickupPrice.TWO_HEARTS;
|
|
177
138
|
return itemConfigItem.DevilPrice === 2
|
|
178
139
|
? twoHeartPrice
|
|
179
|
-
:
|
|
140
|
+
: PickupPrice.ONE_HEART;
|
|
180
141
|
}
|
|
181
142
|
/**
|
|
182
143
|
* Helper function to get the path to a collectible PNG file. Returns the path to the question mark
|
|
@@ -188,14 +149,14 @@ function getCollectibleDevilHeartPrice(collectibleOrCollectibleType, player) {
|
|
|
188
149
|
* The function is named "GfxFilename" to correspond to the associated `ItemConfigItem.GfxFileName`
|
|
189
150
|
* field.
|
|
190
151
|
*/
|
|
191
|
-
function getCollectibleGfxFilename(collectibleOrCollectibleType) {
|
|
152
|
+
export function getCollectibleGfxFilename(collectibleOrCollectibleType) {
|
|
192
153
|
if (collectibleOrCollectibleType === -1) {
|
|
193
|
-
return
|
|
154
|
+
return BLIND_ITEM_PNG_PATH;
|
|
194
155
|
}
|
|
195
156
|
const collectibleType = getCollectibleTypeFromArg(collectibleOrCollectibleType, "getCollectibleGfxFilename");
|
|
196
|
-
const itemConfigItem =
|
|
157
|
+
const itemConfigItem = itemConfig.GetCollectible(collectibleType);
|
|
197
158
|
if (itemConfigItem === undefined) {
|
|
198
|
-
return
|
|
159
|
+
return BLIND_ITEM_PNG_PATH;
|
|
199
160
|
}
|
|
200
161
|
return itemConfigItem.GfxFileName;
|
|
201
162
|
}
|
|
@@ -208,9 +169,9 @@ function getCollectibleGfxFilename(collectibleOrCollectibleType) {
|
|
|
208
169
|
* This function returns 0 if the provided collectible type was not valid. This function returns -1
|
|
209
170
|
* if the provided collectible type was not an active collectible.
|
|
210
171
|
*/
|
|
211
|
-
function getCollectibleInitCharge(collectibleOrCollectibleType) {
|
|
172
|
+
export function getCollectibleInitCharge(collectibleOrCollectibleType) {
|
|
212
173
|
const collectibleType = getCollectibleTypeFromArg(collectibleOrCollectibleType, "getCollectibleInitCharge");
|
|
213
|
-
const itemConfigItem =
|
|
174
|
+
const itemConfigItem = itemConfig.GetCollectible(collectibleType);
|
|
214
175
|
if (itemConfigItem === undefined) {
|
|
215
176
|
return 0;
|
|
216
177
|
}
|
|
@@ -220,11 +181,11 @@ function getCollectibleInitCharge(collectibleOrCollectibleType) {
|
|
|
220
181
|
* Helper function to get the `ItemType` of a collectible. Returns `ItemType.ITEM_NULL` if the
|
|
221
182
|
* provided collectible type was not valid.
|
|
222
183
|
*/
|
|
223
|
-
function getCollectibleItemType(collectibleOrCollectibleType) {
|
|
184
|
+
export function getCollectibleItemType(collectibleOrCollectibleType) {
|
|
224
185
|
const collectibleType = getCollectibleTypeFromArg(collectibleOrCollectibleType, "getCollectibleItemType");
|
|
225
|
-
const itemConfigItem =
|
|
186
|
+
const itemConfigItem = itemConfig.GetCollectible(collectibleType);
|
|
226
187
|
if (itemConfigItem === undefined) {
|
|
227
|
-
return
|
|
188
|
+
return ItemType.NULL;
|
|
228
189
|
}
|
|
229
190
|
return itemConfigItem.Type;
|
|
230
191
|
}
|
|
@@ -232,9 +193,9 @@ function getCollectibleItemType(collectibleOrCollectibleType) {
|
|
|
232
193
|
* Helper function to get the maximum amount of charges that a collectible has. Returns 0 if the
|
|
233
194
|
* provided collectible type was not valid.
|
|
234
195
|
*/
|
|
235
|
-
function getCollectibleMaxCharges(collectibleOrCollectibleType) {
|
|
196
|
+
export function getCollectibleMaxCharges(collectibleOrCollectibleType) {
|
|
236
197
|
const collectibleType = getCollectibleTypeFromArg(collectibleOrCollectibleType, "getCollectibleMaxCharges");
|
|
237
|
-
const itemConfigItem =
|
|
198
|
+
const itemConfigItem = itemConfig.GetCollectible(collectibleType);
|
|
238
199
|
if (itemConfigItem === undefined) {
|
|
239
200
|
return 0;
|
|
240
201
|
}
|
|
@@ -248,27 +209,27 @@ function getCollectibleMaxCharges(collectibleOrCollectibleType) {
|
|
|
248
209
|
*
|
|
249
210
|
* For example, `getCollectibleName(CollectibleType.SAD_ONION)` would return "Sad Onion".
|
|
250
211
|
*/
|
|
251
|
-
function getCollectibleName(collectibleOrCollectibleType) {
|
|
212
|
+
export function getCollectibleName(collectibleOrCollectibleType) {
|
|
252
213
|
const collectibleType = getCollectibleTypeFromArg(collectibleOrCollectibleType, "getCollectibleName");
|
|
253
214
|
// "ItemConfigItem.Name" is bugged with vanilla items on patch v1.7.6, so we use a hard-coded map
|
|
254
215
|
// as a workaround.
|
|
255
|
-
const collectibleName =
|
|
216
|
+
const collectibleName = COLLECTIBLE_NAMES[collectibleType];
|
|
256
217
|
if (collectibleName !== undefined) {
|
|
257
218
|
return collectibleName;
|
|
258
219
|
}
|
|
259
|
-
const itemConfigItem =
|
|
220
|
+
const itemConfigItem = itemConfig.GetCollectible(collectibleType);
|
|
260
221
|
if (itemConfigItem !== undefined) {
|
|
261
222
|
return itemConfigItem.Name;
|
|
262
223
|
}
|
|
263
|
-
return
|
|
224
|
+
return DEFAULT_COLLECTIBLE_NAME;
|
|
264
225
|
}
|
|
265
226
|
/**
|
|
266
227
|
* Helper function to get the "pedestal type" of a collectible. For example, it might be sitting on
|
|
267
228
|
* top of a broken Blood Donation Machine, or it might be sitting on top of an opened Spiked Chest.
|
|
268
229
|
*/
|
|
269
|
-
function getCollectiblePedestalType(collectible) {
|
|
270
|
-
if (!
|
|
271
|
-
const entityID =
|
|
230
|
+
export function getCollectiblePedestalType(collectible) {
|
|
231
|
+
if (!isCollectible(collectible)) {
|
|
232
|
+
const entityID = getEntityID(collectible);
|
|
272
233
|
error(`The "getCollectiblePedestalType" function was given a non-collectible: ${entityID}`);
|
|
273
234
|
}
|
|
274
235
|
const sprite = collectible.GetSprite();
|
|
@@ -279,9 +240,9 @@ function getCollectiblePedestalType(collectible) {
|
|
|
279
240
|
* example, Mom's Knife has a quality of 4. Returns 0 if the provided collectible type was not
|
|
280
241
|
* valid.
|
|
281
242
|
*/
|
|
282
|
-
function getCollectibleQuality(collectibleOrCollectibleType) {
|
|
243
|
+
export function getCollectibleQuality(collectibleOrCollectibleType) {
|
|
283
244
|
const collectibleType = getCollectibleTypeFromArg(collectibleOrCollectibleType, "getCollectibleQuality");
|
|
284
|
-
const itemConfigItem =
|
|
245
|
+
const itemConfigItem = itemConfig.GetCollectible(collectibleType);
|
|
285
246
|
if (itemConfigItem === undefined) {
|
|
286
247
|
return 0;
|
|
287
248
|
}
|
|
@@ -298,10 +259,10 @@ function getCollectibleQuality(collectibleOrCollectibleType) {
|
|
|
298
259
|
* const itemConfigTags = getCollectibleTags(collectibleType); // itemConfigTags is "18350080"
|
|
299
260
|
* ```
|
|
300
261
|
*/
|
|
301
|
-
function getCollectibleTags(collectibleOrCollectibleType) {
|
|
262
|
+
export function getCollectibleTags(collectibleOrCollectibleType) {
|
|
302
263
|
const collectibleType = getCollectibleTypeFromArg(collectibleOrCollectibleType, "getCollectibleTags");
|
|
303
|
-
const itemConfigItem =
|
|
304
|
-
return itemConfigItem === undefined ?
|
|
264
|
+
const itemConfigItem = itemConfig.GetCollectible(collectibleType);
|
|
265
|
+
return itemConfigItem === undefined ? ItemConfigTagZero : itemConfigItem.Tags;
|
|
305
266
|
}
|
|
306
267
|
/**
|
|
307
268
|
* Returns an array containing every vanilla collectible type with the given quality.
|
|
@@ -309,15 +270,15 @@ function getCollectibleTags(collectibleOrCollectibleType) {
|
|
|
309
270
|
* Note that this function will only return vanilla collectible types. To handle modded collectible
|
|
310
271
|
* types, use the `getCollectibleTypesOfQuality` helper function instead.
|
|
311
272
|
*/
|
|
312
|
-
function getVanillaCollectibleTypesOfQuality(quality) {
|
|
273
|
+
export function getVanillaCollectibleTypesOfQuality(quality) {
|
|
313
274
|
const collectibleTypes = QUALITY_TO_VANILLA_COLLECTIBLE_TYPES_MAP.get(quality);
|
|
314
|
-
|
|
275
|
+
assertDefined(collectibleTypes, `Failed to find the vanilla collectible types corresponding to quality: ${quality}`);
|
|
315
276
|
return collectibleTypes;
|
|
316
277
|
}
|
|
317
278
|
/** Returns true if the item type in the item config is equal to `ItemType.ACTIVE`. */
|
|
318
|
-
function isActiveCollectible(collectibleType) {
|
|
279
|
+
export function isActiveCollectible(collectibleType) {
|
|
319
280
|
const itemType = getCollectibleItemType(collectibleType);
|
|
320
|
-
return itemType ===
|
|
281
|
+
return itemType === ItemType.ACTIVE;
|
|
321
282
|
}
|
|
322
283
|
/**
|
|
323
284
|
* Returns true if the collectible has a red question mark sprite.
|
|
@@ -325,14 +286,14 @@ function isActiveCollectible(collectibleType) {
|
|
|
325
286
|
* Note that this function will not work properly in a render callback with the `RenderMode` set to
|
|
326
287
|
* `RenderMode.WATER_REFLECT`. If this is detected, this function will throw a run-time error.
|
|
327
288
|
*/
|
|
328
|
-
function isBlindCollectible(collectible) {
|
|
329
|
-
if (!
|
|
330
|
-
const entityID =
|
|
289
|
+
export function isBlindCollectible(collectible) {
|
|
290
|
+
if (!isCollectible(collectible)) {
|
|
291
|
+
const entityID = getEntityID(collectible);
|
|
331
292
|
error(`The "isBlindCollectible" function was given a non-collectible: ${entityID}`);
|
|
332
293
|
}
|
|
333
|
-
const room =
|
|
294
|
+
const room = game.GetRoom();
|
|
334
295
|
const renderMode = room.GetRenderMode();
|
|
335
|
-
if (renderMode ===
|
|
296
|
+
if (renderMode === RenderMode.WATER_REFLECT) {
|
|
336
297
|
error('The "isBlindCollectible" function will not work properly in a render callback with the render mode equal to "RenderMode.WATER_REFLECT". Make sure that you properly account for this case if you are calling this function in a render callback.');
|
|
337
298
|
}
|
|
338
299
|
const sprite = collectible.GetSprite();
|
|
@@ -342,9 +303,9 @@ function isBlindCollectible(collectible) {
|
|
|
342
303
|
return collectibleSpriteEquals(sprite, questionMarkSprite);
|
|
343
304
|
}
|
|
344
305
|
/** Returns true if the item type in the item config is equal to `ItemType.FAMILIAR`. */
|
|
345
|
-
function isFamiliarCollectible(collectibleType) {
|
|
306
|
+
export function isFamiliarCollectible(collectibleType) {
|
|
346
307
|
const itemType = getCollectibleItemType(collectibleType);
|
|
347
|
-
return itemType ===
|
|
308
|
+
return itemType === ItemType.FAMILIAR;
|
|
348
309
|
}
|
|
349
310
|
/**
|
|
350
311
|
* Returns whether the given collectible is a "glitched" item. All items are replaced by glitched
|
|
@@ -353,8 +314,8 @@ function isFamiliarCollectible(collectibleType) {
|
|
|
353
314
|
*
|
|
354
315
|
* Under the hood, this checks if the sub-type of the collectible is greater than 4,000,000,000.
|
|
355
316
|
*/
|
|
356
|
-
function isGlitchedCollectible(collectible) {
|
|
357
|
-
return (collectible.Variant ===
|
|
317
|
+
export function isGlitchedCollectible(collectible) {
|
|
318
|
+
return (collectible.Variant === PickupVariant.COLLECTIBLE
|
|
358
319
|
&& collectible.SubType > GLITCHED_ITEM_THRESHOLD);
|
|
359
320
|
}
|
|
360
321
|
/**
|
|
@@ -362,25 +323,25 @@ function isGlitchedCollectible(collectible) {
|
|
|
362
323
|
*
|
|
363
324
|
* Hidden collectibles will not show up in any pools and Eden will not start with them.
|
|
364
325
|
*/
|
|
365
|
-
function isHiddenCollectible(collectibleOrCollectibleType) {
|
|
326
|
+
export function isHiddenCollectible(collectibleOrCollectibleType) {
|
|
366
327
|
const collectibleType = getCollectibleTypeFromArg(collectibleOrCollectibleType, "isHiddenCollectible");
|
|
367
|
-
const itemConfigItem =
|
|
328
|
+
const itemConfigItem = itemConfig.GetCollectible(collectibleType);
|
|
368
329
|
return itemConfigItem !== undefined && itemConfigItem.Hidden;
|
|
369
330
|
}
|
|
370
|
-
function isModdedCollectibleType(collectibleType) {
|
|
331
|
+
export function isModdedCollectibleType(collectibleType) {
|
|
371
332
|
return !isVanillaCollectibleType(collectibleType);
|
|
372
333
|
}
|
|
373
334
|
/**
|
|
374
335
|
* Returns true if the item type in the item config is equal to `ItemType.ITEM_PASSIVE` or
|
|
375
336
|
* `ItemType.ITEM_FAMILIAR`.
|
|
376
337
|
*/
|
|
377
|
-
function isPassiveOrFamiliarCollectible(collectibleOrCollectibleType) {
|
|
338
|
+
export function isPassiveOrFamiliarCollectible(collectibleOrCollectibleType) {
|
|
378
339
|
const collectibleType = getCollectibleTypeFromArg(collectibleOrCollectibleType, "isPassiveCollectible");
|
|
379
340
|
const itemType = getCollectibleItemType(collectibleType);
|
|
380
|
-
return itemType ===
|
|
341
|
+
return itemType === ItemType.PASSIVE || itemType === ItemType.FAMILIAR;
|
|
381
342
|
}
|
|
382
343
|
/** Helper function to check if a collectible type is a particular quality. */
|
|
383
|
-
function isQuality(collectibleOrCollectibleType, quality) {
|
|
344
|
+
export function isQuality(collectibleOrCollectibleType, quality) {
|
|
384
345
|
const actualQuality = getCollectibleQuality(collectibleOrCollectibleType);
|
|
385
346
|
return quality === actualQuality;
|
|
386
347
|
}
|
|
@@ -389,16 +350,16 @@ function isQuality(collectibleOrCollectibleType, quality) {
|
|
|
389
350
|
* inventory upon use. Note that this will not work will modded collectibles, as there is no way to
|
|
390
351
|
* dynamically know if a modded collectible will disappear.
|
|
391
352
|
*/
|
|
392
|
-
function isSingleUseCollectible(collectibleType) {
|
|
393
|
-
return
|
|
353
|
+
export function isSingleUseCollectible(collectibleType) {
|
|
354
|
+
return SINGLE_USE_ACTIVE_COLLECTIBLE_TYPES_SET.has(collectibleType);
|
|
394
355
|
}
|
|
395
|
-
function isValidCollectibleType(collectibleType) {
|
|
396
|
-
const potentialCollectibleType =
|
|
397
|
-
const itemConfigItem =
|
|
356
|
+
export function isValidCollectibleType(collectibleType) {
|
|
357
|
+
const potentialCollectibleType = asCollectibleType(collectibleType);
|
|
358
|
+
const itemConfigItem = itemConfig.GetCollectible(potentialCollectibleType);
|
|
398
359
|
return itemConfigItem !== undefined;
|
|
399
360
|
}
|
|
400
|
-
function isVanillaCollectibleType(collectibleType) {
|
|
401
|
-
return collectibleType <=
|
|
361
|
+
export function isVanillaCollectibleType(collectibleType) {
|
|
362
|
+
return collectibleType <= LAST_VANILLA_COLLECTIBLE_TYPE;
|
|
402
363
|
}
|
|
403
364
|
/**
|
|
404
365
|
* Helper function to generate a new sprite based on a collectible. If the provided collectible type
|
|
@@ -406,15 +367,15 @@ function isVanillaCollectibleType(collectibleType) {
|
|
|
406
367
|
*
|
|
407
368
|
* If you intentionally want a question mark sprite, pass -1 as the collectible type.
|
|
408
369
|
*/
|
|
409
|
-
function newCollectibleSprite(collectibleType) {
|
|
370
|
+
export function newCollectibleSprite(collectibleType) {
|
|
410
371
|
const sprite = Sprite();
|
|
411
372
|
sprite.Load(COLLECTIBLE_ANM2_PATH, false);
|
|
412
373
|
// We want to clear the pedestal layers so that the returned sprite only has the collectible
|
|
413
374
|
// image. We can't use the `Sprite.Reset` method for this purpose because that would unload the
|
|
414
375
|
// anm2 file.
|
|
415
|
-
|
|
376
|
+
clearSprite(sprite);
|
|
416
377
|
const gfxFileName = getCollectibleGfxFilename(collectibleType);
|
|
417
|
-
sprite.ReplaceSpritesheet(
|
|
378
|
+
sprite.ReplaceSpritesheet(CollectibleSpriteLayer.HEAD, gfxFileName);
|
|
418
379
|
sprite.LoadGraphics();
|
|
419
380
|
const defaultAnimation = sprite.GetDefaultAnimation();
|
|
420
381
|
sprite.Play(defaultAnimation, true);
|
|
@@ -427,9 +388,9 @@ function newCollectibleSprite(collectibleType) {
|
|
|
427
388
|
* Under the hood, this is accomplished by morphing the collectible with the `ignoreModifiers`
|
|
428
389
|
* argument set to true.
|
|
429
390
|
*/
|
|
430
|
-
function preventCollectibleRotation(collectible) {
|
|
431
|
-
if (!
|
|
432
|
-
const entityID =
|
|
391
|
+
export function preventCollectibleRotation(collectible) {
|
|
392
|
+
if (!isCollectible(collectible)) {
|
|
393
|
+
const entityID = getEntityID(collectible);
|
|
433
394
|
error(`The "preventCollectibleRotation" function was given a non-collectible: ${entityID}`);
|
|
434
395
|
}
|
|
435
396
|
collectible.Morph(collectible.Type, collectible.Variant, collectible.SubType, true, true, true);
|
|
@@ -438,9 +399,9 @@ function preventCollectibleRotation(collectible) {
|
|
|
438
399
|
* Helper function to remove all pickup delay on a collectible. By default, collectibles have a 20
|
|
439
400
|
* frame delay before they can be picked up by a player.
|
|
440
401
|
*/
|
|
441
|
-
function removeCollectiblePickupDelay(collectible) {
|
|
442
|
-
if (!
|
|
443
|
-
const entityID =
|
|
402
|
+
export function removeCollectiblePickupDelay(collectible) {
|
|
403
|
+
if (!isCollectible(collectible)) {
|
|
404
|
+
const entityID = getEntityID(collectible);
|
|
444
405
|
error(`The "removeCollectiblePickupDelay" function was given a non-collectible: ${entityID}`);
|
|
445
406
|
}
|
|
446
407
|
collectible.Wait = 0;
|
|
@@ -449,12 +410,12 @@ function removeCollectiblePickupDelay(collectible) {
|
|
|
449
410
|
* Helper function to set a collectible sprite to a question mark (i.e. how collectibles look when
|
|
450
411
|
* the player has Curse of the Blind).
|
|
451
412
|
*/
|
|
452
|
-
function setCollectibleBlind(collectible) {
|
|
453
|
-
if (!
|
|
454
|
-
const entityID =
|
|
413
|
+
export function setCollectibleBlind(collectible) {
|
|
414
|
+
if (!isCollectible(collectible)) {
|
|
415
|
+
const entityID = getEntityID(collectible);
|
|
455
416
|
error(`The "setCollectibleBlind" function was given a non-collectible: ${entityID}`);
|
|
456
417
|
}
|
|
457
|
-
setCollectibleSprite(collectible,
|
|
418
|
+
setCollectibleSprite(collectible, BLIND_ITEM_PNG_PATH);
|
|
458
419
|
}
|
|
459
420
|
/**
|
|
460
421
|
* Helper function to remove the collectible from a collectible pedestal and make it appear as if a
|
|
@@ -463,35 +424,35 @@ function setCollectibleBlind(collectible) {
|
|
|
463
424
|
*
|
|
464
425
|
* For more information, see the documentation for the "clearSprite" helper function.
|
|
465
426
|
*/
|
|
466
|
-
function setCollectibleEmpty(collectible) {
|
|
467
|
-
if (!
|
|
468
|
-
const entityID =
|
|
427
|
+
export function setCollectibleEmpty(collectible) {
|
|
428
|
+
if (!isCollectible(collectible)) {
|
|
429
|
+
const entityID = getEntityID(collectible);
|
|
469
430
|
error(`The "setCollectibleEmpty" function was given a non-collectible: ${entityID}`);
|
|
470
431
|
}
|
|
471
|
-
collectible.SubType =
|
|
432
|
+
collectible.SubType = CollectibleType.NULL;
|
|
472
433
|
clearCollectibleSprite(collectible);
|
|
473
434
|
}
|
|
474
435
|
/**
|
|
475
436
|
* Helper function to change a collectible into a "glitched" item (like the ones that appear when
|
|
476
437
|
* the player has TMTRAINER).
|
|
477
438
|
*/
|
|
478
|
-
function setCollectibleGlitched(collectible) {
|
|
479
|
-
if (!
|
|
480
|
-
const entityID =
|
|
439
|
+
export function setCollectibleGlitched(collectible) {
|
|
440
|
+
if (!isCollectible(collectible)) {
|
|
441
|
+
const entityID = getEntityID(collectible);
|
|
481
442
|
error(`The "setCollectibleGlitched" function was given a non-collectible: ${entityID}`);
|
|
482
443
|
}
|
|
483
444
|
// We need to generate a new glitched item. Thus, we temporarily give the player TMTRAINER, if
|
|
484
445
|
// necessary.
|
|
485
446
|
const player = Isaac.GetPlayer();
|
|
486
|
-
const hasTMTRAINER = player.HasCollectible(
|
|
447
|
+
const hasTMTRAINER = player.HasCollectible(CollectibleType.TMTRAINER);
|
|
487
448
|
if (!hasTMTRAINER) {
|
|
488
|
-
player.AddCollectible(
|
|
449
|
+
player.AddCollectible(CollectibleType.TMTRAINER, 0, false);
|
|
489
450
|
}
|
|
490
|
-
const itemPool =
|
|
491
|
-
const collectibleType = itemPool.GetCollectible(
|
|
451
|
+
const itemPool = game.GetItemPool();
|
|
452
|
+
const collectibleType = itemPool.GetCollectible(DEFAULT_ITEM_POOL_TYPE);
|
|
492
453
|
setCollectibleSubType(collectible, collectibleType);
|
|
493
454
|
if (!hasTMTRAINER) {
|
|
494
|
-
player.RemoveCollectible(
|
|
455
|
+
player.RemoveCollectible(CollectibleType.TMTRAINER);
|
|
495
456
|
}
|
|
496
457
|
}
|
|
497
458
|
/**
|
|
@@ -499,9 +460,9 @@ function setCollectibleGlitched(collectible) {
|
|
|
499
460
|
* top of a broken Blood Donation Machine and you want to change it to be sitting on top of an
|
|
500
461
|
* opened Spiked Chest.
|
|
501
462
|
*/
|
|
502
|
-
function setCollectiblePedestalType(collectible, collectiblePedestalType) {
|
|
503
|
-
if (!
|
|
504
|
-
const entityID =
|
|
463
|
+
export function setCollectiblePedestalType(collectible, collectiblePedestalType) {
|
|
464
|
+
if (!isCollectible(collectible)) {
|
|
465
|
+
const entityID = getEntityID(collectible);
|
|
505
466
|
error(`The "setCollectiblePedestalType" function was given a non-collectible: ${entityID}`);
|
|
506
467
|
}
|
|
507
468
|
const sprite = collectible.GetSprite();
|
|
@@ -520,19 +481,19 @@ function setCollectiblePedestalType(collectible, collectiblePedestalType) {
|
|
|
520
481
|
* undefined, the sprite will be removed, making it appear like the collectible has
|
|
521
482
|
* already been taken by the player.
|
|
522
483
|
*/
|
|
523
|
-
function setCollectibleSprite(collectible, pngPath) {
|
|
524
|
-
if (!
|
|
525
|
-
const entityID =
|
|
484
|
+
export function setCollectibleSprite(collectible, pngPath) {
|
|
485
|
+
if (!isCollectible(collectible)) {
|
|
486
|
+
const entityID = getEntityID(collectible);
|
|
526
487
|
error(`The "setCollectibleSprite" function was given a non-collectible: ${entityID}`);
|
|
527
488
|
}
|
|
528
489
|
const sprite = collectible.GetSprite();
|
|
529
490
|
if (pngPath === undefined) {
|
|
530
491
|
// We want to remove the little circle that appears on top of the pedestal, which is why we also
|
|
531
492
|
// clear `CollectibleSpriteLayer.ITEM_SHADOW`.
|
|
532
|
-
|
|
493
|
+
clearSprite(sprite, CollectibleSpriteLayer.HEAD, CollectibleSpriteLayer.ITEM_SHADOW);
|
|
533
494
|
}
|
|
534
495
|
else {
|
|
535
|
-
sprite.ReplaceSpritesheet(
|
|
496
|
+
sprite.ReplaceSpritesheet(CollectibleSpriteLayer.HEAD, pngPath);
|
|
536
497
|
sprite.LoadGraphics();
|
|
537
498
|
}
|
|
538
499
|
}
|
|
@@ -540,7 +501,7 @@ function setCollectibleSprite(collectible, pngPath) {
|
|
|
540
501
|
* Helper function to put a message in the log.txt file to let the Rebirth Item Tracker know that
|
|
541
502
|
* the build has been rerolled.
|
|
542
503
|
*/
|
|
543
|
-
function setCollectiblesRerolledForItemTracker() {
|
|
504
|
+
export function setCollectiblesRerolledForItemTracker() {
|
|
544
505
|
// This cannot use the "log" function since the prefix will prevent the Rebirth Item Tracker from
|
|
545
506
|
// recognizing the message. The number here does not matter since the tracker does not check for a
|
|
546
507
|
// specific number.
|
|
@@ -550,14 +511,14 @@ function setCollectiblesRerolledForItemTracker() {
|
|
|
550
511
|
* Helper function to change the collectible on a pedestal. Simply updating the `SubType` field is
|
|
551
512
|
* not sufficient because the sprite will not change.
|
|
552
513
|
*/
|
|
553
|
-
function setCollectibleSubType(collectible, newCollectibleType) {
|
|
554
|
-
if (!
|
|
555
|
-
const entityID =
|
|
514
|
+
export function setCollectibleSubType(collectible, newCollectibleType) {
|
|
515
|
+
if (!isCollectible(collectible)) {
|
|
516
|
+
const entityID = getEntityID(collectible);
|
|
556
517
|
error(`The "setCollectibleSubType" function was given a non-collectible: ${entityID}`);
|
|
557
518
|
}
|
|
558
519
|
// You cannot morph a pedestal to "CollectibleType.NULL"; it would instead create a new random
|
|
559
520
|
// collectible item.
|
|
560
|
-
if (newCollectibleType ===
|
|
521
|
+
if (newCollectibleType === CollectibleType.NULL) {
|
|
561
522
|
setCollectibleEmpty(collectible);
|
|
562
523
|
return;
|
|
563
524
|
}
|
|
@@ -565,15 +526,15 @@ function setCollectibleSubType(collectible, newCollectibleType) {
|
|
|
565
526
|
// will not update the sprite. Manually updating the sprite works in most situations, but does not
|
|
566
527
|
// work when the pedestal is empty. Instead, we can simply morph the collectible, which seems to
|
|
567
528
|
// work in all situations.
|
|
568
|
-
collectible.Morph(
|
|
529
|
+
collectible.Morph(EntityType.PICKUP, PickupVariant.COLLECTIBLE, newCollectibleType, true, true, true);
|
|
569
530
|
}
|
|
570
531
|
function getCollectibleTypeFromArg(collectibleOrCollectibleType, functionName) {
|
|
571
|
-
if (
|
|
532
|
+
if (isInteger(collectibleOrCollectibleType)) {
|
|
572
533
|
return collectibleOrCollectibleType;
|
|
573
534
|
}
|
|
574
535
|
const collectible = collectibleOrCollectibleType;
|
|
575
|
-
if (!
|
|
576
|
-
const entityID =
|
|
536
|
+
if (!isCollectible(collectible)) {
|
|
537
|
+
const entityID = getEntityID(collectible);
|
|
577
538
|
error(`The "${functionName}" function was given a non-collectible: ${entityID}`);
|
|
578
539
|
}
|
|
579
540
|
return collectible.SubType;
|