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,30 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const HealthType_1 = require("../../../../enums/HealthType");
|
|
14
|
-
const direction_1 = require("../../../../functions/direction");
|
|
15
|
-
const gridEntities_1 = require("../../../../functions/gridEntities");
|
|
16
|
-
const levelGrid_1 = require("../../../../functions/levelGrid");
|
|
17
|
-
const logEntities_1 = require("../../../../functions/logEntities");
|
|
18
|
-
const playerHealth_1 = require("../../../../functions/playerHealth");
|
|
19
|
-
const roomData_1 = require("../../../../functions/roomData");
|
|
20
|
-
const rooms_1 = require("../../../../functions/rooms");
|
|
21
|
-
const types_1 = require("../../../../functions/types");
|
|
22
|
-
const roomTypeNames_1 = require("../../../../objects/roomTypeNames");
|
|
1
|
+
import { GridEntityType, GridRoom, RoomType, } from "isaac-typescript-definitions";
|
|
2
|
+
import { game } from "../../../../core/cachedClasses";
|
|
3
|
+
import { HealthType } from "../../../../enums/HealthType";
|
|
4
|
+
import { directionToVector } from "../../../../functions/direction";
|
|
5
|
+
import { spawnGridEntity } from "../../../../functions/gridEntities";
|
|
6
|
+
import { getRoomAdjacentGridIndexes, getRoomGridIndexesForType, } from "../../../../functions/levelGrid";
|
|
7
|
+
import { logAllEntities, logAllGridEntities, } from "../../../../functions/logEntities";
|
|
8
|
+
import { addPlayerHealthType } from "../../../../functions/playerHealth";
|
|
9
|
+
import { getRoomData, getRoomDescriptor } from "../../../../functions/roomData";
|
|
10
|
+
import { changeRoom } from "../../../../functions/rooms";
|
|
11
|
+
import { parseIntSafe } from "../../../../functions/types";
|
|
12
|
+
import { ROOM_TYPE_NAMES } from "../../../../objects/roomTypeNames";
|
|
23
13
|
const DEFAULT_MOVE_UNITS = 0.5;
|
|
24
|
-
function addHeart(params, healthType) {
|
|
25
|
-
let numHearts = healthType ===
|
|
14
|
+
export function addHeart(params, healthType) {
|
|
15
|
+
let numHearts = healthType === HealthType.MAX_HEARTS ? 2 : 1;
|
|
26
16
|
if (params !== "") {
|
|
27
|
-
const num =
|
|
17
|
+
const num = parseIntSafe(params);
|
|
28
18
|
if (num === undefined) {
|
|
29
19
|
print("That is an invalid amount of hearts to add.");
|
|
30
20
|
return;
|
|
@@ -32,17 +22,17 @@ function addHeart(params, healthType) {
|
|
|
32
22
|
numHearts = num;
|
|
33
23
|
}
|
|
34
24
|
const player = Isaac.GetPlayer();
|
|
35
|
-
|
|
25
|
+
addPlayerHealthType(player, healthType, numHearts);
|
|
36
26
|
}
|
|
37
|
-
function devilAngel(useDevil) {
|
|
38
|
-
const level =
|
|
39
|
-
const devilAngelRoomData =
|
|
27
|
+
export function devilAngel(useDevil) {
|
|
28
|
+
const level = game.GetLevel();
|
|
29
|
+
const devilAngelRoomData = getRoomData(GridRoom.DEVIL);
|
|
40
30
|
if (devilAngelRoomData !== undefined) {
|
|
41
31
|
const roomType = devilAngelRoomData.Type;
|
|
42
|
-
const conflictingType = useDevil ?
|
|
32
|
+
const conflictingType = useDevil ? RoomType.ANGEL : RoomType.DEVIL;
|
|
43
33
|
if (roomType === conflictingType) {
|
|
44
34
|
// Delete the room data, which will allow the `Level.InitializeDevilAngelRoom` method to work.
|
|
45
|
-
const roomDescriptor =
|
|
35
|
+
const roomDescriptor = getRoomDescriptor(GridRoom.DEVIL);
|
|
46
36
|
roomDescriptor.Data = undefined;
|
|
47
37
|
}
|
|
48
38
|
}
|
|
@@ -52,36 +42,36 @@ function devilAngel(useDevil) {
|
|
|
52
42
|
else {
|
|
53
43
|
level.InitializeDevilAngelRoom(true, false);
|
|
54
44
|
}
|
|
55
|
-
|
|
45
|
+
changeRoom(GridRoom.DEVIL);
|
|
56
46
|
}
|
|
57
|
-
function listEntities(params, includeBackgroundEffects) {
|
|
47
|
+
export function listEntities(params, includeBackgroundEffects) {
|
|
58
48
|
let entityTypeFilter;
|
|
59
49
|
if (params !== "") {
|
|
60
|
-
entityTypeFilter =
|
|
50
|
+
entityTypeFilter = parseIntSafe(params);
|
|
61
51
|
if (entityTypeFilter === undefined) {
|
|
62
52
|
print("That is an invalid entity type to filter by.");
|
|
63
53
|
return;
|
|
64
54
|
}
|
|
65
55
|
}
|
|
66
|
-
|
|
56
|
+
logAllEntities(includeBackgroundEffects, entityTypeFilter);
|
|
67
57
|
print('Logged the entities in the room to the "log.txt" file.');
|
|
68
58
|
}
|
|
69
|
-
function listGridEntities(params, includeWalls) {
|
|
59
|
+
export function listGridEntities(params, includeWalls) {
|
|
70
60
|
let gridEntityTypeFilter;
|
|
71
61
|
if (params !== "") {
|
|
72
|
-
gridEntityTypeFilter =
|
|
62
|
+
gridEntityTypeFilter = parseIntSafe(params);
|
|
73
63
|
if (gridEntityTypeFilter === undefined) {
|
|
74
64
|
print("That is an invalid grid entity type to filter by.");
|
|
75
65
|
return;
|
|
76
66
|
}
|
|
77
67
|
}
|
|
78
|
-
|
|
68
|
+
logAllGridEntities(includeWalls, gridEntityTypeFilter);
|
|
79
69
|
print('Logged the grid entities in the room to the "log.txt" file.');
|
|
80
70
|
}
|
|
81
|
-
function movePlayer(params, direction) {
|
|
71
|
+
export function movePlayer(params, direction) {
|
|
82
72
|
let amount = DEFAULT_MOVE_UNITS;
|
|
83
73
|
if (params !== "") {
|
|
84
|
-
const num =
|
|
74
|
+
const num = parseIntSafe(params);
|
|
85
75
|
if (num === undefined) {
|
|
86
76
|
print("That is an invalid amount of units to move.");
|
|
87
77
|
return;
|
|
@@ -89,43 +79,43 @@ function movePlayer(params, direction) {
|
|
|
89
79
|
amount = num;
|
|
90
80
|
}
|
|
91
81
|
const player = Isaac.GetPlayer();
|
|
92
|
-
const vector =
|
|
82
|
+
const vector = directionToVector(direction);
|
|
93
83
|
const modifiedVector = vector.mul(amount);
|
|
94
84
|
player.Position = player.Position.add(modifiedVector);
|
|
95
85
|
}
|
|
96
|
-
function spawnTrapdoorOrCrawlSpace(trapdoor) {
|
|
97
|
-
const room =
|
|
86
|
+
export function spawnTrapdoorOrCrawlSpace(trapdoor) {
|
|
87
|
+
const room = game.GetRoom();
|
|
98
88
|
const player = Isaac.GetPlayer();
|
|
99
89
|
const position = room.FindFreeTilePosition(player.Position, 0);
|
|
100
90
|
const gridEntityType = trapdoor
|
|
101
|
-
?
|
|
102
|
-
:
|
|
103
|
-
|
|
91
|
+
? GridEntityType.TRAPDOOR
|
|
92
|
+
: GridEntityType.CRAWL_SPACE;
|
|
93
|
+
spawnGridEntity(gridEntityType, position);
|
|
104
94
|
}
|
|
105
|
-
function warpToRoomType(roomType) {
|
|
106
|
-
const roomTypeName =
|
|
107
|
-
const gridIndexes =
|
|
95
|
+
export function warpToRoomType(roomType) {
|
|
96
|
+
const roomTypeName = ROOM_TYPE_NAMES[roomType];
|
|
97
|
+
const gridIndexes = getRoomGridIndexesForType(roomType);
|
|
108
98
|
const firstGridIndex = gridIndexes[0];
|
|
109
99
|
if (firstGridIndex === undefined) {
|
|
110
100
|
print(`There are no ${roomTypeName}s on this floor.`);
|
|
111
101
|
return;
|
|
112
102
|
}
|
|
113
|
-
|
|
103
|
+
changeRoom(firstGridIndex);
|
|
114
104
|
print(`Warped to room type: ${roomTypeName} (${roomType})`);
|
|
115
105
|
}
|
|
116
|
-
function warpNextToRoomType(roomType) {
|
|
117
|
-
const roomTypeName =
|
|
118
|
-
const gridIndexes =
|
|
106
|
+
export function warpNextToRoomType(roomType) {
|
|
107
|
+
const roomTypeName = ROOM_TYPE_NAMES[roomType];
|
|
108
|
+
const gridIndexes = getRoomGridIndexesForType(roomType);
|
|
119
109
|
const firstGridIndex = gridIndexes[0];
|
|
120
110
|
if (firstGridIndex === undefined) {
|
|
121
111
|
print(`There are no ${roomTypeName}s on this floor.`);
|
|
122
112
|
return;
|
|
123
113
|
}
|
|
124
|
-
const adjacentRoomGridIndexes =
|
|
114
|
+
const adjacentRoomGridIndexes = getRoomAdjacentGridIndexes(firstGridIndex);
|
|
125
115
|
for (const [_doorSlot, roomGridIndex] of adjacentRoomGridIndexes) {
|
|
126
|
-
const roomData =
|
|
127
|
-
if (roomData !== undefined && roomData.Type ===
|
|
128
|
-
|
|
116
|
+
const roomData = getRoomData(roomGridIndex);
|
|
117
|
+
if (roomData !== undefined && roomData.Type === RoomType.DEFAULT) {
|
|
118
|
+
changeRoom(roomGridIndex);
|
|
129
119
|
print(`Warped next to room type: ${roomTypeName} (${roomType})`);
|
|
130
120
|
return;
|
|
131
121
|
}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.v = void 0;
|
|
4
1
|
// This is registered in "ExtraConsoleCommands.ts".
|
|
5
2
|
// eslint-disable-next-line isaacscript/require-v-registration
|
|
6
|
-
|
|
3
|
+
export const v = {
|
|
7
4
|
persistent: {
|
|
8
5
|
// Curses
|
|
9
6
|
darkness: false, // 1
|
|
@@ -1,27 +1,23 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// The save data manager has a feature where certain variables will automatically be rolled back
|
|
3
2
|
// when the Glowing Hourglass is used.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const merge_1 = require("../../../../functions/merge");
|
|
11
|
-
const table_1 = require("../../../../functions/table");
|
|
12
|
-
const constants_1 = require("./constants");
|
|
3
|
+
import { SaveDataKey } from "../../../../enums/SaveDataKey";
|
|
4
|
+
import { SerializationType } from "../../../../enums/SerializationType";
|
|
5
|
+
import { deepCopy } from "../../../../functions/deepCopy";
|
|
6
|
+
import { merge } from "../../../../functions/merge";
|
|
7
|
+
import { iterateTableInOrder } from "../../../../functions/table";
|
|
8
|
+
import { SAVE_DATA_MANAGER_DEBUG } from "./constants";
|
|
13
9
|
/**
|
|
14
10
|
* When the Glowing Hourglass is used, certain save data keys will automatically be restored to a
|
|
15
11
|
* backup.
|
|
16
12
|
*/
|
|
17
13
|
const GLOWING_HOUR_GLASS_BACKUP_KEYS = [
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
SaveDataKey.RUN,
|
|
15
|
+
SaveDataKey.LEVEL,
|
|
20
16
|
];
|
|
21
17
|
const IGNORE_GLOWING_HOUR_GLASS_KEY = "__ignoreGlowingHourGlass";
|
|
22
18
|
const REWIND_WITH_GLOWING_HOUR_GLASS_KEY = "__rewindWithGlowingHourGlass";
|
|
23
|
-
function makeGlowingHourGlassBackup(saveDataMap, saveDataConditionalFuncMap, saveDataGlowingHourGlassMap) {
|
|
24
|
-
|
|
19
|
+
export function makeGlowingHourGlassBackup(saveDataMap, saveDataConditionalFuncMap, saveDataGlowingHourGlassMap) {
|
|
20
|
+
iterateTableInOrder(saveDataMap, (subscriberName, saveData) => {
|
|
25
21
|
// We make the Glowing Hourglass backup using `SerializationType.SERIALIZE`, which means that
|
|
26
22
|
// we cannot operate on unserializable data, such as functions. Save data that utilizes
|
|
27
23
|
// unserializable data will typically be marked using a conditional function that evaluates to
|
|
@@ -51,13 +47,13 @@ function makeGlowingHourGlassBackup(saveDataMap, saveDataConditionalFuncMap, sav
|
|
|
51
47
|
}
|
|
52
48
|
// We serialize the table so that we can use the `merge` function later on with no other
|
|
53
49
|
// modifications.
|
|
54
|
-
const copiedChildTable =
|
|
50
|
+
const copiedChildTable = deepCopy(childTable, SerializationType.SERIALIZE);
|
|
55
51
|
saveDataGlowingHourGlass[saveDataKey] = copiedChildTable;
|
|
56
52
|
}
|
|
57
|
-
},
|
|
53
|
+
}, SAVE_DATA_MANAGER_DEBUG);
|
|
58
54
|
}
|
|
59
|
-
function restoreGlowingHourGlassBackup(saveDataMap, saveDataConditionalFuncMap, saveDataGlowingHourGlassMap, classConstructors) {
|
|
60
|
-
|
|
55
|
+
export function restoreGlowingHourGlassBackup(saveDataMap, saveDataConditionalFuncMap, saveDataGlowingHourGlassMap, classConstructors) {
|
|
56
|
+
iterateTableInOrder(saveDataMap, (subscriberName, saveData) => {
|
|
61
57
|
// We make the Glowing Hourglass backup using `SerializationType.SERIALIZE`, which means that
|
|
62
58
|
// we cannot operate on unserializable data, such as functions. Save data that utilizes
|
|
63
59
|
// unserializable data will typically be marked using a conditional function that evaluates to
|
|
@@ -90,16 +86,16 @@ function restoreGlowingHourGlassBackup(saveDataMap, saveDataConditionalFuncMap,
|
|
|
90
86
|
// This should never happen.
|
|
91
87
|
continue;
|
|
92
88
|
}
|
|
93
|
-
|
|
89
|
+
merge(childTable, childTableBackup,
|
|
94
90
|
// Append an arbitrary suffix for better error messages.
|
|
95
91
|
`${subscriberName}__glowingHourGlass`, classConstructors);
|
|
96
92
|
}
|
|
97
|
-
},
|
|
93
|
+
}, SAVE_DATA_MANAGER_DEBUG);
|
|
98
94
|
}
|
|
99
95
|
function getKeysToBackup(saveData) {
|
|
100
96
|
const shouldBackupPersistentObject = saveData.persistent !== undefined
|
|
101
97
|
&& saveData.persistent.has(REWIND_WITH_GLOWING_HOUR_GLASS_KEY);
|
|
102
98
|
return shouldBackupPersistentObject
|
|
103
|
-
? [...GLOWING_HOUR_GLASS_BACKUP_KEYS,
|
|
99
|
+
? [...GLOWING_HOUR_GLASS_BACKUP_KEYS, SaveDataKey.PERSISTENT]
|
|
104
100
|
: GLOWING_HOUR_GLASS_BACKUP_KEYS;
|
|
105
101
|
}
|
|
@@ -1,38 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const table_1 = require("../../../../functions/table");
|
|
8
|
-
const types_1 = require("../../../../functions/types");
|
|
9
|
-
const constants_1 = require("./constants");
|
|
1
|
+
import { jsonDecode } from "../../../../functions/jsonHelpers";
|
|
2
|
+
import { log, logError } from "../../../../functions/log";
|
|
3
|
+
import { merge } from "../../../../functions/merge";
|
|
4
|
+
import { iterateTableInOrder } from "../../../../functions/table";
|
|
5
|
+
import { isString, isTable } from "../../../../functions/types";
|
|
6
|
+
import { SAVE_DATA_MANAGER_DEBUG } from "./constants";
|
|
10
7
|
const DEFAULT_MOD_DATA = "{}";
|
|
11
|
-
function loadFromDisk(mod, oldSaveData, classConstructors) {
|
|
8
|
+
export function loadFromDisk(mod, oldSaveData, classConstructors) {
|
|
12
9
|
if (!mod.HasData()) {
|
|
13
10
|
// There is no "save#.dat" file for this save slot.
|
|
14
11
|
return;
|
|
15
12
|
}
|
|
16
13
|
// First, read the "save#.dat" file into a Lua table.
|
|
17
14
|
const jsonString = readSaveDatFile(mod);
|
|
18
|
-
const newSaveData =
|
|
15
|
+
const newSaveData = jsonDecode(jsonString);
|
|
19
16
|
if (newSaveData === undefined) {
|
|
20
17
|
// Reading the save data failed.
|
|
21
18
|
return;
|
|
22
19
|
}
|
|
23
|
-
if (
|
|
24
|
-
|
|
20
|
+
if (SAVE_DATA_MANAGER_DEBUG) {
|
|
21
|
+
log('Converted data from the "save#.dat" to a Lua table.');
|
|
25
22
|
}
|
|
26
23
|
// Second, iterate over all the fields of the new table.)
|
|
27
|
-
|
|
24
|
+
iterateTableInOrder(newSaveData, (subscriberName, saveData) => {
|
|
28
25
|
// All elements of loaded save data should have keys that are strings equal to the name of the
|
|
29
26
|
// subscriber/feature. Ignore elements with other types of keys.
|
|
30
|
-
if (!
|
|
27
|
+
if (!isString(subscriberName)) {
|
|
31
28
|
return;
|
|
32
29
|
}
|
|
33
30
|
// All elements of loaded save data should be tables that contain fields corresponding to the
|
|
34
31
|
// `SaveData` interface. Ignore elements that are not tables.
|
|
35
|
-
if (!
|
|
32
|
+
if (!isTable(saveData)) {
|
|
36
33
|
return;
|
|
37
34
|
}
|
|
38
35
|
// Ignore elements that represent subscriptions that no longer exist in the current save data.
|
|
@@ -40,21 +37,21 @@ function loadFromDisk(mod, oldSaveData, classConstructors) {
|
|
|
40
37
|
if (oldSaveDataForSubscriber === undefined) {
|
|
41
38
|
return;
|
|
42
39
|
}
|
|
43
|
-
if (
|
|
44
|
-
|
|
40
|
+
if (SAVE_DATA_MANAGER_DEBUG) {
|
|
41
|
+
log(`Merging in stored data for feature: ${subscriberName}`);
|
|
45
42
|
}
|
|
46
43
|
// We do not want to blow away the child tables of the existing map, because save data could
|
|
47
44
|
// contain out-of-date fields. Instead, merge it one field at a time in a recursive way (and
|
|
48
45
|
// convert Lua tables back to TypeScriptToLua Maps, if necessary).
|
|
49
|
-
|
|
50
|
-
},
|
|
51
|
-
|
|
46
|
+
merge(oldSaveDataForSubscriber, saveData, subscriberName, classConstructors);
|
|
47
|
+
}, SAVE_DATA_MANAGER_DEBUG);
|
|
48
|
+
log(`The save data manager loaded data from the "save#.dat" file for mod: ${mod.Name}`);
|
|
52
49
|
}
|
|
53
50
|
function readSaveDatFile(mod) {
|
|
54
51
|
const renderFrameCount = Isaac.GetFrameCount();
|
|
55
52
|
const [ok, jsonStringOrErrMsg] = pcall(tryLoadModData, mod);
|
|
56
53
|
if (!ok) {
|
|
57
|
-
|
|
54
|
+
logError(`Failed to read from the "save#.dat" file on render frame ${renderFrameCount}: ${jsonStringOrErrMsg}`);
|
|
58
55
|
return DEFAULT_MOD_DATA;
|
|
59
56
|
}
|
|
60
57
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
@@ -1,33 +1,28 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// The save data manager has a feature where certain variables are automatically restored to default
|
|
3
2
|
// values at certain times.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const RESETTABLE_SAVE_DATA_KEYS = new ReadonlySet_1.ReadonlySet([
|
|
16
|
-
SaveDataKey_1.SaveDataKey.RUN,
|
|
17
|
-
SaveDataKey_1.SaveDataKey.LEVEL,
|
|
18
|
-
SaveDataKey_1.SaveDataKey.ROOM,
|
|
3
|
+
import { SaveDataKey } from "../../../../enums/SaveDataKey";
|
|
4
|
+
import { SerializationType } from "../../../../enums/SerializationType";
|
|
5
|
+
import { deepCopy } from "../../../../functions/deepCopy";
|
|
6
|
+
import { logError } from "../../../../functions/log";
|
|
7
|
+
import { clearTable, iterateTableInOrder } from "../../../../functions/table";
|
|
8
|
+
import { ReadonlySet } from "../../../../types/ReadonlySet";
|
|
9
|
+
import { SAVE_DATA_MANAGER_DEBUG } from "./constants";
|
|
10
|
+
const RESETTABLE_SAVE_DATA_KEYS = new ReadonlySet([
|
|
11
|
+
SaveDataKey.RUN,
|
|
12
|
+
SaveDataKey.LEVEL,
|
|
13
|
+
SaveDataKey.ROOM,
|
|
19
14
|
]);
|
|
20
|
-
function restoreDefaultsForAllFeaturesAndKeys(saveDataMap, saveDataDefaultsMap) {
|
|
15
|
+
export function restoreDefaultsForAllFeaturesAndKeys(saveDataMap, saveDataDefaultsMap) {
|
|
21
16
|
for (const saveDataKey of RESETTABLE_SAVE_DATA_KEYS) {
|
|
22
17
|
restoreDefaultsForAllFeaturesKey(saveDataMap, saveDataDefaultsMap, saveDataKey);
|
|
23
18
|
}
|
|
24
19
|
}
|
|
25
|
-
function restoreDefaultsForAllFeaturesKey(saveDataMap, saveDataDefaultsMap, saveDataKey) {
|
|
26
|
-
|
|
20
|
+
export function restoreDefaultsForAllFeaturesKey(saveDataMap, saveDataDefaultsMap, saveDataKey) {
|
|
21
|
+
iterateTableInOrder(saveDataMap, (subscriberName, saveData) => {
|
|
27
22
|
restoreDefaultForFeatureKey(saveDataDefaultsMap, subscriberName, saveData, saveDataKey);
|
|
28
|
-
},
|
|
23
|
+
}, SAVE_DATA_MANAGER_DEBUG);
|
|
29
24
|
}
|
|
30
|
-
function restoreDefaultForFeatureKey(saveDataDefaultsMap, subscriberName, saveData, saveDataKey) {
|
|
25
|
+
export function restoreDefaultForFeatureKey(saveDataDefaultsMap, subscriberName, saveData, saveDataKey) {
|
|
31
26
|
// Only allow certain save data keys to be reset.
|
|
32
27
|
if (!RESETTABLE_SAVE_DATA_KEYS.has(saveDataKey)) {
|
|
33
28
|
error(`Failed to restore default values for a save data key of "${saveDataKey}", since it is not on the allowed list of resettable save data keys.`);
|
|
@@ -40,17 +35,17 @@ function restoreDefaultForFeatureKey(saveDataDefaultsMap, subscriberName, saveDa
|
|
|
40
35
|
// Get the default values for this feature.
|
|
41
36
|
const saveDataDefaults = saveDataDefaultsMap.get(subscriberName);
|
|
42
37
|
if (saveDataDefaults === undefined) {
|
|
43
|
-
|
|
38
|
+
logError(`Failed to find the default copy of the save data for subscriber: ${subscriberName}`);
|
|
44
39
|
return;
|
|
45
40
|
}
|
|
46
41
|
// Get the default values for the specific sub-table of this feature.
|
|
47
42
|
const childTableDefaults = saveDataDefaults[saveDataKey];
|
|
48
43
|
if (childTableDefaults === undefined) {
|
|
49
|
-
|
|
44
|
+
logError(String.raw `Failed to find the default copy of the child table "${saveDataKey}" for subscriber "${subscriberName}". This error usually means that your mod-specific save data is out of date. You can try purging all of your mod-specific save data by deleting the following directory: C:\Program Files (x86)\Steam\steamapps\common\The Binding of Isaac Rebirth\data`);
|
|
50
45
|
return;
|
|
51
46
|
}
|
|
52
47
|
// Make a new copy of the default child table.
|
|
53
|
-
const childTableDefaultsCopy =
|
|
48
|
+
const childTableDefaultsCopy = deepCopy(childTableDefaults, SerializationType.NONE, `${subscriberName} --> ${saveDataKey}`);
|
|
54
49
|
// We do not want to blow away the existing child table because we do not want to break any
|
|
55
50
|
// existing references. Instead, empty the table and copy all of the elements from the copy of the
|
|
56
51
|
// defaults table.
|
|
@@ -61,7 +56,7 @@ function restoreDefaultForFeatureKey(saveDataDefaultsMap, subscriberName, saveDa
|
|
|
61
56
|
* table to the old table.
|
|
62
57
|
*/
|
|
63
58
|
function clearAndCopyAllElements(oldTable, newTable) {
|
|
64
|
-
|
|
59
|
+
clearTable(oldTable);
|
|
65
60
|
for (const [key, value] of newTable) {
|
|
66
61
|
oldTable.set(key, value);
|
|
67
62
|
}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const table_1 = require("../../../../functions/table");
|
|
9
|
-
const constants_1 = require("./constants");
|
|
10
|
-
function saveToDisk(mod, saveDataMap, saveDataConditionalFuncMap) {
|
|
1
|
+
import { SerializationType } from "../../../../enums/SerializationType";
|
|
2
|
+
import { deepCopy } from "../../../../functions/deepCopy";
|
|
3
|
+
import { jsonEncode } from "../../../../functions/jsonHelpers";
|
|
4
|
+
import { log } from "../../../../functions/log";
|
|
5
|
+
import { isTableEmpty, iterateTableInOrder } from "../../../../functions/table";
|
|
6
|
+
import { SAVE_DATA_MANAGER_DEBUG } from "./constants";
|
|
7
|
+
export function saveToDisk(mod, saveDataMap, saveDataConditionalFuncMap) {
|
|
11
8
|
const allSaveData = getAllSaveDataToWriteToDisk(saveDataMap, saveDataConditionalFuncMap);
|
|
12
|
-
const jsonString =
|
|
9
|
+
const jsonString = jsonEncode(allSaveData);
|
|
13
10
|
mod.SaveData(jsonString);
|
|
14
|
-
|
|
11
|
+
log(`The save data manager wrote data to the "save#.dat" file for mod: ${mod.Name}`);
|
|
15
12
|
}
|
|
16
13
|
function getAllSaveDataToWriteToDisk(saveDataMap, saveDataConditionalFuncMap) {
|
|
17
14
|
const allSaveData = new LuaMap();
|
|
18
|
-
|
|
15
|
+
iterateTableInOrder(saveDataMap, (subscriberName, saveData) => {
|
|
19
16
|
// Handle the feature of the save data manager where certain mod features can conditionally
|
|
20
17
|
// write their data to disk.
|
|
21
18
|
const conditionalFunc = saveDataConditionalFuncMap.get(subscriberName);
|
|
@@ -33,13 +30,13 @@ function getAllSaveDataToWriteToDisk(saveDataMap, saveDataConditionalFuncMap) {
|
|
|
33
30
|
level: saveData.level,
|
|
34
31
|
};
|
|
35
32
|
// If there is no data, then we can move on to the next feature.
|
|
36
|
-
if (
|
|
33
|
+
if (isTableEmpty(saveDataWithoutRoom)) {
|
|
37
34
|
return;
|
|
38
35
|
}
|
|
39
36
|
// We need to serialize TypeScriptToLua maps and Isaac API objects such as `Color`.
|
|
40
37
|
// Recursively convert all such objects to Lua tables.
|
|
41
|
-
const saveDataCopy =
|
|
38
|
+
const saveDataCopy = deepCopy(saveDataWithoutRoom, SerializationType.SERIALIZE, subscriberName);
|
|
42
39
|
allSaveData.set(subscriberName, saveDataCopy);
|
|
43
|
-
},
|
|
40
|
+
}, SAVE_DATA_MANAGER_DEBUG);
|
|
44
41
|
return allSaveData;
|
|
45
42
|
}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.CustomCallback = void 0;
|
|
4
|
-
const sort_1 = require("../../functions/sort");
|
|
5
|
-
const Feature_1 = require("./Feature");
|
|
1
|
+
import { sortObjectArrayByKey, stableSort } from "../../functions/sort";
|
|
2
|
+
import { Feature } from "./Feature";
|
|
6
3
|
/**
|
|
7
4
|
* The base class for a custom callback. Individual custom callbacks (and validation callbacks) will
|
|
8
5
|
* extend from this class.
|
|
9
6
|
*/
|
|
10
|
-
class CustomCallback extends
|
|
7
|
+
export class CustomCallback extends Feature {
|
|
11
8
|
subscriptions = [];
|
|
12
9
|
fire = (...fireArgs) => {
|
|
13
10
|
for (const subscription of this.subscriptions) {
|
|
@@ -40,7 +37,7 @@ class CustomCallback extends Feature_1.Feature {
|
|
|
40
37
|
// Sort the subscriptions by priority so that the callbacks with the lowest priority are first.
|
|
41
38
|
// By default, the `Array.sort` method is transpiled to using Lua's sort, which is not stable.
|
|
42
39
|
// We need to do a stable sort so that we preserve the subscription order.
|
|
43
|
-
this.subscriptions =
|
|
40
|
+
this.subscriptions = stableSort(this.subscriptions, sortObjectArrayByKey("priority"));
|
|
44
41
|
}
|
|
45
42
|
/**
|
|
46
43
|
* If the submitted function does not match any of the existing subscriptions, this method will do
|
|
@@ -56,4 +53,3 @@ class CustomCallback extends Feature_1.Feature {
|
|
|
56
53
|
}
|
|
57
54
|
}
|
|
58
55
|
}
|
|
59
|
-
exports.CustomCallback = CustomCallback;
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Feature = void 0;
|
|
4
1
|
/**
|
|
5
2
|
* The IsaacScript standard library contains many optional features, such as the ability to create
|
|
6
3
|
* custom pickups. All features are optional and are only initialized when needed. This class
|
|
@@ -8,7 +5,7 @@ exports.Feature = void 0;
|
|
|
8
5
|
*
|
|
9
6
|
* Additionally, all custom callbacks extend from this class.
|
|
10
7
|
*/
|
|
11
|
-
class Feature {
|
|
8
|
+
export class Feature {
|
|
12
9
|
/**
|
|
13
10
|
* All features should only be instantiated once and are passed around to other features using
|
|
14
11
|
* dependency injection. We provide a run-time check in order to prevent the bug of any feature
|
|
@@ -36,4 +33,3 @@ class Feature {
|
|
|
36
33
|
Feature.constructedClassNames.add(this.constructor.name);
|
|
37
34
|
}
|
|
38
35
|
}
|
|
39
|
-
exports.Feature = Feature;
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* eslint-disable unicorn/no-top-level-side-effects */
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.fonts = exports.sfxManager = exports.musicManager = exports.itemConfig = exports.game = void 0;
|
|
5
2
|
/**
|
|
6
3
|
* A cached version of the class returned from the `Game()` constructor.
|
|
7
4
|
*
|
|
@@ -10,7 +7,7 @@ exports.fonts = exports.sfxManager = exports.musicManager = exports.itemConfig =
|
|
|
10
7
|
* Caching the results of this constructor is safe, but caching other classes (like `Level` or
|
|
11
8
|
* `Room`) is not safe and can lead to the game crashing in certain situations.
|
|
12
9
|
*/
|
|
13
|
-
|
|
10
|
+
export const game = Game();
|
|
14
11
|
/**
|
|
15
12
|
* A cached version of the class returned from the `Isaac.GetItemConfig()` constructor.
|
|
16
13
|
*
|
|
@@ -19,7 +16,7 @@ exports.game = Game();
|
|
|
19
16
|
* Caching the results of this constructor is safe, but caching other classes (like `Level` or
|
|
20
17
|
* `Room`) is not safe and can lead to the game crashing in certain situations.
|
|
21
18
|
*/
|
|
22
|
-
|
|
19
|
+
export const itemConfig = Isaac.GetItemConfig();
|
|
23
20
|
/**
|
|
24
21
|
* A cached version of the class returned from the `MusicManager()` constructor.
|
|
25
22
|
*
|
|
@@ -28,7 +25,7 @@ exports.itemConfig = Isaac.GetItemConfig();
|
|
|
28
25
|
* Caching the results of this constructor is safe, but caching other classes (like `Level` or
|
|
29
26
|
* `Room`) is not safe and can lead to the game crashing in certain situations.
|
|
30
27
|
*/
|
|
31
|
-
|
|
28
|
+
export const musicManager = MusicManager();
|
|
32
29
|
/**
|
|
33
30
|
* A cached version of the class returned from the `SFXManager()` constructor.
|
|
34
31
|
*
|
|
@@ -37,14 +34,14 @@ exports.musicManager = MusicManager();
|
|
|
37
34
|
* Caching the results of this constructor is safe, but caching other classes (like `Level` or
|
|
38
35
|
* `Room`) is not safe and can lead to the game crashing in certain situations.
|
|
39
36
|
*/
|
|
40
|
-
|
|
37
|
+
export const sfxManager = SFXManager();
|
|
41
38
|
/**
|
|
42
39
|
* An object containing all 7 vanilla fonts that are pre-loaded and ready to use.
|
|
43
40
|
*
|
|
44
41
|
* For more information on the vanilla fonts and to see what they look like, see:
|
|
45
42
|
* https://wofsauge.github.io/IsaacDocs/rep/tutorials/Tutorial-Rendertext.html
|
|
46
43
|
*/
|
|
47
|
-
|
|
44
|
+
export const fonts = {
|
|
48
45
|
droid: Font(),
|
|
49
46
|
pfTempestaSevenCondensed: Font(),
|
|
50
47
|
teamMeatFont10: Font(),
|
|
@@ -53,10 +50,10 @@ exports.fonts = {
|
|
|
53
50
|
terminus: Font(),
|
|
54
51
|
upheaval: Font(),
|
|
55
52
|
};
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
53
|
+
fonts.droid.Load("font/droid.fnt");
|
|
54
|
+
fonts.pfTempestaSevenCondensed.Load("font/pftempestasevencondensed.fnt");
|
|
55
|
+
fonts.teamMeatFont10.Load("font/teammeatfont10.fnt");
|
|
56
|
+
fonts.teamMeatFont12.Load("font/teammeatfont12.fnt");
|
|
57
|
+
fonts.teamMeatFont16Bold.Load("font/teammeatfont16bold.fnt");
|
|
58
|
+
fonts.terminus.Load("font/terminus.fnt");
|
|
59
|
+
fonts.upheaval.Load("font/upheaval.fnt");
|