"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ENTITIES_WITH_ARMOR_SET = void 0;
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
const ReadonlySet_1 = require("../types/ReadonlySet");
/**
 * "Armor" refers to the damage scaling mechanic. The following list corresponds to the entities
 * that have the "shieldStrength" field in the "entities2.xml" file, with some exceptions.
 * (Invulnerable enemies are not included. Furthermore, Ultra Greed, Ultra Greedier, and Delirium
 * all have damage scaling, but do not have a corresponding "shieldStrength" field.)
 *
 * Also see:
 * https://bindingofisaacrebirth.fandom.com/wiki/Damage_Scaling#Entities_with_Armor_Values
 *
 * We use strings instead of a type + variant tuple so that we can have O(1) lookups.
 */
exports.ENTITIES_WITH_ARMOR_SET = new ReadonlySet_1.ReadonlySet([
    `${isaac_typescript_definitions_1.EntityType.POOTER}.${isaac_typescript_definitions_1.PooterVariant.TAINTED_POOTER}`,
    `${isaac_typescript_definitions_1.EntityType.HIVE}.${isaac_typescript_definitions_1.HiveVariant.TAINTED_MULLIGAN}`,
    `${isaac_typescript_definitions_1.EntityType.BOOM_FLY}.${isaac_typescript_definitions_1.BoomFlyVariant.TAINTED_BOOM_FLY}`,
    `${isaac_typescript_definitions_1.EntityType.HOPPER}.${isaac_typescript_definitions_1.HopperVariant.TAINTED_HOPPER}`,
    `${isaac_typescript_definitions_1.EntityType.SPITTY}`,
    `${isaac_typescript_definitions_1.EntityType.SUCKER}.${isaac_typescript_definitions_1.SuckerVariant.TAINTED_SUCKER}`,
    `${isaac_typescript_definitions_1.EntityType.ISAAC}.${isaac_typescript_definitions_1.IsaacVariant.BLUE_BABY_HUSH}`,
    `${isaac_typescript_definitions_1.EntityType.WALL_CREEP}.${isaac_typescript_definitions_1.WallCreepVariant.TAINTED_SOY_CREEP}`,
    `${isaac_typescript_definitions_1.EntityType.ROUND_WORM}.${isaac_typescript_definitions_1.RoundWormVariant.TAINTED_ROUND_WORM}`,
    `${isaac_typescript_definitions_1.EntityType.ROUND_WORM}.${isaac_typescript_definitions_1.RoundWormVariant.TAINTED_TUBE_WORM}`,
    `${isaac_typescript_definitions_1.EntityType.MEGA_SATAN}.${isaac_typescript_definitions_1.MegaSatanVariant.MEGA_SATAN}`,
    `${isaac_typescript_definitions_1.EntityType.MEGA_SATAN}.${isaac_typescript_definitions_1.MegaSatanVariant.MEGA_SATAN_RIGHT_HAND}`,
    `${isaac_typescript_definitions_1.EntityType.MEGA_SATAN}.${isaac_typescript_definitions_1.MegaSatanVariant.MEGA_SATAN_LEFT_HAND}`,
    `${isaac_typescript_definitions_1.EntityType.MEGA_SATAN_2}.${isaac_typescript_definitions_1.MegaSatanVariant.MEGA_SATAN}`,
    `${isaac_typescript_definitions_1.EntityType.MEGA_SATAN_2}.${isaac_typescript_definitions_1.MegaSatanVariant.MEGA_SATAN_RIGHT_HAND}`,
    `${isaac_typescript_definitions_1.EntityType.MEGA_SATAN_2}.${isaac_typescript_definitions_1.MegaSatanVariant.MEGA_SATAN_LEFT_HAND}`,
    `${isaac_typescript_definitions_1.EntityType.ULTRA_GREED}.${isaac_typescript_definitions_1.UltraGreedVariant.ULTRA_GREED}`,
    `${isaac_typescript_definitions_1.EntityType.ULTRA_GREED}.${isaac_typescript_definitions_1.UltraGreedVariant.ULTRA_GREEDIER}`,
    `${isaac_typescript_definitions_1.EntityType.HUSH}.0`,
    `${isaac_typescript_definitions_1.EntityType.DELIRIUM}.0`,
    `${isaac_typescript_definitions_1.EntityType.BLOOD_PUPPY}.${isaac_typescript_definitions_1.BloodPuppyVariant.SMALL}`,
    `${isaac_typescript_definitions_1.EntityType.BLOOD_PUPPY}.${isaac_typescript_definitions_1.BloodPuppyVariant.LARGE}`,
    `${isaac_typescript_definitions_1.EntityType.SUB_HORF}.${isaac_typescript_definitions_1.SubHorfVariant.TAINTED_SUB_HORF}`,
    `${isaac_typescript_definitions_1.EntityType.FACELESS}.${isaac_typescript_definitions_1.FacelessVariant.TAINTED_FACELESS}`,
    `${isaac_typescript_definitions_1.EntityType.MOLE}.${isaac_typescript_definitions_1.MoleVariant.TAINTED_MOLE}`,
    `${isaac_typescript_definitions_1.EntityType.GUTTED_FATTY}.${isaac_typescript_definitions_1.GuttyFattyVariant.GUTTED_FATTY}`,
    `${isaac_typescript_definitions_1.EntityType.GAPER_LVL_2}.${isaac_typescript_definitions_1.Gaper2Variant.GAPER}`,
    `${isaac_typescript_definitions_1.EntityType.GAPER_LVL_2}.${isaac_typescript_definitions_1.Gaper2Variant.HORF}`,
    `${isaac_typescript_definitions_1.EntityType.GAPER_LVL_2}.${isaac_typescript_definitions_1.Gaper2Variant.GUSHER}`,
    `${isaac_typescript_definitions_1.EntityType.CHARGER_LVL_2}.${isaac_typescript_definitions_1.Charger2Variant.CHARGER}`,
    `${isaac_typescript_definitions_1.EntityType.CHARGER_LVL_2}.${isaac_typescript_definitions_1.Charger2Variant.ELLEECH}`,
    `${isaac_typescript_definitions_1.EntityType.SHADY}.0`,
    `${isaac_typescript_definitions_1.EntityType.MOTHER}.${isaac_typescript_definitions_1.MotherVariant.MOTHER_1}`,
    `${isaac_typescript_definitions_1.EntityType.MOTHER}.${isaac_typescript_definitions_1.MotherVariant.MOTHER_2}`,
    `${isaac_typescript_definitions_1.EntityType.DOGMA}.${isaac_typescript_definitions_1.DogmaVariant.TV}`,
    `${isaac_typescript_definitions_1.EntityType.DOGMA}.${isaac_typescript_definitions_1.DogmaVariant.ANGEL_PHASE_2}`,
    `${isaac_typescript_definitions_1.EntityType.BEAST}.${isaac_typescript_definitions_1.BeastVariant.BEAST}`,
    `${isaac_typescript_definitions_1.EntityType.BEAST}.${isaac_typescript_definitions_1.BeastVariant.ULTRA_FAMINE}`,
    `${isaac_typescript_definitions_1.EntityType.BEAST}.${isaac_typescript_definitions_1.BeastVariant.ULTRA_PESTILENCE}`,
    `${isaac_typescript_definitions_1.EntityType.BEAST}.${isaac_typescript_definitions_1.BeastVariant.ULTRA_WAR}`,
    `${isaac_typescript_definitions_1.EntityType.BEAST}.${isaac_typescript_definitions_1.BeastVariant.ULTRA_DEATH}`, // 951.40
]);
