isaacscript-common 84.0.0 → 84.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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 +4 -1
- package/dist/functions/utils.d.ts.map +1 -1
- package/dist/functions/utils.js +195 -0
- package/dist/functions/utils.lua +6 -2
- 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 +4 -1
- 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 +7 -3
- 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 +6 -2
|
@@ -0,0 +1,469 @@
|
|
|
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.SpawnRockAltRewards = void 0;
|
|
10
|
+
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
|
|
11
|
+
const cachedClasses_1 = require("../../../core/cachedClasses");
|
|
12
|
+
const constants_1 = require("../../../core/constants");
|
|
13
|
+
const decorators_1 = require("../../../decorators");
|
|
14
|
+
const ISCFeature_1 = require("../../../enums/ISCFeature");
|
|
15
|
+
const RockAltType_1 = require("../../../enums/RockAltType");
|
|
16
|
+
const entitiesSpecific_1 = require("../../../functions/entitiesSpecific");
|
|
17
|
+
const pickupsSpecific_1 = require("../../../functions/pickupsSpecific");
|
|
18
|
+
const projectiles_1 = require("../../../functions/projectiles");
|
|
19
|
+
const random_1 = require("../../../functions/random");
|
|
20
|
+
const rng_1 = require("../../../functions/rng");
|
|
21
|
+
const spawnCollectible_1 = require("../../../functions/spawnCollectible");
|
|
22
|
+
const utils_1 = require("../../../functions/utils");
|
|
23
|
+
const vector_1 = require("../../../functions/vector");
|
|
24
|
+
const Feature_1 = require("../../private/Feature");
|
|
25
|
+
const ROCK_ALT_CHANCES = {
|
|
26
|
+
NOTHING: 0.68,
|
|
27
|
+
BASIC_DROP: 0.0967,
|
|
28
|
+
/** Also used for e.g. black hearts from skulls. */
|
|
29
|
+
TRINKET: 0.025,
|
|
30
|
+
COLLECTIBLE: 0.005,
|
|
31
|
+
};
|
|
32
|
+
const COIN_VELOCITY_MULTIPLIER = 2;
|
|
33
|
+
/** Matches the vanilla value, according to Fly's decompilation. */
|
|
34
|
+
const FIND_FREE_INITIAL_STEP = 70;
|
|
35
|
+
/** Matches the vanilla value, according to Fly's decompilation. */
|
|
36
|
+
const FART_RADIUS = constants_1.DISTANCE_OF_GRID_TILE * 3;
|
|
37
|
+
const POLYP_PROJECTILE_SPEED = 10;
|
|
38
|
+
const POLYP_NUM_PROJECTILES = 6;
|
|
39
|
+
class SpawnRockAltRewards extends Feature_1.Feature {
|
|
40
|
+
itemPoolDetection;
|
|
41
|
+
/** @internal */
|
|
42
|
+
constructor(itemPoolDetection) {
|
|
43
|
+
super();
|
|
44
|
+
this.featuresUsed = [ISCFeature_1.ISCFeature.ITEM_POOL_DETECTION];
|
|
45
|
+
this.itemPoolDetection = itemPoolDetection;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Helper function for emulating what happens when a vanilla `GridEntityType.ROCK_ALT` grid entity
|
|
49
|
+
* breaks.
|
|
50
|
+
*
|
|
51
|
+
* Most of the time, this function will do nothing, similar to how most of the time, when an
|
|
52
|
+
* individual urn is destroyed, nothing will spawn.
|
|
53
|
+
*
|
|
54
|
+
* Note that in vanilla, trinkets will not spawn if they have already been removed from the
|
|
55
|
+
* trinket pool. This function cannot replicate that behavior because there is no way to check to
|
|
56
|
+
* see if a trinket is still in the pool. Thus, it will always have a chance to spawn the
|
|
57
|
+
* respective trinket
|
|
58
|
+
* (e.g. Swallowed Penny from urns).
|
|
59
|
+
*
|
|
60
|
+
* When filled buckets are destroyed, 6 projectiles will always spawn in a random pattern (in
|
|
61
|
+
* addition to any other rewards that are spawned). This function does not account for this, so if
|
|
62
|
+
* you want to specifically emulate destroying a filled bucket, you have to account for the
|
|
63
|
+
* projectiles yourself.
|
|
64
|
+
*
|
|
65
|
+
* The logic in this function is based on the rewards listed on the wiki:
|
|
66
|
+
* https://bindingofisaacrebirth.fandom.com/wiki/Rocks
|
|
67
|
+
*
|
|
68
|
+
* If you want to spawn an unseeded reward, you must explicitly pass `undefined` to the
|
|
69
|
+
* `seedOrRNG` parameter.
|
|
70
|
+
*
|
|
71
|
+
* In order to use this function, you must upgrade your mod with
|
|
72
|
+
* `ISCFeature.SPAWN_ALT_ROCK_REWARDS`.
|
|
73
|
+
*
|
|
74
|
+
* @param positionOrGridIndex The position or grid index to spawn the reward.
|
|
75
|
+
* @param rockAltType The type of reward to spawn. For example, `RockAltType.URN` will have a
|
|
76
|
+
* chance at spawning coins and spiders.
|
|
77
|
+
* @param seedOrRNG The `Seed` or `RNG` object to use. Normally, you should pass the `InitSeed` of
|
|
78
|
+
* the grid entity that was broken. If an `RNG` object is provided, the
|
|
79
|
+
* `RNG.Next` method will be called. If `undefined` is provided, it will default
|
|
80
|
+
* to a random seed.
|
|
81
|
+
* @returns Whether this function spawned something.
|
|
82
|
+
* @public
|
|
83
|
+
*/
|
|
84
|
+
spawnRockAltReward(positionOrGridIndex, rockAltType, seedOrRNG) {
|
|
85
|
+
const room = cachedClasses_1.game.GetRoom();
|
|
86
|
+
const position = (0, vector_1.isVector)(positionOrGridIndex)
|
|
87
|
+
? positionOrGridIndex
|
|
88
|
+
: room.GetGridPosition(positionOrGridIndex);
|
|
89
|
+
const rng = (0, rng_1.isRNG)(seedOrRNG) ? seedOrRNG : (0, rng_1.newRNG)(seedOrRNG);
|
|
90
|
+
switch (rockAltType) {
|
|
91
|
+
case RockAltType_1.RockAltType.URN: {
|
|
92
|
+
return this.spawnRockAltRewardUrn(position, rng);
|
|
93
|
+
}
|
|
94
|
+
case RockAltType_1.RockAltType.MUSHROOM: {
|
|
95
|
+
return this.spawnRockAltRewardMushroom(position, rng);
|
|
96
|
+
}
|
|
97
|
+
case RockAltType_1.RockAltType.SKULL: {
|
|
98
|
+
return this.spawnRockAltRewardSkull(position, rng);
|
|
99
|
+
}
|
|
100
|
+
case RockAltType_1.RockAltType.POLYP: {
|
|
101
|
+
return this.spawnRockAltRewardPolyp(position, rng);
|
|
102
|
+
}
|
|
103
|
+
case RockAltType_1.RockAltType.BUCKET_DOWNPOUR: {
|
|
104
|
+
return this.spawnRockAltRewardBucketDownpour(position, rng);
|
|
105
|
+
}
|
|
106
|
+
case RockAltType_1.RockAltType.BUCKET_DROSS: {
|
|
107
|
+
return this.spawnRockAltRewardBucketDross(position, rng);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Helper function for emulating what happens when a vanilla `GridEntityType.ROCK_ALT` grid entity
|
|
113
|
+
* breaks of `RockAltType.URN`.
|
|
114
|
+
*
|
|
115
|
+
* For more information, see the documentation for the `spawnRockAltReward` function.
|
|
116
|
+
*
|
|
117
|
+
* In order to use this function, you must upgrade your mod with
|
|
118
|
+
* `ISCFeature.SPAWN_ALT_ROCK_REWARDS`.
|
|
119
|
+
*/
|
|
120
|
+
spawnRockAltRewardUrn(position, rng) {
|
|
121
|
+
const room = cachedClasses_1.game.GetRoom();
|
|
122
|
+
const chance = (0, random_1.getRandom)(rng);
|
|
123
|
+
let totalChance = 0;
|
|
124
|
+
totalChance += ROCK_ALT_CHANCES.NOTHING;
|
|
125
|
+
if (chance < totalChance) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
totalChance += ROCK_ALT_CHANCES.BASIC_DROP;
|
|
129
|
+
if (chance < totalChance) {
|
|
130
|
+
const numCoinsChance = (0, random_1.getRandom)(rng);
|
|
131
|
+
const numCoins = numCoinsChance < 0.5 ? 1 : 2;
|
|
132
|
+
(0, utils_1.repeat)(numCoins, () => {
|
|
133
|
+
const randomVector = (0, vector_1.getRandomVector)(rng);
|
|
134
|
+
const velocity = randomVector.mul(COIN_VELOCITY_MULTIPLIER);
|
|
135
|
+
(0, pickupsSpecific_1.spawnCoinWithSeed)(isaac_typescript_definitions_1.CoinSubType.NULL, position, rng, velocity);
|
|
136
|
+
});
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
totalChance += ROCK_ALT_CHANCES.TRINKET;
|
|
140
|
+
if (chance < totalChance) {
|
|
141
|
+
(0, pickupsSpecific_1.spawnTrinketWithSeed)(isaac_typescript_definitions_1.TrinketType.SWALLOWED_PENNY, position, rng);
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
totalChance += ROCK_ALT_CHANCES.COLLECTIBLE;
|
|
145
|
+
if (chance < totalChance) {
|
|
146
|
+
const stillInPools = this.itemPoolDetection.isCollectibleInItemPool(isaac_typescript_definitions_1.CollectibleType.QUARTER, isaac_typescript_definitions_1.ItemPoolType.DEVIL);
|
|
147
|
+
if (stillInPools) {
|
|
148
|
+
(0, spawnCollectible_1.spawnCollectible)(isaac_typescript_definitions_1.CollectibleType.QUARTER, position, rng);
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
// Since the detrimental effect is the final option, we don't need to check the chance.
|
|
154
|
+
const numEnemiesChance = (0, random_1.getRandom)(rng);
|
|
155
|
+
const numEnemies = numEnemiesChance < 0.5 ? 1 : 2;
|
|
156
|
+
(0, utils_1.repeat)(numEnemies, () => {
|
|
157
|
+
const targetPos = room.FindFreePickupSpawnPosition(position, FIND_FREE_INITIAL_STEP);
|
|
158
|
+
EntityNPC.ThrowSpider(position, undefined, targetPos, false, 0);
|
|
159
|
+
});
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Helper function for emulating what happens when a vanilla `GridEntityType.ROCK_ALT` grid entity
|
|
164
|
+
* breaks of `RockAltType.MUSHROOM`.
|
|
165
|
+
*
|
|
166
|
+
* For more information, see the documentation for the `spawnRockAltReward` function.
|
|
167
|
+
*
|
|
168
|
+
* In order to use this function, you must upgrade your mod with
|
|
169
|
+
* `ISCFeature.SPAWN_ALT_ROCK_REWARDS`.
|
|
170
|
+
*/
|
|
171
|
+
spawnRockAltRewardMushroom(position, rng) {
|
|
172
|
+
const room = cachedClasses_1.game.GetRoom();
|
|
173
|
+
const roomType = room.GetType();
|
|
174
|
+
const chance = (0, random_1.getRandom)(rng);
|
|
175
|
+
let totalChance = 0;
|
|
176
|
+
totalChance += ROCK_ALT_CHANCES.NOTHING;
|
|
177
|
+
if (chance < totalChance) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
totalChance += ROCK_ALT_CHANCES.BASIC_DROP;
|
|
181
|
+
if (chance < totalChance) {
|
|
182
|
+
(0, pickupsSpecific_1.spawnPillWithSeed)(isaac_typescript_definitions_1.PillColor.NULL, position, rng);
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
totalChance += ROCK_ALT_CHANCES.TRINKET;
|
|
186
|
+
if (chance < totalChance) {
|
|
187
|
+
(0, pickupsSpecific_1.spawnTrinketWithSeed)(isaac_typescript_definitions_1.TrinketType.LIBERTY_CAP, position, rng);
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
totalChance += ROCK_ALT_CHANCES.COLLECTIBLE;
|
|
191
|
+
if (chance < totalChance) {
|
|
192
|
+
if (roomType === isaac_typescript_definitions_1.RoomType.SECRET) {
|
|
193
|
+
const wavyCapChance = (0, random_1.getRandom)(rng);
|
|
194
|
+
if (wavyCapChance < 0.0272) {
|
|
195
|
+
const stillInPools = this.itemPoolDetection.isCollectibleInItemPool(isaac_typescript_definitions_1.CollectibleType.WAVY_CAP, isaac_typescript_definitions_1.ItemPoolType.SECRET);
|
|
196
|
+
if (stillInPools) {
|
|
197
|
+
(0, spawnCollectible_1.spawnCollectible)(isaac_typescript_definitions_1.CollectibleType.WAVY_CAP, position, rng);
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
const magicMushroomStillInPools = this.itemPoolDetection.isCollectibleInItemPool(isaac_typescript_definitions_1.CollectibleType.MAGIC_MUSHROOM, isaac_typescript_definitions_1.ItemPoolType.TREASURE);
|
|
203
|
+
const miniMushStillInPools = this.itemPoolDetection.isCollectibleInItemPool(isaac_typescript_definitions_1.CollectibleType.MINI_MUSH, isaac_typescript_definitions_1.ItemPoolType.TREASURE);
|
|
204
|
+
if (magicMushroomStillInPools && miniMushStillInPools) {
|
|
205
|
+
const collectibleChance = (0, random_1.getRandom)(rng);
|
|
206
|
+
const collectibleType = collectibleChance < 0.5
|
|
207
|
+
? isaac_typescript_definitions_1.CollectibleType.MAGIC_MUSHROOM // 12
|
|
208
|
+
: isaac_typescript_definitions_1.CollectibleType.MINI_MUSH; // 71
|
|
209
|
+
(0, spawnCollectible_1.spawnCollectible)(collectibleType, position, rng);
|
|
210
|
+
return true;
|
|
211
|
+
}
|
|
212
|
+
if (magicMushroomStillInPools) {
|
|
213
|
+
(0, spawnCollectible_1.spawnCollectible)(isaac_typescript_definitions_1.CollectibleType.MINI_MUSH, position, rng);
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
if (miniMushStillInPools) {
|
|
217
|
+
(0, spawnCollectible_1.spawnCollectible)(isaac_typescript_definitions_1.CollectibleType.MAGIC_MUSHROOM, position, rng);
|
|
218
|
+
return true;
|
|
219
|
+
}
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
// Since the detrimental effect is the final option, we don't need to check the chance.
|
|
223
|
+
cachedClasses_1.game.Fart(position);
|
|
224
|
+
cachedClasses_1.game.ButterBeanFart(position, FART_RADIUS, undefined);
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Helper function for emulating what happens when a vanilla `GridEntityType.ROCK_ALT` grid entity
|
|
229
|
+
* breaks of `RockAltType.SKULL`.
|
|
230
|
+
*
|
|
231
|
+
* For more information, see the documentation for the `spawnRockAltReward` function.
|
|
232
|
+
*
|
|
233
|
+
* In order to use this function, you must upgrade your mod with
|
|
234
|
+
* `ISCFeature.SPAWN_ALT_ROCK_REWARDS`.
|
|
235
|
+
*/
|
|
236
|
+
spawnRockAltRewardSkull(position, rng) {
|
|
237
|
+
const chance = (0, random_1.getRandom)(rng);
|
|
238
|
+
let totalChance = 0;
|
|
239
|
+
totalChance += ROCK_ALT_CHANCES.NOTHING;
|
|
240
|
+
if (chance < totalChance) {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
totalChance += ROCK_ALT_CHANCES.BASIC_DROP;
|
|
244
|
+
if (chance < totalChance) {
|
|
245
|
+
(0, pickupsSpecific_1.spawnCardWithSeed)(isaac_typescript_definitions_1.CardType.NULL, position, rng);
|
|
246
|
+
return true;
|
|
247
|
+
}
|
|
248
|
+
totalChance += ROCK_ALT_CHANCES.TRINKET;
|
|
249
|
+
if (chance < totalChance) {
|
|
250
|
+
(0, pickupsSpecific_1.spawnHeartWithSeed)(isaac_typescript_definitions_1.HeartSubType.BLACK, position, rng);
|
|
251
|
+
return true;
|
|
252
|
+
}
|
|
253
|
+
totalChance += ROCK_ALT_CHANCES.COLLECTIBLE;
|
|
254
|
+
if (chance < totalChance) {
|
|
255
|
+
const ghostBabyStillInPools = this.itemPoolDetection.isCollectibleInItemPool(isaac_typescript_definitions_1.CollectibleType.GHOST_BABY, isaac_typescript_definitions_1.ItemPoolType.TREASURE);
|
|
256
|
+
const dryBabyStillInPools = this.itemPoolDetection.isCollectibleInItemPool(isaac_typescript_definitions_1.CollectibleType.DRY_BABY, isaac_typescript_definitions_1.ItemPoolType.TREASURE);
|
|
257
|
+
if (ghostBabyStillInPools && dryBabyStillInPools) {
|
|
258
|
+
const collectibleChance = (0, random_1.getRandom)(rng);
|
|
259
|
+
const collectibleType = collectibleChance < 0.5
|
|
260
|
+
? isaac_typescript_definitions_1.CollectibleType.GHOST_BABY // 163
|
|
261
|
+
: isaac_typescript_definitions_1.CollectibleType.DRY_BABY; // 265
|
|
262
|
+
(0, spawnCollectible_1.spawnCollectible)(collectibleType, position, rng);
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
if (ghostBabyStillInPools) {
|
|
266
|
+
(0, spawnCollectible_1.spawnCollectible)(isaac_typescript_definitions_1.CollectibleType.DRY_BABY, position, rng);
|
|
267
|
+
return true;
|
|
268
|
+
}
|
|
269
|
+
if (dryBabyStillInPools) {
|
|
270
|
+
(0, spawnCollectible_1.spawnCollectible)(isaac_typescript_definitions_1.CollectibleType.GHOST_BABY, position, rng);
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
// Since the detrimental effect is the final option, we don't need to check the chance.
|
|
276
|
+
(0, entitiesSpecific_1.spawnNPCWithSeed)(isaac_typescript_definitions_1.EntityType.HOST, 0, 0, position, rng);
|
|
277
|
+
return true;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Helper function for emulating what happens when a vanilla `GridEntityType.ROCK_ALT` grid entity
|
|
281
|
+
* breaks of `RockAltType.POLYP`.
|
|
282
|
+
*
|
|
283
|
+
* For more information, see the documentation for the `spawnRockAltReward` function.
|
|
284
|
+
*
|
|
285
|
+
* In order to use this function, you must upgrade your mod with
|
|
286
|
+
* `ISCFeature.SPAWN_ALT_ROCK_REWARDS`.
|
|
287
|
+
*/
|
|
288
|
+
spawnRockAltRewardPolyp(position, rng) {
|
|
289
|
+
const chance = (0, random_1.getRandom)(rng);
|
|
290
|
+
let totalChance = 0;
|
|
291
|
+
totalChance += ROCK_ALT_CHANCES.NOTHING;
|
|
292
|
+
if (chance < totalChance) {
|
|
293
|
+
return false;
|
|
294
|
+
}
|
|
295
|
+
totalChance += ROCK_ALT_CHANCES.BASIC_DROP;
|
|
296
|
+
if (chance < totalChance) {
|
|
297
|
+
(0, pickupsSpecific_1.spawnHeartWithSeed)(isaac_typescript_definitions_1.HeartSubType.NULL, position, rng);
|
|
298
|
+
return true;
|
|
299
|
+
}
|
|
300
|
+
totalChance += ROCK_ALT_CHANCES.TRINKET;
|
|
301
|
+
if (chance < totalChance) {
|
|
302
|
+
(0, pickupsSpecific_1.spawnTrinketWithSeed)(isaac_typescript_definitions_1.TrinketType.UMBILICAL_CORD, position, rng);
|
|
303
|
+
return true;
|
|
304
|
+
}
|
|
305
|
+
totalChance += ROCK_ALT_CHANCES.COLLECTIBLE;
|
|
306
|
+
if (chance < totalChance) {
|
|
307
|
+
const placentaStillInPools = this.itemPoolDetection.isCollectibleInItemPool(isaac_typescript_definitions_1.CollectibleType.PLACENTA, isaac_typescript_definitions_1.ItemPoolType.BOSS);
|
|
308
|
+
const bloodClotStillInPools = this.itemPoolDetection.isCollectibleInItemPool(isaac_typescript_definitions_1.CollectibleType.BLOOD_CLOT, isaac_typescript_definitions_1.ItemPoolType.BOSS);
|
|
309
|
+
if (placentaStillInPools && bloodClotStillInPools) {
|
|
310
|
+
const collectibleChance = (0, random_1.getRandom)(rng);
|
|
311
|
+
const collectibleType = collectibleChance < 0.5
|
|
312
|
+
? isaac_typescript_definitions_1.CollectibleType.PLACENTA // 218
|
|
313
|
+
: isaac_typescript_definitions_1.CollectibleType.BLOOD_CLOT; // 254
|
|
314
|
+
(0, spawnCollectible_1.spawnCollectible)(collectibleType, position, rng);
|
|
315
|
+
return true;
|
|
316
|
+
}
|
|
317
|
+
if (placentaStillInPools) {
|
|
318
|
+
(0, spawnCollectible_1.spawnCollectible)(isaac_typescript_definitions_1.CollectibleType.PLACENTA, position, rng);
|
|
319
|
+
return true;
|
|
320
|
+
}
|
|
321
|
+
if (bloodClotStillInPools) {
|
|
322
|
+
(0, spawnCollectible_1.spawnCollectible)(isaac_typescript_definitions_1.CollectibleType.BLOOD_CLOT, position, rng);
|
|
323
|
+
return true;
|
|
324
|
+
}
|
|
325
|
+
return false;
|
|
326
|
+
}
|
|
327
|
+
// Since the detrimental effect is the final option, we don't need to check the chance.
|
|
328
|
+
(0, entitiesSpecific_1.spawnEffectWithSeed)(isaac_typescript_definitions_1.EffectVariant.CREEP_RED, 0, position, rng);
|
|
329
|
+
(0, projectiles_1.fireProjectilesInCircle)(undefined, position, POLYP_PROJECTILE_SPEED, POLYP_NUM_PROJECTILES);
|
|
330
|
+
return true;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Helper function for emulating what happens when a vanilla `GridEntityType.ROCK_ALT` grid entity
|
|
334
|
+
* breaks of `RockAltType.BUCKET_DOWNPOUR`.
|
|
335
|
+
*
|
|
336
|
+
* For more information, see the documentation for the `spawnRockAltReward` function.
|
|
337
|
+
*
|
|
338
|
+
* In order to use this function, you must upgrade your mod with
|
|
339
|
+
* `ISCFeature.SPAWN_ALT_ROCK_REWARDS`.
|
|
340
|
+
*/
|
|
341
|
+
spawnRockAltRewardBucketDownpour(position, rng) {
|
|
342
|
+
const room = cachedClasses_1.game.GetRoom();
|
|
343
|
+
const chance = (0, random_1.getRandom)(rng);
|
|
344
|
+
let totalChance = 0;
|
|
345
|
+
totalChance += ROCK_ALT_CHANCES.NOTHING;
|
|
346
|
+
if (chance < totalChance) {
|
|
347
|
+
return false;
|
|
348
|
+
}
|
|
349
|
+
totalChance += ROCK_ALT_CHANCES.BASIC_DROP;
|
|
350
|
+
if (chance < totalChance) {
|
|
351
|
+
const numCoinsChance = (0, random_1.getRandom)(rng);
|
|
352
|
+
const numCoins = numCoinsChance < 0.5 ? 1 : 2;
|
|
353
|
+
(0, utils_1.repeat)(numCoins, () => {
|
|
354
|
+
const randomVector = (0, vector_1.getRandomVector)(rng);
|
|
355
|
+
const velocity = randomVector.mul(COIN_VELOCITY_MULTIPLIER);
|
|
356
|
+
(0, pickupsSpecific_1.spawnCoinWithSeed)(isaac_typescript_definitions_1.CoinSubType.NULL, position, rng, velocity);
|
|
357
|
+
});
|
|
358
|
+
return true;
|
|
359
|
+
}
|
|
360
|
+
totalChance += ROCK_ALT_CHANCES.TRINKET;
|
|
361
|
+
if (chance < totalChance) {
|
|
362
|
+
(0, pickupsSpecific_1.spawnTrinketWithSeed)(isaac_typescript_definitions_1.TrinketType.SWALLOWED_PENNY, position, rng);
|
|
363
|
+
return true;
|
|
364
|
+
}
|
|
365
|
+
totalChance += ROCK_ALT_CHANCES.COLLECTIBLE;
|
|
366
|
+
if (chance < totalChance) {
|
|
367
|
+
const stillInPools = this.itemPoolDetection.isCollectibleInItemPool(isaac_typescript_definitions_1.CollectibleType.LEECH, isaac_typescript_definitions_1.ItemPoolType.TREASURE);
|
|
368
|
+
if (stillInPools) {
|
|
369
|
+
(0, spawnCollectible_1.spawnCollectible)(isaac_typescript_definitions_1.CollectibleType.LEECH, position, rng);
|
|
370
|
+
return true;
|
|
371
|
+
}
|
|
372
|
+
return false;
|
|
373
|
+
}
|
|
374
|
+
// Since the detrimental effect is the final option, we don't need to check the chance.
|
|
375
|
+
const enemiesChance = (0, random_1.getRandom)(rng);
|
|
376
|
+
const entityType = enemiesChance < 0.5 ? isaac_typescript_definitions_1.EntityType.SPIDER : isaac_typescript_definitions_1.EntityType.SMALL_LEECH;
|
|
377
|
+
const numEnemiesChance = (0, random_1.getRandom)(rng);
|
|
378
|
+
const numEnemies = numEnemiesChance < 0.5 ? 1 : 2;
|
|
379
|
+
(0, utils_1.repeat)(numEnemies, () => {
|
|
380
|
+
const targetPos = room.FindFreePickupSpawnPosition(position, FIND_FREE_INITIAL_STEP);
|
|
381
|
+
// If the room has water, Spiders will automatically be replaced with Striders.
|
|
382
|
+
const spider = EntityNPC.ThrowSpider(position, undefined, targetPos, false, 0);
|
|
383
|
+
// There is no `ThrowLeech` function exposed in the API, so we can piggyback off of the
|
|
384
|
+
// `ThrowSpider` method.
|
|
385
|
+
if (entityType === isaac_typescript_definitions_1.EntityType.SMALL_LEECH && spider.Type !== entityType) {
|
|
386
|
+
spider.Morph(entityType, 0, 0, -1);
|
|
387
|
+
}
|
|
388
|
+
});
|
|
389
|
+
return true;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Helper function for emulating what happens when a vanilla `GridEntityType.ROCK_ALT` grid entity
|
|
393
|
+
* breaks of `RockAltType.BUCKET_DROSS`.
|
|
394
|
+
*
|
|
395
|
+
* For more information, see the documentation for the `spawnRockAltReward` function.
|
|
396
|
+
*
|
|
397
|
+
* In order to use this function, you must upgrade your mod with
|
|
398
|
+
* `ISCFeature.SPAWN_ALT_ROCK_REWARDS`.
|
|
399
|
+
*/
|
|
400
|
+
spawnRockAltRewardBucketDross(position, rng) {
|
|
401
|
+
const room = cachedClasses_1.game.GetRoom();
|
|
402
|
+
const chance = (0, random_1.getRandom)(rng);
|
|
403
|
+
let totalChance = 0;
|
|
404
|
+
totalChance += ROCK_ALT_CHANCES.NOTHING;
|
|
405
|
+
if (chance < totalChance) {
|
|
406
|
+
return false;
|
|
407
|
+
}
|
|
408
|
+
totalChance += ROCK_ALT_CHANCES.BASIC_DROP;
|
|
409
|
+
if (chance < totalChance) {
|
|
410
|
+
const numCoinsChance = (0, random_1.getRandom)(rng);
|
|
411
|
+
const numCoins = numCoinsChance < 0.5 ? 1 : 2;
|
|
412
|
+
(0, utils_1.repeat)(numCoins, () => {
|
|
413
|
+
const randomVector = (0, vector_1.getRandomVector)(rng);
|
|
414
|
+
const velocity = randomVector.mul(COIN_VELOCITY_MULTIPLIER);
|
|
415
|
+
(0, pickupsSpecific_1.spawnCoinWithSeed)(isaac_typescript_definitions_1.CoinSubType.NULL, position, rng, velocity);
|
|
416
|
+
});
|
|
417
|
+
return true;
|
|
418
|
+
}
|
|
419
|
+
totalChance += ROCK_ALT_CHANCES.TRINKET;
|
|
420
|
+
if (chance < totalChance) {
|
|
421
|
+
(0, pickupsSpecific_1.spawnTrinketWithSeed)(isaac_typescript_definitions_1.TrinketType.BUTT_PENNY, position, rng);
|
|
422
|
+
return true;
|
|
423
|
+
}
|
|
424
|
+
totalChance += ROCK_ALT_CHANCES.COLLECTIBLE;
|
|
425
|
+
if (chance < totalChance) {
|
|
426
|
+
const stillInPools = this.itemPoolDetection.isCollectibleInItemPool(isaac_typescript_definitions_1.CollectibleType.POOP, isaac_typescript_definitions_1.ItemPoolType.TREASURE);
|
|
427
|
+
if (stillInPools) {
|
|
428
|
+
(0, spawnCollectible_1.spawnCollectible)(isaac_typescript_definitions_1.CollectibleType.POOP, position, rng);
|
|
429
|
+
return true;
|
|
430
|
+
}
|
|
431
|
+
return false;
|
|
432
|
+
}
|
|
433
|
+
// Since the detrimental effect is the final option, we don't need to check the chance.
|
|
434
|
+
const enemiesChance = (0, random_1.getRandom)(rng);
|
|
435
|
+
const entityType = enemiesChance < 0.5 ? isaac_typescript_definitions_1.EntityType.DRIP : isaac_typescript_definitions_1.EntityType.SMALL_LEECH;
|
|
436
|
+
const numEnemiesChance = (0, random_1.getRandom)(rng);
|
|
437
|
+
const numEnemies = numEnemiesChance < 0.5 ? 1 : 2;
|
|
438
|
+
(0, utils_1.repeat)(numEnemies, () => {
|
|
439
|
+
const targetPos = room.FindFreePickupSpawnPosition(position, FIND_FREE_INITIAL_STEP);
|
|
440
|
+
const spider = EntityNPC.ThrowSpider(position, undefined, targetPos, false, 0);
|
|
441
|
+
// There is no `ThrowLeech` or `ThrowDrip` functions exposed in the API, so we can piggyback
|
|
442
|
+
// off of the `ThrowSpider` method.
|
|
443
|
+
spider.Morph(entityType, 0, 0, -1);
|
|
444
|
+
});
|
|
445
|
+
return true;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
exports.SpawnRockAltRewards = SpawnRockAltRewards;
|
|
449
|
+
__decorate([
|
|
450
|
+
decorators_1.Exported
|
|
451
|
+
], SpawnRockAltRewards.prototype, "spawnRockAltReward", null);
|
|
452
|
+
__decorate([
|
|
453
|
+
decorators_1.Exported
|
|
454
|
+
], SpawnRockAltRewards.prototype, "spawnRockAltRewardUrn", null);
|
|
455
|
+
__decorate([
|
|
456
|
+
decorators_1.Exported
|
|
457
|
+
], SpawnRockAltRewards.prototype, "spawnRockAltRewardMushroom", null);
|
|
458
|
+
__decorate([
|
|
459
|
+
decorators_1.Exported
|
|
460
|
+
], SpawnRockAltRewards.prototype, "spawnRockAltRewardSkull", null);
|
|
461
|
+
__decorate([
|
|
462
|
+
decorators_1.Exported
|
|
463
|
+
], SpawnRockAltRewards.prototype, "spawnRockAltRewardPolyp", null);
|
|
464
|
+
__decorate([
|
|
465
|
+
decorators_1.Exported
|
|
466
|
+
], SpawnRockAltRewards.prototype, "spawnRockAltRewardBucketDownpour", null);
|
|
467
|
+
__decorate([
|
|
468
|
+
decorators_1.Exported
|
|
469
|
+
], SpawnRockAltRewards.prototype, "spawnRockAltRewardBucketDross", null);
|