isaacscript-common
Version:
Helper functions and features for IsaacScript mods.
113 lines • 5.91 kB
TypeScript
import type { LevelStage, StageID } from "isaac-typescript-definitions";
import { BossID, EntityType } from "isaac-typescript-definitions";
/**
* Helper function to get all of the non-dead bosses in the room.
*
* This function will not include bosses on an internal blacklist, such as Death's scythes or Big
* Horn holes.
*
* @param entityType Optional. If specified, will only get the bosses that match the type. Default
* is -1, which matches every type.
* @param variant Optional. If specified, will only get the bosses that match the variant. Default
* is -1, which matches every variant.
* @param subType Optional. If specified, will only get the bosses that match the sub-type. Default
* is -1, which matches every sub-type.
* @param ignoreFriendly Optional. Default is false.
*/
export declare function getAliveBosses(entityType?: EntityType | -1, variant?: number, subType?: number, ignoreFriendly?: boolean): readonly EntityNPC[];
/**
* Helper function to get an array with every boss in the game. This is derived from the `BossID`
* enum.
*
* This includes:
* - Ultra Greed
* - Ultra Greedier
*
* This does not include:
* - mini-bosses (e.g. Ultra Pride, Krampus)
* - bosses that do not appear in Boss Rooms (e.g. Uriel, Gabriel)
* - the second phase of multi-phase bosses (e.g. Mega Satan 2)
* - sub-bosses of The Beast fight (e.g. Ultra Famine, Ultra Pestilence, Ultra War, Ultra Death)
* - bosses that do not have any Boss Rooms defined due to being unfinished (e.g. Raglich)
*
* Also see the `getAllNonStoryBosses` function.
*/
export declare function getAllBosses(): readonly BossID[];
/**
* Helper function to get an array with every boss in the game. This is derived from the `BossID`
* enum. This is the same thing as the `getAllBosses` helper function, but with story bosses
* filtered out.
*/
export declare function getAllNonStoryBosses(): readonly BossID[];
/**
* Helper function to get the boss ID corresponding to the current room. Returns undefined if the
* current room is not a Boss Room.
*
* Use this instead of the vanilla `Room.GetBossID` method since it has a saner return type and it
* correctly handles Dogma, The Beast, and Ultra Greedier.
*/
export declare function getBossID(): BossID | undefined;
export declare function getBossIDFromEntityTypeVariant(entityType: EntityType, variant: int): BossID | undefined;
/**
* Helper function to get the set of vanilla bosses for a particular stage across all of the stage
* types. For example, specifying `LevelStage.BASEMENT_2` will return a set with all of the bosses
* for Basement, Cellar, Burning Basement, Downpour, and Dross.
*
* Also see the `getAllBossesSet` and `getBossIDsForStageID` functions.
*/
export declare function getBossIDsForStage(stage: LevelStage): ReadonlySet<BossID> | undefined;
/**
* Helper function to get the set of vanilla bosses that can randomly appear on a particular stage
* ID.
*
* Also see the `getAllBossesSet` and `getBossIDsForStage` functions.
*/
export declare function getBossIDsForStageID(stageID: StageID): readonly BossID[] | undefined;
/**
* Helper function to get the proper English name for a boss. For example, the name for
* `BossID.WRETCHED` (36) is "The Wretched".
*/
export declare function getBossName(bossID: BossID): string;
/** Helper function to get the set of stage IDs that a particular boss naturally appears in. */
export declare function getBossStageIDs(bossID: BossID): ReadonlySet<StageID>;
/**
* Helper function to get all of the bosses in the room.
*
* @param entityType Optional. If specified, will only get the bosses that match the type. Default
* is -1, which matches every type.
* @param variant Optional. If specified, will only get the bosses that match the variant. Default
* is -1, which matches every variant.
* @param subType Optional. If specified, will only get the bosses that match the sub-type. Default
* is -1, which matches every sub-type.
* @param ignoreFriendly Optional. Default is false.
*/
export declare function getBosses(entityType?: EntityType, variant?: int, subType?: int, ignoreFriendly?: boolean): readonly EntityNPC[];
export declare function getEntityTypeVariantFromBossID(bossID: BossID): readonly [EntityType, int];
/**
* Helper function to check if a boss is only found on a Repentance floor such as Dross, Mines, and
* so on.
*
* For example, The Pile is a boss that was added in Repentance, but since it can appear in
* Necropolis, it is not considered a Repentance boss for the purposes of this function.
*/
export declare function isRepentanceBoss(bossID: BossID): boolean;
/** Helper function to check if the provided NPC is a Sin miniboss, such as Sloth or Lust. */
export declare function isSin(npc: EntityNPC): boolean;
/**
* Helper function to spawn a boss.
*
* Use this function instead of `spawnNPC` since it handles automatically spawning multiple segments
* for multi-segment bosses.
*
* By default, this will spawn Chub (and his variants) with 3 segments, Lokii with 2 copies,
* Gurglings/Turdlings with 2 copies, and other multi-segment bosses with 4 segments. You can
* customize this via the "numSegments" argument.
*/
export declare function spawnBoss(entityType: EntityType, variant: int, subType: int, positionOrGridIndex: Vector | int, velocity?: Vector, spawner?: Entity, seedOrRNG?: Seed | RNG, numSegments?: int): EntityNPC;
/**
* Helper function to spawn a boss with a specific seed.
*
* For more information, see the documentation for the `spawnBoss` function.
*/
export declare function spawnBossWithSeed(entityType: EntityType, variant: int, subType: int, positionOrGridIndex: Vector | int, seedOrRNG: Seed | RNG, velocity?: Vector, spawner?: Entity, numSegments?: int): EntityNPC;
//# sourceMappingURL=bosses.d.ts.map