isaacscript-common 87.9.7 → 87.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cachedEnumValues.js +29 -32
- package/dist/callbackClasses.js +142 -289
- package/dist/callbacks.js +147 -183
- package/dist/classes/DefaultMap.js +4 -8
- package/dist/classes/ModFeature.js +21 -25
- package/dist/classes/ModUpgraded.js +43 -47
- package/dist/classes/callbacks/EntityTakeDmgFilter.js +6 -10
- package/dist/classes/callbacks/EntityTakeDmgPlayer.js +7 -11
- package/dist/classes/callbacks/InputActionFilter.js +4 -8
- package/dist/classes/callbacks/InputActionPlayer.js +4 -8
- package/dist/classes/callbacks/PostAmbushFinished.js +10 -14
- package/dist/classes/callbacks/PostAmbushStarted.js +10 -14
- package/dist/classes/callbacks/PostBombExploded.js +8 -12
- package/dist/classes/callbacks/PostBombInitFilter.js +6 -10
- package/dist/classes/callbacks/PostBombInitLate.js +6 -10
- package/dist/classes/callbacks/PostBombRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostBombUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostBoneSwing.js +7 -11
- package/dist/classes/callbacks/PostCollectibleEmpty.js +6 -10
- package/dist/classes/callbacks/PostCursedTeleport.js +30 -34
- package/dist/classes/callbacks/PostCustomRevive.js +4 -8
- package/dist/classes/callbacks/PostDiceRoomActivated.js +9 -13
- package/dist/classes/callbacks/PostDoorRender.js +8 -12
- package/dist/classes/callbacks/PostDoorUpdate.js +8 -12
- package/dist/classes/callbacks/PostEffectInitFilter.js +6 -10
- package/dist/classes/callbacks/PostEffectInitLate.js +6 -10
- package/dist/classes/callbacks/PostEffectRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostEffectStateChanged.js +8 -12
- package/dist/classes/callbacks/PostEffectUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostEntityKillFilter.js +6 -10
- package/dist/classes/callbacks/PostEntityRemoveFilter.js +6 -10
- package/dist/classes/callbacks/PostEsauJr.js +4 -8
- package/dist/classes/callbacks/PostFamiliarInitFilter.js +6 -10
- package/dist/classes/callbacks/PostFamiliarInitLate.js +6 -10
- package/dist/classes/callbacks/PostFamiliarRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostFamiliarStateChanged.js +8 -12
- package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostFirstEsauJr.js +4 -8
- package/dist/classes/callbacks/PostFirstFlip.js +4 -8
- package/dist/classes/callbacks/PostFlip.js +4 -8
- package/dist/classes/callbacks/PostGameEndFilter.js +6 -10
- package/dist/classes/callbacks/PostGameStartedReordered.js +6 -10
- package/dist/classes/callbacks/PostGameStartedReorderedLast.js +6 -10
- package/dist/classes/callbacks/PostGreedModeWave.js +7 -11
- package/dist/classes/callbacks/PostGridEntityBroken.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCollision.js +4 -8
- package/dist/classes/callbacks/PostGridEntityCustomBroken.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomCollision.js +4 -8
- package/dist/classes/callbacks/PostGridEntityCustomInit.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomRemove.js +4 -8
- package/dist/classes/callbacks/PostGridEntityCustomRender.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +6 -10
- package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +6 -10
- package/dist/classes/callbacks/PostGridEntityInit.js +6 -10
- package/dist/classes/callbacks/PostGridEntityRemove.js +4 -8
- package/dist/classes/callbacks/PostGridEntityRender.js +6 -10
- package/dist/classes/callbacks/PostGridEntityStateChanged.js +6 -10
- package/dist/classes/callbacks/PostGridEntityUpdate.js +6 -10
- package/dist/classes/callbacks/PostHolyMantleRemoved.js +15 -19
- package/dist/classes/callbacks/PostItemDischarge.js +23 -27
- package/dist/classes/callbacks/PostItemPickup.js +6 -10
- package/dist/classes/callbacks/PostKeyboardChanged.js +9 -13
- package/dist/classes/callbacks/PostKnifeInitFilter.js +6 -10
- package/dist/classes/callbacks/PostKnifeInitLate.js +6 -10
- package/dist/classes/callbacks/PostKnifeRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostKnifeUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostLaserInitFilter.js +6 -10
- package/dist/classes/callbacks/PostLaserInitLate.js +6 -10
- package/dist/classes/callbacks/PostLaserRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostLaserUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCDeathFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCInitFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCInitLate.js +6 -10
- package/dist/classes/callbacks/PostNPCRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostNPCStateChanged.js +8 -12
- package/dist/classes/callbacks/PostNPCUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostNewLevelReordered.js +6 -10
- package/dist/classes/callbacks/PostNewRoomEarly.js +17 -21
- package/dist/classes/callbacks/PostNewRoomReordered.js +6 -10
- package/dist/classes/callbacks/PostPEffectUpdateReordered.js +6 -10
- package/dist/classes/callbacks/PostPickupChanged.js +6 -10
- package/dist/classes/callbacks/PostPickupCollect.js +8 -12
- package/dist/classes/callbacks/PostPickupInitFilter.js +6 -10
- package/dist/classes/callbacks/PostPickupInitFirst.js +10 -14
- package/dist/classes/callbacks/PostPickupInitLate.js +6 -10
- package/dist/classes/callbacks/PostPickupRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostPickupSelectionFilter.js +4 -8
- package/dist/classes/callbacks/PostPickupStateChanged.js +8 -12
- package/dist/classes/callbacks/PostPickupUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostPitRender.js +8 -12
- package/dist/classes/callbacks/PostPitUpdate.js +8 -12
- package/dist/classes/callbacks/PostPlayerChangeHealth.js +14 -18
- package/dist/classes/callbacks/PostPlayerChangeStat.js +26 -30
- package/dist/classes/callbacks/PostPlayerChangeType.js +11 -15
- package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +6 -10
- package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +6 -10
- package/dist/classes/callbacks/PostPlayerFatalDamage.js +24 -28
- package/dist/classes/callbacks/PostPlayerInitFirst.js +12 -16
- package/dist/classes/callbacks/PostPlayerInitLate.js +9 -13
- package/dist/classes/callbacks/PostPlayerRenderReordered.js +6 -10
- package/dist/classes/callbacks/PostPlayerUpdateReordered.js +6 -10
- package/dist/classes/callbacks/PostPoopRender.js +8 -12
- package/dist/classes/callbacks/PostPoopUpdate.js +8 -12
- package/dist/classes/callbacks/PostPressurePlateRender.js +8 -12
- package/dist/classes/callbacks/PostPressurePlateUpdate.js +8 -12
- package/dist/classes/callbacks/PostProjectileInitFilter.js +6 -10
- package/dist/classes/callbacks/PostProjectileInitLate.js +6 -10
- package/dist/classes/callbacks/PostProjectileKill.js +8 -12
- package/dist/classes/callbacks/PostProjectileRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostProjectileUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostPurchase.js +21 -25
- package/dist/classes/callbacks/PostRockRender.js +8 -12
- package/dist/classes/callbacks/PostRockUpdate.js +8 -12
- package/dist/classes/callbacks/PostRoomClearChanged.js +9 -13
- package/dist/classes/callbacks/PostSacrifice.js +12 -16
- package/dist/classes/callbacks/PostSlotAnimationChanged.js +6 -10
- package/dist/classes/callbacks/PostSlotCollision.js +8 -12
- package/dist/classes/callbacks/PostSlotDestroyed.js +6 -10
- package/dist/classes/callbacks/PostSlotInit.js +6 -10
- package/dist/classes/callbacks/PostSlotRender.js +6 -10
- package/dist/classes/callbacks/PostSlotUpdate.js +6 -10
- package/dist/classes/callbacks/PostSpikesRender.js +8 -12
- package/dist/classes/callbacks/PostSpikesUpdate.js +8 -12
- package/dist/classes/callbacks/PostTNTRender.js +8 -12
- package/dist/classes/callbacks/PostTNTUpdate.js +8 -12
- package/dist/classes/callbacks/PostTearInitFilter.js +6 -10
- package/dist/classes/callbacks/PostTearInitLate.js +6 -10
- package/dist/classes/callbacks/PostTearInitVeryLate.js +6 -10
- package/dist/classes/callbacks/PostTearKill.js +8 -12
- package/dist/classes/callbacks/PostTearRenderFilter.js +6 -10
- package/dist/classes/callbacks/PostTearUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PostTransformation.js +10 -14
- package/dist/classes/callbacks/PostTrinketBreak.js +16 -20
- package/dist/classes/callbacks/PostUsePillFilter.js +18 -22
- package/dist/classes/callbacks/PreBerserkDeath.js +14 -18
- package/dist/classes/callbacks/PreBombCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreCustomRevive.js +6 -10
- package/dist/classes/callbacks/PreEntitySpawnFilter.js +4 -8
- package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreGetPedestal.js +8 -12
- package/dist/classes/callbacks/PreItemPickup.js +6 -10
- package/dist/classes/callbacks/PreKnifeCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreNPCCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreNPCUpdateFilter.js +6 -10
- package/dist/classes/callbacks/PreNewLevel.js +10 -14
- package/dist/classes/callbacks/PreProjectileCollisionFilter.js +6 -10
- package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +4 -8
- package/dist/classes/callbacks/PreTearCollisionFilter.js +6 -10
- package/dist/classes/features/callbackLogic/CustomGridEntities.js +46 -50
- package/dist/classes/features/callbackLogic/CustomRevive.js +28 -32
- package/dist/classes/features/callbackLogic/EsauJrDetection.js +11 -15
- package/dist/classes/features/callbackLogic/FlipDetection.js +11 -15
- package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +26 -30
- package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +10 -14
- package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +6 -10
- package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +12 -16
- package/dist/classes/features/callbackLogic/ItemPickupDetection.js +17 -21
- package/dist/classes/features/callbackLogic/PickupChangeDetection.js +6 -10
- package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +39 -43
- package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +18 -22
- package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +17 -21
- package/dist/classes/features/callbackLogic/SlotRenderDetection.js +8 -12
- package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +9 -13
- package/dist/classes/features/other/CharacterHealthConversion.js +13 -17
- package/dist/classes/features/other/CharacterStats.js +9 -13
- package/dist/classes/features/other/CollectibleItemPoolType.js +17 -21
- package/dist/classes/features/other/CustomHotkeys.js +15 -19
- package/dist/classes/features/other/CustomItemPools.js +20 -24
- package/dist/classes/features/other/CustomPickups.js +15 -19
- package/dist/classes/features/other/CustomStages.js +116 -153
- package/dist/classes/features/other/CustomTrapdoors.js +119 -123
- package/dist/classes/features/other/DebugDisplay.js +77 -81
- package/dist/classes/features/other/DeployJSONRoom.js +65 -69
- package/dist/classes/features/other/DisableAllSound.js +14 -18
- package/dist/classes/features/other/DisableInputs.js +24 -28
- package/dist/classes/features/other/EdenStartingStatsHealth.js +36 -40
- package/dist/classes/features/other/ExtraConsoleCommands.js +65 -102
- package/dist/classes/features/other/FadeInRemover.js +9 -13
- package/dist/classes/features/other/FastReset.js +18 -22
- package/dist/classes/features/other/FlyingDetection.js +10 -14
- package/dist/classes/features/other/ForgottenSwitch.js +8 -12
- package/dist/classes/features/other/ItemPoolDetection.js +35 -39
- package/dist/classes/features/other/ModdedElementDetection.js +43 -47
- package/dist/classes/features/other/ModdedElementSets.js +135 -139
- package/dist/classes/features/other/NoSirenSteal.js +7 -11
- package/dist/classes/features/other/Pause.js +48 -52
- package/dist/classes/features/other/PersistentEntities.js +16 -20
- package/dist/classes/features/other/PickupIndexCreation.js +31 -35
- package/dist/classes/features/other/PlayerCollectibleTracking.js +18 -22
- package/dist/classes/features/other/PonyDetection.js +22 -26
- package/dist/classes/features/other/PressInput.js +10 -14
- package/dist/classes/features/other/PreventChildEntities.js +6 -10
- package/dist/classes/features/other/PreventGridEntityRespawn.js +34 -38
- package/dist/classes/features/other/RerunDetection.js +11 -15
- package/dist/classes/features/other/RoomClearFrame.js +11 -15
- package/dist/classes/features/other/RoomHistory.js +30 -34
- package/dist/classes/features/other/RunInNFrames.js +24 -28
- package/dist/classes/features/other/RunNextRoom.js +8 -12
- package/dist/classes/features/other/RunNextRun.js +8 -12
- package/dist/classes/features/other/SaveDataManager.js +61 -65
- package/dist/classes/features/other/SpawnRockAltRewards.js +115 -119
- package/dist/classes/features/other/StageHistory.js +76 -80
- package/dist/classes/features/other/StartAmbush.js +12 -16
- package/dist/classes/features/other/TaintedLazarusPlayers.js +10 -14
- package/dist/classes/features/other/UnlockAchievementsDetection.js +10 -14
- package/dist/classes/features/other/customStages/backdrop.js +68 -71
- package/dist/classes/features/other/customStages/constants.js +7 -10
- package/dist/classes/features/other/customStages/gridEntities.js +23 -30
- package/dist/classes/features/other/customStages/shadows.js +27 -30
- package/dist/classes/features/other/customStages/streakText.js +55 -60
- package/dist/classes/features/other/customStages/utils.js +13 -17
- package/dist/classes/features/other/customStages/v.js +4 -7
- package/dist/classes/features/other/customStages/versusScreen.js +46 -50
- package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +8 -12
- package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +8 -12
- package/dist/classes/features/other/debugDisplay/utils.js +6 -10
- package/dist/classes/features/other/extraConsoleCommands/commands.js +411 -557
- package/dist/classes/features/other/extraConsoleCommands/subroutines.js +47 -57
- package/dist/classes/features/other/extraConsoleCommands/v.js +1 -4
- package/dist/classes/features/other/saveDataManager/constants.js +1 -4
- package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +17 -21
- package/dist/classes/features/other/saveDataManager/loadFromDisk.js +19 -22
- package/dist/classes/features/other/saveDataManager/restoreDefaults.js +20 -25
- package/dist/classes/features/other/saveDataManager/saveToDisk.js +13 -16
- package/dist/classes/private/CustomCallback.js +4 -8
- package/dist/classes/private/Feature.js +1 -5
- package/dist/core/cachedClasses.js +12 -15
- package/dist/core/constants.js +126 -130
- package/dist/core/constantsFirstLast.js +22 -25
- package/dist/core/constantsVanilla.js +25 -28
- package/dist/core/upgradeMod.js +7 -10
- package/dist/decorators.js +6 -10
- package/dist/enums/AmbushType.js +2 -5
- package/dist/enums/CornerType.js +2 -5
- package/dist/enums/HealthType.js +2 -5
- package/dist/enums/ISCFeature.js +2 -5
- package/dist/enums/LadderSubTypeCustom.js +2 -5
- package/dist/enums/ModCallbackCustom.js +2 -5
- package/dist/enums/MysteriousPaperEffect.js +2 -5
- package/dist/enums/PlayerStat.js +2 -5
- package/dist/enums/PocketItemType.js +2 -5
- package/dist/enums/RockAltType.js +2 -5
- package/dist/enums/SaveDataKey.js +2 -5
- package/dist/enums/SerializationType.js +2 -5
- package/dist/enums/SlotDestructionType.js +2 -5
- package/dist/enums/private/GridEntityTypeCustom.js +1 -4
- package/dist/enums/private/SerializationBrand.js +2 -5
- package/dist/enums/private/StageTravelState.js +2 -5
- package/dist/enums/private/TrapdoorAnimation.js +2 -5
- package/dist/enums/private/UIStreakAnimation.js +2 -5
- package/dist/features.js +138 -141
- package/dist/functions/ambush.js +9 -12
- package/dist/functions/array.js +45 -76
- package/dist/functions/arrayLua.js +7 -16
- package/dist/functions/benchmark.js +4 -7
- package/dist/functions/bitSet128.js +19 -26
- package/dist/functions/bitwise.js +14 -23
- package/dist/functions/bombs.js +1 -4
- package/dist/functions/bosses.js +68 -85
- package/dist/functions/cards.js +44 -62
- package/dist/functions/challenges.js +28 -39
- package/dist/functions/characters.js +68 -87
- package/dist/functions/charge.js +41 -52
- package/dist/functions/chargeBar.js +2 -6
- package/dist/functions/collectibleTag.js +9 -13
- package/dist/functions/collectibles.js +133 -172
- package/dist/functions/color.js +29 -38
- package/dist/functions/console.js +4 -8
- package/dist/functions/curses.js +6 -10
- package/dist/functions/debugFunctions.js +7 -14
- package/dist/functions/decorators.js +13 -19
- package/dist/functions/deepCopy.js +96 -99
- package/dist/functions/deepCopyTests.js +56 -59
- package/dist/functions/dimensions.js +10 -14
- package/dist/functions/direction.js +22 -30
- package/dist/functions/doors.js +104 -154
- package/dist/functions/easing.js +30 -62
- package/dist/functions/effects.js +6 -10
- package/dist/functions/emptyRoom.js +30 -34
- package/dist/functions/entities.js +88 -115
- package/dist/functions/entitiesSpecific.js +83 -125
- package/dist/functions/entityTypes.js +3 -6
- package/dist/functions/enums.js +27 -41
- package/dist/functions/external.js +4 -8
- package/dist/functions/familiars.js +17 -25
- package/dist/functions/flag.js +10 -19
- package/dist/functions/frames.js +31 -51
- package/dist/functions/globals.js +26 -66
- package/dist/functions/gridEntities.js +231 -269
- package/dist/functions/gridEntitiesSpecific.js +86 -126
- package/dist/functions/gridIndex.js +8 -11
- package/dist/functions/hash.js +1 -4
- package/dist/functions/hex.js +7 -11
- package/dist/functions/input.js +65 -88
- package/dist/functions/isaacAPIClass.js +28 -53
- package/dist/functions/itemPool.js +39 -48
- package/dist/functions/jsonHelpers.js +5 -42
- package/dist/functions/jsonRoom.js +39 -46
- package/dist/functions/kColor.js +30 -39
- package/dist/functions/language.js +3 -6
- package/dist/functions/level.js +20 -26
- package/dist/functions/levelGrid.js +81 -108
- package/dist/functions/log.js +6 -12
- package/dist/functions/logEntities.js +49 -59
- package/dist/functions/logMisc.js +183 -214
- package/dist/functions/map.js +10 -20
- package/dist/functions/math.js +16 -31
- package/dist/functions/merge.js +48 -51
- package/dist/functions/mergeTests.js +34 -37
- package/dist/functions/minimap.js +34 -46
- package/dist/functions/modFeatures.js +1 -4
- package/dist/functions/newArray.js +5 -8
- package/dist/functions/nextStage.js +63 -67
- package/dist/functions/npcDataStructures.js +9 -20
- package/dist/functions/npcs.js +37 -45
- package/dist/functions/pickupVariants.js +26 -39
- package/dist/functions/pickups.js +43 -59
- package/dist/functions/pickupsSpecific.js +76 -118
- package/dist/functions/pills.js +52 -72
- package/dist/functions/playerCenter.js +13 -16
- package/dist/functions/playerCollectibles.js +59 -79
- package/dist/functions/playerDataStructures.js +18 -29
- package/dist/functions/playerEffects.js +12 -19
- package/dist/functions/playerHealth.js +91 -113
- package/dist/functions/playerIndex.js +22 -33
- package/dist/functions/playerTrinkets.js +31 -43
- package/dist/functions/players.js +87 -126
- package/dist/functions/pocketItems.js +33 -43
- package/dist/functions/positionVelocity.js +23 -32
- package/dist/functions/pressurePlate.js +7 -10
- package/dist/functions/projectiles.js +11 -15
- package/dist/functions/random.js +8 -13
- package/dist/functions/readOnly.js +3 -8
- package/dist/functions/render.js +7 -12
- package/dist/functions/revive.js +38 -45
- package/dist/functions/rng.js +31 -44
- package/dist/functions/rockAlt.js +18 -22
- package/dist/functions/roomData.js +24 -40
- package/dist/functions/roomGrid.js +17 -25
- package/dist/functions/roomShape.js +39 -55
- package/dist/functions/roomShapeWalls.js +67 -71
- package/dist/functions/roomTransition.js +13 -17
- package/dist/functions/rooms.js +181 -244
- package/dist/functions/run.js +29 -39
- package/dist/functions/seeds.js +6 -10
- package/dist/functions/serialization.js +27 -34
- package/dist/functions/set.js +24 -40
- package/dist/functions/slots.js +18 -22
- package/dist/functions/sort.js +9 -15
- package/dist/functions/sound.js +12 -16
- package/dist/functions/spawnCollectible.js +21 -26
- package/dist/functions/sprites.js +16 -24
- package/dist/functions/stage.js +122 -164
- package/dist/functions/stats.js +37 -43
- package/dist/functions/storyBosses.js +36 -40
- package/dist/functions/string.js +19 -33
- package/dist/functions/table.js +21 -31
- package/dist/functions/tears.js +6 -14
- package/dist/functions/transformations.js +35 -42
- package/dist/functions/trinketGive.js +29 -36
- package/dist/functions/trinkets.js +45 -60
- package/dist/functions/tstlClass.js +11 -20
- package/dist/functions/types.js +22 -46
- package/dist/functions/ui.js +25 -40
- package/dist/functions/utils.js +22 -36
- package/dist/functions/vector.js +33 -46
- package/dist/functions/versusScreen.js +12 -18
- package/dist/functions/weighted.js +8 -12
- package/dist/index.js +150 -166
- package/dist/index.rollup.d.ts +11 -11
- package/dist/indexLua.js +151 -167
- package/dist/interfaces/ChargeBarSprites.js +1 -2
- package/dist/interfaces/Corner.js +1 -2
- package/dist/interfaces/CustomStageTSConfig.js +1 -2
- package/dist/interfaces/GridEntityCustomData.js +1 -2
- package/dist/interfaces/JSONRoomsFile.js +1 -2
- package/dist/interfaces/PlayerHealth.d.ts +11 -11
- package/dist/interfaces/PlayerHealth.d.ts.map +1 -1
- package/dist/interfaces/PlayerHealth.js +1 -2
- package/dist/interfaces/PlayerStats.js +2 -4
- package/dist/interfaces/PocketItemDescription.js +1 -2
- package/dist/interfaces/RoomDescription.js +1 -2
- package/dist/interfaces/SaveData.js +1 -2
- package/dist/interfaces/StageHistoryEntry.js +1 -2
- package/dist/interfaces/TSTLClassMetatable.js +1 -2
- package/dist/interfaces/TrinketSituation.js +1 -2
- package/dist/interfaces/private/AddCallbackParametersCustom.js +2 -4
- package/dist/interfaces/private/CustomStage.js +1 -2
- package/dist/interfaces/private/CustomTrapdoorDescription.js +1 -2
- package/dist/interfaces/private/ModUpgradedInterface.js +1 -2
- package/dist/isaacscript-common.lua +1 -1
- package/dist/maps/PHDPillConversionsMap.js +19 -22
- package/dist/maps/cardNameToTypeMap.js +205 -208
- package/dist/maps/characterNameToTypeMap.js +85 -88
- package/dist/maps/collectibleNameToTypeMap.js +5 -8
- package/dist/maps/defaultPlayerStatMap.js +10 -13
- package/dist/maps/entityTypeVariantToBossIDMap.js +3 -6
- package/dist/maps/falsePHDPillConversionsMap.js +33 -36
- package/dist/maps/gridEntityTypeToBrokenStateMap.js +15 -18
- package/dist/maps/gridEntityXMLMap.js +52 -55
- package/dist/maps/itemPoolTypeToItemPoolName.js +33 -36
- package/dist/maps/keyboardToStringMap.js +66 -69
- package/dist/maps/pillNameToEffectMap.js +83 -86
- package/dist/maps/roomNameToTypeMap.js +38 -41
- package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +9 -12
- package/dist/maps/transformationNameToPlayerFormMap.js +30 -33
- package/dist/maps/trinketNameToTypeMap.js +5 -8
- package/dist/objects/LRoomShapeToRectangles.js +22 -25
- package/dist/objects/backdropTypeToRockAltType.js +65 -68
- package/dist/objects/batteryNames.js +8 -11
- package/dist/objects/bombNames.js +11 -14
- package/dist/objects/bossIDToEntityTypeVariant.js +116 -119
- package/dist/objects/bossNamePNGFileNames.js +104 -107
- package/dist/objects/bossNames.js +105 -108
- package/dist/objects/bossPortraitPNGFileNames.js +104 -107
- package/dist/objects/cardDescriptions.js +101 -104
- package/dist/objects/cardNames.js +101 -104
- package/dist/objects/challengeBosses.js +49 -52
- package/dist/objects/challengeCharacters.js +49 -52
- package/dist/objects/challengeCollectibleTypes.js +160 -163
- package/dist/objects/challengeNames.js +49 -52
- package/dist/objects/challengeTrinketType.js +48 -51
- package/dist/objects/characterDamageMultipliers.js +44 -47
- package/dist/objects/characterNames.js +44 -47
- package/dist/objects/characterSpritePNGFileNames.js +44 -47
- package/dist/objects/characterStartingCollectibleTypes.js +49 -52
- package/dist/objects/characterStartingTrinketTypes.js +44 -47
- package/dist/objects/chestNames.js +15 -18
- package/dist/objects/coinNames.js +11 -14
- package/dist/objects/coinSubTypeToValue.js +11 -14
- package/dist/objects/collectibleDescriptions.js +725 -728
- package/dist/objects/collectibleNames.js +725 -728
- package/dist/objects/colors.js +1 -4
- package/dist/objects/directionNames.js +7 -10
- package/dist/objects/directionToDegrees.js +7 -10
- package/dist/objects/directionToMoveAction.js +7 -10
- package/dist/objects/directionToShootAction.js +7 -10
- package/dist/objects/directionToVector.js +9 -12
- package/dist/objects/doorSlotFlagToDoorSlot.js +11 -14
- package/dist/objects/doorSlotToDirection.js +11 -14
- package/dist/objects/doorSlotToDoorSlotFlag.js +11 -14
- package/dist/objects/gridEntityTypeToANM2Name.js +30 -33
- package/dist/objects/heartNames.js +16 -19
- package/dist/objects/isaacAPIClassTypeToBrand.js +8 -11
- package/dist/objects/isaacAPIClassTypeToFunctions.js +37 -40
- package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +9 -45
- package/dist/objects/kColors.js +1 -4
- package/dist/objects/keyNames.js +8 -11
- package/dist/objects/languageNames.js +9 -12
- package/dist/objects/oppositeDoorSlots.js +11 -14
- package/dist/objects/pillEffectClasses.js +53 -56
- package/dist/objects/pillEffectNames.js +53 -56
- package/dist/objects/pillEffectTypeToPillEffects.js +11 -14
- package/dist/objects/pillEffectTypes.js +53 -56
- package/dist/objects/playerNamePNGFileNames.js +44 -47
- package/dist/objects/playerPortraitPNGFileNames.js +44 -47
- package/dist/objects/roomShapeBounds.js +23 -26
- package/dist/objects/roomShapeCorners.js +128 -131
- package/dist/objects/roomShapeLayoutSizes.js +23 -26
- package/dist/objects/roomShapeToBottomRightPosition.js +17 -20
- package/dist/objects/roomShapeToDoorSlotCoordinates.js +78 -81
- package/dist/objects/roomShapeToDoorSlots.js +48 -51
- package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +82 -85
- package/dist/objects/roomShapeToGridWidth.js +14 -17
- package/dist/objects/roomShapeToTopLeftPosition.js +18 -21
- package/dist/objects/roomShapeVolumes.js +21 -24
- package/dist/objects/roomTypeNames.js +32 -35
- package/dist/objects/roomTypeSpecialGotoPrefixes.js +32 -35
- package/dist/objects/sackNames.js +6 -9
- package/dist/objects/slotNames.js +21 -24
- package/dist/objects/stageIDNames.js +33 -36
- package/dist/objects/stageToMusic.js +69 -72
- package/dist/objects/stageToStageID.js +90 -93
- package/dist/objects/stageTypeSuffixes.js +8 -11
- package/dist/objects/transformationNames.js +16 -19
- package/dist/objects/trinketDescriptions.js +192 -195
- package/dist/objects/trinketNames.js +192 -195
- package/dist/objects/versusScreenBackgroundColors.js +39 -42
- package/dist/objects/versusScreenDirtSpotColors.js +39 -42
- package/dist/patchErrorFunctions.js +4 -7
- package/dist/serialization.js +6 -9
- package/dist/sets/LRoomShapesSet.js +7 -10
- package/dist/sets/bigRoomShapesSet.js +10 -13
- package/dist/sets/bossSets.js +261 -264
- package/dist/sets/charactersThatStartWithAnActiveItemSet.js +14 -17
- package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +5 -8
- package/dist/sets/charactersWithFreeDevilDealsSet.js +3 -6
- package/dist/sets/charactersWithNoRedHeartsSet.js +11 -14
- package/dist/sets/charactersWithNoSoulHeartsSet.js +8 -11
- package/dist/sets/consoleCommandsSet.js +2 -5
- package/dist/sets/entitiesWithArmorSet.js +44 -47
- package/dist/sets/familiarsThatShootPlayerTearsSet.js +11 -14
- package/dist/sets/itemConfigCardTypesForCards.js +7 -10
- package/dist/sets/lostStyleCharactersSet.js +8 -11
- package/dist/sets/mineShaftRoomSubTypesSet.js +8 -11
- package/dist/sets/narrowRoomShapesSet.js +7 -10
- package/dist/sets/poopGridEntityXMLTypesSet.js +12 -15
- package/dist/sets/redHeartSubTypesSet.js +6 -9
- package/dist/sets/repentanceBossIDsSet.js +26 -29
- package/dist/sets/sinEntityTypesSet.js +10 -13
- package/dist/sets/singleUseActiveCollectibleTypesSet.js +11 -14
- package/dist/shaderCrashFix.js +4 -7
- package/dist/shouldFire.js +28 -58
- package/dist/types/AddSubtract.js +1 -2
- package/dist/types/AllButFirst.js +1 -2
- package/dist/types/AllButLast.js +1 -2
- package/dist/types/AnyClass.js +1 -2
- package/dist/types/AnyEntity.js +1 -2
- package/dist/types/AnyFunction.js +1 -2
- package/dist/types/AnyGridEntity.js +1 -2
- package/dist/types/CompositionTypeSatisfiesEnum.js +1 -2
- package/dist/types/ConversionHeartSubType.js +1 -2
- package/dist/types/Decrement.js +1 -2
- package/dist/types/ERange.js +1 -2
- package/dist/types/EntityID.js +1 -2
- package/dist/types/FunctionTuple.js +1 -2
- package/dist/types/GridEntityID.js +1 -2
- package/dist/types/HasFunction.js +1 -2
- package/dist/types/IRange.js +1 -2
- package/dist/types/Immutable.js +1 -2
- package/dist/types/Increment.js +1 -2
- package/dist/types/LowercaseKeys.js +1 -2
- package/dist/types/NaturalNumbersLessThan.js +1 -2
- package/dist/types/NaturalNumbersLessThanOrEqualTo.js +1 -2
- package/dist/types/ObjectValues.js +1 -2
- package/dist/types/PickingUpItem.js +15 -22
- package/dist/types/PickupIndex.js +1 -2
- package/dist/types/PlayerIndex.js +1 -2
- package/dist/types/PossibleStatType.js +1 -2
- package/dist/types/PublicInterface.js +1 -2
- package/dist/types/ReadonlyMap.js +1 -4
- package/dist/types/ReadonlyRecord.js +1 -2
- package/dist/types/ReadonlySet.js +1 -4
- package/dist/types/StartsWithLowercase.js +1 -2
- package/dist/types/StartsWithUppercase.js +1 -2
- package/dist/types/TSTLClass.js +1 -2
- package/dist/types/Tuple.js +1 -2
- package/dist/types/TupleKeys.js +1 -2
- package/dist/types/TupleToIntersection.js +1 -2
- package/dist/types/TupleToUnion.js +1 -2
- package/dist/types/TupleWithLengthBetween.js +1 -2
- package/dist/types/TupleWithMaxLength.js +1 -2
- package/dist/types/UnionToIntersection.js +1 -2
- package/dist/types/UppercaseKeys.js +1 -2
- package/dist/types/WeightedArray.js +1 -2
- package/dist/types/WidenLiteral.js +1 -2
- package/dist/types/Writable.js +1 -2
- package/dist/types/private/CallbackTuple.js +1 -2
- package/dist/types/private/ModUpgradedWithFeatures.js +1 -2
- package/package.json +3 -3
- package/src/interfaces/PlayerHealth.ts +12 -11
|
@@ -1,27 +1,24 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
4
|
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
6
|
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const vector_1 = require("../../../functions/vector");
|
|
24
|
-
const Feature_1 = require("../../private/Feature");
|
|
7
|
+
import { CardType, CoinSubType, CollectibleType, EffectVariant, EntityType, HeartSubType, ItemPoolType, PillColor, RoomType, TrinketType, } from "isaac-typescript-definitions";
|
|
8
|
+
import { game } from "../../../core/cachedClasses";
|
|
9
|
+
import { DISTANCE_OF_GRID_TILE } from "../../../core/constants";
|
|
10
|
+
import { Exported } from "../../../decorators";
|
|
11
|
+
import { ISCFeature } from "../../../enums/ISCFeature";
|
|
12
|
+
import { RockAltType } from "../../../enums/RockAltType";
|
|
13
|
+
import { spawnEffectWithSeed, spawnNPCWithSeed, } from "../../../functions/entitiesSpecific";
|
|
14
|
+
import { spawnCardWithSeed, spawnCoinWithSeed, spawnHeartWithSeed, spawnPillWithSeed, spawnTrinketWithSeed, } from "../../../functions/pickupsSpecific";
|
|
15
|
+
import { fireProjectilesInCircle } from "../../../functions/projectiles";
|
|
16
|
+
import { getRandom } from "../../../functions/random";
|
|
17
|
+
import { isRNG, newRNG } from "../../../functions/rng";
|
|
18
|
+
import { spawnCollectible } from "../../../functions/spawnCollectible";
|
|
19
|
+
import { repeat } from "../../../functions/utils";
|
|
20
|
+
import { getRandomVector, isVector } from "../../../functions/vector";
|
|
21
|
+
import { Feature } from "../../private/Feature";
|
|
25
22
|
const ROCK_ALT_CHANCES = {
|
|
26
23
|
NOTHING: 0.68,
|
|
27
24
|
BASIC_DROP: 0.0967,
|
|
@@ -33,15 +30,15 @@ const COIN_VELOCITY_MULTIPLIER = 2;
|
|
|
33
30
|
/** Matches the vanilla value, according to Fly's decompilation. */
|
|
34
31
|
const FIND_FREE_INITIAL_STEP = 70;
|
|
35
32
|
/** Matches the vanilla value, according to Fly's decompilation. */
|
|
36
|
-
const FART_RADIUS =
|
|
33
|
+
const FART_RADIUS = DISTANCE_OF_GRID_TILE * 3;
|
|
37
34
|
const POLYP_PROJECTILE_SPEED = 10;
|
|
38
35
|
const POLYP_NUM_PROJECTILES = 6;
|
|
39
|
-
class SpawnRockAltRewards extends
|
|
36
|
+
export class SpawnRockAltRewards extends Feature {
|
|
40
37
|
itemPoolDetection;
|
|
41
38
|
/** @internal */
|
|
42
39
|
constructor(itemPoolDetection) {
|
|
43
40
|
super();
|
|
44
|
-
this.featuresUsed = [
|
|
41
|
+
this.featuresUsed = [ISCFeature.ITEM_POOL_DETECTION];
|
|
45
42
|
this.itemPoolDetection = itemPoolDetection;
|
|
46
43
|
}
|
|
47
44
|
/**
|
|
@@ -82,28 +79,28 @@ class SpawnRockAltRewards extends Feature_1.Feature {
|
|
|
82
79
|
* @public
|
|
83
80
|
*/
|
|
84
81
|
spawnRockAltReward(positionOrGridIndex, rockAltType, seedOrRNG) {
|
|
85
|
-
const room =
|
|
86
|
-
const position =
|
|
82
|
+
const room = game.GetRoom();
|
|
83
|
+
const position = isVector(positionOrGridIndex)
|
|
87
84
|
? positionOrGridIndex
|
|
88
85
|
: room.GetGridPosition(positionOrGridIndex);
|
|
89
|
-
const rng =
|
|
86
|
+
const rng = isRNG(seedOrRNG) ? seedOrRNG : newRNG(seedOrRNG);
|
|
90
87
|
switch (rockAltType) {
|
|
91
|
-
case
|
|
88
|
+
case RockAltType.URN: {
|
|
92
89
|
return this.spawnRockAltRewardUrn(position, rng);
|
|
93
90
|
}
|
|
94
|
-
case
|
|
91
|
+
case RockAltType.MUSHROOM: {
|
|
95
92
|
return this.spawnRockAltRewardMushroom(position, rng);
|
|
96
93
|
}
|
|
97
|
-
case
|
|
94
|
+
case RockAltType.SKULL: {
|
|
98
95
|
return this.spawnRockAltRewardSkull(position, rng);
|
|
99
96
|
}
|
|
100
|
-
case
|
|
97
|
+
case RockAltType.POLYP: {
|
|
101
98
|
return this.spawnRockAltRewardPolyp(position, rng);
|
|
102
99
|
}
|
|
103
|
-
case
|
|
100
|
+
case RockAltType.BUCKET_DOWNPOUR: {
|
|
104
101
|
return this.spawnRockAltRewardBucketDownpour(position, rng);
|
|
105
102
|
}
|
|
106
|
-
case
|
|
103
|
+
case RockAltType.BUCKET_DROSS: {
|
|
107
104
|
return this.spawnRockAltRewardBucketDross(position, rng);
|
|
108
105
|
}
|
|
109
106
|
}
|
|
@@ -118,8 +115,8 @@ class SpawnRockAltRewards extends Feature_1.Feature {
|
|
|
118
115
|
* `ISCFeature.SPAWN_ALT_ROCK_REWARDS`.
|
|
119
116
|
*/
|
|
120
117
|
spawnRockAltRewardUrn(position, rng) {
|
|
121
|
-
const room =
|
|
122
|
-
const chance =
|
|
118
|
+
const room = game.GetRoom();
|
|
119
|
+
const chance = getRandom(rng);
|
|
123
120
|
let totalChance = 0;
|
|
124
121
|
totalChance += ROCK_ALT_CHANCES.NOTHING;
|
|
125
122
|
if (chance < totalChance) {
|
|
@@ -127,33 +124,33 @@ class SpawnRockAltRewards extends Feature_1.Feature {
|
|
|
127
124
|
}
|
|
128
125
|
totalChance += ROCK_ALT_CHANCES.BASIC_DROP;
|
|
129
126
|
if (chance < totalChance) {
|
|
130
|
-
const numCoinsChance =
|
|
127
|
+
const numCoinsChance = getRandom(rng);
|
|
131
128
|
const numCoins = numCoinsChance < 0.5 ? 1 : 2;
|
|
132
|
-
|
|
133
|
-
const randomVector =
|
|
129
|
+
repeat(numCoins, () => {
|
|
130
|
+
const randomVector = getRandomVector(rng);
|
|
134
131
|
const velocity = randomVector.mul(COIN_VELOCITY_MULTIPLIER);
|
|
135
|
-
|
|
132
|
+
spawnCoinWithSeed(CoinSubType.NULL, position, rng, velocity);
|
|
136
133
|
});
|
|
137
134
|
return true;
|
|
138
135
|
}
|
|
139
136
|
totalChance += ROCK_ALT_CHANCES.TRINKET;
|
|
140
137
|
if (chance < totalChance) {
|
|
141
|
-
|
|
138
|
+
spawnTrinketWithSeed(TrinketType.SWALLOWED_PENNY, position, rng);
|
|
142
139
|
return true;
|
|
143
140
|
}
|
|
144
141
|
totalChance += ROCK_ALT_CHANCES.COLLECTIBLE;
|
|
145
142
|
if (chance < totalChance) {
|
|
146
|
-
const stillInPools = this.itemPoolDetection.isCollectibleInItemPool(
|
|
143
|
+
const stillInPools = this.itemPoolDetection.isCollectibleInItemPool(CollectibleType.QUARTER, ItemPoolType.DEVIL);
|
|
147
144
|
if (stillInPools) {
|
|
148
|
-
|
|
145
|
+
spawnCollectible(CollectibleType.QUARTER, position, rng);
|
|
149
146
|
return true;
|
|
150
147
|
}
|
|
151
148
|
return false;
|
|
152
149
|
}
|
|
153
150
|
// Since the detrimental effect is the final option, we don't need to check the chance.
|
|
154
|
-
const numEnemiesChance =
|
|
151
|
+
const numEnemiesChance = getRandom(rng);
|
|
155
152
|
const numEnemies = numEnemiesChance < 0.5 ? 1 : 2;
|
|
156
|
-
|
|
153
|
+
repeat(numEnemies, () => {
|
|
157
154
|
const targetPos = room.FindFreePickupSpawnPosition(position, FIND_FREE_INITIAL_STEP);
|
|
158
155
|
EntityNPC.ThrowSpider(position, undefined, targetPos, false, 0);
|
|
159
156
|
});
|
|
@@ -169,9 +166,9 @@ class SpawnRockAltRewards extends Feature_1.Feature {
|
|
|
169
166
|
* `ISCFeature.SPAWN_ALT_ROCK_REWARDS`.
|
|
170
167
|
*/
|
|
171
168
|
spawnRockAltRewardMushroom(position, rng) {
|
|
172
|
-
const room =
|
|
169
|
+
const room = game.GetRoom();
|
|
173
170
|
const roomType = room.GetType();
|
|
174
|
-
const chance =
|
|
171
|
+
const chance = getRandom(rng);
|
|
175
172
|
let totalChance = 0;
|
|
176
173
|
totalChance += ROCK_ALT_CHANCES.NOTHING;
|
|
177
174
|
if (chance < totalChance) {
|
|
@@ -179,49 +176,49 @@ class SpawnRockAltRewards extends Feature_1.Feature {
|
|
|
179
176
|
}
|
|
180
177
|
totalChance += ROCK_ALT_CHANCES.BASIC_DROP;
|
|
181
178
|
if (chance < totalChance) {
|
|
182
|
-
|
|
179
|
+
spawnPillWithSeed(PillColor.NULL, position, rng);
|
|
183
180
|
return true;
|
|
184
181
|
}
|
|
185
182
|
totalChance += ROCK_ALT_CHANCES.TRINKET;
|
|
186
183
|
if (chance < totalChance) {
|
|
187
|
-
|
|
184
|
+
spawnTrinketWithSeed(TrinketType.LIBERTY_CAP, position, rng);
|
|
188
185
|
return true;
|
|
189
186
|
}
|
|
190
187
|
totalChance += ROCK_ALT_CHANCES.COLLECTIBLE;
|
|
191
188
|
if (chance < totalChance) {
|
|
192
|
-
if (roomType ===
|
|
193
|
-
const wavyCapChance =
|
|
189
|
+
if (roomType === RoomType.SECRET) {
|
|
190
|
+
const wavyCapChance = getRandom(rng);
|
|
194
191
|
if (wavyCapChance < 0.0272) {
|
|
195
|
-
const stillInPools = this.itemPoolDetection.isCollectibleInItemPool(
|
|
192
|
+
const stillInPools = this.itemPoolDetection.isCollectibleInItemPool(CollectibleType.WAVY_CAP, ItemPoolType.SECRET);
|
|
196
193
|
if (stillInPools) {
|
|
197
|
-
|
|
194
|
+
spawnCollectible(CollectibleType.WAVY_CAP, position, rng);
|
|
198
195
|
return true;
|
|
199
196
|
}
|
|
200
197
|
}
|
|
201
198
|
}
|
|
202
|
-
const magicMushroomStillInPools = this.itemPoolDetection.isCollectibleInItemPool(
|
|
203
|
-
const miniMushStillInPools = this.itemPoolDetection.isCollectibleInItemPool(
|
|
199
|
+
const magicMushroomStillInPools = this.itemPoolDetection.isCollectibleInItemPool(CollectibleType.MAGIC_MUSHROOM, ItemPoolType.TREASURE);
|
|
200
|
+
const miniMushStillInPools = this.itemPoolDetection.isCollectibleInItemPool(CollectibleType.MINI_MUSH, ItemPoolType.TREASURE);
|
|
204
201
|
if (magicMushroomStillInPools && miniMushStillInPools) {
|
|
205
|
-
const collectibleChance =
|
|
202
|
+
const collectibleChance = getRandom(rng);
|
|
206
203
|
const collectibleType = collectibleChance < 0.5
|
|
207
|
-
?
|
|
208
|
-
:
|
|
209
|
-
|
|
204
|
+
? CollectibleType.MAGIC_MUSHROOM // 12
|
|
205
|
+
: CollectibleType.MINI_MUSH; // 71
|
|
206
|
+
spawnCollectible(collectibleType, position, rng);
|
|
210
207
|
return true;
|
|
211
208
|
}
|
|
212
209
|
if (magicMushroomStillInPools) {
|
|
213
|
-
|
|
210
|
+
spawnCollectible(CollectibleType.MINI_MUSH, position, rng);
|
|
214
211
|
return true;
|
|
215
212
|
}
|
|
216
213
|
if (miniMushStillInPools) {
|
|
217
|
-
|
|
214
|
+
spawnCollectible(CollectibleType.MAGIC_MUSHROOM, position, rng);
|
|
218
215
|
return true;
|
|
219
216
|
}
|
|
220
217
|
return false;
|
|
221
218
|
}
|
|
222
219
|
// Since the detrimental effect is the final option, we don't need to check the chance.
|
|
223
|
-
|
|
224
|
-
|
|
220
|
+
game.Fart(position);
|
|
221
|
+
game.ButterBeanFart(position, FART_RADIUS, undefined);
|
|
225
222
|
return true;
|
|
226
223
|
}
|
|
227
224
|
/**
|
|
@@ -234,7 +231,7 @@ class SpawnRockAltRewards extends Feature_1.Feature {
|
|
|
234
231
|
* `ISCFeature.SPAWN_ALT_ROCK_REWARDS`.
|
|
235
232
|
*/
|
|
236
233
|
spawnRockAltRewardSkull(position, rng) {
|
|
237
|
-
const chance =
|
|
234
|
+
const chance = getRandom(rng);
|
|
238
235
|
let totalChance = 0;
|
|
239
236
|
totalChance += ROCK_ALT_CHANCES.NOTHING;
|
|
240
237
|
if (chance < totalChance) {
|
|
@@ -242,38 +239,38 @@ class SpawnRockAltRewards extends Feature_1.Feature {
|
|
|
242
239
|
}
|
|
243
240
|
totalChance += ROCK_ALT_CHANCES.BASIC_DROP;
|
|
244
241
|
if (chance < totalChance) {
|
|
245
|
-
|
|
242
|
+
spawnCardWithSeed(CardType.NULL, position, rng);
|
|
246
243
|
return true;
|
|
247
244
|
}
|
|
248
245
|
totalChance += ROCK_ALT_CHANCES.TRINKET;
|
|
249
246
|
if (chance < totalChance) {
|
|
250
|
-
|
|
247
|
+
spawnHeartWithSeed(HeartSubType.BLACK, position, rng);
|
|
251
248
|
return true;
|
|
252
249
|
}
|
|
253
250
|
totalChance += ROCK_ALT_CHANCES.COLLECTIBLE;
|
|
254
251
|
if (chance < totalChance) {
|
|
255
|
-
const ghostBabyStillInPools = this.itemPoolDetection.isCollectibleInItemPool(
|
|
256
|
-
const dryBabyStillInPools = this.itemPoolDetection.isCollectibleInItemPool(
|
|
252
|
+
const ghostBabyStillInPools = this.itemPoolDetection.isCollectibleInItemPool(CollectibleType.GHOST_BABY, ItemPoolType.TREASURE);
|
|
253
|
+
const dryBabyStillInPools = this.itemPoolDetection.isCollectibleInItemPool(CollectibleType.DRY_BABY, ItemPoolType.TREASURE);
|
|
257
254
|
if (ghostBabyStillInPools && dryBabyStillInPools) {
|
|
258
|
-
const collectibleChance =
|
|
255
|
+
const collectibleChance = getRandom(rng);
|
|
259
256
|
const collectibleType = collectibleChance < 0.5
|
|
260
|
-
?
|
|
261
|
-
:
|
|
262
|
-
|
|
257
|
+
? CollectibleType.GHOST_BABY // 163
|
|
258
|
+
: CollectibleType.DRY_BABY; // 265
|
|
259
|
+
spawnCollectible(collectibleType, position, rng);
|
|
263
260
|
return true;
|
|
264
261
|
}
|
|
265
262
|
if (ghostBabyStillInPools) {
|
|
266
|
-
|
|
263
|
+
spawnCollectible(CollectibleType.DRY_BABY, position, rng);
|
|
267
264
|
return true;
|
|
268
265
|
}
|
|
269
266
|
if (dryBabyStillInPools) {
|
|
270
|
-
|
|
267
|
+
spawnCollectible(CollectibleType.GHOST_BABY, position, rng);
|
|
271
268
|
return true;
|
|
272
269
|
}
|
|
273
270
|
return false;
|
|
274
271
|
}
|
|
275
272
|
// Since the detrimental effect is the final option, we don't need to check the chance.
|
|
276
|
-
|
|
273
|
+
spawnNPCWithSeed(EntityType.HOST, 0, 0, position, rng);
|
|
277
274
|
return true;
|
|
278
275
|
}
|
|
279
276
|
/**
|
|
@@ -286,7 +283,7 @@ class SpawnRockAltRewards extends Feature_1.Feature {
|
|
|
286
283
|
* `ISCFeature.SPAWN_ALT_ROCK_REWARDS`.
|
|
287
284
|
*/
|
|
288
285
|
spawnRockAltRewardPolyp(position, rng) {
|
|
289
|
-
const chance =
|
|
286
|
+
const chance = getRandom(rng);
|
|
290
287
|
let totalChance = 0;
|
|
291
288
|
totalChance += ROCK_ALT_CHANCES.NOTHING;
|
|
292
289
|
if (chance < totalChance) {
|
|
@@ -294,39 +291,39 @@ class SpawnRockAltRewards extends Feature_1.Feature {
|
|
|
294
291
|
}
|
|
295
292
|
totalChance += ROCK_ALT_CHANCES.BASIC_DROP;
|
|
296
293
|
if (chance < totalChance) {
|
|
297
|
-
|
|
294
|
+
spawnHeartWithSeed(HeartSubType.NULL, position, rng);
|
|
298
295
|
return true;
|
|
299
296
|
}
|
|
300
297
|
totalChance += ROCK_ALT_CHANCES.TRINKET;
|
|
301
298
|
if (chance < totalChance) {
|
|
302
|
-
|
|
299
|
+
spawnTrinketWithSeed(TrinketType.UMBILICAL_CORD, position, rng);
|
|
303
300
|
return true;
|
|
304
301
|
}
|
|
305
302
|
totalChance += ROCK_ALT_CHANCES.COLLECTIBLE;
|
|
306
303
|
if (chance < totalChance) {
|
|
307
|
-
const placentaStillInPools = this.itemPoolDetection.isCollectibleInItemPool(
|
|
308
|
-
const bloodClotStillInPools = this.itemPoolDetection.isCollectibleInItemPool(
|
|
304
|
+
const placentaStillInPools = this.itemPoolDetection.isCollectibleInItemPool(CollectibleType.PLACENTA, ItemPoolType.BOSS);
|
|
305
|
+
const bloodClotStillInPools = this.itemPoolDetection.isCollectibleInItemPool(CollectibleType.BLOOD_CLOT, ItemPoolType.BOSS);
|
|
309
306
|
if (placentaStillInPools && bloodClotStillInPools) {
|
|
310
|
-
const collectibleChance =
|
|
307
|
+
const collectibleChance = getRandom(rng);
|
|
311
308
|
const collectibleType = collectibleChance < 0.5
|
|
312
|
-
?
|
|
313
|
-
:
|
|
314
|
-
|
|
309
|
+
? CollectibleType.PLACENTA // 218
|
|
310
|
+
: CollectibleType.BLOOD_CLOT; // 254
|
|
311
|
+
spawnCollectible(collectibleType, position, rng);
|
|
315
312
|
return true;
|
|
316
313
|
}
|
|
317
314
|
if (placentaStillInPools) {
|
|
318
|
-
|
|
315
|
+
spawnCollectible(CollectibleType.PLACENTA, position, rng);
|
|
319
316
|
return true;
|
|
320
317
|
}
|
|
321
318
|
if (bloodClotStillInPools) {
|
|
322
|
-
|
|
319
|
+
spawnCollectible(CollectibleType.BLOOD_CLOT, position, rng);
|
|
323
320
|
return true;
|
|
324
321
|
}
|
|
325
322
|
return false;
|
|
326
323
|
}
|
|
327
324
|
// Since the detrimental effect is the final option, we don't need to check the chance.
|
|
328
|
-
|
|
329
|
-
|
|
325
|
+
spawnEffectWithSeed(EffectVariant.CREEP_RED, 0, position, rng);
|
|
326
|
+
fireProjectilesInCircle(undefined, position, POLYP_PROJECTILE_SPEED, POLYP_NUM_PROJECTILES);
|
|
330
327
|
return true;
|
|
331
328
|
}
|
|
332
329
|
/**
|
|
@@ -339,8 +336,8 @@ class SpawnRockAltRewards extends Feature_1.Feature {
|
|
|
339
336
|
* `ISCFeature.SPAWN_ALT_ROCK_REWARDS`.
|
|
340
337
|
*/
|
|
341
338
|
spawnRockAltRewardBucketDownpour(position, rng) {
|
|
342
|
-
const room =
|
|
343
|
-
const chance =
|
|
339
|
+
const room = game.GetRoom();
|
|
340
|
+
const chance = getRandom(rng);
|
|
344
341
|
let totalChance = 0;
|
|
345
342
|
totalChance += ROCK_ALT_CHANCES.NOTHING;
|
|
346
343
|
if (chance < totalChance) {
|
|
@@ -348,41 +345,41 @@ class SpawnRockAltRewards extends Feature_1.Feature {
|
|
|
348
345
|
}
|
|
349
346
|
totalChance += ROCK_ALT_CHANCES.BASIC_DROP;
|
|
350
347
|
if (chance < totalChance) {
|
|
351
|
-
const numCoinsChance =
|
|
348
|
+
const numCoinsChance = getRandom(rng);
|
|
352
349
|
const numCoins = numCoinsChance < 0.5 ? 1 : 2;
|
|
353
|
-
|
|
354
|
-
const randomVector =
|
|
350
|
+
repeat(numCoins, () => {
|
|
351
|
+
const randomVector = getRandomVector(rng);
|
|
355
352
|
const velocity = randomVector.mul(COIN_VELOCITY_MULTIPLIER);
|
|
356
|
-
|
|
353
|
+
spawnCoinWithSeed(CoinSubType.NULL, position, rng, velocity);
|
|
357
354
|
});
|
|
358
355
|
return true;
|
|
359
356
|
}
|
|
360
357
|
totalChance += ROCK_ALT_CHANCES.TRINKET;
|
|
361
358
|
if (chance < totalChance) {
|
|
362
|
-
|
|
359
|
+
spawnTrinketWithSeed(TrinketType.SWALLOWED_PENNY, position, rng);
|
|
363
360
|
return true;
|
|
364
361
|
}
|
|
365
362
|
totalChance += ROCK_ALT_CHANCES.COLLECTIBLE;
|
|
366
363
|
if (chance < totalChance) {
|
|
367
|
-
const stillInPools = this.itemPoolDetection.isCollectibleInItemPool(
|
|
364
|
+
const stillInPools = this.itemPoolDetection.isCollectibleInItemPool(CollectibleType.LEECH, ItemPoolType.TREASURE);
|
|
368
365
|
if (stillInPools) {
|
|
369
|
-
|
|
366
|
+
spawnCollectible(CollectibleType.LEECH, position, rng);
|
|
370
367
|
return true;
|
|
371
368
|
}
|
|
372
369
|
return false;
|
|
373
370
|
}
|
|
374
371
|
// Since the detrimental effect is the final option, we don't need to check the chance.
|
|
375
|
-
const enemiesChance =
|
|
376
|
-
const entityType = enemiesChance < 0.5 ?
|
|
377
|
-
const numEnemiesChance =
|
|
372
|
+
const enemiesChance = getRandom(rng);
|
|
373
|
+
const entityType = enemiesChance < 0.5 ? EntityType.SPIDER : EntityType.SMALL_LEECH;
|
|
374
|
+
const numEnemiesChance = getRandom(rng);
|
|
378
375
|
const numEnemies = numEnemiesChance < 0.5 ? 1 : 2;
|
|
379
|
-
|
|
376
|
+
repeat(numEnemies, () => {
|
|
380
377
|
const targetPos = room.FindFreePickupSpawnPosition(position, FIND_FREE_INITIAL_STEP);
|
|
381
378
|
// If the room has water, Spiders will automatically be replaced with Striders.
|
|
382
379
|
const spider = EntityNPC.ThrowSpider(position, undefined, targetPos, false, 0);
|
|
383
380
|
// There is no `ThrowLeech` function exposed in the API, so we can piggyback off of the
|
|
384
381
|
// `ThrowSpider` method.
|
|
385
|
-
if (entityType ===
|
|
382
|
+
if (entityType === EntityType.SMALL_LEECH && spider.Type !== entityType) {
|
|
386
383
|
spider.Morph(entityType, 0, 0, -1);
|
|
387
384
|
}
|
|
388
385
|
});
|
|
@@ -398,8 +395,8 @@ class SpawnRockAltRewards extends Feature_1.Feature {
|
|
|
398
395
|
* `ISCFeature.SPAWN_ALT_ROCK_REWARDS`.
|
|
399
396
|
*/
|
|
400
397
|
spawnRockAltRewardBucketDross(position, rng) {
|
|
401
|
-
const room =
|
|
402
|
-
const chance =
|
|
398
|
+
const room = game.GetRoom();
|
|
399
|
+
const chance = getRandom(rng);
|
|
403
400
|
let totalChance = 0;
|
|
404
401
|
totalChance += ROCK_ALT_CHANCES.NOTHING;
|
|
405
402
|
if (chance < totalChance) {
|
|
@@ -407,35 +404,35 @@ class SpawnRockAltRewards extends Feature_1.Feature {
|
|
|
407
404
|
}
|
|
408
405
|
totalChance += ROCK_ALT_CHANCES.BASIC_DROP;
|
|
409
406
|
if (chance < totalChance) {
|
|
410
|
-
const numCoinsChance =
|
|
407
|
+
const numCoinsChance = getRandom(rng);
|
|
411
408
|
const numCoins = numCoinsChance < 0.5 ? 1 : 2;
|
|
412
|
-
|
|
413
|
-
const randomVector =
|
|
409
|
+
repeat(numCoins, () => {
|
|
410
|
+
const randomVector = getRandomVector(rng);
|
|
414
411
|
const velocity = randomVector.mul(COIN_VELOCITY_MULTIPLIER);
|
|
415
|
-
|
|
412
|
+
spawnCoinWithSeed(CoinSubType.NULL, position, rng, velocity);
|
|
416
413
|
});
|
|
417
414
|
return true;
|
|
418
415
|
}
|
|
419
416
|
totalChance += ROCK_ALT_CHANCES.TRINKET;
|
|
420
417
|
if (chance < totalChance) {
|
|
421
|
-
|
|
418
|
+
spawnTrinketWithSeed(TrinketType.BUTT_PENNY, position, rng);
|
|
422
419
|
return true;
|
|
423
420
|
}
|
|
424
421
|
totalChance += ROCK_ALT_CHANCES.COLLECTIBLE;
|
|
425
422
|
if (chance < totalChance) {
|
|
426
|
-
const stillInPools = this.itemPoolDetection.isCollectibleInItemPool(
|
|
423
|
+
const stillInPools = this.itemPoolDetection.isCollectibleInItemPool(CollectibleType.POOP, ItemPoolType.TREASURE);
|
|
427
424
|
if (stillInPools) {
|
|
428
|
-
|
|
425
|
+
spawnCollectible(CollectibleType.POOP, position, rng);
|
|
429
426
|
return true;
|
|
430
427
|
}
|
|
431
428
|
return false;
|
|
432
429
|
}
|
|
433
430
|
// Since the detrimental effect is the final option, we don't need to check the chance.
|
|
434
|
-
const enemiesChance =
|
|
435
|
-
const entityType = enemiesChance < 0.5 ?
|
|
436
|
-
const numEnemiesChance =
|
|
431
|
+
const enemiesChance = getRandom(rng);
|
|
432
|
+
const entityType = enemiesChance < 0.5 ? EntityType.DRIP : EntityType.SMALL_LEECH;
|
|
433
|
+
const numEnemiesChance = getRandom(rng);
|
|
437
434
|
const numEnemies = numEnemiesChance < 0.5 ? 1 : 2;
|
|
438
|
-
|
|
435
|
+
repeat(numEnemies, () => {
|
|
439
436
|
const targetPos = room.FindFreePickupSpawnPosition(position, FIND_FREE_INITIAL_STEP);
|
|
440
437
|
const spider = EntityNPC.ThrowSpider(position, undefined, targetPos, false, 0);
|
|
441
438
|
// There is no `ThrowLeech` or `ThrowDrip` functions exposed in the API, so we can piggyback
|
|
@@ -445,25 +442,24 @@ class SpawnRockAltRewards extends Feature_1.Feature {
|
|
|
445
442
|
return true;
|
|
446
443
|
}
|
|
447
444
|
}
|
|
448
|
-
exports.SpawnRockAltRewards = SpawnRockAltRewards;
|
|
449
445
|
__decorate([
|
|
450
|
-
|
|
446
|
+
Exported
|
|
451
447
|
], SpawnRockAltRewards.prototype, "spawnRockAltReward", null);
|
|
452
448
|
__decorate([
|
|
453
|
-
|
|
449
|
+
Exported
|
|
454
450
|
], SpawnRockAltRewards.prototype, "spawnRockAltRewardUrn", null);
|
|
455
451
|
__decorate([
|
|
456
|
-
|
|
452
|
+
Exported
|
|
457
453
|
], SpawnRockAltRewards.prototype, "spawnRockAltRewardMushroom", null);
|
|
458
454
|
__decorate([
|
|
459
|
-
|
|
455
|
+
Exported
|
|
460
456
|
], SpawnRockAltRewards.prototype, "spawnRockAltRewardSkull", null);
|
|
461
457
|
__decorate([
|
|
462
|
-
|
|
458
|
+
Exported
|
|
463
459
|
], SpawnRockAltRewards.prototype, "spawnRockAltRewardPolyp", null);
|
|
464
460
|
__decorate([
|
|
465
|
-
|
|
461
|
+
Exported
|
|
466
462
|
], SpawnRockAltRewards.prototype, "spawnRockAltRewardBucketDownpour", null);
|
|
467
463
|
__decorate([
|
|
468
|
-
|
|
464
|
+
Exported
|
|
469
465
|
], SpawnRockAltRewards.prototype, "spawnRockAltRewardBucketDross", null);
|