"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.isStoryBossID = exports.isStoryBoss = void 0;
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
const ReadonlySet_1 = require("../types/ReadonlySet");
const STORY_BOSS_IDS = [
    isaac_typescript_definitions_1.BossID.MOM,
    isaac_typescript_definitions_1.BossID.MOMS_HEART,
    isaac_typescript_definitions_1.BossID.SATAN,
    isaac_typescript_definitions_1.BossID.IT_LIVES,
    isaac_typescript_definitions_1.BossID.ISAAC,
    isaac_typescript_definitions_1.BossID.BLUE_BABY,
    isaac_typescript_definitions_1.BossID.LAMB,
    isaac_typescript_definitions_1.BossID.MEGA_SATAN,
    isaac_typescript_definitions_1.BossID.ULTRA_GREED,
    isaac_typescript_definitions_1.BossID.HUSH,
    isaac_typescript_definitions_1.BossID.DELIRIUM,
    isaac_typescript_definitions_1.BossID.ULTRA_GREEDIER,
    isaac_typescript_definitions_1.BossID.MOTHER,
    isaac_typescript_definitions_1.BossID.MAUSOLEUM_MOM,
    isaac_typescript_definitions_1.BossID.MAUSOLEUM_MOMS_HEART,
    isaac_typescript_definitions_1.BossID.DOGMA,
    isaac_typescript_definitions_1.BossID.BEAST, // 100
];
const STORY_BOSS_ENTITY_TYPES_SET = new ReadonlySet_1.ReadonlySet([
    isaac_typescript_definitions_1.EntityType.MOM,
    isaac_typescript_definitions_1.EntityType.MOMS_HEART,
    isaac_typescript_definitions_1.EntityType.SATAN,
    // - It Lives is a variant of Mom's Heart.
    isaac_typescript_definitions_1.EntityType.ISAAC,
    // - Blue Baby is a variant of Isaac.
    isaac_typescript_definitions_1.EntityType.LAMB,
    isaac_typescript_definitions_1.EntityType.MEGA_SATAN,
    isaac_typescript_definitions_1.EntityType.MEGA_SATAN_2,
    isaac_typescript_definitions_1.EntityType.ULTRA_GREED,
    isaac_typescript_definitions_1.EntityType.HUSH,
    isaac_typescript_definitions_1.EntityType.DELIRIUM,
    // - Ultra Greedier is a variant of Ultra Greed.
    isaac_typescript_definitions_1.EntityType.MOTHER,
    // - Mausoleum Mom is a sub-type of Mom.
    // - Mausoleum Mom's Heart is a sub-type of Mom's Heart.
    isaac_typescript_definitions_1.EntityType.DOGMA,
    isaac_typescript_definitions_1.EntityType.BEAST, // 951
]);
const STORY_BOSS_IDS_SET = new ReadonlySet_1.ReadonlySet(STORY_BOSS_IDS);
/**
 * Helper function to determine if the specified entity type is an end-game story boss, like Isaac,
 * Blue Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only
 * apply to non-story bosses, like Vanishing Twin.
 */
function isStoryBoss(entityType) {
    return STORY_BOSS_ENTITY_TYPES_SET.has(entityType);
}
exports.isStoryBoss = isStoryBoss;
/**
 * Helper function to determine if the specified boss ID is an end-game story boss, like Isaac, Blue
 * Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only apply
 * to non-story bosses, like Vanishing Twin.
 */
function isStoryBossID(bossID) {
    return STORY_BOSS_IDS_SET.has(bossID);
}
exports.isStoryBossID = isStoryBossID;
