isaacscript-common 84.0.1 → 84.1.1
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/arrays/cachedEnumValues.js +33 -0
- package/dist/callbackClasses.js +289 -0
- package/dist/callbacks.js +181 -0
- package/dist/classes/DefaultMap.js +171 -0
- package/dist/classes/ModFeature.js +244 -0
- package/dist/classes/ModUpgraded.js +324 -0
- package/dist/classes/callbacks/EntityTakeDmgFilter.js +19 -0
- package/dist/classes/callbacks/EntityTakeDmgPlayer.js +29 -0
- package/dist/classes/callbacks/InputActionFilter.js +24 -0
- package/dist/classes/callbacks/InputActionPlayer.js +37 -0
- package/dist/classes/callbacks/PostAmbushFinished.js +40 -0
- package/dist/classes/callbacks/PostAmbushStarted.js +40 -0
- package/dist/classes/callbacks/PostBombExploded.js +24 -0
- package/dist/classes/callbacks/PostBombInitFilter.js +21 -0
- package/dist/classes/callbacks/PostBombInitLate.js +31 -0
- package/dist/classes/callbacks/PostBombRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostBombUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostBoneSwing.js +53 -0
- package/dist/classes/callbacks/PostCollectibleEmpty.js +50 -0
- package/dist/classes/callbacks/PostCursedTeleport.js +119 -0
- package/dist/classes/callbacks/PostCustomRevive.js +17 -0
- package/dist/classes/callbacks/PostDiceRoomActivated.js +50 -0
- package/dist/classes/callbacks/PostDoorRender.js +24 -0
- package/dist/classes/callbacks/PostDoorUpdate.js +24 -0
- package/dist/classes/callbacks/PostEffectInitFilter.js +21 -0
- package/dist/classes/callbacks/PostEffectInitLate.js +31 -0
- package/dist/classes/callbacks/PostEffectRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostEffectStateChanged.js +34 -0
- package/dist/classes/callbacks/PostEffectUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostEntityKillFilter.js +21 -0
- package/dist/classes/callbacks/PostEsauJr.js +12 -0
- package/dist/classes/callbacks/PostFamiliarInitFilter.js +21 -0
- package/dist/classes/callbacks/PostFamiliarInitLate.js +31 -0
- package/dist/classes/callbacks/PostFamiliarRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostFamiliarStateChanged.js +34 -0
- package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostFirstEsauJr.js +12 -0
- package/dist/classes/callbacks/PostFirstFlip.js +12 -0
- package/dist/classes/callbacks/PostFlip.js +12 -0
- package/dist/classes/callbacks/PostGameEndFilter.js +21 -0
- package/dist/classes/callbacks/PostGameStartedReordered.js +14 -0
- package/dist/classes/callbacks/PostGameStartedReorderedLast.js +14 -0
- package/dist/classes/callbacks/PostGreedModeWave.js +35 -0
- package/dist/classes/callbacks/PostGridEntityBroken.js +14 -0
- package/dist/classes/callbacks/PostGridEntityCollision.js +28 -0
- package/dist/classes/callbacks/PostGridEntityCustomBroken.js +14 -0
- package/dist/classes/callbacks/PostGridEntityCustomCollision.js +24 -0
- package/dist/classes/callbacks/PostGridEntityCustomInit.js +14 -0
- package/dist/classes/callbacks/PostGridEntityCustomRemove.js +18 -0
- package/dist/classes/callbacks/PostGridEntityCustomRender.js +14 -0
- package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +14 -0
- package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +14 -0
- package/dist/classes/callbacks/PostGridEntityInit.js +14 -0
- package/dist/classes/callbacks/PostGridEntityRemove.js +19 -0
- package/dist/classes/callbacks/PostGridEntityRender.js +14 -0
- package/dist/classes/callbacks/PostGridEntityStateChanged.js +14 -0
- package/dist/classes/callbacks/PostGridEntityUpdate.js +14 -0
- package/dist/classes/callbacks/PostHolyMantleRemoved.js +43 -0
- package/dist/classes/callbacks/PostItemDischarge.js +122 -0
- package/dist/classes/callbacks/PostItemPickup.js +14 -0
- package/dist/classes/callbacks/PostKeyboardChanged.js +46 -0
- package/dist/classes/callbacks/PostKnifeInitFilter.js +21 -0
- package/dist/classes/callbacks/PostKnifeInitLate.js +31 -0
- package/dist/classes/callbacks/PostKnifeRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostKnifeUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostLaserInitFilter.js +21 -0
- package/dist/classes/callbacks/PostLaserInitLate.js +31 -0
- package/dist/classes/callbacks/PostLaserRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostLaserUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostNPCDeathFilter.js +21 -0
- package/dist/classes/callbacks/PostNPCInitFilter.js +21 -0
- package/dist/classes/callbacks/PostNPCInitLate.js +31 -0
- package/dist/classes/callbacks/PostNPCRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostNPCStateChanged.js +34 -0
- package/dist/classes/callbacks/PostNPCUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostNewLevelReordered.js +14 -0
- package/dist/classes/callbacks/PostNewRoomEarly.js +74 -0
- package/dist/classes/callbacks/PostNewRoomReordered.js +14 -0
- package/dist/classes/callbacks/PostPEffectUpdateReordered.js +14 -0
- package/dist/classes/callbacks/PostPickupChanged.js +14 -0
- package/dist/classes/callbacks/PostPickupCollect.js +38 -0
- package/dist/classes/callbacks/PostPickupInitFilter.js +21 -0
- package/dist/classes/callbacks/PostPickupInitFirst.js +33 -0
- package/dist/classes/callbacks/PostPickupInitLate.js +31 -0
- package/dist/classes/callbacks/PostPickupRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostPickupSelectionFilter.js +29 -0
- package/dist/classes/callbacks/PostPickupStateChanged.js +34 -0
- package/dist/classes/callbacks/PostPickupUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostPitRender.js +24 -0
- package/dist/classes/callbacks/PostPitUpdate.js +24 -0
- package/dist/classes/callbacks/PostPlayerChangeHealth.js +47 -0
- package/dist/classes/callbacks/PostPlayerChangeStat.js +79 -0
- package/dist/classes/callbacks/PostPlayerChangeType.js +36 -0
- package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +14 -0
- package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +14 -0
- package/dist/classes/callbacks/PostPlayerFatalDamage.js +83 -0
- package/dist/classes/callbacks/PostPlayerInitFirst.js +41 -0
- package/dist/classes/callbacks/PostPlayerInitLate.js +33 -0
- package/dist/classes/callbacks/PostPlayerRenderReordered.js +14 -0
- package/dist/classes/callbacks/PostPlayerUpdateReordered.js +14 -0
- package/dist/classes/callbacks/PostPoopRender.js +24 -0
- package/dist/classes/callbacks/PostPoopUpdate.js +24 -0
- package/dist/classes/callbacks/PostPressurePlateRender.js +24 -0
- package/dist/classes/callbacks/PostPressurePlateUpdate.js +24 -0
- package/dist/classes/callbacks/PostProjectileInitFilter.js +21 -0
- package/dist/classes/callbacks/PostProjectileInitLate.js +31 -0
- package/dist/classes/callbacks/PostProjectileKill.js +52 -0
- package/dist/classes/callbacks/PostProjectileRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostProjectileUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostPurchase.js +90 -0
- package/dist/classes/callbacks/PostRockRender.js +24 -0
- package/dist/classes/callbacks/PostRockUpdate.js +24 -0
- package/dist/classes/callbacks/PostRoomClearChanged.js +46 -0
- package/dist/classes/callbacks/PostSacrifice.js +36 -0
- package/dist/classes/callbacks/PostSlotAnimationChanged.js +14 -0
- package/dist/classes/callbacks/PostSlotCollision.js +25 -0
- package/dist/classes/callbacks/PostSlotDestroyed.js +14 -0
- package/dist/classes/callbacks/PostSlotInit.js +14 -0
- package/dist/classes/callbacks/PostSlotRender.js +14 -0
- package/dist/classes/callbacks/PostSlotUpdate.js +14 -0
- package/dist/classes/callbacks/PostSpikesRender.js +24 -0
- package/dist/classes/callbacks/PostSpikesUpdate.js +24 -0
- package/dist/classes/callbacks/PostTNTRender.js +24 -0
- package/dist/classes/callbacks/PostTNTUpdate.js +24 -0
- package/dist/classes/callbacks/PostTearInitFilter.js +21 -0
- package/dist/classes/callbacks/PostTearInitLate.js +31 -0
- package/dist/classes/callbacks/PostTearInitVeryLate.js +35 -0
- package/dist/classes/callbacks/PostTearKill.js +52 -0
- package/dist/classes/callbacks/PostTearRenderFilter.js +21 -0
- package/dist/classes/callbacks/PostTearUpdateFilter.js +21 -0
- package/dist/classes/callbacks/PostTransformation.js +47 -0
- package/dist/classes/callbacks/PostTrinketBreak.js +70 -0
- package/dist/classes/callbacks/PostUsePillFilter.js +76 -0
- package/dist/classes/callbacks/PreBerserkDeath.js +41 -0
- package/dist/classes/callbacks/PreBombCollisionFilter.js +19 -0
- package/dist/classes/callbacks/PreCustomRevive.js +14 -0
- package/dist/classes/callbacks/PreEntitySpawnFilter.js +24 -0
- package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +19 -0
- package/dist/classes/callbacks/PreGetPedestal.js +46 -0
- package/dist/classes/callbacks/PreItemPickup.js +14 -0
- package/dist/classes/callbacks/PreKnifeCollisionFilter.js +19 -0
- package/dist/classes/callbacks/PreNPCCollisionFilter.js +19 -0
- package/dist/classes/callbacks/PreNPCUpdateFilter.js +19 -0
- package/dist/classes/callbacks/PreNewLevel.js +51 -0
- package/dist/classes/callbacks/PreProjectileCollisionFilter.js +19 -0
- package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +26 -0
- package/dist/classes/callbacks/PreTearCollisionFilter.js +19 -0
- package/dist/classes/features/callbackLogic/CustomGridEntities.js +359 -0
- package/dist/classes/features/callbackLogic/CustomRevive.js +170 -0
- package/dist/classes/features/callbackLogic/EsauJrDetection.js +70 -0
- package/dist/classes/features/callbackLogic/FlipDetection.js +61 -0
- package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +220 -0
- package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +62 -0
- package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +35 -0
- package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +147 -0
- package/dist/classes/features/callbackLogic/ItemPickupDetection.js +68 -0
- package/dist/classes/features/callbackLogic/PickupChangeDetection.js +43 -0
- package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +193 -0
- package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +109 -0
- package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +95 -0
- package/dist/classes/features/callbackLogic/SlotRenderDetection.js +48 -0
- package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +52 -0
- package/dist/classes/features/other/CharacterHealthConversion.js +112 -0
- package/dist/classes/features/other/CharacterStats.js +68 -0
- package/dist/classes/features/other/CollectibleItemPoolType.js +75 -0
- package/dist/classes/features/other/CustomHotkeys.js +144 -0
- package/dist/classes/features/other/CustomItemPools.js +128 -0
- package/dist/classes/features/other/CustomPickups.js +118 -0
- package/dist/classes/features/other/CustomStages.js +471 -0
- package/dist/classes/features/other/CustomTrapdoors.js +596 -0
- package/dist/classes/features/other/DebugDisplay.js +699 -0
- package/dist/classes/features/other/DeployJSONRoom.js +301 -0
- package/dist/classes/features/other/DisableAllSound.js +90 -0
- package/dist/classes/features/other/DisableInputs.js +249 -0
- package/dist/classes/features/other/EdenStartingStatsHealth.js +197 -0
- package/dist/classes/features/other/ExtraConsoleCommands.js +292 -0
- package/dist/classes/features/other/FadeInRemover.js +67 -0
- package/dist/classes/features/other/FastReset.js +88 -0
- package/dist/classes/features/other/FlyingDetection.js +64 -0
- package/dist/classes/features/other/ForgottenSwitch.js +43 -0
- package/dist/classes/features/other/ItemPoolDetection.js +187 -0
- package/dist/classes/features/other/ModdedElementDetection.js +399 -0
- package/dist/classes/features/other/ModdedElementSets.js +1251 -0
- package/dist/classes/features/other/NoSirenSteal.js +88 -0
- package/dist/classes/features/other/Pause.js +197 -0
- package/dist/classes/features/other/PersistentEntities.js +168 -0
- package/dist/classes/features/other/PickupIndexCreation.js +229 -0
- package/dist/classes/features/other/PlayerCollectibleTracking.js +102 -0
- package/dist/classes/features/other/PonyDetection.js +86 -0
- package/dist/classes/features/other/PressInput.js +71 -0
- package/dist/classes/features/other/PreventChildEntities.js +60 -0
- package/dist/classes/features/other/PreventGridEntityRespawn.js +159 -0
- package/dist/classes/features/other/RerunDetection.js +69 -0
- package/dist/classes/features/other/RoomClearFrame.js +94 -0
- package/dist/classes/features/other/RoomHistory.js +196 -0
- package/dist/classes/features/other/RunInNFrames.js +323 -0
- package/dist/classes/features/other/RunNextRoom.js +53 -0
- package/dist/classes/features/other/RunNextRun.js +60 -0
- package/dist/classes/features/other/SaveDataManager.js +383 -0
- package/dist/classes/features/other/SpawnRockAltRewards.js +469 -0
- package/dist/classes/features/other/StageHistory.js +244 -0
- package/dist/classes/features/other/StartAmbush.js +62 -0
- package/dist/classes/features/other/TaintedLazarusPlayers.js +115 -0
- package/dist/classes/features/other/UnlockAchievementsDetection.js +60 -0
- package/dist/classes/features/other/customStages/backdrop.js +195 -0
- package/dist/classes/features/other/customStages/constants.js +19 -0
- package/dist/classes/features/other/customStages/gridEntities.js +177 -0
- package/dist/classes/features/other/customStages/shadows.js +67 -0
- package/dist/classes/features/other/customStages/streakText.js +222 -0
- package/dist/classes/features/other/customStages/utils.js +65 -0
- package/dist/classes/features/other/customStages/v.js +27 -0
- package/dist/classes/features/other/customStages/versusScreen.js +227 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +25 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +25 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +23 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +22 -0
- package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +23 -0
- package/dist/classes/features/other/debugDisplay/utils.js +13 -0
- package/dist/classes/features/other/extraConsoleCommands/commands.js +1598 -0
- package/dist/classes/features/other/extraConsoleCommands/subroutines.js +135 -0
- package/dist/classes/features/other/extraConsoleCommands/v.js +30 -0
- package/dist/classes/features/other/saveDataManager/constants.js +4 -0
- package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +106 -0
- package/dist/classes/features/other/saveDataManager/loadFromDisk.js +69 -0
- package/dist/classes/features/other/saveDataManager/restoreDefaults.js +69 -0
- package/dist/classes/features/other/saveDataManager/saveToDisk.js +46 -0
- package/dist/classes/private/CustomCallback.js +59 -0
- package/dist/classes/private/Feature.js +39 -0
- package/dist/core/cachedClasses.js +61 -0
- package/dist/core/constants.js +289 -0
- package/dist/core/constantsFirstLast.js +98 -0
- package/dist/core/constantsVanilla.js +131 -0
- package/dist/core/upgradeMod.js +71 -0
- package/dist/customStageMetadata.json +1 -0
- package/dist/data/itempools.json +16625 -0
- package/dist/decorators.js +21 -0
- package/dist/enums/AmbushType.js +9 -0
- package/dist/enums/CornerType.js +11 -0
- package/dist/enums/HealthType.js +20 -0
- package/dist/enums/ISCFeature.js +65 -0
- package/dist/enums/LadderSubTypeCustom.js +20 -0
- package/dist/enums/ModCallbackCustom.js +2477 -0
- package/dist/enums/MysteriousPaperEffect.js +16 -0
- package/dist/enums/PlayerStat.js +37 -0
- package/dist/enums/PocketItemType.js +13 -0
- package/dist/enums/RockAltType.js +23 -0
- package/dist/enums/SaveDataKey.js +14 -0
- package/dist/enums/SerializationType.js +10 -0
- package/dist/enums/SlotDestructionType.js +22 -0
- package/dist/enums/private/GridEntityTypeCustom.js +10 -0
- package/dist/enums/private/SerializationBrand.js +42 -0
- package/dist/enums/private/StageTravelState.js +13 -0
- package/dist/enums/private/TrapdoorAnimation.js +9 -0
- package/dist/enums/private/UIStreakAnimation.js +10 -0
- package/dist/features.js +150 -0
- package/dist/functions/ambush.js +26 -0
- package/dist/functions/array.js +586 -0
- package/dist/functions/arrayLua.js +81 -0
- package/dist/functions/benchmark.js +36 -0
- package/dist/functions/bitSet128.js +64 -0
- package/dist/functions/bitwise.js +82 -0
- package/dist/functions/bombs.js +14 -0
- package/dist/functions/bosses.js +238 -0
- package/dist/functions/cards.js +164 -0
- package/dist/functions/challenges.js +117 -0
- package/dist/functions/characters.js +182 -0
- package/dist/functions/charge.js +251 -0
- package/dist/functions/chargeBar.js +54 -0
- package/dist/functions/collectibleTag.js +24 -0
- package/dist/functions/collectibles.js +581 -0
- package/dist/functions/color.js +88 -0
- package/dist/functions/console.js +18 -0
- package/dist/functions/curses.js +37 -0
- package/dist/functions/debugFunctions.js +108 -0
- package/dist/functions/decorators.js +113 -0
- package/dist/functions/deepCopy.js +406 -0
- package/dist/functions/deepCopyTests.js +361 -0
- package/dist/functions/dimensions.js +30 -0
- package/dist/functions/direction.js +78 -0
- package/dist/functions/doors.js +524 -0
- package/dist/functions/easing.js +327 -0
- package/dist/functions/effects.js +14 -0
- package/dist/functions/emptyRoom.js +79 -0
- package/dist/functions/entities.js +529 -0
- package/dist/functions/entitiesSpecific.js +582 -0
- package/dist/functions/entityTypes.js +9 -0
- package/dist/functions/enums.js +244 -0
- package/dist/functions/external.js +59 -0
- package/dist/functions/familiars.js +136 -0
- package/dist/functions/flag.js +146 -0
- package/dist/functions/frames.js +166 -0
- package/dist/functions/globals.js +291 -0
- package/dist/functions/gridEntities.js +990 -0
- package/dist/functions/gridEntitiesSpecific.js +456 -0
- package/dist/functions/gridIndex.js +35 -0
- package/dist/functions/hash.js +75 -0
- package/dist/functions/hex.js +57 -0
- package/dist/functions/input.js +185 -0
- package/dist/functions/isaacAPIClass.js +157 -0
- package/dist/functions/itemPool.js +118 -0
- package/dist/functions/jsonHelpers.js +73 -0
- package/dist/functions/jsonRoom.js +184 -0
- package/dist/functions/kColor.js +89 -0
- package/dist/functions/language.js +16 -0
- package/dist/functions/level.js +66 -0
- package/dist/functions/levelGrid.js +497 -0
- package/dist/functions/log.js +86 -0
- package/dist/functions/logEntities.js +308 -0
- package/dist/functions/logMisc.js +510 -0
- package/dist/functions/map.js +121 -0
- package/dist/functions/math.js +149 -0
- package/dist/functions/merge.js +159 -0
- package/dist/functions/mergeTests.js +313 -0
- package/dist/functions/minimap.js +204 -0
- package/dist/functions/modFeatures.js +39 -0
- package/dist/functions/newArray.js +30 -0
- package/dist/functions/nextStage.js +169 -0
- package/dist/functions/npcDataStructures.js +146 -0
- package/dist/functions/npcs.js +132 -0
- package/dist/functions/pickupVariants.js +63 -0
- package/dist/functions/pickups.js +168 -0
- package/dist/functions/pickupsSpecific.js +376 -0
- package/dist/functions/pills.js +200 -0
- package/dist/functions/playerCenter.js +53 -0
- package/dist/functions/playerCollectibles.js +300 -0
- package/dist/functions/playerDataStructures.js +145 -0
- package/dist/functions/playerEffects.js +63 -0
- package/dist/functions/playerHealth.js +604 -0
- package/dist/functions/playerIndex.js +186 -0
- package/dist/functions/playerTrinkets.js +149 -0
- package/dist/functions/players.js +471 -0
- package/dist/functions/pocketItems.js +165 -0
- package/dist/functions/positionVelocity.js +158 -0
- package/dist/functions/pressurePlate.js +26 -0
- package/dist/functions/projectiles.js +57 -0
- package/dist/functions/random.js +90 -0
- package/dist/functions/readOnly.js +33 -0
- package/dist/functions/render.js +36 -0
- package/dist/functions/revive.js +151 -0
- package/dist/functions/rng.js +140 -0
- package/dist/functions/rockAlt.js +50 -0
- package/dist/functions/roomData.js +155 -0
- package/dist/functions/roomGrid.js +97 -0
- package/dist/functions/roomShape.js +143 -0
- package/dist/functions/roomShapeWalls.js +187 -0
- package/dist/functions/roomTransition.js +43 -0
- package/dist/functions/rooms.js +782 -0
- package/dist/functions/run.js +121 -0
- package/dist/functions/seeds.js +22 -0
- package/dist/functions/serialization.js +98 -0
- package/dist/functions/set.js +215 -0
- package/dist/functions/slots.js +41 -0
- package/dist/functions/sort.js +158 -0
- package/dist/functions/sound.js +45 -0
- package/dist/functions/spawnCollectible.js +112 -0
- package/dist/functions/sprites.js +130 -0
- package/dist/functions/stage.js +540 -0
- package/dist/functions/stats.js +104 -0
- package/dist/functions/storyBosses.js +63 -0
- package/dist/functions/string.js +194 -0
- package/dist/functions/table.js +162 -0
- package/dist/functions/tears.js +128 -0
- package/dist/functions/transformations.js +89 -0
- package/dist/functions/trinketGive.js +145 -0
- package/dist/functions/trinkets.js +213 -0
- package/dist/functions/tstlClass.js +97 -0
- package/dist/functions/types.js +225 -0
- package/dist/functions/ui.js +148 -0
- package/dist/functions/utils.d.ts +2 -0
- package/dist/functions/utils.d.ts.map +1 -1
- package/dist/functions/utils.js +195 -0
- package/dist/functions/utils.lua +4 -1
- package/dist/functions/vector.js +150 -0
- package/dist/functions/versusScreen.js +58 -0
- package/dist/functions/weighted.js +57 -0
- package/dist/index.js +219 -0
- package/dist/index.rollup.d.ts +2 -0
- package/dist/indexLua.js +220 -0
- package/dist/interfaces/ChargeBarSprites.js +2 -0
- package/dist/interfaces/Corner.js +2 -0
- package/dist/interfaces/CustomStageTSConfig.js +2 -0
- package/dist/interfaces/GridEntityCustomData.js +2 -0
- package/dist/interfaces/JSONRoomsFile.js +2 -0
- package/dist/interfaces/PlayerHealth.js +2 -0
- package/dist/interfaces/PlayerStats.js +4 -0
- package/dist/interfaces/PocketItemDescription.js +2 -0
- package/dist/interfaces/RoomDescription.js +2 -0
- package/dist/interfaces/SaveData.js +98 -0
- package/dist/interfaces/StageHistoryEntry.js +2 -0
- package/dist/interfaces/TSTLClassMetatable.js +2 -0
- package/dist/interfaces/TrinketSituation.js +2 -0
- package/dist/interfaces/private/AddCallbackParametersCustom.js +4 -0
- package/dist/interfaces/private/CustomStage.js +2 -0
- package/dist/interfaces/private/CustomTrapdoorDescription.js +2 -0
- package/dist/interfaces/private/ModUpgradedInterface.js +2 -0
- package/dist/isaacscript-common.lua +5 -2
- package/dist/maps/PHDPillConversionsMap.js +23 -0
- package/dist/maps/cardNameToTypeMap.js +211 -0
- package/dist/maps/characterNameToTypeMap.js +91 -0
- package/dist/maps/collectibleNameToTypeMap.js +19 -0
- package/dist/maps/defaultPlayerStatMap.js +17 -0
- package/dist/maps/entityTypeVariantToBossIDMap.js +11 -0
- package/dist/maps/falsePHDPillConversionsMap.js +37 -0
- package/dist/maps/gridEntityTypeToBrokenStateMap.js +32 -0
- package/dist/maps/gridEntityXMLMap.js +133 -0
- package/dist/maps/itemPoolTypeToItemPoolName.js +38 -0
- package/dist/maps/keyboardToStringMap.js +71 -0
- package/dist/maps/pillNameToEffectMap.js +91 -0
- package/dist/maps/roomNameToTypeMap.js +43 -0
- package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +17 -0
- package/dist/maps/transformationNameToPlayerFormMap.js +35 -0
- package/dist/maps/trinketNameToTypeMap.js +19 -0
- package/dist/objects/LRoomShapeToRectangles.js +43 -0
- package/dist/objects/backdropTypeToRockAltType.js +68 -0
- package/dist/objects/batteryNames.js +13 -0
- package/dist/objects/bombNames.js +17 -0
- package/dist/objects/bossIDToEntityTypeVariant.js +228 -0
- package/dist/objects/bossNamePNGFileNames.js +120 -0
- package/dist/objects/bossNames.js +119 -0
- package/dist/objects/bossPortraitPNGFileNames.js +123 -0
- package/dist/objects/cardDescriptions.js +106 -0
- package/dist/objects/cardNames.js +106 -0
- package/dist/objects/challengeBosses.js +60 -0
- package/dist/objects/challengeCharacters.js +58 -0
- package/dist/objects/challengeCollectibleTypes.js +255 -0
- package/dist/objects/challengeNames.js +54 -0
- package/dist/objects/challengeTrinketType.js +58 -0
- package/dist/objects/characterDamageMultipliers.js +49 -0
- package/dist/objects/characterNames.js +48 -0
- package/dist/objects/characterSpritePNGFileNames.js +50 -0
- package/dist/objects/characterStartingCollectibleTypes.js +105 -0
- package/dist/objects/characterStartingTrinketTypes.js +90 -0
- package/dist/objects/chestNames.js +20 -0
- package/dist/objects/coinNames.js +16 -0
- package/dist/objects/coinSubTypeToValue.js +15 -0
- package/dist/objects/collectibleDescriptions.js +742 -0
- package/dist/objects/collectibleNames.js +745 -0
- package/dist/objects/colors.js +26 -0
- package/dist/objects/directionNames.js +11 -0
- package/dist/objects/directionToDegrees.js +11 -0
- package/dist/objects/directionToMoveAction.js +11 -0
- package/dist/objects/directionToShootAction.js +11 -0
- package/dist/objects/directionToVector.js +13 -0
- package/dist/objects/doorSlotFlagToDoorSlot.js +15 -0
- package/dist/objects/doorSlotToDirection.js +15 -0
- package/dist/objects/doorSlotToDoorSlotFlag.js +15 -0
- package/dist/objects/gridEntityTypeToANM2Name.js +37 -0
- package/dist/objects/heartNames.js +21 -0
- package/dist/objects/isaacAPIClassTypeToBrand.js +12 -0
- package/dist/objects/isaacAPIClassTypeToFunctions.js +46 -0
- package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +57 -0
- package/dist/objects/kColors.js +27 -0
- package/dist/objects/keyNames.js +13 -0
- package/dist/objects/languageNames.js +13 -0
- package/dist/objects/oppositeDoorSlots.js +15 -0
- package/dist/objects/pillEffectClasses.js +57 -0
- package/dist/objects/pillEffectNames.js +57 -0
- package/dist/objects/pillEffectTypeToPillEffects.js +23 -0
- package/dist/objects/pillEffectTypes.js +57 -0
- package/dist/objects/playerNamePNGFileNames.js +57 -0
- package/dist/objects/playerPortraitPNGFileNames.js +54 -0
- package/dist/objects/roomShapeBounds.js +48 -0
- package/dist/objects/roomShapeCorners.js +330 -0
- package/dist/objects/roomShapeLayoutSizes.js +41 -0
- package/dist/objects/roomShapeToBottomRightPosition.js +25 -0
- package/dist/objects/roomShapeToDoorSlotCoordinates.js +111 -0
- package/dist/objects/roomShapeToDoorSlots.js +72 -0
- package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +118 -0
- package/dist/objects/roomShapeToGridWidth.js +20 -0
- package/dist/objects/roomShapeToTopLeftPosition.js +26 -0
- package/dist/objects/roomShapeVolumes.js +32 -0
- package/dist/objects/roomTypeNames.js +35 -0
- package/dist/objects/roomTypeSpecialGotoPrefixes.js +35 -0
- package/dist/objects/sackNames.js +11 -0
- package/dist/objects/slotNames.js +26 -0
- package/dist/objects/stageIDNames.js +43 -0
- package/dist/objects/stageToMusic.js +91 -0
- package/dist/objects/stageToStageID.js +117 -0
- package/dist/objects/stageTypeSuffixes.js +14 -0
- package/dist/objects/transformationNames.js +20 -0
- package/dist/objects/trinketDescriptions.js +199 -0
- package/dist/objects/trinketNames.js +202 -0
- package/dist/objects/versusScreenBackgroundColors.js +46 -0
- package/dist/objects/versusScreenDirtSpotColors.js +46 -0
- package/dist/patchErrorFunctions.js +65 -0
- package/dist/serialization.js +21 -0
- package/dist/sets/LRoomShapesSet.js +11 -0
- package/dist/sets/bigRoomShapesSet.js +14 -0
- package/dist/sets/bossSets.js +465 -0
- package/dist/sets/charactersThatStartWithAnActiveItemSet.js +18 -0
- package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +9 -0
- package/dist/sets/charactersWithFreeDevilDealsSet.js +6 -0
- package/dist/sets/charactersWithNoRedHeartsSet.js +19 -0
- package/dist/sets/charactersWithNoSoulHeartsSet.js +16 -0
- package/dist/sets/consoleCommandsSet.js +64 -0
- package/dist/sets/entitiesWithArmorSet.js +59 -0
- package/dist/sets/familiarsThatShootPlayerTearsSet.js +15 -0
- package/dist/sets/itemConfigCardTypesForCards.js +14 -0
- package/dist/sets/lostStyleCharactersSet.js +16 -0
- package/dist/sets/mineShaftRoomSubTypesSet.js +12 -0
- package/dist/sets/narrowRoomShapesSet.js +11 -0
- package/dist/sets/poopGridEntityXMLTypesSet.js +16 -0
- package/dist/sets/redHeartSubTypesSet.js +10 -0
- package/dist/sets/repentanceBossIDsSet.js +30 -0
- package/dist/sets/sinEntityTypesSet.js +14 -0
- package/dist/sets/singleUseActiveCollectibleTypesSet.js +15 -0
- package/dist/shaderCrashFix.js +24 -0
- package/dist/shouldFire.js +226 -0
- package/dist/types/AddSubtract.js +2 -0
- package/dist/types/AllButFirst.js +2 -0
- package/dist/types/AllButLast.js +2 -0
- package/dist/types/AnyClass.js +2 -0
- package/dist/types/AnyEntity.js +2 -0
- package/dist/types/AnyFunction.js +2 -0
- package/dist/types/AnyGridEntity.js +2 -0
- package/dist/types/CompositionTypeSatisfiesEnum.js +11 -0
- package/dist/types/ConversionHeartSubType.js +2 -0
- package/dist/types/Decrement.js +2 -0
- package/dist/types/ERange.js +2 -0
- package/dist/types/EntityID.js +2 -0
- package/dist/types/FunctionTuple.js +2 -0
- package/dist/types/GridEntityID.js +2 -0
- package/dist/types/HasFunction.js +2 -0
- package/dist/types/IRange.js +2 -0
- package/dist/types/Immutable.js +2 -0
- package/dist/types/Increment.js +2 -0
- package/dist/types/LowercaseKeys.js +2 -0
- package/dist/types/NaturalNumbersLessThan.js +2 -0
- package/dist/types/NaturalNumbersLessThanOrEqualTo.js +2 -0
- package/dist/types/PickingUpItem.js +44 -0
- package/dist/types/PickupIndex.js +2 -0
- package/dist/types/PlayerIndex.js +2 -0
- package/dist/types/PossibleStatType.js +2 -0
- package/dist/types/PublicInterface.js +2 -0
- package/dist/types/ReadonlyMap.js +6 -0
- package/dist/types/ReadonlyRecord.js +2 -0
- package/dist/types/ReadonlySet.js +6 -0
- package/dist/types/StartsWithLowercase.js +2 -0
- package/dist/types/StartsWithUppercase.js +2 -0
- package/dist/types/TSTLClass.js +2 -0
- package/dist/types/Tuple.js +2 -0
- package/dist/types/TupleKeys.js +2 -0
- package/dist/types/TupleToIntersection.js +2 -0
- package/dist/types/TupleToUnion.js +2 -0
- package/dist/types/TupleWithLengthBetween.js +22 -0
- package/dist/types/TupleWithMaxLength.js +27 -0
- package/dist/types/UnionToIntersection.js +2 -0
- package/dist/types/UppercaseKeys.js +2 -0
- package/dist/types/WeightedArray.js +2 -0
- package/dist/types/WidenLiteral.js +2 -0
- package/dist/types/Writable.js +2 -0
- package/dist/types/private/CallbackTuple.js +2 -0
- package/dist/types/private/ModUpgradedWithFeatures.js +2 -0
- package/package.json +1 -1
- package/src/functions/utils.ts +4 -1
- package/src/lib/jsonLua.js +701 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.DeployJSONRoom = void 0;
|
|
10
|
+
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
11
|
+
const cachedEnumValues_1 = require("../../../arrays/cachedEnumValues");
|
|
12
|
+
const cachedClasses_1 = require("../../../core/cachedClasses");
|
|
13
|
+
const decorators_1 = require("../../../decorators");
|
|
14
|
+
const ISCFeature_1 = require("../../../enums/ISCFeature");
|
|
15
|
+
const emptyRoom_1 = require("../../../functions/emptyRoom");
|
|
16
|
+
const entities_1 = require("../../../functions/entities");
|
|
17
|
+
const gridEntities_1 = require("../../../functions/gridEntities");
|
|
18
|
+
const jsonRoom_1 = require("../../../functions/jsonRoom");
|
|
19
|
+
const log_1 = require("../../../functions/log");
|
|
20
|
+
const rng_1 = require("../../../functions/rng");
|
|
21
|
+
const roomGrid_1 = require("../../../functions/roomGrid");
|
|
22
|
+
const rooms_1 = require("../../../functions/rooms");
|
|
23
|
+
const spawnCollectible_1 = require("../../../functions/spawnCollectible");
|
|
24
|
+
const types_1 = require("../../../functions/types");
|
|
25
|
+
const utils_1 = require("../../../functions/utils");
|
|
26
|
+
const ReadonlySet_1 = require("../../../types/ReadonlySet");
|
|
27
|
+
const Feature_1 = require("../../private/Feature");
|
|
28
|
+
const GRID_ENTITY_XML_TYPE_SET = new ReadonlySet_1.ReadonlySet(cachedEnumValues_1.GRID_ENTITY_XML_TYPE_VALUES);
|
|
29
|
+
class DeployJSONRoom extends Feature_1.Feature {
|
|
30
|
+
preventGridEntityRespawn;
|
|
31
|
+
/** @internal */
|
|
32
|
+
constructor(preventGridEntityRespawn) {
|
|
33
|
+
super();
|
|
34
|
+
this.featuresUsed = [ISCFeature_1.ISCFeature.PREVENT_GRID_ENTITY_RESPAWN];
|
|
35
|
+
this.preventGridEntityRespawn = preventGridEntityRespawn;
|
|
36
|
+
}
|
|
37
|
+
spawnAllEntities(jsonRoom, rng, verbose = false) {
|
|
38
|
+
let shouldUnclearRoom = false;
|
|
39
|
+
for (const jsonSpawn of jsonRoom.spawn) {
|
|
40
|
+
const xString = jsonSpawn.$.x;
|
|
41
|
+
const x = (0, types_1.parseIntSafe)(xString);
|
|
42
|
+
(0, utils_1.assertDefined)(x, `Failed to convert the following x coordinate to an integer (for a spawn): ${xString}`);
|
|
43
|
+
const yString = jsonSpawn.$.y;
|
|
44
|
+
const y = (0, types_1.parseIntSafe)(yString);
|
|
45
|
+
(0, utils_1.assertDefined)(y, `Failed to convert the following y coordinate to an integer (for a spawn): ${yString}`);
|
|
46
|
+
const jsonEntity = (0, jsonRoom_1.getRandomJSONEntity)(jsonSpawn.entity, rng);
|
|
47
|
+
const entityTypeString = jsonEntity.$.type;
|
|
48
|
+
const entityTypeNumber = (0, types_1.parseIntSafe)(entityTypeString);
|
|
49
|
+
(0, utils_1.assertDefined)(entityTypeNumber, `Failed to convert the entity type to an integer: ${entityTypeString}`);
|
|
50
|
+
const variantString = jsonEntity.$.variant;
|
|
51
|
+
const variant = (0, types_1.parseIntSafe)(variantString);
|
|
52
|
+
(0, utils_1.assertDefined)(variant, `Failed to convert the entity variant to an integer: ${variant}`);
|
|
53
|
+
const subTypeString = jsonEntity.$.subtype;
|
|
54
|
+
const subType = (0, types_1.parseIntSafe)(subTypeString);
|
|
55
|
+
(0, utils_1.assertDefined)(subType, `Failed to convert the entity sub-type to an integer: ${subType}`);
|
|
56
|
+
const isGridEntity = GRID_ENTITY_XML_TYPE_SET.has(entityTypeNumber);
|
|
57
|
+
if (isGridEntity) {
|
|
58
|
+
const gridEntityXMLType = entityTypeNumber;
|
|
59
|
+
if (verbose) {
|
|
60
|
+
(0, log_1.log)(`Spawning grid entity ${gridEntityXMLType}.${variant} at: (${x}, ${y})`);
|
|
61
|
+
}
|
|
62
|
+
spawnGridEntityForJSONRoom(gridEntityXMLType, variant, x, y);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const entityType = entityTypeNumber;
|
|
66
|
+
if (verbose) {
|
|
67
|
+
const entityID = (0, entities_1.getEntityIDFromConstituents)(entityType, variant, subType);
|
|
68
|
+
(0, log_1.log)(`Spawning normal entity ${entityID} at: (${x}, ${y})`);
|
|
69
|
+
}
|
|
70
|
+
const entity = this.spawnNormalEntityForJSONRoom(entityType, variant, subType, x, y, rng);
|
|
71
|
+
const npc = entity.ToNPC();
|
|
72
|
+
if (npc !== undefined && npc.CanShutDoors) {
|
|
73
|
+
shouldUnclearRoom = true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// After emptying the room, we manually cleared the room. However, if the room layout contains
|
|
78
|
+
// an battle NPC, then we need to reset the clear state and close the doors again.
|
|
79
|
+
if (shouldUnclearRoom) {
|
|
80
|
+
if (verbose) {
|
|
81
|
+
(0, log_1.log)("Setting the room to be uncleared since there were one or more battle NPCs spawned.");
|
|
82
|
+
}
|
|
83
|
+
(0, rooms_1.setRoomUncleared)();
|
|
84
|
+
}
|
|
85
|
+
else if (verbose) {
|
|
86
|
+
(0, log_1.log)("Leaving the room cleared since there were no battle NPCs spawned.");
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
spawnNormalEntityForJSONRoom(entityType, variant, subType, x, y, rng) {
|
|
90
|
+
const room = cachedClasses_1.game.GetRoom();
|
|
91
|
+
const roomType = room.GetType();
|
|
92
|
+
const position = (0, roomGrid_1.gridCoordinatesToWorldPosition)(x, y);
|
|
93
|
+
const seed = rng.Next();
|
|
94
|
+
let entity;
|
|
95
|
+
if (entityType === isaac_typescript_definitions_1.EntityType.PICKUP &&
|
|
96
|
+
variant === isaac_typescript_definitions_1.PickupVariant.COLLECTIBLE) {
|
|
97
|
+
const collectibleType = (0, types_1.asCollectibleType)(subType);
|
|
98
|
+
const options = roomType === isaac_typescript_definitions_1.RoomType.ANGEL;
|
|
99
|
+
entity = (0, spawnCollectible_1.spawnCollectible)(collectibleType, position, seed, options);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
entity = (0, entities_1.spawnWithSeed)(entityType, variant, subType, position, seed);
|
|
103
|
+
}
|
|
104
|
+
// For some reason, Pitfalls do not spawn with the correct collision classes.
|
|
105
|
+
if (entityType === isaac_typescript_definitions_1.EntityType.PITFALL &&
|
|
106
|
+
variant === isaac_typescript_definitions_1.PitfallVariant.PITFALL) {
|
|
107
|
+
entity.EntityCollisionClass = isaac_typescript_definitions_1.EntityCollisionClass.ENEMIES;
|
|
108
|
+
entity.GridCollisionClass = isaac_typescript_definitions_1.EntityGridCollisionClass.WALLS;
|
|
109
|
+
}
|
|
110
|
+
return entity;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Helper function to deconstruct a vanilla room and set up a custom room in its place.
|
|
114
|
+
* Specifically, this will clear the current room of all entities and grid entities, and then
|
|
115
|
+
* spawn all of the entries and grid entities in the provided JSON room. For this reason, you must
|
|
116
|
+
* be in the actual room in order to use this function.
|
|
117
|
+
*
|
|
118
|
+
* A JSON room is simply an XML file converted to JSON. You can create JSON rooms by using the
|
|
119
|
+
* Basement Renovator room editor to create an XML file, and then convert it to JSON using the
|
|
120
|
+
* `convert-xml-to-json` tool (e.g. `npx convert-xml-to-json my-rooms.xml`).
|
|
121
|
+
*
|
|
122
|
+
* This function is meant to be used in the `POST_NEW_ROOM` callback.
|
|
123
|
+
*
|
|
124
|
+
* For example:
|
|
125
|
+
*
|
|
126
|
+
* ```ts
|
|
127
|
+
*
|
|
128
|
+
* import customRooms from "./customRooms.json";
|
|
129
|
+
*
|
|
130
|
+
* export function postNewRoom(): void {
|
|
131
|
+
* const firstJSONRoom = customRooms.rooms.room[0];
|
|
132
|
+
* deployJSONRoom(firstJSONRoom);
|
|
133
|
+
* }
|
|
134
|
+
* ```
|
|
135
|
+
*
|
|
136
|
+
* If you want to deploy an unseeded room, you must explicitly pass `undefined` to the `seedOrRNG`
|
|
137
|
+
* parameter.
|
|
138
|
+
*
|
|
139
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.DEPLOY_JSON_ROOM`.
|
|
140
|
+
*
|
|
141
|
+
* @param jsonRoom The JSON room to deploy.
|
|
142
|
+
* @param seedOrRNG The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
|
|
143
|
+
* `RNG.Next` method will be called. If `undefined` is provided, it will default
|
|
144
|
+
* to a random seed.
|
|
145
|
+
* @param verbose Optional. If specified, will write entries to the "log.txt" file that describe
|
|
146
|
+
* what the function is doing. Default is false.
|
|
147
|
+
* @public
|
|
148
|
+
*/
|
|
149
|
+
deployJSONRoom(jsonRoom, seedOrRNG, verbose = false) {
|
|
150
|
+
const rng = (0, rng_1.isRNG)(seedOrRNG) ? seedOrRNG : (0, rng_1.newRNG)(seedOrRNG);
|
|
151
|
+
if (verbose) {
|
|
152
|
+
(0, log_1.log)("Starting to empty the room of entities and grid entities.");
|
|
153
|
+
}
|
|
154
|
+
(0, emptyRoom_1.emptyRoom)();
|
|
155
|
+
if (verbose) {
|
|
156
|
+
(0, log_1.log)("Finished emptying the room of entities and grid entities.");
|
|
157
|
+
}
|
|
158
|
+
(0, rooms_1.setRoomCleared)();
|
|
159
|
+
if (verbose) {
|
|
160
|
+
(0, log_1.log)("Starting to spawn all of the new entities and grid entities.");
|
|
161
|
+
}
|
|
162
|
+
this.spawnAllEntities(jsonRoom, rng, verbose);
|
|
163
|
+
if (verbose) {
|
|
164
|
+
(0, log_1.log)("Finished spawning all of the new entities and grid entities.");
|
|
165
|
+
}
|
|
166
|
+
fixPitGraphics();
|
|
167
|
+
this.preventGridEntityRespawn.preventGridEntityRespawn();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
exports.DeployJSONRoom = DeployJSONRoom;
|
|
171
|
+
__decorate([
|
|
172
|
+
decorators_1.Exported
|
|
173
|
+
], DeployJSONRoom.prototype, "deployJSONRoom", null);
|
|
174
|
+
function spawnGridEntityForJSONRoom(gridEntityXMLType, gridEntityXMLVariant, x, y) {
|
|
175
|
+
const room = cachedClasses_1.game.GetRoom();
|
|
176
|
+
const gridEntityTuple = (0, gridEntities_1.convertXMLGridEntityType)(gridEntityXMLType, gridEntityXMLVariant);
|
|
177
|
+
if (gridEntityTuple === undefined) {
|
|
178
|
+
return undefined;
|
|
179
|
+
}
|
|
180
|
+
const [gridEntityType, variant] = gridEntityTuple;
|
|
181
|
+
const position = (0, roomGrid_1.gridCoordinatesToWorldPosition)(x, y);
|
|
182
|
+
const gridIndex = room.GetGridIndex(position);
|
|
183
|
+
const gridEntity = (0, gridEntities_1.spawnGridEntityWithVariant)(gridEntityType, variant, gridIndex);
|
|
184
|
+
if (gridEntity === undefined) {
|
|
185
|
+
return gridEntity;
|
|
186
|
+
}
|
|
187
|
+
// Prevent poops from playing an appear animation, since that is not supposed to normally happen
|
|
188
|
+
// when entering a new room.
|
|
189
|
+
if (gridEntityType === isaac_typescript_definitions_1.GridEntityType.POOP) {
|
|
190
|
+
const sprite = gridEntity.GetSprite();
|
|
191
|
+
sprite.Play("State1", true);
|
|
192
|
+
sprite.SetLastFrame();
|
|
193
|
+
}
|
|
194
|
+
return gridEntity;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* By default, when spawning multiple pits next to each other, the graphics will not "meld"
|
|
198
|
+
* together. Thus, now that all of the entities in the room are spawned, we must iterate over the
|
|
199
|
+
* pits in the room and manually fix their sprites, if necessary.
|
|
200
|
+
*/
|
|
201
|
+
function fixPitGraphics() {
|
|
202
|
+
const room = cachedClasses_1.game.GetRoom();
|
|
203
|
+
const gridWidth = room.GetGridWidth();
|
|
204
|
+
const pitMap = getPitMap();
|
|
205
|
+
for (const [gridIndex, gridEntity] of pitMap) {
|
|
206
|
+
const gridIndexLeft = gridIndex - 1;
|
|
207
|
+
const L = pitMap.has(gridIndexLeft);
|
|
208
|
+
const gridIndexRight = gridIndex + 1;
|
|
209
|
+
const R = pitMap.has(gridIndexRight);
|
|
210
|
+
const gridIndexUp = gridIndex - gridWidth;
|
|
211
|
+
const U = pitMap.has(gridIndexUp);
|
|
212
|
+
const gridIndexDown = gridIndex + gridWidth;
|
|
213
|
+
const D = pitMap.has(gridIndexDown);
|
|
214
|
+
const gridIndexUpLeft = gridIndex - gridWidth - 1;
|
|
215
|
+
const UL = pitMap.has(gridIndexUpLeft);
|
|
216
|
+
const gridIndexUpRight = gridIndex - gridWidth + 1;
|
|
217
|
+
const UR = pitMap.has(gridIndexUpRight);
|
|
218
|
+
const gridIndexDownLeft = gridIndex + gridWidth - 1;
|
|
219
|
+
const DL = pitMap.has(gridIndexDownLeft);
|
|
220
|
+
const gridIndexDownRight = gridIndex + gridWidth + 1;
|
|
221
|
+
const DR = pitMap.has(gridIndexDownRight);
|
|
222
|
+
const pitFrame = getPitFrame(L, R, U, D, UL, UR, DL, DR);
|
|
223
|
+
const sprite = gridEntity.GetSprite();
|
|
224
|
+
sprite.SetFrame(pitFrame);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
function getPitMap() {
|
|
228
|
+
const pitMap = new Map();
|
|
229
|
+
for (const gridEntity of (0, gridEntities_1.getGridEntities)(isaac_typescript_definitions_1.GridEntityType.PIT)) {
|
|
230
|
+
const gridIndex = gridEntity.GetGridIndex();
|
|
231
|
+
pitMap.set(gridIndex, gridEntity);
|
|
232
|
+
}
|
|
233
|
+
return pitMap;
|
|
234
|
+
}
|
|
235
|
+
/** The logic in this function is copied from Basement Renovator. */
|
|
236
|
+
function getPitFrame(L, R, U, D, UL, UR, DL, DR) {
|
|
237
|
+
let F = 0;
|
|
238
|
+
// First, check for bitwise frames. (It works for all combinations of just left/up/right/down.)
|
|
239
|
+
if (L) {
|
|
240
|
+
F |= 1;
|
|
241
|
+
}
|
|
242
|
+
if (U) {
|
|
243
|
+
F |= 2;
|
|
244
|
+
}
|
|
245
|
+
if (R) {
|
|
246
|
+
F |= 4;
|
|
247
|
+
}
|
|
248
|
+
if (D) {
|
|
249
|
+
F |= 8;
|
|
250
|
+
}
|
|
251
|
+
// Then, check for other combinations.
|
|
252
|
+
if (U && L && !UL && !R && !D) {
|
|
253
|
+
F = 17;
|
|
254
|
+
}
|
|
255
|
+
if (U && R && !UR && !L && !D) {
|
|
256
|
+
F = 18;
|
|
257
|
+
}
|
|
258
|
+
if (L && D && !DL && !U && !R) {
|
|
259
|
+
F = 19;
|
|
260
|
+
}
|
|
261
|
+
if (R && D && !DR && !L && !U) {
|
|
262
|
+
F = 20;
|
|
263
|
+
}
|
|
264
|
+
if (L && U && R && D && !UL) {
|
|
265
|
+
F = 21;
|
|
266
|
+
}
|
|
267
|
+
if (L && U && R && D && !UR) {
|
|
268
|
+
F = 22;
|
|
269
|
+
}
|
|
270
|
+
if (U && R && D && !L && !UR) {
|
|
271
|
+
F = 25;
|
|
272
|
+
}
|
|
273
|
+
if (L && U && D && !R && !UL) {
|
|
274
|
+
F = 26;
|
|
275
|
+
}
|
|
276
|
+
if (L && U && R && D && !DL && !DR) {
|
|
277
|
+
F = 24;
|
|
278
|
+
}
|
|
279
|
+
if (L && U && R && D && !UR && !UL) {
|
|
280
|
+
F = 23;
|
|
281
|
+
}
|
|
282
|
+
if (L && U && R && UL && !UR && !D) {
|
|
283
|
+
F = 27;
|
|
284
|
+
}
|
|
285
|
+
if (L && U && R && UR && !UL && !D) {
|
|
286
|
+
F = 28;
|
|
287
|
+
}
|
|
288
|
+
if (L && U && R && !D && !UR && !UL) {
|
|
289
|
+
F = 29;
|
|
290
|
+
}
|
|
291
|
+
if (L && R && D && DL && !U && !DR) {
|
|
292
|
+
F = 30;
|
|
293
|
+
}
|
|
294
|
+
if (L && R && D && DR && !U && !DL) {
|
|
295
|
+
F = 31;
|
|
296
|
+
}
|
|
297
|
+
if (L && R && D && !U && !DL && !DR) {
|
|
298
|
+
F = 32;
|
|
299
|
+
}
|
|
300
|
+
return F;
|
|
301
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.DisableAllSound = void 0;
|
|
10
|
+
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
11
|
+
const cachedClasses_1 = require("../../../core/cachedClasses");
|
|
12
|
+
const decorators_1 = require("../../../decorators");
|
|
13
|
+
const sound_1 = require("../../../functions/sound");
|
|
14
|
+
const Feature_1 = require("../../private/Feature");
|
|
15
|
+
const v = {
|
|
16
|
+
run: {
|
|
17
|
+
disableSoundSet: new Set(),
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
class DisableAllSound extends Feature_1.Feature {
|
|
21
|
+
/** @internal */
|
|
22
|
+
v = v;
|
|
23
|
+
musicWasEnabled = false;
|
|
24
|
+
/** @internal */
|
|
25
|
+
constructor() {
|
|
26
|
+
super();
|
|
27
|
+
this.callbacksUsed = [
|
|
28
|
+
// 2
|
|
29
|
+
[isaac_typescript_definitions_1.ModCallback.POST_RENDER, this.postRender],
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
// ModCallback.POST_RENDER (2)
|
|
33
|
+
postRender = () => {
|
|
34
|
+
if (v.run.disableSoundSet.size === 0) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
(0, sound_1.stopAllSoundEffects)();
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Helper function to stop muting all sound effects and music.
|
|
41
|
+
*
|
|
42
|
+
* Use this function to set things back to normal after having used `disableAllSounds`.
|
|
43
|
+
*
|
|
44
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.DISABLE_ALL_SOUND`.
|
|
45
|
+
*
|
|
46
|
+
* @param key The name of the mod feature that is requesting the enable/disable. For example, if
|
|
47
|
+
* this was part of the code for a custom enemy called "Super Gaper", then you could
|
|
48
|
+
* use a key of "SuperGaper". The name is necessary so that multiple mod features can
|
|
49
|
+
* work in tandem.
|
|
50
|
+
*/
|
|
51
|
+
enableAllSound(key) {
|
|
52
|
+
if (!v.run.disableSoundSet.has(key)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
v.run.disableSoundSet.delete(key);
|
|
56
|
+
if (v.run.disableSoundSet.size === 0 && this.musicWasEnabled) {
|
|
57
|
+
cachedClasses_1.musicManager.Enable();
|
|
58
|
+
}
|
|
59
|
+
// Stop all sound effects that were initialized prior to enabling sounds (in case there was a
|
|
60
|
+
// sound played played previously on this render frame).
|
|
61
|
+
(0, sound_1.stopAllSoundEffects)();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Helper function to disable all sound effects and music (by constantly musting them).
|
|
65
|
+
*
|
|
66
|
+
* Use the `enableAllSounds` helper function to set things back to normal.
|
|
67
|
+
*
|
|
68
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.DISABLE_ALL_SOUND`.
|
|
69
|
+
*
|
|
70
|
+
* @param key The name of the mod feature that is requesting the enable/disable. For example, if
|
|
71
|
+
* this was part of the code for a custom enemy called "Super Gaper", then you could
|
|
72
|
+
* use a key of "SuperGaper". The name is necessary so that multiple mod features can
|
|
73
|
+
* work in tandem.
|
|
74
|
+
*/
|
|
75
|
+
disableAllSound(key) {
|
|
76
|
+
if (v.run.disableSoundSet.size === 0) {
|
|
77
|
+
this.musicWasEnabled = cachedClasses_1.musicManager.IsEnabled();
|
|
78
|
+
}
|
|
79
|
+
v.run.disableSoundSet.add(key);
|
|
80
|
+
// Stop all sound effects that were initialized prior to disabling sounds.
|
|
81
|
+
(0, sound_1.stopAllSoundEffects)();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.DisableAllSound = DisableAllSound;
|
|
85
|
+
__decorate([
|
|
86
|
+
decorators_1.Exported
|
|
87
|
+
], DisableAllSound.prototype, "enableAllSound", null);
|
|
88
|
+
__decorate([
|
|
89
|
+
decorators_1.Exported
|
|
90
|
+
], DisableAllSound.prototype, "disableAllSound", null);
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.DisableInputs = void 0;
|
|
10
|
+
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
11
|
+
const decorators_1 = require("../../../decorators");
|
|
12
|
+
const input_1 = require("../../../functions/input");
|
|
13
|
+
const ReadonlySet_1 = require("../../../types/ReadonlySet");
|
|
14
|
+
const Feature_1 = require("../../private/Feature");
|
|
15
|
+
const v = {
|
|
16
|
+
run: {
|
|
17
|
+
/**
|
|
18
|
+
* Glowing Hour Glass support is disabled by default since it can cause bugs with extra-gameplay
|
|
19
|
+
* features. (For example, whether the player should be able to move is not something that
|
|
20
|
+
* should be reset by the Glowing Hour Glass.)
|
|
21
|
+
*/
|
|
22
|
+
__ignoreGlowingHourGlass: true,
|
|
23
|
+
/** Indexed by the requesting feature key. */
|
|
24
|
+
disableInputs: new Map(),
|
|
25
|
+
/** Indexed by the requesting feature key. */
|
|
26
|
+
enableAllInputsWithBlacklistMap: new Map(),
|
|
27
|
+
/** Indexed by the requesting feature key. */
|
|
28
|
+
disableAllInputsWithWhitelistMap: new Map(),
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
class DisableInputs extends Feature_1.Feature {
|
|
32
|
+
/** @internal */
|
|
33
|
+
v = v;
|
|
34
|
+
/** @internal */
|
|
35
|
+
constructor() {
|
|
36
|
+
super();
|
|
37
|
+
this.callbacksUsed = [
|
|
38
|
+
// 13
|
|
39
|
+
[
|
|
40
|
+
isaac_typescript_definitions_1.ModCallback.INPUT_ACTION,
|
|
41
|
+
this.isActionPressed,
|
|
42
|
+
[isaac_typescript_definitions_1.InputHook.IS_ACTION_PRESSED], // 0
|
|
43
|
+
],
|
|
44
|
+
// 13
|
|
45
|
+
[
|
|
46
|
+
isaac_typescript_definitions_1.ModCallback.INPUT_ACTION,
|
|
47
|
+
this.isActionTriggered,
|
|
48
|
+
[isaac_typescript_definitions_1.InputHook.IS_ACTION_TRIGGERED], // 1
|
|
49
|
+
],
|
|
50
|
+
// 13
|
|
51
|
+
[
|
|
52
|
+
isaac_typescript_definitions_1.ModCallback.INPUT_ACTION,
|
|
53
|
+
this.getActionValue,
|
|
54
|
+
[isaac_typescript_definitions_1.InputHook.GET_ACTION_VALUE], // 2
|
|
55
|
+
],
|
|
56
|
+
];
|
|
57
|
+
}
|
|
58
|
+
// InputHook.IS_ACTION_PRESSED (0)
|
|
59
|
+
isActionPressed = (_entity, _inputHook, buttonAction) => this.getReturnValue(buttonAction, true);
|
|
60
|
+
// InputHook.IS_ACTION_TRIGGERED (1)
|
|
61
|
+
isActionTriggered = (_entity, _inputHook, buttonAction) => this.getReturnValue(buttonAction, true);
|
|
62
|
+
// InputHook.GET_ACTION_VALUE (2)
|
|
63
|
+
getActionValue = (_entity, _inputHook, buttonAction) => this.getReturnValue(buttonAction, false);
|
|
64
|
+
getReturnValue(buttonAction, booleanCallback) {
|
|
65
|
+
const disableValue = booleanCallback ? false : 0;
|
|
66
|
+
for (const blacklist of v.run.disableInputs.values()) {
|
|
67
|
+
if (blacklist.has(buttonAction)) {
|
|
68
|
+
return disableValue;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
for (const whitelist of v.run.disableAllInputsWithWhitelistMap.values()) {
|
|
72
|
+
if (!whitelist.has(buttonAction)) {
|
|
73
|
+
return disableValue;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
for (const blacklist of v.run.enableAllInputsWithBlacklistMap.values()) {
|
|
77
|
+
if (blacklist.has(buttonAction)) {
|
|
78
|
+
return disableValue;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Helper function to check if the `ISCFeature.DISABLE_INPUTS` feature is turned on in some
|
|
85
|
+
* capacity.
|
|
86
|
+
*
|
|
87
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.DISABLE_INPUTS`.
|
|
88
|
+
*
|
|
89
|
+
* @public
|
|
90
|
+
*/
|
|
91
|
+
areInputsEnabled() {
|
|
92
|
+
return (v.run.disableInputs.size === 0 &&
|
|
93
|
+
v.run.enableAllInputsWithBlacklistMap.size === 0 &&
|
|
94
|
+
v.run.disableAllInputsWithWhitelistMap.size === 0);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Helper function to enable all inputs. Use this function to set things back to normal after
|
|
98
|
+
* having used one of the other helper functions to disable inputs.
|
|
99
|
+
*
|
|
100
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.DISABLE_INPUTS`.
|
|
101
|
+
*
|
|
102
|
+
* @param key The name of the mod feature that is requesting the enable/disable. For example, if
|
|
103
|
+
* this was part of the code for a custom enemy called "Super Gaper", then you could
|
|
104
|
+
* use a key of "SuperGaper". The name is necessary so that multiple mod features can
|
|
105
|
+
* work in tandem.
|
|
106
|
+
* @public
|
|
107
|
+
*/
|
|
108
|
+
enableAllInputs(key) {
|
|
109
|
+
v.run.disableAllInputsWithWhitelistMap.delete(key);
|
|
110
|
+
v.run.enableAllInputsWithBlacklistMap.delete(key);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Helper function to disable specific inputs, like opening the console.
|
|
114
|
+
*
|
|
115
|
+
* This function is variadic, meaning that you can specify as many inputs as you want to disable.
|
|
116
|
+
* (To disable all inputs, see the `disableAllInputs` function.
|
|
117
|
+
*
|
|
118
|
+
* Use the `enableAllInputs` helper function to set things back to normal.
|
|
119
|
+
*
|
|
120
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.DISABLE_INPUTS`.
|
|
121
|
+
*
|
|
122
|
+
* @param key The name of the mod feature that is requesting the enable/disable. For example, if
|
|
123
|
+
* this was part of the code for a custom enemy called "Super Gaper", then you could
|
|
124
|
+
* use a key of "SuperGaper". The name is necessary so that multiple mod features can
|
|
125
|
+
* work in tandem.
|
|
126
|
+
* @param buttonActions An array of the actions to action.
|
|
127
|
+
* @public
|
|
128
|
+
*/
|
|
129
|
+
disableInputs(key, ...buttonActions) {
|
|
130
|
+
const buttonActionsSet = new ReadonlySet_1.ReadonlySet(buttonActions);
|
|
131
|
+
v.run.disableInputs.set(key, buttonActionsSet);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Helper function to disable all inputs. This is useful because `EntityPlayer.ControlsEnabled`
|
|
135
|
+
* can be changed by the game under certain conditions.
|
|
136
|
+
*
|
|
137
|
+
* Use the `enableAllInputs` helper function to set things back to normal.
|
|
138
|
+
*
|
|
139
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.DISABLE_INPUTS`.
|
|
140
|
+
*
|
|
141
|
+
* @param key The name of the mod feature that is requesting the enable/disable. For example, if
|
|
142
|
+
* this was part of the code for a custom enemy called "Super Gaper", then you could
|
|
143
|
+
* use a key of "SuperGaper". The name is necessary so that multiple mod features can
|
|
144
|
+
* work in tandem.
|
|
145
|
+
* @public
|
|
146
|
+
*/
|
|
147
|
+
disableAllInputs(key) {
|
|
148
|
+
v.run.disableAllInputsWithWhitelistMap.set(key, new ReadonlySet_1.ReadonlySet());
|
|
149
|
+
v.run.enableAllInputsWithBlacklistMap.delete(key);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Helper function to enable all inputs besides the ones provided. This is useful because
|
|
153
|
+
* `EntityPlayer.ControlsEnabled` can be changed by the game under certain conditions.
|
|
154
|
+
*
|
|
155
|
+
* Use the `enableAllInputs` helper function to set things back to normal.
|
|
156
|
+
*
|
|
157
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.DISABLE_INPUTS`.
|
|
158
|
+
*
|
|
159
|
+
* @param key The name of the mod feature that is requesting the enable/disable. For example, if
|
|
160
|
+
* this was part of the code for a custom enemy called "Super Gaper", then you could
|
|
161
|
+
* use a key of "SuperGaper". The name is necessary so that multiple mod features can
|
|
162
|
+
* work in tandem.
|
|
163
|
+
* @param blacklist A set of ButtonActions to disallow.
|
|
164
|
+
* @public
|
|
165
|
+
*/
|
|
166
|
+
enableAllInputsExceptFor(key, blacklist) {
|
|
167
|
+
v.run.disableAllInputsWithWhitelistMap.delete(key);
|
|
168
|
+
v.run.enableAllInputsWithBlacklistMap.set(key, blacklist);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Helper function to disable all inputs besides the ones provided. This is useful because
|
|
172
|
+
* `EntityPlayer.ControlsEnabled` can be changed by the game under certain conditions.
|
|
173
|
+
*
|
|
174
|
+
* Use the `enableAllInputs` helper function to set things back to normal.
|
|
175
|
+
*
|
|
176
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.DISABLE_INPUTS`.
|
|
177
|
+
*
|
|
178
|
+
* @param key The name of the mod feature that is requesting the enable/disable. For example, if
|
|
179
|
+
* this was part of the code for a custom enemy called "Super Gaper", then you could
|
|
180
|
+
* use a key of "SuperGaper". The name is necessary so that multiple mod features can
|
|
181
|
+
* work in tandem.
|
|
182
|
+
* @param whitelist A set of ButtonActions to allow.
|
|
183
|
+
* @public
|
|
184
|
+
*/
|
|
185
|
+
disableAllInputsExceptFor(key, whitelist) {
|
|
186
|
+
v.run.disableAllInputsWithWhitelistMap.set(key, whitelist);
|
|
187
|
+
v.run.enableAllInputsWithBlacklistMap.delete(key);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Helper function to disable only the inputs used for moving the character (or moving the cursor
|
|
191
|
+
* in the UI). This is useful because `EntityPlayer.ControlsEnabled` can be changed by the game
|
|
192
|
+
* under certain conditions.
|
|
193
|
+
*
|
|
194
|
+
* Use the `enableAllInputs` helper function to set things back to normal.
|
|
195
|
+
*
|
|
196
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.DISABLE_INPUTS`.
|
|
197
|
+
*
|
|
198
|
+
* @param key The name of the mod feature that is requesting the enable/disable. For example, if
|
|
199
|
+
* this was part of the code for a custom enemy called "Super Gaper", then you could
|
|
200
|
+
* use a key of "SuperGaper". The name is necessary so that multiple mod features can
|
|
201
|
+
* work in tandem.
|
|
202
|
+
* @public
|
|
203
|
+
*/
|
|
204
|
+
disableMovementInputs(key) {
|
|
205
|
+
this.enableAllInputsExceptFor(key, input_1.MOVEMENT_BUTTON_ACTIONS_SET);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Helper function to disable only the inputs used for shooting tears. This is useful because
|
|
209
|
+
* `EntityPlayer.ControlsEnabled` can be changed by the game under certain conditions.
|
|
210
|
+
*
|
|
211
|
+
* Use the `enableAllInputs` helper function to set things back to normal.
|
|
212
|
+
*
|
|
213
|
+
* In order to use this function, you must upgrade your mod with `ISCFeature.DISABLE_INPUTS`.
|
|
214
|
+
*
|
|
215
|
+
* @param key The name of the mod feature that is requesting the enable/disable. For example, if
|
|
216
|
+
* this was part of the code for a custom enemy called "Super Gaper", then you could
|
|
217
|
+
* use a key of "SuperGaper". The name is necessary so that multiple mod features can
|
|
218
|
+
* work in tandem.
|
|
219
|
+
* @public
|
|
220
|
+
*/
|
|
221
|
+
disableShootingInputs(key) {
|
|
222
|
+
this.enableAllInputsExceptFor(key, input_1.SHOOTING_BUTTON_ACTIONS_SET);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
exports.DisableInputs = DisableInputs;
|
|
226
|
+
__decorate([
|
|
227
|
+
decorators_1.Exported
|
|
228
|
+
], DisableInputs.prototype, "areInputsEnabled", null);
|
|
229
|
+
__decorate([
|
|
230
|
+
decorators_1.Exported
|
|
231
|
+
], DisableInputs.prototype, "enableAllInputs", null);
|
|
232
|
+
__decorate([
|
|
233
|
+
decorators_1.Exported
|
|
234
|
+
], DisableInputs.prototype, "disableInputs", null);
|
|
235
|
+
__decorate([
|
|
236
|
+
decorators_1.Exported
|
|
237
|
+
], DisableInputs.prototype, "disableAllInputs", null);
|
|
238
|
+
__decorate([
|
|
239
|
+
decorators_1.Exported
|
|
240
|
+
], DisableInputs.prototype, "enableAllInputsExceptFor", null);
|
|
241
|
+
__decorate([
|
|
242
|
+
decorators_1.Exported
|
|
243
|
+
], DisableInputs.prototype, "disableAllInputsExceptFor", null);
|
|
244
|
+
__decorate([
|
|
245
|
+
decorators_1.Exported
|
|
246
|
+
], DisableInputs.prototype, "disableMovementInputs", null);
|
|
247
|
+
__decorate([
|
|
248
|
+
decorators_1.Exported
|
|
249
|
+
], DisableInputs.prototype, "disableShootingInputs", null);
|