import inspect from pydoc import describe from BaseClasses import Item, ItemClassification, MultiWorld import typing from .Options import get_option_value, RequiredTactics from .MissionTables import SC2Mission, SC2Race, SC2Campaign, campaign_mission_table from . import ItemNames from worlds.AutoWorld import World class ItemData(typing.NamedTuple): code: int type: str number: int # Important for bot commands to send the item into the game race: SC2Race classification: ItemClassification = ItemClassification.useful quantity: int = 1 parent_item: typing.Optional[str] = None origin: typing.Set[str] = {"wol"} description: typing.Optional[str] = None important_for_filtering: bool = False def is_important_for_filtering(self): return self.important_for_filtering \ or self.classification == ItemClassification.progression \ or self.classification == ItemClassification.progression_skip_balancing class StarcraftItem(Item): game: str = "Starcraft 2" def get_full_item_list(): return item_table SC2WOL_ITEM_ID_OFFSET = 1000 SC2HOTS_ITEM_ID_OFFSET = SC2WOL_ITEM_ID_OFFSET + 1000 SC2LOTV_ITEM_ID_OFFSET = SC2HOTS_ITEM_ID_OFFSET + 1000 # Descriptions WEAPON_ARMOR_UPGRADE_NOTE = inspect.cleandoc(""" Must be researched during the mission if the mission type isn't set to auto-unlock generic upgrades. """) LASER_TARGETING_SYSTEMS_DESCRIPTION = "Increases vision by 2 and weapon range by 1." STIMPACK_SMALL_COST = 10 STIMPACK_SMALL_HEAL = 30 STIMPACK_LARGE_COST = 20 STIMPACK_LARGE_HEAL = 60 STIMPACK_TEMPLATE = inspect.cleandoc(""" Level 1: Stimpack: Increases unit movement and attack speed for 15 seconds. Injures the unit for {} life. Level 2: Super Stimpack: Instead of injuring the unit, heals the unit for {} life instead. """) STIMPACK_SMALL_DESCRIPTION = STIMPACK_TEMPLATE.format(STIMPACK_SMALL_COST, STIMPACK_SMALL_HEAL) STIMPACK_LARGE_DESCRIPTION = STIMPACK_TEMPLATE.format(STIMPACK_LARGE_COST, STIMPACK_LARGE_HEAL) SMART_SERVOS_DESCRIPTION = "Increases transformation speed between modes." INTERNAL_TECH_MODULE_DESCRIPTION_TEMPLATE = "{} can be trained from a {} without an attached Tech Lab." RESOURCE_EFFICIENCY_DESCRIPTION_TEMPLATE = "Reduces {} resource and supply cost." RESOURCE_EFFICIENCY_NO_SUPPLY_DESCRIPTION_TEMPLATE = "Reduces {} resource cost." CLOAK_DESCRIPTION_TEMPLATE = "Allows {} to use the Cloak ability." # The items are sorted by their IDs. The IDs shall be kept for compatibility with older games. item_table = { # WoL ItemNames.MARINE: ItemData(0 + SC2WOL_ITEM_ID_OFFSET, "Unit", 0, SC2Race.TERRAN, classification=ItemClassification.progression, description="General-purpose infantry."), ItemNames.MEDIC: ItemData(1 + SC2WOL_ITEM_ID_OFFSET, "Unit", 1, SC2Race.TERRAN, classification=ItemClassification.progression, description="Support trooper. Heals nearby biological units."), ItemNames.FIREBAT: ItemData(2 + SC2WOL_ITEM_ID_OFFSET, "Unit", 2, SC2Race.TERRAN, classification=ItemClassification.progression, description="Specialized anti-infantry attacker."), ItemNames.MARAUDER: ItemData(3 + SC2WOL_ITEM_ID_OFFSET, "Unit", 3, SC2Race.TERRAN, classification=ItemClassification.progression, description="Heavy assault infantry."), ItemNames.REAPER: ItemData(4 + SC2WOL_ITEM_ID_OFFSET, "Unit", 4, SC2Race.TERRAN, classification=ItemClassification.progression, description="Raider. Capable of jumping up and down cliffs. Throws explosive mines."), ItemNames.HELLION: ItemData(5 + SC2WOL_ITEM_ID_OFFSET, "Unit", 5, SC2Race.TERRAN, classification=ItemClassification.progression, description="Fast scout. Has a flame attack that damages all enemy units in its line of fire."), ItemNames.VULTURE: ItemData(6 + SC2WOL_ITEM_ID_OFFSET, "Unit", 6, SC2Race.TERRAN, classification=ItemClassification.progression, description="Fast skirmish unit. Can use the Spider Mine ability."), ItemNames.GOLIATH: ItemData(7 + SC2WOL_ITEM_ID_OFFSET, "Unit", 7, SC2Race.TERRAN, classification=ItemClassification.progression, description="Heavy-fire support unit."), ItemNames.DIAMONDBACK: ItemData(8 + SC2WOL_ITEM_ID_OFFSET, "Unit", 8, SC2Race.TERRAN, classification=ItemClassification.progression, description="Fast, high-damage hovertank. Rail Gun can fire while the Diamondback is moving."), ItemNames.SIEGE_TANK: ItemData(9 + SC2WOL_ITEM_ID_OFFSET, "Unit", 9, SC2Race.TERRAN, classification=ItemClassification.progression, description="Heavy tank. Long-range artillery in Siege Mode."), ItemNames.MEDIVAC: ItemData(10 + SC2WOL_ITEM_ID_OFFSET, "Unit", 10, SC2Race.TERRAN, classification=ItemClassification.progression, description="Air transport. Heals nearby biological units."), ItemNames.WRAITH: ItemData(11 + SC2WOL_ITEM_ID_OFFSET, "Unit", 11, SC2Race.TERRAN, classification=ItemClassification.progression, description="Highly mobile flying unit. Excellent at surgical strikes."), ItemNames.VIKING: ItemData(12 + SC2WOL_ITEM_ID_OFFSET, "Unit", 12, SC2Race.TERRAN, classification=ItemClassification.progression, description=inspect.cleandoc( """ Durable support flyer. Loaded with strong anti-capital air missiles. Can switch into Assault Mode to attack ground units. """ )), ItemNames.BANSHEE: ItemData(13 + SC2WOL_ITEM_ID_OFFSET, "Unit", 13, SC2Race.TERRAN, classification=ItemClassification.progression, description="Tactical-strike aircraft."), ItemNames.BATTLECRUISER: ItemData(14 + SC2WOL_ITEM_ID_OFFSET, "Unit", 14, SC2Race.TERRAN, classification=ItemClassification.progression, description="Powerful warship."), ItemNames.GHOST: ItemData(15 + SC2WOL_ITEM_ID_OFFSET, "Unit", 15, SC2Race.TERRAN, classification=ItemClassification.progression, description=inspect.cleandoc( """ Infiltration unit. Can use Snipe and Cloak abilities. Can also call down Tactical Nukes. """ )), ItemNames.SPECTRE: ItemData(16 + SC2WOL_ITEM_ID_OFFSET, "Unit", 16, SC2Race.TERRAN, classification=ItemClassification.progression, description=inspect.cleandoc( """ Infiltration unit. Can use Ultrasonic Pulse, Psionic Lash, and Cloak. Can also call down Tactical Nukes. """ )), ItemNames.THOR: ItemData(17 + SC2WOL_ITEM_ID_OFFSET, "Unit", 17, SC2Race.TERRAN, classification=ItemClassification.progression, description="Heavy assault mech."), # EE units ItemNames.LIBERATOR: ItemData(18 + SC2WOL_ITEM_ID_OFFSET, "Unit", 18, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"nco", "ext"}, description=inspect.cleandoc( """ Artillery fighter. Loaded with missiles that deal area damage to enemy air targets. Can switch into Defender Mode to provide siege support. """ )), ItemNames.VALKYRIE: ItemData(19 + SC2WOL_ITEM_ID_OFFSET, "Unit", 19, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"bw"}, description=inspect.cleandoc( """ Advanced anti-aircraft fighter. Able to use cluster missiles that deal area damage to air targets. """ )), ItemNames.WIDOW_MINE: ItemData(20 + SC2WOL_ITEM_ID_OFFSET, "Unit", 20, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"ext"}, description=inspect.cleandoc( """ Robotic mine. Launches missiles at nearby enemy units while burrowed. Attacks deal splash damage in a small area around the target. Widow Mine is revealed when Sentinel Missile is on cooldown. """ )), ItemNames.CYCLONE: ItemData(21 + SC2WOL_ITEM_ID_OFFSET, "Unit", 21, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"ext"}, description=inspect.cleandoc( """ Mobile assault vehicle. Can use Lock On to quickly fire while moving. """ )), ItemNames.HERC: ItemData(22 + SC2WOL_ITEM_ID_OFFSET, "Unit", 26, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"ext"}, description=inspect.cleandoc( """ Front-line infantry. Can use Grapple. """ )), ItemNames.WARHOUND: ItemData(23 + SC2WOL_ITEM_ID_OFFSET, "Unit", 27, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"ext"}, description=inspect.cleandoc( """ Anti-vehicle mech. Haywire missiles do bonus damage to mechanical units. """ )), # Some other items are moved to Upgrade group because of the way how the bot message is parsed ItemNames.PROGRESSIVE_TERRAN_INFANTRY_WEAPON: ItemData(100 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 0, SC2Race.TERRAN, quantity=3, description=inspect.cleandoc( f""" Increases damage of Terran infantry units. {WEAPON_ARMOR_UPGRADE_NOTE} """ )), ItemNames.PROGRESSIVE_TERRAN_INFANTRY_ARMOR: ItemData(102 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 2, SC2Race.TERRAN, quantity=3, description=inspect.cleandoc( f""" Increases armor of Terran infantry units. {WEAPON_ARMOR_UPGRADE_NOTE} """ )), ItemNames.PROGRESSIVE_TERRAN_VEHICLE_WEAPON: ItemData(103 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 4, SC2Race.TERRAN, quantity=3, description=inspect.cleandoc( f""" Increases damage of Terran vehicle units. {WEAPON_ARMOR_UPGRADE_NOTE} """ )), ItemNames.PROGRESSIVE_TERRAN_VEHICLE_ARMOR: ItemData(104 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 6, SC2Race.TERRAN, quantity=3, description=inspect.cleandoc( f""" Increases armor of Terran vehicle units. {WEAPON_ARMOR_UPGRADE_NOTE} """ )), ItemNames.PROGRESSIVE_TERRAN_SHIP_WEAPON: ItemData(105 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 8, SC2Race.TERRAN, quantity=3, description=inspect.cleandoc( f""" Increases damage of Terran starship units. {WEAPON_ARMOR_UPGRADE_NOTE} """ )), ItemNames.PROGRESSIVE_TERRAN_SHIP_ARMOR: ItemData(106 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 10, SC2Race.TERRAN, quantity=3, description=inspect.cleandoc( f""" Increases armor of Terran starship units. {WEAPON_ARMOR_UPGRADE_NOTE} """ )), # Upgrade bundle 'number' values are used as indices to get affected 'number's ItemNames.PROGRESSIVE_TERRAN_WEAPON_UPGRADE: ItemData(107 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 0, SC2Race.TERRAN, quantity=3), ItemNames.PROGRESSIVE_TERRAN_ARMOR_UPGRADE: ItemData(108 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 1, SC2Race.TERRAN, quantity=3), ItemNames.PROGRESSIVE_TERRAN_INFANTRY_UPGRADE: ItemData(109 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 2, SC2Race.TERRAN, quantity=3), ItemNames.PROGRESSIVE_TERRAN_VEHICLE_UPGRADE: ItemData(110 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 3, SC2Race.TERRAN, quantity=3), ItemNames.PROGRESSIVE_TERRAN_SHIP_UPGRADE: ItemData(111 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 4, SC2Race.TERRAN, quantity=3), ItemNames.PROGRESSIVE_TERRAN_WEAPON_ARMOR_UPGRADE: ItemData(112 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 5, SC2Race.TERRAN, quantity=3), # Unit and structure upgrades ItemNames.BUNKER_PROJECTILE_ACCELERATOR: ItemData(200 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 0, SC2Race.TERRAN, parent_item=ItemNames.BUNKER, description="Increases range of all units in the Bunker by 1."), ItemNames.BUNKER_NEOSTEEL_BUNKER: ItemData(201 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 1, SC2Race.TERRAN, parent_item=ItemNames.BUNKER, description="Increases the number of Bunker slots by 2."), ItemNames.MISSILE_TURRET_TITANIUM_HOUSING: ItemData(202 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.MISSILE_TURRET, description="Increases Missile Turret life by 75."), ItemNames.MISSILE_TURRET_HELLSTORM_BATTERIES: ItemData(203 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 3, SC2Race.TERRAN, parent_item=ItemNames.MISSILE_TURRET, description="The Missile Turret unleashes an additional flurry of missiles with each attack."), ItemNames.SCV_ADVANCED_CONSTRUCTION: ItemData(204 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 4, SC2Race.TERRAN, description="Multiple SCVs can construct a structure, reducing its construction time."), ItemNames.SCV_DUAL_FUSION_WELDERS: ItemData(205 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 5, SC2Race.TERRAN, description="SCVs repair twice as fast."), ItemNames.PROGRESSIVE_FIRE_SUPPRESSION_SYSTEM: ItemData(206 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 24, SC2Race.TERRAN, quantity=2, description=inspect.cleandoc( """ Level 1: While on low health, Terran structures are repaired to half health instead of burning down. Level 2: Terran structures are repaired to full health instead of half health """ )), ItemNames.PROGRESSIVE_ORBITAL_COMMAND: ItemData(207 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 26, SC2Race.TERRAN, quantity=2, classification=ItemClassification.progression, description=inspect.cleandoc( """ Level 1: Allows Command Centers to use Scanner Sweep and Calldown: MULE abilities. Level 2: Orbital Command abilities work even in Planetary Fortress mode. """ )), ItemNames.MARINE_PROGRESSIVE_STIMPACK: ItemData(208 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 0, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.MARINE, quantity=2, description=STIMPACK_SMALL_DESCRIPTION), ItemNames.MARINE_COMBAT_SHIELD: ItemData(209 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 9, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.MARINE, description="Increases Marine life by 10."), ItemNames.MEDIC_ADVANCED_MEDIC_FACILITIES: ItemData(210 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 10, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.MEDIC, description=INTERNAL_TECH_MODULE_DESCRIPTION_TEMPLATE.format("Medics", "Barracks")), ItemNames.MEDIC_STABILIZER_MEDPACKS: ItemData(211 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 11, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.MEDIC, description="Increases Medic heal speed. Reduces the amount of energy required for each heal."), ItemNames.FIREBAT_INCINERATOR_GAUNTLETS: ItemData(212 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 12, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.FIREBAT, description="Increases Firebat's damage radius by 40%"), ItemNames.FIREBAT_JUGGERNAUT_PLATING: ItemData(213 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 13, SC2Race.TERRAN, parent_item=ItemNames.FIREBAT, description="Increases Firebat's armor by 2."), ItemNames.MARAUDER_CONCUSSIVE_SHELLS: ItemData(214 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 14, SC2Race.TERRAN, parent_item=ItemNames.MARAUDER, description="Marauder attack temporarily slows all units in target area."), ItemNames.MARAUDER_KINETIC_FOAM: ItemData(215 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 15, SC2Race.TERRAN, parent_item=ItemNames.MARAUDER, description="Increases Marauder life by 25."), ItemNames.REAPER_U238_ROUNDS: ItemData(216 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 16, SC2Race.TERRAN, parent_item=ItemNames.REAPER, description=inspect.cleandoc( """ Increases Reaper pistol attack range by 1. Reaper pistols do additional 3 damage to Light Armor. """ )), ItemNames.REAPER_G4_CLUSTERBOMB: ItemData(217 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 17, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.REAPER, description="Timed explosive that does heavy area damage."), ItemNames.CYCLONE_MAG_FIELD_ACCELERATORS: ItemData(218 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 18, SC2Race.TERRAN, parent_item=ItemNames.CYCLONE, origin={"ext"}, description="Increases Cyclone Lock On damage"), ItemNames.CYCLONE_MAG_FIELD_LAUNCHERS: ItemData(219 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 19, SC2Race.TERRAN, parent_item=ItemNames.CYCLONE, origin={"ext"}, description="Increases Cyclone attack range by 2."), ItemNames.MARINE_LASER_TARGETING_SYSTEM: ItemData(220 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 8, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.MARINE, origin={"nco"}, description=LASER_TARGETING_SYSTEMS_DESCRIPTION), ItemNames.MARINE_MAGRAIL_MUNITIONS: ItemData(221 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 20, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.MARINE, origin={"nco"}, description="Deals 20 damage to target unit. Autocast on attack with a cooldown."), ItemNames.MARINE_OPTIMIZED_LOGISTICS: ItemData(222 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 21, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.MARINE, origin={"nco"}, description="Increases Marine training speed."), ItemNames.MEDIC_RESTORATION: ItemData(223 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 22, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.MEDIC, origin={"bw"}, description="Removes negative status effects from target allied unit."), ItemNames.MEDIC_OPTICAL_FLARE: ItemData(224 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 23, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.MEDIC, origin={"bw"}, description="Reduces vision range of target enemy unit. Disables detection."), ItemNames.MEDIC_RESOURCE_EFFICIENCY: ItemData(225 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.MEDIC, origin={"bw"}, description=RESOURCE_EFFICIENCY_DESCRIPTION_TEMPLATE.format("Medic")), ItemNames.FIREBAT_PROGRESSIVE_STIMPACK: ItemData(226 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 6, SC2Race.TERRAN, parent_item=ItemNames.FIREBAT, quantity=2, origin={"bw"}, description=STIMPACK_LARGE_DESCRIPTION), ItemNames.FIREBAT_RESOURCE_EFFICIENCY: ItemData(227 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 25, SC2Race.TERRAN, parent_item=ItemNames.FIREBAT, origin={"bw"}, description=RESOURCE_EFFICIENCY_DESCRIPTION_TEMPLATE.format("Firebat")), ItemNames.MARAUDER_PROGRESSIVE_STIMPACK: ItemData(228 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 8, SC2Race.TERRAN, parent_item=ItemNames.MARAUDER, quantity=2, origin={"nco"}, description=STIMPACK_LARGE_DESCRIPTION), ItemNames.MARAUDER_LASER_TARGETING_SYSTEM: ItemData(229 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 26, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.MARAUDER, origin={"nco"}, description=LASER_TARGETING_SYSTEMS_DESCRIPTION), ItemNames.MARAUDER_MAGRAIL_MUNITIONS: ItemData(230 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 27, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.MARAUDER, origin={"nco"}, description="Deals 20 damage to target unit. Autocast on attack with a cooldown."), ItemNames.MARAUDER_INTERNAL_TECH_MODULE: ItemData(231 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 28, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.MARAUDER, origin={"nco"}, description=INTERNAL_TECH_MODULE_DESCRIPTION_TEMPLATE.format("Marauders", "Barracks")), ItemNames.SCV_HOSTILE_ENVIRONMENT_ADAPTATION: ItemData(232 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 29, SC2Race.TERRAN, classification=ItemClassification.filler, origin={"bw"}, description="Increases SCV life by 15 and attack speed slightly."), ItemNames.MEDIC_ADAPTIVE_MEDPACKS: ItemData(233 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 0, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.MEDIC, origin={"ext"}, description="Allows Medics to heal mechanical and air units."), ItemNames.MEDIC_NANO_PROJECTOR: ItemData(234 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 1, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.MEDIC, origin={"ext"}, description="Increases Medic heal range by 2."), ItemNames.FIREBAT_INFERNAL_PRE_IGNITER: ItemData(235 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 2, SC2Race.TERRAN, parent_item=ItemNames.FIREBAT, origin={"bw"}, description="Firebats do an additional 4 damage to Light Armor."), ItemNames.FIREBAT_KINETIC_FOAM: ItemData(236 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 3, SC2Race.TERRAN, parent_item=ItemNames.FIREBAT, origin={"ext"}, description="Increases Firebat life by 100."), ItemNames.FIREBAT_NANO_PROJECTORS: ItemData(237 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 4, SC2Race.TERRAN, parent_item=ItemNames.FIREBAT, origin={"ext"}, description="Increases Firebat attack range by 2"), ItemNames.MARAUDER_JUGGERNAUT_PLATING: ItemData(238 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 5, SC2Race.TERRAN, parent_item=ItemNames.MARAUDER, origin={"ext"}, description="Increases Marauder's armor by 2."), ItemNames.REAPER_JET_PACK_OVERDRIVE: ItemData(239 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 6, SC2Race.TERRAN, parent_item=ItemNames.REAPER, origin={"ext"}, description=inspect.cleandoc( """ Allows the Reaper to fly for 10 seconds. While flying, the Reaper can attack air units. """ )), ItemNames.HELLION_INFERNAL_PLATING: ItemData(240 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 7, SC2Race.TERRAN, parent_item=ItemNames.HELLION, origin={"ext"}, description="Increases Hellion and Hellbat armor by 2."), ItemNames.VULTURE_AUTO_REPAIR: ItemData(241 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 8, SC2Race.TERRAN, parent_item=ItemNames.VULTURE, origin={"ext"}, description="Vultures regenerate life."), ItemNames.GOLIATH_SHAPED_HULL: ItemData(242 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 9, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.GOLIATH, origin={"nco", "ext"}, description="Increases Goliath life by 25."), ItemNames.GOLIATH_RESOURCE_EFFICIENCY: ItemData(243 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 10, SC2Race.TERRAN, parent_item=ItemNames.GOLIATH, origin={"nco", "bw"}, description=RESOURCE_EFFICIENCY_DESCRIPTION_TEMPLATE.format("Goliath")), ItemNames.GOLIATH_INTERNAL_TECH_MODULE: ItemData(244 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 11, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.GOLIATH, origin={"nco", "bw"}, description=INTERNAL_TECH_MODULE_DESCRIPTION_TEMPLATE.format("Goliaths", "Factory")), ItemNames.SIEGE_TANK_SHAPED_HULL: ItemData(245 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 12, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.SIEGE_TANK, origin={"nco", "ext"}, description="Increases Siege Tank life by 25."), ItemNames.SIEGE_TANK_RESOURCE_EFFICIENCY: ItemData(246 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 13, SC2Race.TERRAN, parent_item=ItemNames.SIEGE_TANK, origin={"bw"}, description=RESOURCE_EFFICIENCY_DESCRIPTION_TEMPLATE.format("Siege Tank")), ItemNames.PREDATOR_CLOAK: ItemData(247 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 14, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.PREDATOR, origin={"ext"}, description=CLOAK_DESCRIPTION_TEMPLATE.format("Predators")), ItemNames.PREDATOR_CHARGE: ItemData(248 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 15, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.PREDATOR, origin={"ext"}, description="Allows Predators to intercept enemy ground units."), ItemNames.MEDIVAC_SCATTER_VEIL: ItemData(249 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 16, SC2Race.TERRAN, parent_item=ItemNames.MEDIVAC, origin={"ext"}, description="Medivacs get 100 shields."), ItemNames.REAPER_PROGRESSIVE_STIMPACK: ItemData(250 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 10, SC2Race.TERRAN, parent_item=ItemNames.REAPER, quantity=2, origin={"nco"}, description=STIMPACK_SMALL_DESCRIPTION), ItemNames.REAPER_LASER_TARGETING_SYSTEM: ItemData(251 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 17, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.REAPER, origin={"nco"}, description=LASER_TARGETING_SYSTEMS_DESCRIPTION), ItemNames.REAPER_ADVANCED_CLOAKING_FIELD: ItemData(252 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 18, SC2Race.TERRAN, parent_item=ItemNames.REAPER, origin={"nco"}, description="Reapers are permanently cloaked."), ItemNames.REAPER_SPIDER_MINES: ItemData(253 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 19, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.REAPER, origin={"nco"}, important_for_filtering=True, description="Allows Reapers to lay Spider Mines. 3 charges per Reaper."), ItemNames.REAPER_COMBAT_DRUGS: ItemData(254 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 20, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.REAPER, origin={"ext"}, description="Reapers regenerate life while out of combat."), ItemNames.HELLION_HELLBAT_ASPECT: ItemData(255 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 21, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.HELLION, origin={"nco"}, description="Allows Hellions to transform into Hellbats."), ItemNames.HELLION_SMART_SERVOS: ItemData(256 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 22, SC2Race.TERRAN, parent_item=ItemNames.HELLION, origin={"nco"}, description="Transforms faster between modes. Hellions can attack while moving."), ItemNames.HELLION_OPTIMIZED_LOGISTICS: ItemData(257 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 23, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.HELLION, origin={"nco"}, description="Increases Hellion training speed."), ItemNames.HELLION_JUMP_JETS: ItemData(258 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.HELLION, origin={"nco"}, description=inspect.cleandoc( """ Increases movement speed in Hellion mode. In Hellbat mode, launches the Hellbat toward enemy ground units and briefly stuns them. """ )), ItemNames.HELLION_PROGRESSIVE_STIMPACK: ItemData(259 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 12, SC2Race.TERRAN, parent_item=ItemNames.HELLION, quantity=2, origin={"nco"}, description=STIMPACK_LARGE_DESCRIPTION), ItemNames.VULTURE_ION_THRUSTERS: ItemData(260 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.VULTURE, origin={"bw"}, description="Increases Vulture movement speed."), ItemNames.VULTURE_AUTO_LAUNCHERS: ItemData(261 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 26, SC2Race.TERRAN, parent_item=ItemNames.VULTURE, origin={"bw"}, description="Allows Vultures to attack while moving."), ItemNames.SPIDER_MINE_HIGH_EXPLOSIVE_MUNITION: ItemData(262 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 27, SC2Race.TERRAN, origin={"bw"}, description="Increases Spider mine damage."), ItemNames.GOLIATH_JUMP_JETS: ItemData(263 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 28, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.GOLIATH, origin={"nco"}, description="Allows Goliaths to jump up and down cliffs."), ItemNames.GOLIATH_OPTIMIZED_LOGISTICS: ItemData(264 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 29, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.GOLIATH, origin={"nco"}, description="Increases Goliath training speed."), ItemNames.DIAMONDBACK_HYPERFLUXOR: ItemData(265 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 0, SC2Race.TERRAN, parent_item=ItemNames.DIAMONDBACK, origin={"ext"}, description="Increases Diamondback attack speed."), ItemNames.DIAMONDBACK_BURST_CAPACITORS: ItemData(266 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 1, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.DIAMONDBACK, origin={"ext"}, description=inspect.cleandoc( """ While not attacking, the Diamondback charges its weapon. The next attack does 10 additional damage. """ )), ItemNames.DIAMONDBACK_RESOURCE_EFFICIENCY: ItemData(267 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 2, SC2Race.TERRAN, parent_item=ItemNames.DIAMONDBACK, origin={"ext"}, description=RESOURCE_EFFICIENCY_DESCRIPTION_TEMPLATE.format("Diamondback")), ItemNames.SIEGE_TANK_JUMP_JETS: ItemData(268 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 3, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.SIEGE_TANK, origin={"nco"}, description=inspect.cleandoc( """ Repositions Siege Tank to a target location. Can be used in either mode and to jump up and down cliffs. """ )), ItemNames.SIEGE_TANK_SPIDER_MINES: ItemData(269 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 4, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.SIEGE_TANK, origin={"nco"}, important_for_filtering=True, description=inspect.cleandoc( """ Allows Siege Tanks to lay Spider Mines. Lays 3 Spider Mines at once. 3 charges """ )), ItemNames.SIEGE_TANK_SMART_SERVOS: ItemData(270 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 5, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.SIEGE_TANK, origin={"nco"}, description=SMART_SERVOS_DESCRIPTION), ItemNames.SIEGE_TANK_GRADUATING_RANGE: ItemData(271 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 6, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.SIEGE_TANK, origin={"ext"}, description=inspect.cleandoc( """ Increases the Siege Tank's attack range by 1 every 3 seconds while in Siege Mode, up to a maximum of 5 additional range. """ )), ItemNames.SIEGE_TANK_LASER_TARGETING_SYSTEM: ItemData(272 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 7, SC2Race.TERRAN, parent_item=ItemNames.SIEGE_TANK, origin={"nco"}, description=LASER_TARGETING_SYSTEMS_DESCRIPTION), ItemNames.SIEGE_TANK_ADVANCED_SIEGE_TECH: ItemData(273 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 8, SC2Race.TERRAN, parent_item=ItemNames.SIEGE_TANK, origin={"ext"}, description="Siege Tanks gain +3 armor in Siege Mode."), ItemNames.SIEGE_TANK_INTERNAL_TECH_MODULE: ItemData(274 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 9, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.SIEGE_TANK, origin={"nco"}, description=INTERNAL_TECH_MODULE_DESCRIPTION_TEMPLATE.format("Siege Tanks", "Factory")), ItemNames.PREDATOR_RESOURCE_EFFICIENCY: ItemData(275 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 10, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.PREDATOR, origin={"ext"}, description="Decreases Predator resource and supply cost."), ItemNames.MEDIVAC_EXPANDED_HULL: ItemData(276 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 11, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.MEDIVAC, origin={"ext"}, description="Increases Medivac cargo space by 4."), ItemNames.MEDIVAC_AFTERBURNERS: ItemData(277 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 12, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.MEDIVAC, origin={"ext"}, description="Ability. Temporarily increases the Medivac's movement speed by 70%."), ItemNames.WRAITH_ADVANCED_LASER_TECHNOLOGY: ItemData(278 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 13, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.WRAITH, origin={"ext"}, description=inspect.cleandoc( """ Burst Lasers do more damage and can hit both ground and air targets. Replaces Gemini Missiles weapon. """ )), ItemNames.VIKING_SMART_SERVOS: ItemData(279 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 14, SC2Race.TERRAN, parent_item=ItemNames.VIKING, origin={"ext"}, description=SMART_SERVOS_DESCRIPTION), ItemNames.VIKING_ANTI_MECHANICAL_MUNITION: ItemData(280 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 15, SC2Race.TERRAN, parent_item=ItemNames.VIKING, origin={"ext"}, description="Increases Viking damage to mechanical units while in Assault Mode."), ItemNames.DIAMONDBACK_ION_THRUSTERS: ItemData(281 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 21, SC2Race.TERRAN, parent_item=ItemNames.DIAMONDBACK, origin={"ext"}, description="Increases Diamondback movement speed."), ItemNames.WARHOUND_RESOURCE_EFFICIENCY: ItemData(282 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 13, SC2Race.TERRAN, parent_item=ItemNames.WARHOUND, origin={"ext"}, description=RESOURCE_EFFICIENCY_NO_SUPPLY_DESCRIPTION_TEMPLATE.format("Warhound")), ItemNames.WARHOUND_REINFORCED_PLATING: ItemData(283 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 14, SC2Race.TERRAN, parent_item=ItemNames.WARHOUND, origin={"ext"}, description="Increases Warhound armor by 2."), ItemNames.HERC_RESOURCE_EFFICIENCY: ItemData(284 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 15, SC2Race.TERRAN, parent_item=ItemNames.HERC, origin={"ext"}, description=RESOURCE_EFFICIENCY_DESCRIPTION_TEMPLATE.format("HERC")), ItemNames.HERC_JUGGERNAUT_PLATING: ItemData(285 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 16, SC2Race.TERRAN, parent_item=ItemNames.HERC, origin={"ext"}, description="Increases HERC armor by 2."), ItemNames.HERC_KINETIC_FOAM: ItemData(286 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 17, SC2Race.TERRAN, parent_item=ItemNames.HERC, origin={"ext"}, description="Increases HERC life by 50."), ItemNames.HELLION_TWIN_LINKED_FLAMETHROWER: ItemData(300 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 16, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.HELLION, description="Doubles the width of the Hellion's flame attack."), ItemNames.HELLION_THERMITE_FILAMENTS: ItemData(301 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 17, SC2Race.TERRAN, parent_item=ItemNames.HELLION, description="Hellions do an additional 10 damage to Light Armor."), ItemNames.SPIDER_MINE_CERBERUS_MINE: ItemData(302 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 18, SC2Race.TERRAN, classification=ItemClassification.filler, description="Increases trigger and blast radius of Spider Mines."), ItemNames.VULTURE_PROGRESSIVE_REPLENISHABLE_MAGAZINE: ItemData(303 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 16, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.VULTURE, quantity=2, description=inspect.cleandoc( """ Level 1: Allows Vultures to replace used Spider Mines. Costs 15 minerals. Level 2: Replacing used Spider Mines no longer costs minerals. """ )), ItemNames.GOLIATH_MULTI_LOCK_WEAPONS_SYSTEM: ItemData(304 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 19, SC2Race.TERRAN, parent_item=ItemNames.GOLIATH, description="Goliaths can attack both ground and air targets simultaneously."), ItemNames.GOLIATH_ARES_CLASS_TARGETING_SYSTEM: ItemData(305 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 20, SC2Race.TERRAN, parent_item=ItemNames.GOLIATH, description="Increases Goliath ground attack range by 1 and air by 3."), ItemNames.DIAMONDBACK_PROGRESSIVE_TRI_LITHIUM_POWER_CELL: ItemData(306 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade 2", 4, SC2Race.TERRAN, parent_item=ItemNames.DIAMONDBACK, quantity=2, description=inspect.cleandoc( """ Level 1: Tri-Lithium Power Cell: Increases Diamondback attack range by 1. Level 2: Tungsten Spikes: Increases Diamondback attack range by 3. """ )), ItemNames.DIAMONDBACK_SHAPED_HULL: ItemData(307 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 22, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.DIAMONDBACK, description="Increases Diamondback life by 50."), ItemNames.SIEGE_TANK_MAELSTROM_ROUNDS: ItemData(308 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 23, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.SIEGE_TANK, description="Siege Tanks do an additional 40 damage to the primary target in Siege Mode."), ItemNames.SIEGE_TANK_SHAPED_BLAST: ItemData(309 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 24, SC2Race.TERRAN, parent_item=ItemNames.SIEGE_TANK, description="Reduces splash damage to friendly targets while in Siege Mode by 75%."), ItemNames.MEDIVAC_RAPID_DEPLOYMENT_TUBE: ItemData(310 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.MEDIVAC, description="Medivacs deploy loaded troops almost instantly."), ItemNames.MEDIVAC_ADVANCED_HEALING_AI: ItemData(311 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 26, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.MEDIVAC, description="Medivacs can heal two targets at once."), ItemNames.WRAITH_PROGRESSIVE_TOMAHAWK_POWER_CELLS: ItemData(312 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 18, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.WRAITH, quantity=2, description=inspect.cleandoc( """ Level 1: Tomahawk Power Cells: Increases Wraith starting energy by 100. Level 2: Unregistered Cloaking Module: Wraiths do not require energy to cloak and remain cloaked. """ )), ItemNames.WRAITH_DISPLACEMENT_FIELD: ItemData(313 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 27, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.WRAITH, description="Wraiths evade 20% of incoming attacks while cloaked."), ItemNames.VIKING_RIPWAVE_MISSILES: ItemData(314 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 28, SC2Race.TERRAN, parent_item=ItemNames.VIKING, description="Vikings do area damage while in Fighter Mode"), ItemNames.VIKING_PHOBOS_CLASS_WEAPONS_SYSTEM: ItemData(315 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 29, SC2Race.TERRAN, parent_item=ItemNames.VIKING, description="Increases Viking attack range by 1 in Assault mode and 2 in Fighter mode."), ItemNames.BANSHEE_PROGRESSIVE_CROSS_SPECTRUM_DAMPENERS: ItemData(316 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.BANSHEE, quantity=2, description=inspect.cleandoc( """ Level 1: Banshees can remain cloaked twice as long. Level 2: Banshees do not require energy to cloak and remain cloaked. """ )), ItemNames.BANSHEE_SHOCKWAVE_MISSILE_BATTERY: ItemData(317 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 0, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.BANSHEE, description="Banshees do area damage in a straight line."), ItemNames.BATTLECRUISER_PROGRESSIVE_MISSILE_PODS: ItemData(318 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade 2", 2, SC2Race.TERRAN, parent_item=ItemNames.BATTLECRUISER, quantity=2, description="Spell. Missile Pods do damage to air targets in a target area."), ItemNames.BATTLECRUISER_PROGRESSIVE_DEFENSIVE_MATRIX: ItemData(319 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 20, SC2Race.TERRAN, parent_item=ItemNames.BATTLECRUISER, quantity=2, description=inspect.cleandoc( """ Level 1: Spell. For 20 seconds the Battlecruiser gains a shield that can absorb up to 200 damage. Level 2: Passive. Battlecruiser gets 200 shields. """ )), ItemNames.GHOST_OCULAR_IMPLANTS: ItemData(320 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 2, SC2Race.TERRAN, parent_item=ItemNames.GHOST, description="Increases Ghost sight range by 3 and attack range by 2."), ItemNames.GHOST_CRIUS_SUIT: ItemData(321 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 3, SC2Race.TERRAN, parent_item=ItemNames.GHOST, description="Cloak no longer requires energy to activate or maintain."), ItemNames.SPECTRE_PSIONIC_LASH: ItemData(322 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 4, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.SPECTRE, description="Spell. Deals 200 damage to a single target."), ItemNames.SPECTRE_NYX_CLASS_CLOAKING_MODULE: ItemData(323 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 5, SC2Race.TERRAN, parent_item=ItemNames.SPECTRE, description="Cloak no longer requires energy to activate or maintain."), ItemNames.THOR_330MM_BARRAGE_CANNON: ItemData(324 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 6, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.THOR, description=inspect.cleandoc( """ Improves 250mm Strike Cannons ability to deal area damage and stun units in a small area. Can be also freely aimed on ground. """ )), ItemNames.THOR_PROGRESSIVE_IMMORTALITY_PROTOCOL: ItemData(325 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 22, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.THOR, quantity=2, description=inspect.cleandoc(""" Level 1: Allows destroyed Thors to be reconstructed on the field. Costs Vespene Gas. Level 2: Thors are automatically reconstructed after falling for free. """ )), ItemNames.LIBERATOR_ADVANCED_BALLISTICS: ItemData(326 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 7, SC2Race.TERRAN, parent_item=ItemNames.LIBERATOR, origin={"ext"}, description="Increases Liberator range by 3 in Defender Mode."), ItemNames.LIBERATOR_RAID_ARTILLERY: ItemData(327 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 8, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.LIBERATOR, origin={"nco"}, description="Allows Liberators to attack structures while in Defender Mode."), ItemNames.WIDOW_MINE_DRILLING_CLAWS: ItemData(328 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 9, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.WIDOW_MINE, origin={"ext"}, description="Allows Widow Mines to burrow and unburrow faster."), ItemNames.WIDOW_MINE_CONCEALMENT: ItemData(329 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 10, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.WIDOW_MINE, origin={"ext"}, description="Burrowed Widow Mines are no longer revealed when the Sentinel Missile is on cooldown."), ItemNames.MEDIVAC_ADVANCED_CLOAKING_FIELD: ItemData(330 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 11, SC2Race.TERRAN, parent_item=ItemNames.MEDIVAC, origin={"ext"}, description="Medivacs are permanently cloaked."), ItemNames.WRAITH_TRIGGER_OVERRIDE: ItemData(331 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 12, SC2Race.TERRAN, parent_item=ItemNames.WRAITH, origin={"ext"}, description="Wraith attack speed increases by 10% with each attack, up to a maximum of 100%."), ItemNames.WRAITH_INTERNAL_TECH_MODULE: ItemData(332 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 13, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.WRAITH, origin={"bw"}, description=INTERNAL_TECH_MODULE_DESCRIPTION_TEMPLATE.format("Wraiths", "Starport")), ItemNames.WRAITH_RESOURCE_EFFICIENCY: ItemData(333 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 14, SC2Race.TERRAN, parent_item=ItemNames.WRAITH, origin={"bw"}, description=RESOURCE_EFFICIENCY_NO_SUPPLY_DESCRIPTION_TEMPLATE.format("Wraith")), ItemNames.VIKING_SHREDDER_ROUNDS: ItemData(334 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 15, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.VIKING, origin={"ext"}, description="Attacks in Assault mode do line splash damage."), ItemNames.VIKING_WILD_MISSILES: ItemData(335 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 16, SC2Race.TERRAN, parent_item=ItemNames.VIKING, origin={"ext"}, description="Launches 5 rockets at the target unit. Each rocket does 25 (40 vs armored) damage."), ItemNames.BANSHEE_SHAPED_HULL: ItemData(336 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 17, SC2Race.TERRAN, parent_item=ItemNames.BANSHEE, origin={"ext"}, description="Increases Banshee life by 100."), ItemNames.BANSHEE_ADVANCED_TARGETING_OPTICS: ItemData(337 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 18, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.BANSHEE, origin={"ext"}, description="Increases Banshee attack range by 2 while cloaked."), ItemNames.BANSHEE_DISTORTION_BLASTERS: ItemData(338 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 19, SC2Race.TERRAN, parent_item=ItemNames.BANSHEE, origin={"ext"}, description="Increases Banshee attack damage by 25% while cloaked."), ItemNames.BANSHEE_ROCKET_BARRAGE: ItemData(339 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 20, SC2Race.TERRAN, parent_item=ItemNames.BANSHEE, origin={"ext"}, description="Deals 75 damage to enemy ground units in the target area."), ItemNames.GHOST_RESOURCE_EFFICIENCY: ItemData(340 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 21, SC2Race.TERRAN, parent_item=ItemNames.GHOST, origin={"bw"}, description=RESOURCE_EFFICIENCY_DESCRIPTION_TEMPLATE.format("Ghost")), ItemNames.SPECTRE_RESOURCE_EFFICIENCY: ItemData(341 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 22, SC2Race.TERRAN, parent_item=ItemNames.SPECTRE, origin={"ext"}, description=RESOURCE_EFFICIENCY_DESCRIPTION_TEMPLATE.format("Spectre")), ItemNames.THOR_BUTTON_WITH_A_SKULL_ON_IT: ItemData(342 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 23, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.THOR, origin={"ext"}, description="Allows Thors to launch nukes."), ItemNames.THOR_LASER_TARGETING_SYSTEM: ItemData(343 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.THOR, origin={"ext"}, description=LASER_TARGETING_SYSTEMS_DESCRIPTION), ItemNames.THOR_LARGE_SCALE_FIELD_CONSTRUCTION: ItemData(344 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.THOR, origin={"ext"}, description="Allows Thors to be built by SCVs like a structure."), ItemNames.RAVEN_RESOURCE_EFFICIENCY: ItemData(345 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 26, SC2Race.TERRAN, parent_item=ItemNames.RAVEN, origin={"ext"}, description=RESOURCE_EFFICIENCY_NO_SUPPLY_DESCRIPTION_TEMPLATE.format("Raven")), ItemNames.RAVEN_DURABLE_MATERIALS: ItemData(346 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 27, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.RAVEN, origin={"ext"}, description="Extends timed life duration of Raven's summoned objects."), ItemNames.SCIENCE_VESSEL_IMPROVED_NANO_REPAIR: ItemData(347 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 28, SC2Race.TERRAN, parent_item=ItemNames.SCIENCE_VESSEL, origin={"ext"}, description="Nano-Repair no longer requires energy to use."), ItemNames.SCIENCE_VESSEL_ADVANCED_AI_SYSTEMS: ItemData(348 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 29, SC2Race.TERRAN, parent_item=ItemNames.SCIENCE_VESSEL, origin={"ext"}, description="Science Vessel can use Nano-Repair at two targets at once."), ItemNames.CYCLONE_RESOURCE_EFFICIENCY: ItemData(349 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 0, SC2Race.TERRAN, parent_item=ItemNames.CYCLONE, origin={"ext"}, description=RESOURCE_EFFICIENCY_DESCRIPTION_TEMPLATE.format("Cyclone")), ItemNames.BANSHEE_HYPERFLIGHT_ROTORS: ItemData(350 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 1, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.BANSHEE, origin={"ext"}, description="Increases Banshee movement speed."), ItemNames.BANSHEE_LASER_TARGETING_SYSTEM: ItemData(351 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.BANSHEE, origin={"nco"}, description=LASER_TARGETING_SYSTEMS_DESCRIPTION), ItemNames.BANSHEE_INTERNAL_TECH_MODULE: ItemData(352 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 3, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.BANSHEE, origin={"nco"}, description=INTERNAL_TECH_MODULE_DESCRIPTION_TEMPLATE.format("Banshees", "Starport")), ItemNames.BATTLECRUISER_TACTICAL_JUMP: ItemData(353 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 4, SC2Race.TERRAN, parent_item=ItemNames.BATTLECRUISER, origin={"nco", "ext"}, description=inspect.cleandoc( """ Allows Battlecruisers to warp to a target location anywhere on the map. """ )), ItemNames.BATTLECRUISER_CLOAK: ItemData(354 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 5, SC2Race.TERRAN, parent_item=ItemNames.BATTLECRUISER, origin={"nco"}, description=CLOAK_DESCRIPTION_TEMPLATE.format("Battlecruisers")), ItemNames.BATTLECRUISER_ATX_LASER_BATTERY: ItemData(355 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 6, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.BATTLECRUISER, origin={"nco"}, description=inspect.cleandoc( """ Battlecruisers can attack while moving, do the same damage to both ground and air targets, and fire faster. """ )), ItemNames.BATTLECRUISER_OPTIMIZED_LOGISTICS: ItemData(356 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 7, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.BATTLECRUISER, origin={"ext"}, description="Increases Battlecruiser training speed."), ItemNames.BATTLECRUISER_INTERNAL_TECH_MODULE: ItemData(357 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 8, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.BATTLECRUISER, origin={"nco"}, description=INTERNAL_TECH_MODULE_DESCRIPTION_TEMPLATE.format("Battlecruisers", "Starport")), ItemNames.GHOST_EMP_ROUNDS: ItemData(358 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 9, SC2Race.TERRAN, parent_item=ItemNames.GHOST, origin={"ext"}, description=inspect.cleandoc( """ Spell. Does 100 damage to shields and drains all energy from units in the targeted area. Cloaked units hit by EMP are revealed for a short time. """ )), ItemNames.GHOST_LOCKDOWN: ItemData(359 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 10, SC2Race.TERRAN, parent_item=ItemNames.GHOST, origin={"bw"}, description="Spell. Stuns a target mechanical unit for a long time."), ItemNames.SPECTRE_IMPALER_ROUNDS: ItemData(360 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 11, SC2Race.TERRAN, parent_item=ItemNames.SPECTRE, origin={"ext"}, description="Spectres do additional damage to armored targets."), ItemNames.THOR_PROGRESSIVE_HIGH_IMPACT_PAYLOAD: ItemData(361 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 14, SC2Race.TERRAN, parent_item=ItemNames.THOR, quantity=2, origin={"ext"}, description=inspect.cleandoc( f""" Level 1: Allows Thors to transform in order to use an alternative air attack. Level 2: {SMART_SERVOS_DESCRIPTION} """ )), ItemNames.RAVEN_BIO_MECHANICAL_REPAIR_DRONE: ItemData(363 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 12, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.RAVEN, origin={"nco"}, description="Spell. Deploys a drone that can heal biological or mechanical units."), ItemNames.RAVEN_SPIDER_MINES: ItemData(364 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 13, SC2Race.TERRAN, parent_item=ItemNames.RAVEN, origin={"nco"}, important_for_filtering=True, description="Spell. Deploys 3 Spider Mines to a target location."), ItemNames.RAVEN_RAILGUN_TURRET: ItemData(365 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 14, SC2Race.TERRAN, parent_item=ItemNames.RAVEN, origin={"nco"}, description=inspect.cleandoc( """ Spell. Allows Ravens to deploy an advanced Auto-Turret, that can attack enemy ground units in a straight line. """ )), ItemNames.RAVEN_HUNTER_SEEKER_WEAPON: ItemData(366 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 15, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item=ItemNames.RAVEN, origin={"nco"}, description="Allows Ravens to attack with a Hunter-Seeker weapon."), ItemNames.RAVEN_INTERFERENCE_MATRIX: ItemData(367 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 16, SC2Race.TERRAN, parent_item=ItemNames.RAVEN, origin={"ext"}, description=inspect.cleandoc( """ Spell. Target enemy Mechanical or Psionic unit can't attack or use abilities for a short duration. """ )), ItemNames.RAVEN_ANTI_ARMOR_MISSILE: ItemData(368 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 17, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.RAVEN, origin={"ext"}, description="Spell. Decreases target and nearby enemy units armor by 2."), ItemNames.RAVEN_INTERNAL_TECH_MODULE: ItemData(369 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 18, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.RAVEN, origin={"nco"}, description=INTERNAL_TECH_MODULE_DESCRIPTION_TEMPLATE.format("Ravens", "Starport")), ItemNames.SCIENCE_VESSEL_EMP_SHOCKWAVE: ItemData(370 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 19, SC2Race.TERRAN, parent_item=ItemNames.SCIENCE_VESSEL, origin={"bw"}, description="Spell. Depletes all energy and shields of all units in a target area."), ItemNames.SCIENCE_VESSEL_DEFENSIVE_MATRIX: ItemData(371 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 20, SC2Race.TERRAN, parent_item=ItemNames.SCIENCE_VESSEL, origin={"bw"}, description=inspect.cleandoc( """ Spell. Provides a target unit with a defensive barrier that can absorb up to 250 damage """ )), ItemNames.CYCLONE_TARGETING_OPTICS: ItemData(372 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 21, SC2Race.TERRAN, parent_item=ItemNames.CYCLONE, origin={"ext"}, description="Increases Cyclone Lock On casting range and the range while Locked On."), ItemNames.CYCLONE_RAPID_FIRE_LAUNCHERS: ItemData(373 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 22, SC2Race.TERRAN, parent_item=ItemNames.CYCLONE, origin={"ext"}, description="The first 12 shots of Lock On are fired more quickly."), ItemNames.LIBERATOR_CLOAK: ItemData(374 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 23, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.LIBERATOR, origin={"nco"}, description=CLOAK_DESCRIPTION_TEMPLATE.format("Liberators")), ItemNames.LIBERATOR_LASER_TARGETING_SYSTEM: ItemData(375 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.LIBERATOR, origin={"ext"}, description=LASER_TARGETING_SYSTEMS_DESCRIPTION), ItemNames.LIBERATOR_OPTIMIZED_LOGISTICS: ItemData(376 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.LIBERATOR, origin={"nco"}, description="Increases Liberator training speed."), ItemNames.WIDOW_MINE_BLACK_MARKET_LAUNCHERS: ItemData(377 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 26, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.WIDOW_MINE, origin={"ext"}, description="Increases Widow Mine Sentinel Missile range."), ItemNames.WIDOW_MINE_EXECUTIONER_MISSILES: ItemData(378 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 27, SC2Race.TERRAN, parent_item=ItemNames.WIDOW_MINE, origin={"ext"}, description=inspect.cleandoc( """ Reduces Sentinel Missile cooldown. When killed, Widow Mines will launch several missiles at random enemy targets. """ )), ItemNames.VALKYRIE_ENHANCED_CLUSTER_LAUNCHERS: ItemData(379 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 28, SC2Race.TERRAN, parent_item=ItemNames.VALKYRIE, origin={"ext"}, description="Valkyries fire 2 additional rockets each volley."), ItemNames.VALKYRIE_SHAPED_HULL: ItemData(380 + SC2WOL_ITEM_ID_OFFSET, "Armory 5", 29, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.VALKYRIE, origin={"ext"}, description="Increases Valkyrie life by 50."), ItemNames.VALKYRIE_FLECHETTE_MISSILES: ItemData(381 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 0, SC2Race.TERRAN, parent_item=ItemNames.VALKYRIE, origin={"ext"}, description="Equips Valkyries with Air-to-Surface missiles to attack ground units."), ItemNames.VALKYRIE_AFTERBURNERS: ItemData(382 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 1, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.VALKYRIE, origin={"ext"}, description="Ability. Temporarily increases the Valkyries's movement speed by 70%."), ItemNames.CYCLONE_INTERNAL_TECH_MODULE: ItemData(383 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.CYCLONE, origin={"ext"}, description=INTERNAL_TECH_MODULE_DESCRIPTION_TEMPLATE.format("Cyclones", "Factory")), ItemNames.LIBERATOR_SMART_SERVOS: ItemData(384 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 3, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.LIBERATOR, origin={"nco"}, description=SMART_SERVOS_DESCRIPTION), ItemNames.LIBERATOR_RESOURCE_EFFICIENCY: ItemData(385 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 4, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.LIBERATOR, origin={"ext"}, description=RESOURCE_EFFICIENCY_NO_SUPPLY_DESCRIPTION_TEMPLATE.format("Liberator")), ItemNames.HERCULES_INTERNAL_FUSION_MODULE: ItemData(386 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 5, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.HERCULES, origin={"ext"}, description="Hercules can be trained from a Starport without having a Fusion Core."), ItemNames.HERCULES_TACTICAL_JUMP: ItemData(387 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 6, SC2Race.TERRAN, parent_item=ItemNames.HERCULES, origin={"ext"}, description=inspect.cleandoc( """ Allows Hercules to warp to a target location anywhere on the map. """ )), ItemNames.PLANETARY_FORTRESS_PROGRESSIVE_AUGMENTED_THRUSTERS: ItemData(388 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 28, SC2Race.TERRAN, parent_item=ItemNames.PLANETARY_FORTRESS, origin={"ext"}, quantity=2, description=inspect.cleandoc( """ Level 1: Lift Off - Planetary Fortress can lift off. Level 2: Armament Stabilizers - Planetary Fortress can attack while lifted off. """ )), ItemNames.PLANETARY_FORTRESS_ADVANCED_TARGETING: ItemData(389 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 7, SC2Race.TERRAN, parent_item=ItemNames.PLANETARY_FORTRESS, origin={"ext"}, description="Planetary Fortress can attack air units."), ItemNames.VALKYRIE_LAUNCHING_VECTOR_COMPENSATOR: ItemData(390 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 8, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item=ItemNames.VALKYRIE, origin={"ext"}, description="Allows Valkyries to shoot air while moving."), ItemNames.VALKYRIE_RESOURCE_EFFICIENCY: ItemData(391 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 9, SC2Race.TERRAN, parent_item=ItemNames.VALKYRIE, origin={"ext"}, description=RESOURCE_EFFICIENCY_DESCRIPTION_TEMPLATE.format("Valkyrie")), ItemNames.PREDATOR_PREDATOR_S_FURY: ItemData(392 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 10, SC2Race.TERRAN, parent_item=ItemNames.PREDATOR, origin={"ext"}, description="Predators can use an attack that jumps between targets."), ItemNames.BATTLECRUISER_BEHEMOTH_PLATING: ItemData(393 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 11, SC2Race.TERRAN, parent_item=ItemNames.BATTLECRUISER, origin={"ext"}, description="Increases Battlecruiser armor by 2."), ItemNames.BATTLECRUISER_COVERT_OPS_ENGINES: ItemData(394 + SC2WOL_ITEM_ID_OFFSET, "Armory 6", 12, SC2Race.TERRAN, parent_item=ItemNames.BATTLECRUISER, origin={"nco"}, description="Increases Battlecruiser movement speed."), #Buildings ItemNames.BUNKER: ItemData(400 + SC2WOL_ITEM_ID_OFFSET, "Building", 0, SC2Race.TERRAN, classification=ItemClassification.progression, description="Defensive structure. Able to load infantry units, giving them +1 range to their attacks."), ItemNames.MISSILE_TURRET: ItemData(401 + SC2WOL_ITEM_ID_OFFSET, "Building", 1, SC2Race.TERRAN, classification=ItemClassification.progression, description="Anti-air defensive structure."), ItemNames.SENSOR_TOWER: ItemData(402 + SC2WOL_ITEM_ID_OFFSET, "Building", 2, SC2Race.TERRAN, description="Reveals locations of enemy units at long range."), ItemNames.WAR_PIGS: ItemData(500 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 0, SC2Race.TERRAN, classification=ItemClassification.progression, description="Mercenary Marines"), ItemNames.DEVIL_DOGS: ItemData(501 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 1, SC2Race.TERRAN, classification=ItemClassification.filler, description="Mercenary Firebats"), ItemNames.HAMMER_SECURITIES: ItemData(502 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 2, SC2Race.TERRAN, description="Mercenary Marauders"), ItemNames.SPARTAN_COMPANY: ItemData(503 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 3, SC2Race.TERRAN, classification=ItemClassification.progression, description="Mercenary Goliaths"), ItemNames.SIEGE_BREAKERS: ItemData(504 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 4, SC2Race.TERRAN, description="Mercenary Siege Tanks"), ItemNames.HELS_ANGELS: ItemData(505 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 5, SC2Race.TERRAN, classification=ItemClassification.progression, description="Mercenary Vikings"), ItemNames.DUSK_WINGS: ItemData(506 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 6, SC2Race.TERRAN, description="Mercenary Banshees"), ItemNames.JACKSONS_REVENGE: ItemData(507 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 7, SC2Race.TERRAN, description="Mercenary Battlecruiser"), ItemNames.SKIBIS_ANGELS: ItemData(508 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 8, SC2Race.TERRAN, origin={"ext"}, description="Mercenary Medics"), ItemNames.DEATH_HEADS: ItemData(509 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 9, SC2Race.TERRAN, origin={"ext"}, description="Mercenary Reapers"), ItemNames.WINGED_NIGHTMARES: ItemData(510 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 10, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"ext"}, description="Mercenary Wraiths"), ItemNames.MIDNIGHT_RIDERS: ItemData(511 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 11, SC2Race.TERRAN, origin={"ext"}, description="Mercenary Liberators"), ItemNames.BRYNHILDS: ItemData(512 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 12, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"ext"}, description="Mercenary Valkyries"), ItemNames.JOTUN: ItemData(513 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 13, SC2Race.TERRAN, origin={"ext"}, description="Mercenary Thor"), ItemNames.ULTRA_CAPACITORS: ItemData(600 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 0, SC2Race.TERRAN, description="Increases attack speed of units by 5% per weapon upgrade."), ItemNames.VANADIUM_PLATING: ItemData(601 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 1, SC2Race.TERRAN, description="Increases the life of units by 5% per armor upgrade."), ItemNames.ORBITAL_DEPOTS: ItemData(602 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 2, SC2Race.TERRAN, description="Supply depots are built instantly."), ItemNames.MICRO_FILTERING: ItemData(603 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 3, SC2Race.TERRAN, description="Refineries produce Vespene gas 25% faster."), ItemNames.AUTOMATED_REFINERY: ItemData(604 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 4, SC2Race.TERRAN, description="Eliminates the need for SCVs in vespene gas production."), ItemNames.COMMAND_CENTER_REACTOR: ItemData(605 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 5, SC2Race.TERRAN, description="Command Centers can train two SCVs at once."), ItemNames.RAVEN: ItemData(606 + SC2WOL_ITEM_ID_OFFSET, "Unit", 22, SC2Race.TERRAN, classification=ItemClassification.progression, description="Aerial Caster unit."), ItemNames.SCIENCE_VESSEL: ItemData(607 + SC2WOL_ITEM_ID_OFFSET, "Unit", 23, SC2Race.TERRAN, classification=ItemClassification.progression, description="Aerial Caster unit. Can repair mechanical units."), ItemNames.TECH_REACTOR: ItemData(608 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 6, SC2Race.TERRAN, description="Merges Tech Labs and Reactors into one add on structure to provide both functions."), ItemNames.ORBITAL_STRIKE: ItemData(609 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 7, SC2Race.TERRAN, description="Trained units from Barracks are instantly deployed on rally point."), ItemNames.BUNKER_SHRIKE_TURRET: ItemData(610 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 6, SC2Race.TERRAN, parent_item=ItemNames.BUNKER, description="Adds an automated turret to Bunkers."), ItemNames.BUNKER_FORTIFIED_BUNKER: ItemData(611 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 7, SC2Race.TERRAN, parent_item=ItemNames.BUNKER, description="Bunkers have more life."), ItemNames.PLANETARY_FORTRESS: ItemData(612 + SC2WOL_ITEM_ID_OFFSET, "Building", 3, SC2Race.TERRAN, classification=ItemClassification.progression, description=inspect.cleandoc( """ Allows Command Centers to upgrade into a defensive structure with a turret and additional armor. Planetary Fortresses cannot Lift Off, or cast Orbital Command spells. """ )), ItemNames.PERDITION_TURRET: ItemData(613 + SC2WOL_ITEM_ID_OFFSET, "Building", 4, SC2Race.TERRAN, classification=ItemClassification.progression, description="Automated defensive turret. Burrows down while no enemies are nearby."), ItemNames.PREDATOR: ItemData(614 + SC2WOL_ITEM_ID_OFFSET, "Unit", 24, SC2Race.TERRAN, classification=ItemClassification.filler, description="Anti-infantry specialist that deals area damage with each attack."), ItemNames.HERCULES: ItemData(615 + SC2WOL_ITEM_ID_OFFSET, "Unit", 25, SC2Race.TERRAN, classification=ItemClassification.progression, description="Massive transport ship."), ItemNames.CELLULAR_REACTOR: ItemData(616 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 8, SC2Race.TERRAN, description="All Terran spellcasters get +100 starting and maximum energy."), ItemNames.PROGRESSIVE_REGENERATIVE_BIO_STEEL: ItemData(617 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 4, SC2Race.TERRAN, quantity=3, classification= ItemClassification.progression, description=inspect.cleandoc( """ Allows Terran mechanical units to regenerate health while not in combat. Each level increases life regeneration speed. """ )), ItemNames.HIVE_MIND_EMULATOR: ItemData(618 + SC2WOL_ITEM_ID_OFFSET, "Building", 5, SC2Race.TERRAN, ItemClassification.progression, description="Defensive structure. Can permanently Mind Control Zerg units."), ItemNames.PSI_DISRUPTER: ItemData(619 + SC2WOL_ITEM_ID_OFFSET, "Building", 6, SC2Race.TERRAN, classification=ItemClassification.progression, description="Defensive structure. Slows the attack and movement speeds of all nearby Zerg units."), ItemNames.STRUCTURE_ARMOR: ItemData(620 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 9, SC2Race.TERRAN, description="Increases armor of all Terran structures by 2.", origin={"ext"}), ItemNames.HI_SEC_AUTO_TRACKING: ItemData(621 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 10, SC2Race.TERRAN, description="Increases attack range of all Terran structures by 1.", origin={"ext"}), ItemNames.ADVANCED_OPTICS: ItemData(622 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 11, SC2Race.TERRAN, description="Increases attack range of all Terran mechanical units by 1.", origin={"ext"}), ItemNames.ROGUE_FORCES: ItemData(623 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 12, SC2Race.TERRAN, description="Mercenary calldowns are no longer limited by charges.", origin={"ext"}), ItemNames.ZEALOT: ItemData(700 + SC2WOL_ITEM_ID_OFFSET, "Unit", 0, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"wol", "lotv"}, description="Powerful melee warrior. Can use the charge ability."), ItemNames.STALKER: ItemData(701 + SC2WOL_ITEM_ID_OFFSET, "Unit", 1, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"wol", "lotv"}, description="Ranged attack strider. Can use the Blink ability."), ItemNames.HIGH_TEMPLAR: ItemData(702 + SC2WOL_ITEM_ID_OFFSET, "Unit", 2, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"wol", "lotv"}, description="Potent psionic master. Can use the Feedback and Psionic Storm abilities. Can merge into an Archon."), ItemNames.DARK_TEMPLAR: ItemData(703 + SC2WOL_ITEM_ID_OFFSET, "Unit", 3, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"wol", "lotv"}, description="Deadly warrior-assassin. Permanently cloaked. Can use the Shadow Fury ability."), ItemNames.IMMORTAL: ItemData(704 + SC2WOL_ITEM_ID_OFFSET, "Unit", 4, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"wol", "lotv"}, description="Assault strider. Can use Barrier to absorb damage."), ItemNames.COLOSSUS: ItemData(705 + SC2WOL_ITEM_ID_OFFSET, "Unit", 5, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"wol", "lotv"}, description="Battle strider with a powerful area attack. Can walk up and down cliffs. Attacks set fire to the ground, dealing extra damage to enemies over time."), ItemNames.PHOENIX: ItemData(706 + SC2WOL_ITEM_ID_OFFSET, "Unit", 6, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"wol", "lotv"}, description="Air superiority starfighter. Can use Graviton Beam and Phasing Armor abilities."), ItemNames.VOID_RAY: ItemData(707 + SC2WOL_ITEM_ID_OFFSET, "Unit", 7, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"wol", "lotv"}, description="Surgical strike craft. Has the Prismatic Alignment and Prismatic Range abilities."), ItemNames.CARRIER: ItemData(708 + SC2WOL_ITEM_ID_OFFSET, "Unit", 8, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"wol", "lotv"}, description="Capital ship. Builds and launches Interceptors that attack enemy targets. Repair Drones heal nearby mechanical units."), # Filler items to fill remaining spots ItemNames.STARTING_MINERALS: ItemData(800 + SC2WOL_ITEM_ID_OFFSET, "Minerals", 15, SC2Race.ANY, quantity=0, classification=ItemClassification.filler, description="Increases the starting minerals for all missions."), ItemNames.STARTING_VESPENE: ItemData(801 + SC2WOL_ITEM_ID_OFFSET, "Vespene", 15, SC2Race.ANY, quantity=0, classification=ItemClassification.filler, description="Increases the starting vespene for all missions."), ItemNames.STARTING_SUPPLY: ItemData(802 + SC2WOL_ITEM_ID_OFFSET, "Supply", 2, SC2Race.ANY, quantity=0, classification=ItemClassification.filler, description="Increases the starting supply for all missions."), # This item is used to "remove" location from the game. Never placed unless plando'd ItemNames.NOTHING: ItemData(803 + SC2WOL_ITEM_ID_OFFSET, "Nothing Group", 2, SC2Race.ANY, quantity=0, classification=ItemClassification.trap, description="Does nothing. Used to remove a location from the game."), # Nova gear ItemNames.NOVA_GHOST_VISOR: ItemData(900 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 0, SC2Race.TERRAN, origin={"nco"}, description="Reveals the locations of enemy units in the fog of war around Nova. Can detect cloaked units."), ItemNames.NOVA_RANGEFINDER_OCULUS: ItemData(901 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 1, SC2Race.TERRAN, origin={"nco"}, description="Increaases Nova's vision range and non-melee weapon attack range by 2. Also increases range of melee weapons by 1."), ItemNames.NOVA_DOMINATION: ItemData(902 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 2, SC2Race.TERRAN, origin={"nco"}, classification=ItemClassification.progression, description="Gives Nova the ability to mind-control a target enemy unit."), ItemNames.NOVA_BLINK: ItemData(903 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 3, SC2Race.TERRAN, origin={"nco"}, classification=ItemClassification.progression, description="Gives Nova the ability to teleport a short distance and cloak for 10s."), ItemNames.NOVA_PROGRESSIVE_STEALTH_SUIT_MODULE: ItemData(904 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade 2", 0, SC2Race.TERRAN, quantity=2, origin={"nco"}, classification=ItemClassification.progression, description=inspect.cleandoc( """ Level 1: Gives Nova the ability to cloak. Level 2: Nova is permanently cloaked. """ )), ItemNames.NOVA_ENERGY_SUIT_MODULE: ItemData(905 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 4, SC2Race.TERRAN, origin={"nco"}, description="Increases Nova's maximum energy and energy regeneration rate."), ItemNames.NOVA_ARMORED_SUIT_MODULE: ItemData(906 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 5, SC2Race.TERRAN, origin={"nco"}, classification=ItemClassification.progression, description="Increases Nova's health by 100 and armour by 1. Nova also regenerates life quickly out of combat."), ItemNames.NOVA_JUMP_SUIT_MODULE: ItemData(907 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 6, SC2Race.TERRAN, origin={"nco"}, classification=ItemClassification.progression, description="Increases Nova's movement speed and allows her to jump up and down cliffs."), ItemNames.NOVA_C20A_CANISTER_RIFLE: ItemData(908 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 7, SC2Race.TERRAN, origin={"nco"}, classification=ItemClassification.progression, description="Allows Nova to equip the C20A Canister Rifle, which has a ranged attack and allows Nova to cast Snipe."), ItemNames.NOVA_HELLFIRE_SHOTGUN: ItemData(909 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 8, SC2Race.TERRAN, origin={"nco"}, classification=ItemClassification.progression, description="Allows Nova to equip the Hellfire Shotgun, which has a short-range area attack in a cone and allows Nova to cast Penetrating Blast."), ItemNames.NOVA_PLASMA_RIFLE: ItemData(910 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 9, SC2Race.TERRAN, origin={"nco"}, classification=ItemClassification.progression, description="Allows Nova to equip the Plasma Rifle, which has a rapidfire ranged attack and allows Nova to cast Plasma Shot."), ItemNames.NOVA_MONOMOLECULAR_BLADE: ItemData(911 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 10, SC2Race.TERRAN, origin={"nco"}, classification=ItemClassification.progression, description="Allows Nova to equip the Monomolecular Blade, which has a melee attack and allows Nova to cast Dash Attack."), ItemNames.NOVA_BLAZEFIRE_GUNBLADE: ItemData(912 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 11, SC2Race.TERRAN, origin={"nco"}, classification=ItemClassification.progression, description="Allows Nova to equip the Blazefire Gunblade, which has a melee attack and allows Nova to cast Fury of One."), ItemNames.NOVA_STIM_INFUSION: ItemData(913 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 12, SC2Race.TERRAN, origin={"nco"}, classification=ItemClassification.progression, description="Gives Nova the ability to heal herself and temporarily increase her movement and attack speeds."), ItemNames.NOVA_PULSE_GRENADES: ItemData(914 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 13, SC2Race.TERRAN, origin={"nco"}, classification=ItemClassification.progression, description="Gives Nova the ability to throw a grenade dealing large damage in an area."), ItemNames.NOVA_FLASHBANG_GRENADES: ItemData(915 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 14, SC2Race.TERRAN, origin={"nco"}, classification=ItemClassification.progression, description="Gives Nova the ability to throw a grenade to stun enemies and disable detection in a large area."), ItemNames.NOVA_IONIC_FORCE_FIELD: ItemData(916 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 15, SC2Race.TERRAN, origin={"nco"}, classification=ItemClassification.progression, description="Gives Nova the ability to shield herself temporarily."), ItemNames.NOVA_HOLO_DECOY: ItemData(917 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 16, SC2Race.TERRAN, origin={"nco"}, classification=ItemClassification.progression, description="Gives Nova the ability to summon a decoy unit which enemies will prefer to target and takes reduced damage."), ItemNames.NOVA_NUKE: ItemData(918 + SC2WOL_ITEM_ID_OFFSET, "Nova Gear", 17, SC2Race.TERRAN, origin={"nco"}, classification=ItemClassification.progression, description="Gives Nova the ability to launch tactical nukes built from the Shadow Ops."), # HotS ItemNames.ZERGLING: ItemData(0 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 0, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}, description="Fast inexpensive melee attacker. Hatches in pairs from a single larva. Can morph into a Baneling."), ItemNames.SWARM_QUEEN: ItemData(1 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 1, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}, description="Ranged support caster. Can use the Spawn Creep Tumor and Rapid Transfusion abilities."), ItemNames.ROACH: ItemData(2 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 2, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}, description="Durable short ranged attacker. Regenerates life quickly when burrowed."), ItemNames.HYDRALISK: ItemData(3 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 3, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}, description="High-damage generalist ranged attacker."), ItemNames.ZERGLING_BANELING_ASPECT: ItemData(4 + SC2HOTS_ITEM_ID_OFFSET, "Morph", 5, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}, description="Anti-ground suicide unit. Does damage over a small area on death."), ItemNames.ABERRATION: ItemData(5 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 5, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}, description="Durable melee attacker that deals heavy damage and can walk over other units."), ItemNames.MUTALISK: ItemData(6 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 6, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}, description="Fragile flying attacker. Attacks bounce between targets."), ItemNames.SWARM_HOST: ItemData(7 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 7, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}, description="Siege unit that attacks by rooting in place and continually spawning Locusts."), ItemNames.INFESTOR: ItemData(8 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 8, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}, description="Support caster that can move while burrowed. Can use the Fungal Growth, Parasitic Domination, and Consumption abilities."), ItemNames.ULTRALISK: ItemData(9 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 9, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}, description="Massive melee attacker. Has an area-damage cleave attack."), ItemNames.SPORE_CRAWLER: ItemData(10 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 10, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}, description="Anti-air defensive structure that can detect cloaked units."), ItemNames.SPINE_CRAWLER: ItemData(11 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 11, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}, description="Anti-ground defensive structure."), ItemNames.CORRUPTOR: ItemData(12 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 12, SC2Race.ZERG, classification=ItemClassification.progression, origin={"ext"}, description="Anti-air flying attacker specializing in taking down enemy capital ships."), ItemNames.SCOURGE: ItemData(13 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 13, SC2Race.ZERG, classification=ItemClassification.progression, origin={"bw", "ext"}, description="Flying anti-air suicide unit. Hatches in pairs from a single larva."), ItemNames.BROOD_QUEEN: ItemData(14 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 4, SC2Race.ZERG, classification=ItemClassification.progression, origin={"bw", "ext"}, description="Flying support caster. Can cast the Ocular Symbiote and Spawn Broodlings abilities."), ItemNames.DEFILER: ItemData(15 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 14, SC2Race.ZERG, classification=ItemClassification.progression, origin={"bw"}, description="Support caster. Can use the Dark Swarm, Consume, and Plague abilities."), ItemNames.PROGRESSIVE_ZERG_MELEE_ATTACK: ItemData(100 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 0, SC2Race.ZERG, quantity=3, origin={"hots"}), ItemNames.PROGRESSIVE_ZERG_MISSILE_ATTACK: ItemData(101 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 2, SC2Race.ZERG, quantity=3, origin={"hots"}), ItemNames.PROGRESSIVE_ZERG_GROUND_CARAPACE: ItemData(102 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 4, SC2Race.ZERG, quantity=3, origin={"hots"}), ItemNames.PROGRESSIVE_ZERG_FLYER_ATTACK: ItemData(103 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 6, SC2Race.ZERG, quantity=3, origin={"hots"}), ItemNames.PROGRESSIVE_ZERG_FLYER_CARAPACE: ItemData(104 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 8, SC2Race.ZERG, quantity=3, origin={"hots"}), # Upgrade bundle 'number' values are used as indices to get affected 'number's ItemNames.PROGRESSIVE_ZERG_WEAPON_UPGRADE: ItemData(105 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 6, SC2Race.ZERG, quantity=3, origin={"hots"}), ItemNames.PROGRESSIVE_ZERG_ARMOR_UPGRADE: ItemData(106 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 7, SC2Race.ZERG, quantity=3, origin={"hots"}), ItemNames.PROGRESSIVE_ZERG_GROUND_UPGRADE: ItemData(107 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 8, SC2Race.ZERG, quantity=3, origin={"hots"}), ItemNames.PROGRESSIVE_ZERG_FLYER_UPGRADE: ItemData(108 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 9, SC2Race.ZERG, quantity=3, origin={"hots"}), ItemNames.PROGRESSIVE_ZERG_WEAPON_ARMOR_UPGRADE: ItemData(109 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 10, SC2Race.ZERG, quantity=3, origin={"hots"}), ItemNames.ZERGLING_HARDENED_CARAPACE: ItemData(200 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 0, SC2Race.ZERG, parent_item=ItemNames.ZERGLING, origin={"hots"}, description="Increases Zergling health by +10."), ItemNames.ZERGLING_ADRENAL_OVERLOAD: ItemData(201 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 1, SC2Race.ZERG, parent_item=ItemNames.ZERGLING, origin={"hots"}, description="Increases Zergling attack speed."), ItemNames.ZERGLING_METABOLIC_BOOST: ItemData(202 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 2, SC2Race.ZERG, parent_item=ItemNames.ZERGLING, origin={"hots"}, classification=ItemClassification.filler, description="Increases Zergling movement speed."), ItemNames.ROACH_HYDRIODIC_BILE: ItemData(203 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 3, SC2Race.ZERG, parent_item=ItemNames.ROACH, origin={"hots"}, description="Roaches deal +8 damage to light targets."), ItemNames.ROACH_ADAPTIVE_PLATING: ItemData(204 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 4, SC2Race.ZERG, parent_item=ItemNames.ROACH, origin={"hots"}, description="Roaches gain +3 armour when their life is below 50%."), ItemNames.ROACH_TUNNELING_CLAWS: ItemData(205 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 5, SC2Race.ZERG, parent_item=ItemNames.ROACH, origin={"hots"}, classification=ItemClassification.filler, description="Allows Roaches to move while burrowed."), ItemNames.HYDRALISK_FRENZY: ItemData(206 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 6, SC2Race.ZERG, parent_item=ItemNames.HYDRALISK, origin={"hots"}, description="Allows Hydralisks to use the Frenzy ability, which increases their attack speed by 50%."), ItemNames.HYDRALISK_ANCILLARY_CARAPACE: ItemData(207 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 7, SC2Race.ZERG, parent_item=ItemNames.HYDRALISK, origin={"hots"}, classification=ItemClassification.filler, description="Hydralisks gain +20 health."), ItemNames.HYDRALISK_GROOVED_SPINES: ItemData(208 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 8, SC2Race.ZERG, parent_item=ItemNames.HYDRALISK, origin={"hots"}, description="Hydralisks gain +1 range."), ItemNames.BANELING_CORROSIVE_ACID: ItemData(209 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 9, SC2Race.ZERG, parent_item=ItemNames.ZERGLING_BANELING_ASPECT, origin={"hots"}, description="Increases the damage banelings deal to their primary target. Splash damage remains the same."), ItemNames.BANELING_RUPTURE: ItemData(210 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 10, SC2Race.ZERG, parent_item=ItemNames.ZERGLING_BANELING_ASPECT, origin={"hots"}, classification=ItemClassification.filler, description="Increases the splash radius of baneling attacks."), ItemNames.BANELING_REGENERATIVE_ACID: ItemData(211 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 11, SC2Race.ZERG, parent_item=ItemNames.ZERGLING_BANELING_ASPECT, origin={"hots"}, classification=ItemClassification.filler, description="Banelings will heal nearby friendly units when they explode."), ItemNames.MUTALISK_VICIOUS_GLAIVE: ItemData(212 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 12, SC2Race.ZERG, parent_item=ItemNames.MUTALISK, origin={"hots"}, description="Mutalisks attacks will bounce an additional 3 times."), ItemNames.MUTALISK_RAPID_REGENERATION: ItemData(213 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 13, SC2Race.ZERG, parent_item=ItemNames.MUTALISK, origin={"hots"}, description="Mutalisks will regenerate quickly when out of combat."), ItemNames.MUTALISK_SUNDERING_GLAIVE: ItemData(214 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 14, SC2Race.ZERG, parent_item=ItemNames.MUTALISK, origin={"hots"}, description="Mutalisks deal increased damage to their primary target."), ItemNames.SWARM_HOST_BURROW: ItemData(215 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 15, SC2Race.ZERG, parent_item=ItemNames.SWARM_HOST, origin={"hots"}, classification=ItemClassification.filler, description="Allows Swarm Hosts to burrow instead of root to spawn locusts."), ItemNames.SWARM_HOST_RAPID_INCUBATION: ItemData(216 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 16, SC2Race.ZERG, parent_item=ItemNames.SWARM_HOST, origin={"hots"}, description="Swarm Hosts will spawn locusts 20% faster."), ItemNames.SWARM_HOST_PRESSURIZED_GLANDS: ItemData(217 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 17, SC2Race.ZERG, parent_item=ItemNames.SWARM_HOST, origin={"hots"}, classification=ItemClassification.progression, description="Allows Swarm Host Locusts to attack air targets."), ItemNames.ULTRALISK_BURROW_CHARGE: ItemData(218 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 18, SC2Race.ZERG, parent_item=ItemNames.ULTRALISK, origin={"hots"}, description="Allows Ultralisks to burrow and charge at enemy units, knocking back and stunning units when it emerges."), ItemNames.ULTRALISK_TISSUE_ASSIMILATION: ItemData(219 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 19, SC2Race.ZERG, parent_item=ItemNames.ULTRALISK, origin={"hots"}, description="Ultralisks recover health when they deal damage."), ItemNames.ULTRALISK_MONARCH_BLADES: ItemData(220 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 20, SC2Race.ZERG, parent_item=ItemNames.ULTRALISK, origin={"hots"}, description="Ultralisks gain increased splash damage."), ItemNames.CORRUPTOR_CAUSTIC_SPRAY: ItemData(221 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 21, SC2Race.ZERG, parent_item=ItemNames.CORRUPTOR, origin={"ext"}, description="Allows Corruptors to use the Caustic Spray ability, which deals ramping damage to buildings over time."), ItemNames.CORRUPTOR_CORRUPTION: ItemData(222 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 22, SC2Race.ZERG, parent_item=ItemNames.CORRUPTOR, origin={"ext"}, description="Allows Corruptors to use the Corruption ability, which causes a target enemy unit to take increased damage."), ItemNames.SCOURGE_VIRULENT_SPORES: ItemData(223 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 23, SC2Race.ZERG, parent_item=ItemNames.SCOURGE, origin={"ext"}, description="Scourge will deal splash damage."), ItemNames.SCOURGE_RESOURCE_EFFICIENCY: ItemData(224 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 24, SC2Race.ZERG, parent_item=ItemNames.SCOURGE, origin={"ext"}, classification=ItemClassification.progression, description="Reduces the cost of Scourge by 50 gas per egg."), ItemNames.SCOURGE_SWARM_SCOURGE: ItemData(225 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 25, SC2Race.ZERG, parent_item=ItemNames.SCOURGE, origin={"ext"}, description="An extra Scourge will be built from each egg at no additional cost."), ItemNames.ZERGLING_SHREDDING_CLAWS: ItemData(226 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 26, SC2Race.ZERG, parent_item=ItemNames.ZERGLING, origin={"ext"}, description="Zergling attacks will temporarily reduce their target's armour to 0."), ItemNames.ROACH_GLIAL_RECONSTITUTION: ItemData(227 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 27, SC2Race.ZERG, parent_item=ItemNames.ROACH, origin={"ext"}, description="Increases Roach movement speed."), ItemNames.ROACH_ORGANIC_CARAPACE: ItemData(228 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 28, SC2Race.ZERG, parent_item=ItemNames.ROACH, origin={"ext"}, description="Increases Roach health by +25."), ItemNames.HYDRALISK_MUSCULAR_AUGMENTS: ItemData(229 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 1", 29, SC2Race.ZERG, parent_item=ItemNames.HYDRALISK, origin={"bw"}, description="Increases Hydralisk movement speed."), ItemNames.HYDRALISK_RESOURCE_EFFICIENCY: ItemData(230 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 0, SC2Race.ZERG, parent_item=ItemNames.HYDRALISK, origin={"bw"}, description="Reduces Hydralisk resource cost by 25/25 and supply cost by 1."), ItemNames.BANELING_CENTRIFUGAL_HOOKS: ItemData(231 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 1, SC2Race.ZERG, parent_item=ItemNames.ZERGLING_BANELING_ASPECT, origin={"ext"}, description="Increases the movement speed of Banelings."), ItemNames.BANELING_TUNNELING_JAWS: ItemData(232 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 2, SC2Race.ZERG, parent_item=ItemNames.ZERGLING_BANELING_ASPECT, origin={"ext"}, description="Allows Banelings to move while burrowed."), ItemNames.BANELING_RAPID_METAMORPH: ItemData(233 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 3, SC2Race.ZERG, parent_item=ItemNames.ZERGLING_BANELING_ASPECT, origin={"ext"}, description="Banelings morph faster."), ItemNames.MUTALISK_SEVERING_GLAIVE: ItemData(234 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 4, SC2Race.ZERG, parent_item=ItemNames.MUTALISK, origin={"ext"}, description="Mutalisk bounce attacks will deal full damage."), ItemNames.MUTALISK_AERODYNAMIC_GLAIVE_SHAPE: ItemData(235 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 5, SC2Race.ZERG, parent_item=ItemNames.MUTALISK, origin={"ext"}, description="Increases the attack range of Mutalisks by 2."), ItemNames.SWARM_HOST_LOCUST_METABOLIC_BOOST: ItemData(236 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 6, SC2Race.ZERG, parent_item=ItemNames.SWARM_HOST, origin={"ext"}, classification=ItemClassification.filler, description="Increases Locust movement speed."), ItemNames.SWARM_HOST_ENDURING_LOCUSTS: ItemData(237 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 7, SC2Race.ZERG, parent_item=ItemNames.SWARM_HOST, origin={"ext"}, description="Increases the duration of Swarm Hosts' Locusts by 10s."), ItemNames.SWARM_HOST_ORGANIC_CARAPACE: ItemData(238 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 8, SC2Race.ZERG, parent_item=ItemNames.SWARM_HOST, origin={"ext"}, description="Increases Swarm Host health by +40."), ItemNames.SWARM_HOST_RESOURCE_EFFICIENCY: ItemData(239 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 9, SC2Race.ZERG, parent_item=ItemNames.SWARM_HOST, origin={"ext"}, description="Reduces Swarm Host resource cost by 100/25."), ItemNames.ULTRALISK_ANABOLIC_SYNTHESIS: ItemData(240 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 10, SC2Race.ZERG, parent_item=ItemNames.ULTRALISK, origin={"bw"}, classification=ItemClassification.filler), ItemNames.ULTRALISK_CHITINOUS_PLATING: ItemData(241 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 11, SC2Race.ZERG, parent_item=ItemNames.ULTRALISK, origin={"bw"}), ItemNames.ULTRALISK_ORGANIC_CARAPACE: ItemData(242 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 12, SC2Race.ZERG, parent_item=ItemNames.ULTRALISK, origin={"ext"}), ItemNames.ULTRALISK_RESOURCE_EFFICIENCY: ItemData(243 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 13, SC2Race.ZERG, parent_item=ItemNames.ULTRALISK, origin={"bw"}), ItemNames.DEVOURER_CORROSIVE_SPRAY: ItemData(244 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 14, SC2Race.ZERG, parent_item=ItemNames.MUTALISK_CORRUPTOR_DEVOURER_ASPECT, origin={"ext"}), ItemNames.DEVOURER_GAPING_MAW: ItemData(245 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 15, SC2Race.ZERG, parent_item=ItemNames.MUTALISK_CORRUPTOR_DEVOURER_ASPECT, origin={"ext"}), ItemNames.DEVOURER_IMPROVED_OSMOSIS: ItemData(246 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 16, SC2Race.ZERG, parent_item=ItemNames.MUTALISK_CORRUPTOR_DEVOURER_ASPECT, origin={"ext"}, classification=ItemClassification.filler), ItemNames.DEVOURER_PRESCIENT_SPORES: ItemData(247 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 17, SC2Race.ZERG, parent_item=ItemNames.MUTALISK_CORRUPTOR_DEVOURER_ASPECT, origin={"ext"}), ItemNames.GUARDIAN_PROLONGED_DISPERSION: ItemData(248 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 18, SC2Race.ZERG, parent_item=ItemNames.MUTALISK_CORRUPTOR_GUARDIAN_ASPECT, origin={"ext"}), ItemNames.GUARDIAN_PRIMAL_ADAPTATION: ItemData(249 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 19, SC2Race.ZERG, parent_item=ItemNames.MUTALISK_CORRUPTOR_GUARDIAN_ASPECT, origin={"ext"}), ItemNames.GUARDIAN_SORONAN_ACID: ItemData(250 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 20, SC2Race.ZERG, parent_item=ItemNames.MUTALISK_CORRUPTOR_GUARDIAN_ASPECT, origin={"ext"}), ItemNames.IMPALER_ADAPTIVE_TALONS: ItemData(251 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 21, SC2Race.ZERG, parent_item=ItemNames.HYDRALISK_IMPALER_ASPECT, origin={"ext"}, classification=ItemClassification.filler), ItemNames.IMPALER_SECRETION_GLANDS: ItemData(252 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 22, SC2Race.ZERG, parent_item=ItemNames.HYDRALISK_IMPALER_ASPECT, origin={"ext"}), ItemNames.IMPALER_HARDENED_TENTACLE_SPINES: ItemData(253 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 23, SC2Race.ZERG, parent_item=ItemNames.HYDRALISK_IMPALER_ASPECT, origin={"ext"}), ItemNames.LURKER_SEISMIC_SPINES: ItemData(254 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 24, SC2Race.ZERG, parent_item=ItemNames.HYDRALISK_LURKER_ASPECT, origin={"ext"}), ItemNames.LURKER_ADAPTED_SPINES: ItemData(255 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 25, SC2Race.ZERG, parent_item=ItemNames.HYDRALISK_LURKER_ASPECT, origin={"ext"}), ItemNames.RAVAGER_POTENT_BILE: ItemData(256 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 26, SC2Race.ZERG, parent_item=ItemNames.ROACH_RAVAGER_ASPECT, origin={"ext"}), ItemNames.RAVAGER_BLOATED_BILE_DUCTS: ItemData(257 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 27, SC2Race.ZERG, parent_item=ItemNames.ROACH_RAVAGER_ASPECT, origin={"ext"}), ItemNames.RAVAGER_DEEP_TUNNEL: ItemData(258 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 28, SC2Race.ZERG, parent_item=ItemNames.ROACH_RAVAGER_ASPECT, origin={"ext"}), ItemNames.VIPER_PARASITIC_BOMB: ItemData(259 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 2", 29, SC2Race.ZERG, parent_item=ItemNames.MUTALISK_CORRUPTOR_VIPER_ASPECT, origin={"ext"}), ItemNames.VIPER_PARALYTIC_BARBS: ItemData(260 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 0, SC2Race.ZERG, parent_item=ItemNames.MUTALISK_CORRUPTOR_VIPER_ASPECT, origin={"ext"}), ItemNames.VIPER_VIRULENT_MICROBES: ItemData(261 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 1, SC2Race.ZERG, parent_item=ItemNames.MUTALISK_CORRUPTOR_VIPER_ASPECT, origin={"ext"}), ItemNames.BROOD_LORD_POROUS_CARTILAGE: ItemData(262 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 2, SC2Race.ZERG, parent_item=ItemNames.MUTALISK_CORRUPTOR_BROOD_LORD_ASPECT, origin={"ext"}), ItemNames.BROOD_LORD_EVOLVED_CARAPACE: ItemData(263 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 3, SC2Race.ZERG, parent_item=ItemNames.MUTALISK_CORRUPTOR_BROOD_LORD_ASPECT, origin={"ext"}), ItemNames.BROOD_LORD_SPLITTER_MITOSIS: ItemData(264 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 4, SC2Race.ZERG, parent_item=ItemNames.MUTALISK_CORRUPTOR_BROOD_LORD_ASPECT, origin={"ext"}), ItemNames.BROOD_LORD_RESOURCE_EFFICIENCY: ItemData(265 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 5, SC2Race.ZERG, parent_item=ItemNames.MUTALISK_CORRUPTOR_BROOD_LORD_ASPECT, origin={"ext"}), ItemNames.INFESTOR_INFESTED_TERRAN: ItemData(266 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 6, SC2Race.ZERG, parent_item=ItemNames.INFESTOR, origin={"ext"}), ItemNames.INFESTOR_MICROBIAL_SHROUD: ItemData(267 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 7, SC2Race.ZERG, parent_item=ItemNames.INFESTOR, origin={"ext"}), ItemNames.SWARM_QUEEN_SPAWN_LARVAE: ItemData(268 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 8, SC2Race.ZERG, parent_item=ItemNames.SWARM_QUEEN, origin={"ext"}), ItemNames.SWARM_QUEEN_DEEP_TUNNEL: ItemData(269 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 9, SC2Race.ZERG, parent_item=ItemNames.SWARM_QUEEN, origin={"ext"}), ItemNames.SWARM_QUEEN_ORGANIC_CARAPACE: ItemData(270 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 10, SC2Race.ZERG, parent_item=ItemNames.SWARM_QUEEN, origin={"ext"}, classification=ItemClassification.filler), ItemNames.SWARM_QUEEN_BIO_MECHANICAL_TRANSFUSION: ItemData(271 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 11, SC2Race.ZERG, parent_item=ItemNames.SWARM_QUEEN, origin={"ext"}), ItemNames.SWARM_QUEEN_RESOURCE_EFFICIENCY: ItemData(272 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 12, SC2Race.ZERG, parent_item=ItemNames.SWARM_QUEEN, origin={"ext"}), ItemNames.SWARM_QUEEN_INCUBATOR_CHAMBER: ItemData(273 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 13, SC2Race.ZERG, parent_item=ItemNames.SWARM_QUEEN, origin={"ext"}), ItemNames.BROOD_QUEEN_FUNGAL_GROWTH: ItemData(274 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 14, SC2Race.ZERG, parent_item=ItemNames.BROOD_QUEEN, origin={"ext"}), ItemNames.BROOD_QUEEN_ENSNARE: ItemData(275 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 15, SC2Race.ZERG, parent_item=ItemNames.BROOD_QUEEN, origin={"ext"}), ItemNames.BROOD_QUEEN_ENHANCED_MITOCHONDRIA: ItemData(276 + SC2HOTS_ITEM_ID_OFFSET, "Mutation 3", 16, SC2Race.ZERG, parent_item=ItemNames.BROOD_QUEEN, origin={"ext"}), ItemNames.ZERGLING_RAPTOR_STRAIN: ItemData(300 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 0, SC2Race.ZERG, parent_item=ItemNames.ZERGLING, origin={"hots"}, description="Allows Zerglings to jump up and down cliffs and leap onto enemies. Also increases Zergling attack damage by 2."), ItemNames.ZERGLING_SWARMLING_STRAIN: ItemData(301 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 1, SC2Race.ZERG, parent_item=ItemNames.ZERGLING, origin={"hots"}, description="Zerglings will spawn instantly and with an extra Zergling per egg at no additional cost."), ItemNames.ROACH_VILE_STRAIN: ItemData(302 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 2, SC2Race.ZERG, parent_item=ItemNames.ROACH, origin={"hots"}, description="Roach attacks will slow the movement and attack speed of enemies."), ItemNames.ROACH_CORPSER_STRAIN: ItemData(303 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 3, SC2Race.ZERG, parent_item=ItemNames.ROACH, origin={"hots"}, description="Units killed after being attacked by Roaches will spawn 2 Roachlings."), ItemNames.HYDRALISK_IMPALER_ASPECT: ItemData(304 + SC2HOTS_ITEM_ID_OFFSET, "Morph", 0, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression, description="Allows Hydralisks to morph into Impalers."), ItemNames.HYDRALISK_LURKER_ASPECT: ItemData(305 + SC2HOTS_ITEM_ID_OFFSET, "Morph", 1, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression, description="Allows Hydralisks to morph into Lurkers."), ItemNames.BANELING_SPLITTER_STRAIN: ItemData(306 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 6, SC2Race.ZERG, parent_item=ItemNames.ZERGLING_BANELING_ASPECT, origin={"hots"}, description="Banelings will split into two smaller Splitterlings on exploding."), ItemNames.BANELING_HUNTER_STRAIN: ItemData(307 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 7, SC2Race.ZERG, parent_item=ItemNames.ZERGLING_BANELING_ASPECT, origin={"hots"}, description="Allows Banelings to jump up and down cliffs and leap onto enemies."), ItemNames.MUTALISK_CORRUPTOR_BROOD_LORD_ASPECT: ItemData(308 + SC2HOTS_ITEM_ID_OFFSET, "Morph", 2, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression, description="Allows Mutalisks and Corruptors to morph into Brood Lords."), ItemNames.MUTALISK_CORRUPTOR_VIPER_ASPECT: ItemData(309 + SC2HOTS_ITEM_ID_OFFSET, "Morph", 3, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression, description="Allows Mutalisks and Corruptors to morph into Vipers."), ItemNames.SWARM_HOST_CARRION_STRAIN: ItemData(310 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 10, SC2Race.ZERG, parent_item=ItemNames.SWARM_HOST, origin={"hots"}, description="Swarm Hosts will spawn Flying Locusts."), ItemNames.SWARM_HOST_CREEPER_STRAIN: ItemData(311 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 11, SC2Race.ZERG, parent_item=ItemNames.SWARM_HOST, origin={"hots"}, classification=ItemClassification.filler, description="Allows Swarm Hosts to teleport to any creep on the map in vision. Swarm Hosts will spread creep around them when rooted or burrowed."), ItemNames.ULTRALISK_NOXIOUS_STRAIN: ItemData(312 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 12, SC2Race.ZERG, parent_item=ItemNames.ULTRALISK, origin={"hots"}, classification=ItemClassification.filler, description="Ultralisks will periodically spread poison, damaging nearby biological enemies."), ItemNames.ULTRALISK_TORRASQUE_STRAIN: ItemData(313 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 13, SC2Race.ZERG, parent_item=ItemNames.ULTRALISK, origin={"hots"}, description="Ultralisks will revive after being killed."), ItemNames.KERRIGAN_KINETIC_BLAST: ItemData(400 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 0, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), ItemNames.KERRIGAN_HEROIC_FORTITUDE: ItemData(401 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 1, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), ItemNames.KERRIGAN_LEAPING_STRIKE: ItemData(402 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 2, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), ItemNames.KERRIGAN_CRUSHING_GRIP: ItemData(403 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 3, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), ItemNames.KERRIGAN_CHAIN_REACTION: ItemData(404 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 4, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), ItemNames.KERRIGAN_PSIONIC_SHIFT: ItemData(405 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 5, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), ItemNames.KERRIGAN_ZERGLING_RECONSTITUTION: ItemData(406 + SC2HOTS_ITEM_ID_OFFSET, "Evolution Pit", 0, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.filler), ItemNames.KERRIGAN_IMPROVED_OVERLORDS: ItemData(407 + SC2HOTS_ITEM_ID_OFFSET, "Evolution Pit", 1, SC2Race.ZERG, origin={"hots"}), ItemNames.KERRIGAN_AUTOMATED_EXTRACTORS: ItemData(408 + SC2HOTS_ITEM_ID_OFFSET, "Evolution Pit", 2, SC2Race.ZERG, origin={"hots"}), ItemNames.KERRIGAN_WILD_MUTATION: ItemData(409 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 6, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), ItemNames.KERRIGAN_SPAWN_BANELINGS: ItemData(410 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 7, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), ItemNames.KERRIGAN_MEND: ItemData(411 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 8, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), ItemNames.KERRIGAN_TWIN_DRONES: ItemData(412 + SC2HOTS_ITEM_ID_OFFSET, "Evolution Pit", 3, SC2Race.ZERG, origin={"hots"}), ItemNames.KERRIGAN_MALIGNANT_CREEP: ItemData(413 + SC2HOTS_ITEM_ID_OFFSET, "Evolution Pit", 4, SC2Race.ZERG, origin={"hots"}), ItemNames.KERRIGAN_VESPENE_EFFICIENCY: ItemData(414 + SC2HOTS_ITEM_ID_OFFSET, "Evolution Pit", 5, SC2Race.ZERG, origin={"hots"}), ItemNames.KERRIGAN_INFEST_BROODLINGS: ItemData(415 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 9, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), ItemNames.KERRIGAN_FURY: ItemData(416 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 10, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), ItemNames.KERRIGAN_ABILITY_EFFICIENCY: ItemData(417 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 11, SC2Race.ZERG, origin={"hots"}), ItemNames.KERRIGAN_APOCALYPSE: ItemData(418 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 12, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), ItemNames.KERRIGAN_SPAWN_LEVIATHAN: ItemData(419 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 13, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), ItemNames.KERRIGAN_DROP_PODS: ItemData(420 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 14, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), # Handled separately from other abilities ItemNames.KERRIGAN_PRIMAL_FORM: ItemData(421 + SC2HOTS_ITEM_ID_OFFSET, "Primal Form", 0, SC2Race.ZERG, origin={"hots"}), ItemNames.KERRIGAN_LEVELS_10: ItemData(500 + SC2HOTS_ITEM_ID_OFFSET, "Level", 10, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.progression), ItemNames.KERRIGAN_LEVELS_9: ItemData(501 + SC2HOTS_ITEM_ID_OFFSET, "Level", 9, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.progression), ItemNames.KERRIGAN_LEVELS_8: ItemData(502 + SC2HOTS_ITEM_ID_OFFSET, "Level", 8, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.progression), ItemNames.KERRIGAN_LEVELS_7: ItemData(503 + SC2HOTS_ITEM_ID_OFFSET, "Level", 7, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.progression), ItemNames.KERRIGAN_LEVELS_6: ItemData(504 + SC2HOTS_ITEM_ID_OFFSET, "Level", 6, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.progression), ItemNames.KERRIGAN_LEVELS_5: ItemData(505 + SC2HOTS_ITEM_ID_OFFSET, "Level", 5, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.progression), ItemNames.KERRIGAN_LEVELS_4: ItemData(506 + SC2HOTS_ITEM_ID_OFFSET, "Level", 4, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.progression_skip_balancing), ItemNames.KERRIGAN_LEVELS_3: ItemData(507 + SC2HOTS_ITEM_ID_OFFSET, "Level", 3, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.progression_skip_balancing), ItemNames.KERRIGAN_LEVELS_2: ItemData(508 + SC2HOTS_ITEM_ID_OFFSET, "Level", 2, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.progression_skip_balancing), ItemNames.KERRIGAN_LEVELS_1: ItemData(509 + SC2HOTS_ITEM_ID_OFFSET, "Level", 1, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.progression_skip_balancing), ItemNames.KERRIGAN_LEVELS_14: ItemData(510 + SC2HOTS_ITEM_ID_OFFSET, "Level", 14, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.progression), ItemNames.KERRIGAN_LEVELS_35: ItemData(511 + SC2HOTS_ITEM_ID_OFFSET, "Level", 35, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.progression), ItemNames.KERRIGAN_LEVELS_70: ItemData(512 + SC2HOTS_ITEM_ID_OFFSET, "Level", 70, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.progression), # Zerg Mercs ItemNames.INFESTED_MEDICS: ItemData(600 + SC2HOTS_ITEM_ID_OFFSET, "Mercenary", 0, SC2Race.ZERG, origin={"ext"}), ItemNames.INFESTED_SIEGE_TANKS: ItemData(601 + SC2HOTS_ITEM_ID_OFFSET, "Mercenary", 1, SC2Race.ZERG, origin={"ext"}), ItemNames.INFESTED_BANSHEES: ItemData(602 + SC2HOTS_ITEM_ID_OFFSET, "Mercenary", 2, SC2Race.ZERG, origin={"ext"}), # Misc Upgrades ItemNames.OVERLORD_VENTRAL_SACS: ItemData(700 + SC2HOTS_ITEM_ID_OFFSET, "Evolution Pit", 6, SC2Race.ZERG, origin={"bw"}), # Morphs ItemNames.MUTALISK_CORRUPTOR_GUARDIAN_ASPECT: ItemData(800 + SC2HOTS_ITEM_ID_OFFSET, "Morph", 6, SC2Race.ZERG, origin={"bw"}), ItemNames.MUTALISK_CORRUPTOR_DEVOURER_ASPECT: ItemData(801 + SC2HOTS_ITEM_ID_OFFSET, "Morph", 7, SC2Race.ZERG, origin={"bw"}), ItemNames.ROACH_RAVAGER_ASPECT: ItemData(802 + SC2HOTS_ITEM_ID_OFFSET, "Morph", 8, SC2Race.ZERG, origin={"ext"}), # Protoss Units (those that aren't as items in WoL (Prophecy)) ItemNames.OBSERVER: ItemData(0 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 9, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"wol"}, description="Flying spy. Cloak renders the unit invisible to enemies without detection."), ItemNames.CENTURION: ItemData(1 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 10, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Powerful melee warrior. Has the Shadow Charge and Darkcoil abilities."), ItemNames.SENTINEL: ItemData(2 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 11, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Powerful melee warrior. Has the Charge and Reconstruction abilities."), ItemNames.SUPPLICANT: ItemData(3 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 12, SC2Race.PROTOSS, classification=ItemClassification.filler, important_for_filtering=True, origin={"ext"}, description="Powerful melee warrior. Has powerful damage resistant shields."), ItemNames.INSTIGATOR: ItemData(4 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 13, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"ext"}, description="Ranged support strider. Can store multiple Blink charges."), ItemNames.SLAYER: ItemData(5 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 14, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"ext"}, description="Ranged attack strider. Can use the Phase Blink and Phasing Armor abilities."), ItemNames.SENTRY: ItemData(6 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 15, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Robotic support unit can use the Guardian Shield ability and restore the shields of nearby Protoss units."), ItemNames.ENERGIZER: ItemData(7 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 16, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Robotic support unit. Can use the Chrono Beam ability and become stationary to power nearby structures."), ItemNames.HAVOC: ItemData(8 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 17, SC2Race.PROTOSS, origin={"lotv"}, important_for_filtering=True, description="Robotic support unit. Can use the Target Lock and Force Field abilities and increase the range of nearby Protoss units."), ItemNames.SIGNIFIER: ItemData(9 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 18, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"ext"}, description="Potent permanently cloaked psionic master. Can use the Feedback and Crippling Psionic Storm abilities. Can merge into an Archon."), ItemNames.ASCENDANT: ItemData(10 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 19, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Potent psionic master. Can use the Psionic Orb, Mind Blast, and Sacrifice abilities."), ItemNames.AVENGER: ItemData(11 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 20, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Deadly warrior-assassin. Permanently cloaked. Recalls to the nearest Dark Shrine upon death."), ItemNames.BLOOD_HUNTER: ItemData(12 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 21, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Deadly warrior-assassin. Permanently cloaked. Can use the Void Stasis ability."), ItemNames.DRAGOON: ItemData(13 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 22, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Ranged assault strider. Has enhanced health and damage."), ItemNames.DARK_ARCHON: ItemData(14 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 23, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Potent psionic master. Can use the Confuse and Mind Control abilities."), ItemNames.ADEPT: ItemData(15 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 24, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Ranged specialist. Can use the Psionic Transfer ability."), ItemNames.WARP_PRISM: ItemData(16 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 25, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"ext"}, description="Flying transport. Can carry units and become stationary to deploy a power field."), ItemNames.ANNIHILATOR: ItemData(17 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 26, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Assault Strider. Can use the Shadow Cannon ability to damage air and ground units."), ItemNames.VANGUARD: ItemData(18 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 27, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Assault Strider. Deals splash damage around the primary target."), ItemNames.WRATHWALKER: ItemData(19 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 28, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Battle strider with a powerful single target attack. Can walk up and down cliffs."), ItemNames.REAVER: ItemData(20 + SC2LOTV_ITEM_ID_OFFSET, "Unit", 29, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Area damage siege unit. Builds and launches explosive Scarabs for high burst damage."), ItemNames.DISRUPTOR: ItemData(21 + SC2LOTV_ITEM_ID_OFFSET, "Unit 2", 0, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"ext"}, description="Robotic disruption unit. Can use the Purification Nova ability to deal heavy area damage."), ItemNames.MIRAGE: ItemData(22 + SC2LOTV_ITEM_ID_OFFSET, "Unit 2", 1, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Air superiority starfighter. Can use Graviton Beam and Phasing Armor abilities."), ItemNames.CORSAIR: ItemData(23 + SC2LOTV_ITEM_ID_OFFSET, "Unit 2", 2, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Air superiority starfighter. Can use the Disruption Web ability."), ItemNames.DESTROYER: ItemData(24 + SC2LOTV_ITEM_ID_OFFSET, "Unit 2", 3, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Area assault craft. Can use the Destruction Beam ability to attack multiple units at once."), ItemNames.SCOUT: ItemData(25 + SC2LOTV_ITEM_ID_OFFSET, "Unit 2", 4, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"ext"}, description="Versatile high-speed fighter."), ItemNames.TEMPEST: ItemData(26 + SC2LOTV_ITEM_ID_OFFSET, "Unit 2", 5, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Siege artillery craft. Attacks from long range. Can use the Disintegration ability."), ItemNames.MOTHERSHIP: ItemData(27 + SC2LOTV_ITEM_ID_OFFSET, "Unit 2", 6, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Ultimate Protoss vessel, Can use the Vortex and Mass Recall abilities. Cloaks nearby units and structures."), ItemNames.ARBITER: ItemData(28 + SC2LOTV_ITEM_ID_OFFSET, "Unit 2", 7, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="Army support craft. Has the Stasis Field and Recall abilities. Cloaks nearby units."), ItemNames.ORACLE: ItemData(29 + SC2LOTV_ITEM_ID_OFFSET, "Unit 2", 8, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"ext"}, description="Flying caster. Can use the Revelation and Stasis Ward abilities."), # Protoss Upgrades ItemNames.PROGRESSIVE_PROTOSS_GROUND_WEAPON: ItemData(100 + SC2LOTV_ITEM_ID_OFFSET, "Upgrade", 0, SC2Race.PROTOSS, quantity=3, origin={"wol", "lotv"}), ItemNames.PROGRESSIVE_PROTOSS_GROUND_ARMOR: ItemData(101 + SC2LOTV_ITEM_ID_OFFSET, "Upgrade", 2, SC2Race.PROTOSS, quantity=3, origin={"wol", "lotv"}), ItemNames.PROGRESSIVE_PROTOSS_SHIELDS: ItemData(102 + SC2LOTV_ITEM_ID_OFFSET, "Upgrade", 4, SC2Race.PROTOSS, quantity=3, origin={"wol", "lotv"}), ItemNames.PROGRESSIVE_PROTOSS_AIR_WEAPON: ItemData(103 + SC2LOTV_ITEM_ID_OFFSET, "Upgrade", 6, SC2Race.PROTOSS, quantity=3, origin={"wol", "lotv"}), ItemNames.PROGRESSIVE_PROTOSS_AIR_ARMOR: ItemData(104 + SC2LOTV_ITEM_ID_OFFSET, "Upgrade", 8, SC2Race.PROTOSS, quantity=3, origin={"wol", "lotv"}), # Upgrade bundle 'number' values are used as indices to get affected 'number's ItemNames.PROGRESSIVE_PROTOSS_WEAPON_UPGRADE: ItemData(105 + SC2LOTV_ITEM_ID_OFFSET, "Upgrade", 11, SC2Race.PROTOSS, quantity=3, origin={"wol", "lotv"}), ItemNames.PROGRESSIVE_PROTOSS_ARMOR_UPGRADE: ItemData(106 + SC2LOTV_ITEM_ID_OFFSET, "Upgrade", 12, SC2Race.PROTOSS, quantity=3, origin={"wol", "lotv"}), ItemNames.PROGRESSIVE_PROTOSS_GROUND_UPGRADE: ItemData(107 + SC2LOTV_ITEM_ID_OFFSET, "Upgrade", 13, SC2Race.PROTOSS, quantity=3, origin={"wol", "lotv"}), ItemNames.PROGRESSIVE_PROTOSS_AIR_UPGRADE: ItemData(108 + SC2LOTV_ITEM_ID_OFFSET, "Upgrade", 14, SC2Race.PROTOSS, quantity=3, origin={"wol", "lotv"}), ItemNames.PROGRESSIVE_PROTOSS_WEAPON_ARMOR_UPGRADE: ItemData(109 + SC2LOTV_ITEM_ID_OFFSET, "Upgrade", 15, SC2Race.PROTOSS, quantity=3, origin={"wol", "lotv"}), # Protoss Buildings ItemNames.PHOTON_CANNON: ItemData(200 + SC2LOTV_ITEM_ID_OFFSET, "Building", 0, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"wol", "lotv"}), ItemNames.KHAYDARIN_MONOLITH: ItemData(201 + SC2LOTV_ITEM_ID_OFFSET, "Building", 1, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}), ItemNames.SHIELD_BATTERY: ItemData(202 + SC2LOTV_ITEM_ID_OFFSET, "Building", 2, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}), # Protoss Unit Upgrades ItemNames.SUPPLICANT_BLOOD_SHIELD: ItemData(300 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 0, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"ext"}, parent_item=ItemNames.SUPPLICANT), ItemNames.SUPPLICANT_SOUL_AUGMENTATION: ItemData(301 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 1, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"ext"}, parent_item=ItemNames.SUPPLICANT), ItemNames.SUPPLICANT_SHIELD_REGENERATION: ItemData(302 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 2, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"ext"}, parent_item=ItemNames.SUPPLICANT), ItemNames.ADEPT_SHOCKWAVE: ItemData(303 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 3, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.ADEPT), ItemNames.ADEPT_RESONATING_GLAIVES: ItemData(304 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 4, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.ADEPT), ItemNames.ADEPT_PHASE_BULWARK: ItemData(305 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 5, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.ADEPT), ItemNames.STALKER_INSTIGATOR_SLAYER_DISINTEGRATING_PARTICLES: ItemData(306 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 6, SC2Race.PROTOSS, origin={"ext"}, classification=ItemClassification.progression), ItemNames.STALKER_INSTIGATOR_SLAYER_PARTICLE_REFLECTION: ItemData(307 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 7, SC2Race.PROTOSS, origin={"ext"}, classification=ItemClassification.progression), ItemNames.DRAGOON_HIGH_IMPACT_PHASE_DISRUPTORS: ItemData(308 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 8, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.DRAGOON), ItemNames.DRAGOON_TRILLIC_COMPRESSION_SYSTEM: ItemData(309 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 9, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.DRAGOON), ItemNames.DRAGOON_SINGULARITY_CHARGE: ItemData(310 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 10, SC2Race.PROTOSS, origin={"bw"}, parent_item=ItemNames.DRAGOON), ItemNames.DRAGOON_ENHANCED_STRIDER_SERVOS: ItemData(311 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 11, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"bw"}, parent_item=ItemNames.DRAGOON), ItemNames.SCOUT_COMBAT_SENSOR_ARRAY: ItemData(312 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 12, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.SCOUT), ItemNames.SCOUT_APIAL_SENSORS: ItemData(313 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 13, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"bw"}, parent_item=ItemNames.SCOUT), ItemNames.SCOUT_GRAVITIC_THRUSTERS: ItemData(314 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 14, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"bw"}, parent_item=ItemNames.SCOUT), ItemNames.SCOUT_ADVANCED_PHOTON_BLASTERS: ItemData(315 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 15, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.SCOUT), ItemNames.TEMPEST_TECTONIC_DESTABILIZERS: ItemData(316 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 16, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"ext"}, parent_item=ItemNames.TEMPEST), ItemNames.TEMPEST_QUANTIC_REACTOR: ItemData(317 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 17, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"ext"}, parent_item=ItemNames.TEMPEST), ItemNames.TEMPEST_GRAVITY_SLING: ItemData(318 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 18, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.TEMPEST), ItemNames.PHOENIX_MIRAGE_IONIC_WAVELENGTH_FLUX: ItemData(319 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 19, SC2Race.PROTOSS, origin={"ext"}), ItemNames.PHOENIX_MIRAGE_ANION_PULSE_CRYSTALS: ItemData(320 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 20, SC2Race.PROTOSS, origin={"ext"}), ItemNames.CORSAIR_STEALTH_DRIVE: ItemData(321 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 21, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.CORSAIR), ItemNames.CORSAIR_ARGUS_JEWEL: ItemData(322 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 22, SC2Race.PROTOSS, origin={"bw"}, parent_item=ItemNames.CORSAIR), ItemNames.CORSAIR_SUSTAINING_DISRUPTION: ItemData(323 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 23, SC2Race.PROTOSS, origin={"bw"}, parent_item=ItemNames.CORSAIR), ItemNames.CORSAIR_NEUTRON_SHIELDS: ItemData(324 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 24, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"bw"}, parent_item=ItemNames.CORSAIR), ItemNames.ORACLE_STEALTH_DRIVE: ItemData(325 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 25, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.ORACLE), ItemNames.ORACLE_STASIS_CALIBRATION: ItemData(326 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 26, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.ORACLE), ItemNames.ORACLE_TEMPORAL_ACCELERATION_BEAM: ItemData(327 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 27, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.ORACLE), ItemNames.ARBITER_CHRONOSTATIC_REINFORCEMENT: ItemData(328 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 28, SC2Race.PROTOSS, origin={"bw"}, parent_item=ItemNames.ARBITER), ItemNames.ARBITER_KHAYDARIN_CORE: ItemData(329 + SC2LOTV_ITEM_ID_OFFSET, "Forge 1", 29, SC2Race.PROTOSS, origin={"bw"}, parent_item=ItemNames.ARBITER), ItemNames.ARBITER_SPACETIME_ANCHOR: ItemData(330 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 0, SC2Race.PROTOSS, origin={"bw"}, parent_item=ItemNames.ARBITER), ItemNames.ARBITER_RESOURCE_EFFICIENCY: ItemData(331 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 1, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"bw"}, parent_item=ItemNames.ARBITER), ItemNames.ARBITER_ENHANCED_CLOAK_FIELD: ItemData(332 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 2, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"bw"}, parent_item=ItemNames.ARBITER), ItemNames.CARRIER_GRAVITON_CATAPULT: ItemData(333 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 3, SC2Race.PROTOSS, origin={"wol"}, parent_item=ItemNames.CARRIER, description="Carriers can launch Interceptors more quickly."), ItemNames.CARRIER_HULL_OF_PAST_GLORIES: ItemData(334 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 4, SC2Race.PROTOSS, origin={"bw"}, parent_item=ItemNames.CARRIER, description="Carriers gain +2 armour."), ItemNames.VOID_RAY_DESTROYER_FLUX_VANES: ItemData(335 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 5, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"ext"}, description="Increases Void Ray and Destroyer movement speed."), ItemNames.DESTROYER_REFORGED_BLOODSHARD_CORE: ItemData(336 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 6, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.DESTROYER, description="When fully charged, the Destroyer's Destruction Beam weapon does full damage to secondary targets."), ItemNames.WARP_PRISM_GRAVITIC_DRIVE: ItemData(337 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 7, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"ext"}, parent_item=ItemNames.WARP_PRISM, description="Increases the movement speed of Warp Prisms."), ItemNames.WARP_PRISM_PHASE_BLASTER: ItemData(338 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 8, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"ext"}, parent_item=ItemNames.WARP_PRISM, description="Equips Warp Prisms with an auto-attack that can hit ground and air targets."), ItemNames.WARP_PRISM_WAR_CONFIGURATION: ItemData(339 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 9, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.WARP_PRISM), ItemNames.OBSERVER_GRAVITIC_BOOSTERS: ItemData(340 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 10, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"bw"}, parent_item=ItemNames.OBSERVER), ItemNames.OBSERVER_SENSOR_ARRAY: ItemData(341 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 11, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"bw"}, parent_item=ItemNames.OBSERVER), ItemNames.REAVER_SCARAB_DAMAGE: ItemData(342 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 12, SC2Race.PROTOSS, origin={"bw"}, parent_item=ItemNames.REAVER), ItemNames.REAVER_SOLARITE_PAYLOAD: ItemData(343 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 13, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.REAVER), ItemNames.REAVER_REAVER_CAPACITY: ItemData(344 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 14, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"bw"}, parent_item=ItemNames.REAVER), ItemNames.REAVER_RESOURCE_EFFICIENCY: ItemData(345 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 15, SC2Race.PROTOSS, origin={"bw"}, parent_item=ItemNames.REAVER), ItemNames.VANGUARD_AGONY_LAUNCHERS: ItemData(346 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 16, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.VANGUARD), ItemNames.VANGUARD_MATTER_DISPERSION: ItemData(347 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 17, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.VANGUARD), ItemNames.IMMORTAL_ANNIHILATOR_SINGULARITY_CHARGE: ItemData(348 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 18, SC2Race.PROTOSS, origin={"ext"}), ItemNames.IMMORTAL_ANNIHILATOR_ADVANCED_TARGETING_MECHANICS: ItemData(349 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 19, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"ext"}), ItemNames.COLOSSUS_PACIFICATION_PROTOCOL: ItemData(350 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 20, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.COLOSSUS), ItemNames.WRATHWALKER_RAPID_POWER_CYCLING: ItemData(351 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 21, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.WRATHWALKER), ItemNames.WRATHWALKER_EYE_OF_WRATH: ItemData(352 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 22, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"ext"}, parent_item=ItemNames.WRATHWALKER), ItemNames.DARK_TEMPLAR_AVENGER_BLOOD_HUNTER_SHROUD_OF_ADUN: ItemData(353 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 23, SC2Race.PROTOSS, origin={"ext"}), ItemNames.DARK_TEMPLAR_AVENGER_BLOOD_HUNTER_SHADOW_GUARD_TRAINING: ItemData(354 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 24, SC2Race.PROTOSS, origin={"bw"}), ItemNames.DARK_TEMPLAR_AVENGER_BLOOD_HUNTER_BLINK: ItemData(355 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 25, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"ext"}), ItemNames.DARK_TEMPLAR_AVENGER_BLOOD_HUNTER_RESOURCE_EFFICIENCY: ItemData(356 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 26, SC2Race.PROTOSS, origin={"ext"}), ItemNames.DARK_TEMPLAR_DARK_ARCHON_MELD: ItemData(357 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 27, SC2Race.PROTOSS, origin={"bw"}, important_for_filtering=True ,parent_item=ItemNames.DARK_TEMPLAR), ItemNames.HIGH_TEMPLAR_SIGNIFIER_UNSHACKLED_PSIONIC_STORM: ItemData(358 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 28, SC2Race.PROTOSS, origin={"bw"}), ItemNames.HIGH_TEMPLAR_SIGNIFIER_HALLUCINATION: ItemData(359 + SC2LOTV_ITEM_ID_OFFSET, "Forge 2", 29, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"bw"}), ItemNames.HIGH_TEMPLAR_SIGNIFIER_KHAYDARIN_AMULET: ItemData(360 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 0, SC2Race.PROTOSS, origin={"bw"}), ItemNames.ARCHON_HIGH_ARCHON: ItemData(361 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 1, SC2Race.PROTOSS, origin={"ext"}, important_for_filtering=True), ItemNames.DARK_ARCHON_FEEDBACK: ItemData(362 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 2, SC2Race.PROTOSS, origin={"bw"}), ItemNames.DARK_ARCHON_MAELSTROM: ItemData(363 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 3, SC2Race.PROTOSS, origin={"bw"}), ItemNames.DARK_ARCHON_ARGUS_TALISMAN: ItemData(364 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 4, SC2Race.PROTOSS, origin={"bw"}), ItemNames.ASCENDANT_POWER_OVERWHELMING: ItemData(365 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 5, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.ASCENDANT), ItemNames.ASCENDANT_CHAOTIC_ATTUNEMENT: ItemData(366 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 6, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.ASCENDANT), ItemNames.ASCENDANT_BLOOD_AMULET: ItemData(367 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 7, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.ASCENDANT), ItemNames.SENTRY_ENERGIZER_HAVOC_CLOAKING_MODULE: ItemData(368 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 8, SC2Race.PROTOSS, origin={"ext"}), ItemNames.SENTRY_ENERGIZER_HAVOC_SHIELD_BATTERY_RAPID_RECHARGING: ItemData(369 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 9, SC2Race.PROTOSS, origin={"ext"}), ItemNames.SENTRY_FORCE_FIELD: ItemData(370 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 10, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"ext"}, parent_item=ItemNames.SENTRY), ItemNames.SENTRY_HALLUCINATION: ItemData(371 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 11, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"ext"}, parent_item=ItemNames.SENTRY), ItemNames.ENERGIZER_RECLAMATION: ItemData(372 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 12, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.ENERGIZER), ItemNames.ENERGIZER_FORGED_CHASSIS: ItemData(373 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 13, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.ENERGIZER), ItemNames.HAVOC_DETECT_WEAKNESS: ItemData(374 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 14, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.HAVOC), ItemNames.HAVOC_BLOODSHARD_RESONANCE: ItemData(375 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 15, SC2Race.PROTOSS, origin={"ext"}, parent_item=ItemNames.HAVOC), ItemNames.ZEALOT_SENTINEL_CENTURION_LEG_ENHANCEMENTS: ItemData(376 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 16, SC2Race.PROTOSS, origin={"bw"}), ItemNames.ZEALOT_SENTINEL_CENTURION_SHIELD_CAPACITY: ItemData(377 + SC2LOTV_ITEM_ID_OFFSET, "Forge 3", 17, SC2Race.PROTOSS, origin={"bw"}), # SoA Calldown powers ItemNames.SOA_CHRONO_SURGE: ItemData(700 + SC2LOTV_ITEM_ID_OFFSET, "Spear of Adun", 0, SC2Race.PROTOSS, origin={"lotv"}), ItemNames.SOA_PROGRESSIVE_PROXY_PYLON: ItemData(701 + SC2LOTV_ITEM_ID_OFFSET, "Progressive Upgrade", 0, SC2Race.PROTOSS, origin={"lotv"}, quantity=2), ItemNames.SOA_PYLON_OVERCHARGE: ItemData(702 + SC2LOTV_ITEM_ID_OFFSET, "Spear of Adun", 1, SC2Race.PROTOSS, origin={"ext"}), ItemNames.SOA_ORBITAL_STRIKE: ItemData(703 + SC2LOTV_ITEM_ID_OFFSET, "Spear of Adun", 2, SC2Race.PROTOSS, origin={"lotv"}), ItemNames.SOA_TEMPORAL_FIELD: ItemData(704 + SC2LOTV_ITEM_ID_OFFSET, "Spear of Adun", 3, SC2Race.PROTOSS, origin={"lotv"}), ItemNames.SOA_SOLAR_LANCE: ItemData(705 + SC2LOTV_ITEM_ID_OFFSET, "Spear of Adun", 4, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}), ItemNames.SOA_MASS_RECALL: ItemData(706 + SC2LOTV_ITEM_ID_OFFSET, "Spear of Adun", 5, SC2Race.PROTOSS, origin={"lotv"}), ItemNames.SOA_SHIELD_OVERCHARGE: ItemData(707 + SC2LOTV_ITEM_ID_OFFSET, "Spear of Adun", 6, SC2Race.PROTOSS, origin={"lotv"}), ItemNames.SOA_DEPLOY_FENIX: ItemData(708 + SC2LOTV_ITEM_ID_OFFSET, "Spear of Adun", 7, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}), ItemNames.SOA_PURIFIER_BEAM: ItemData(709 + SC2LOTV_ITEM_ID_OFFSET, "Spear of Adun", 8, SC2Race.PROTOSS, origin={"lotv"}), ItemNames.SOA_TIME_STOP: ItemData(710 + SC2LOTV_ITEM_ID_OFFSET, "Spear of Adun", 9, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}), ItemNames.SOA_SOLAR_BOMBARDMENT: ItemData(711 + SC2LOTV_ITEM_ID_OFFSET, "Spear of Adun", 10, SC2Race.PROTOSS, origin={"lotv"}), # Generic Protoss Upgrades ItemNames.MATRIX_OVERLOAD: ItemData(800 + SC2LOTV_ITEM_ID_OFFSET, "Solarite Core", 0, SC2Race.PROTOSS, origin={"lotv"}, description=r"All friendly units gain 25% movement speed and 15% attack speed within a Pylon's power field and for 15 seconds after leaving it."), ItemNames.QUATRO: ItemData(801 + SC2LOTV_ITEM_ID_OFFSET, "Solarite Core", 1, SC2Race.PROTOSS, origin={"ext"}, description="All friendly Protoss units gain the equivalent of their +1 armour, attack, and shield upgrades."), ItemNames.NEXUS_OVERCHARGE: ItemData(802 + SC2LOTV_ITEM_ID_OFFSET, "Solarite Core", 2, SC2Race.PROTOSS, origin={"lotv"}, important_for_filtering=True, description="The Protoss Nexus gains a long-range auto-attack."), ItemNames.ORBITAL_ASSIMILATORS: ItemData(803 + SC2LOTV_ITEM_ID_OFFSET, "Solarite Core", 3, SC2Race.PROTOSS, origin={"lotv"}, description="Assimilators automatically harvest Vespene Gas without the need for Probes."), ItemNames.WARP_HARMONIZATION: ItemData(804 + SC2LOTV_ITEM_ID_OFFSET, "Solarite Core", 4, SC2Race.PROTOSS, origin={"lotv"}, description=r"Stargates and Robotics Facilities can transform to utilize Warp In technology. Warp In cooldowns are 20% faster than original build times."), ItemNames.GUARDIAN_SHELL: ItemData(805 + SC2LOTV_ITEM_ID_OFFSET, "Solarite Core", 5, SC2Race.PROTOSS, origin={"lotv"}, description="The Spear of Adun passively shields friendly Protoss units before death, making them invulnerable for 5 seconds. Each unit can only be shielded once every 60 seconds."), ItemNames.RECONSTRUCTION_BEAM: ItemData(806 + SC2LOTV_ITEM_ID_OFFSET, "Solarite Core", 6, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"lotv"}, description="The Spear of Adun will passively heal mechanical units for 5 and non-biological structures for 10 life per second. Up to 3 targets can be repaired at once."), ItemNames.OVERWATCH: ItemData(807 + SC2LOTV_ITEM_ID_OFFSET, "Solarite Core", 7, SC2Race.PROTOSS, origin={"ext"}, description="Once per second, the Spear of Adun will last-hit a damaged enemy unit that is below 50 health."), ItemNames.SUPERIOR_WARP_GATES: ItemData(808 + SC2LOTV_ITEM_ID_OFFSET, "Solarite Core", 8, SC2Race.PROTOSS, origin={"ext"}, description="Protoss Warp Gates can hold up to 3 charges of unit warp-ins."), ItemNames.ENHANCED_TARGETING: ItemData(809 + SC2LOTV_ITEM_ID_OFFSET, "Solarite Core", 9, SC2Race.PROTOSS, origin={"ext"}, description="Protoss defensive structures gain +2 range."), ItemNames.OPTIMIZED_ORDNANCE: ItemData(810 + SC2LOTV_ITEM_ID_OFFSET, "Solarite Core", 10, SC2Race.PROTOSS, origin={"ext"}, description="Increases the attack speed of Protoss defensive structures by 25%."), ItemNames.KHALAI_INGENUITY: ItemData(811 + SC2LOTV_ITEM_ID_OFFSET, "Solarite Core", 11, SC2Race.PROTOSS, origin={"ext"}, description="Pylons, Photon Cannons, Monoliths, and Shield Batteries warp in near-instantly."), ItemNames.AMPLIFIED_ASSIMILATORS: ItemData(812 + SC2LOTV_ITEM_ID_OFFSET, "Solarite Core", 12, SC2Race.PROTOSS, origin={"ext"}, description=r"Assimilators produce Vespene gas 25% faster."), } def get_item_table(): return item_table basic_units = { SC2Race.TERRAN: { ItemNames.MARINE, ItemNames.MARAUDER, ItemNames.GOLIATH, ItemNames.HELLION, ItemNames.VULTURE, ItemNames.WARHOUND, }, SC2Race.ZERG: { ItemNames.ZERGLING, ItemNames.SWARM_QUEEN, ItemNames.ROACH, ItemNames.HYDRALISK, }, SC2Race.PROTOSS: { ItemNames.ZEALOT, ItemNames.CENTURION, ItemNames.SENTINEL, ItemNames.STALKER, ItemNames.INSTIGATOR, ItemNames.SLAYER, ItemNames.DRAGOON, ItemNames.ADEPT, } } advanced_basic_units = { SC2Race.TERRAN: basic_units[SC2Race.TERRAN].union({ ItemNames.REAPER, ItemNames.DIAMONDBACK, ItemNames.VIKING, ItemNames.SIEGE_TANK, ItemNames.BANSHEE, ItemNames.THOR, ItemNames.BATTLECRUISER, ItemNames.CYCLONE }), SC2Race.ZERG: basic_units[SC2Race.ZERG].union({ ItemNames.INFESTOR, ItemNames.ABERRATION, }), SC2Race.PROTOSS: basic_units[SC2Race.PROTOSS].union({ ItemNames.DARK_TEMPLAR, ItemNames.BLOOD_HUNTER, ItemNames.AVENGER, ItemNames.IMMORTAL, ItemNames.ANNIHILATOR, ItemNames.VANGUARD, }) } no_logic_starting_units = { SC2Race.TERRAN: advanced_basic_units[SC2Race.TERRAN].union({ ItemNames.FIREBAT, ItemNames.GHOST, ItemNames.SPECTRE, ItemNames.WRAITH, ItemNames.RAVEN, ItemNames.PREDATOR, ItemNames.LIBERATOR, ItemNames.HERC, }), SC2Race.ZERG: advanced_basic_units[SC2Race.ZERG].union({ ItemNames.ULTRALISK, ItemNames.SWARM_HOST }), SC2Race.PROTOSS: advanced_basic_units[SC2Race.PROTOSS].union({ ItemNames.CARRIER, ItemNames.TEMPEST, ItemNames.VOID_RAY, ItemNames.DESTROYER, ItemNames.COLOSSUS, ItemNames.WRATHWALKER, ItemNames.SCOUT, ItemNames.HIGH_TEMPLAR, ItemNames.SIGNIFIER, ItemNames.ASCENDANT, ItemNames.DARK_ARCHON, ItemNames.SUPPLICANT, }) } not_balanced_starting_units = { ItemNames.SIEGE_TANK, ItemNames.THOR, ItemNames.BANSHEE, ItemNames.BATTLECRUISER, ItemNames.ULTRALISK, ItemNames.CARRIER, ItemNames.TEMPEST, } def get_basic_units(world: World, race: SC2Race) -> typing.Set[str]: logic_level = get_option_value(world, 'required_tactics') if logic_level == RequiredTactics.option_no_logic: return no_logic_starting_units[race] elif logic_level == RequiredTactics.option_advanced: return advanced_basic_units[race] else: return basic_units[race] # Items that can be placed before resources if not already in # General upgrades and Mercs second_pass_placeable_items: typing.Tuple[str, ...] = ( # Global weapon/armor upgrades ItemNames.PROGRESSIVE_TERRAN_ARMOR_UPGRADE, ItemNames.PROGRESSIVE_TERRAN_WEAPON_UPGRADE, ItemNames.PROGRESSIVE_TERRAN_WEAPON_ARMOR_UPGRADE, ItemNames.PROGRESSIVE_ZERG_ARMOR_UPGRADE, ItemNames.PROGRESSIVE_ZERG_WEAPON_UPGRADE, ItemNames.PROGRESSIVE_ZERG_WEAPON_ARMOR_UPGRADE, ItemNames.PROGRESSIVE_PROTOSS_ARMOR_UPGRADE, ItemNames.PROGRESSIVE_PROTOSS_WEAPON_UPGRADE, ItemNames.PROGRESSIVE_PROTOSS_WEAPON_ARMOR_UPGRADE, ItemNames.PROGRESSIVE_PROTOSS_SHIELDS, # Terran Buildings without upgrades ItemNames.SENSOR_TOWER, ItemNames.HIVE_MIND_EMULATOR, ItemNames.PSI_DISRUPTER, ItemNames.PERDITION_TURRET, # Terran units without upgrades ItemNames.HERC, ItemNames.WARHOUND, # General Terran upgrades without any dependencies ItemNames.SCV_ADVANCED_CONSTRUCTION, ItemNames.SCV_DUAL_FUSION_WELDERS, ItemNames.PROGRESSIVE_FIRE_SUPPRESSION_SYSTEM, ItemNames.PROGRESSIVE_ORBITAL_COMMAND, ItemNames.ULTRA_CAPACITORS, ItemNames.VANADIUM_PLATING, ItemNames.ORBITAL_DEPOTS, ItemNames.MICRO_FILTERING, ItemNames.AUTOMATED_REFINERY, ItemNames.COMMAND_CENTER_REACTOR, ItemNames.TECH_REACTOR, ItemNames.CELLULAR_REACTOR, ItemNames.PROGRESSIVE_REGENERATIVE_BIO_STEEL, # Place only L1 ItemNames.STRUCTURE_ARMOR, ItemNames.HI_SEC_AUTO_TRACKING, ItemNames.ADVANCED_OPTICS, ItemNames.ROGUE_FORCES, # Mercenaries (All races) *[item_name for item_name, item_data in get_full_item_list().items() if item_data.type == "Mercenary"], # Kerrigan and Nova levels, abilities and generally useful stuff *[item_name for item_name, item_data in get_full_item_list().items() if item_data.type in ("Level", "Ability", "Evolution Pit", "Nova Gear")], ItemNames.NOVA_PROGRESSIVE_STEALTH_SUIT_MODULE, # Zerg static defenses ItemNames.SPORE_CRAWLER, ItemNames.SPINE_CRAWLER, # Defiler, Aberration (no upgrades) ItemNames.DEFILER, ItemNames.ABERRATION, # Spear of Adun Abilities ItemNames.SOA_CHRONO_SURGE, ItemNames.SOA_PROGRESSIVE_PROXY_PYLON, ItemNames.SOA_PYLON_OVERCHARGE, ItemNames.SOA_ORBITAL_STRIKE, ItemNames.SOA_TEMPORAL_FIELD, ItemNames.SOA_SOLAR_LANCE, ItemNames.SOA_MASS_RECALL, ItemNames.SOA_SHIELD_OVERCHARGE, ItemNames.SOA_DEPLOY_FENIX, ItemNames.SOA_PURIFIER_BEAM, ItemNames.SOA_TIME_STOP, ItemNames.SOA_SOLAR_BOMBARDMENT, # Protoss generic upgrades ItemNames.MATRIX_OVERLOAD, ItemNames.QUATRO, ItemNames.NEXUS_OVERCHARGE, ItemNames.ORBITAL_ASSIMILATORS, ItemNames.WARP_HARMONIZATION, ItemNames.GUARDIAN_SHELL, ItemNames.RECONSTRUCTION_BEAM, ItemNames.OVERWATCH, ItemNames.SUPERIOR_WARP_GATES, ItemNames.KHALAI_INGENUITY, ItemNames.AMPLIFIED_ASSIMILATORS, # Protoss static defenses ItemNames.PHOTON_CANNON, ItemNames.KHAYDARIN_MONOLITH, ItemNames.SHIELD_BATTERY ) filler_items: typing.Tuple[str, ...] = ( ItemNames.STARTING_MINERALS, ItemNames.STARTING_VESPENE, ItemNames.STARTING_SUPPLY, ) # Defense rating table # Commented defense ratings are handled in LogicMixin defense_ratings = { ItemNames.SIEGE_TANK: 5, # "Maelstrom Rounds": 2, ItemNames.PLANETARY_FORTRESS: 3, # Bunker w/ Marine/Marauder: 3, ItemNames.PERDITION_TURRET: 2, ItemNames.VULTURE: 1, ItemNames.BANSHEE: 1, ItemNames.BATTLECRUISER: 1, ItemNames.LIBERATOR: 4, ItemNames.WIDOW_MINE: 1, # "Concealment (Widow Mine)": 1 } zerg_defense_ratings = { ItemNames.PERDITION_TURRET: 2, # Bunker w/ Firebat: 2, ItemNames.LIBERATOR: -2, ItemNames.HIVE_MIND_EMULATOR: 3, ItemNames.PSI_DISRUPTER: 3, } air_defense_ratings = { ItemNames.MISSILE_TURRET: 2, } kerrigan_levels = [item_name for item_name, item_data in get_full_item_list().items() if item_data.type == "Level" and item_data.race == SC2Race.ZERG] spider_mine_sources = { ItemNames.VULTURE, ItemNames.REAPER_SPIDER_MINES, ItemNames.SIEGE_TANK_SPIDER_MINES, ItemNames.RAVEN_SPIDER_MINES, } progressive_if_nco = { ItemNames.MARINE_PROGRESSIVE_STIMPACK, ItemNames.FIREBAT_PROGRESSIVE_STIMPACK, ItemNames.BANSHEE_PROGRESSIVE_CROSS_SPECTRUM_DAMPENERS, ItemNames.PROGRESSIVE_REGENERATIVE_BIO_STEEL, } progressive_if_ext = { ItemNames.VULTURE_PROGRESSIVE_REPLENISHABLE_MAGAZINE, ItemNames.WRAITH_PROGRESSIVE_TOMAHAWK_POWER_CELLS, ItemNames.BATTLECRUISER_PROGRESSIVE_DEFENSIVE_MATRIX, ItemNames.BATTLECRUISER_PROGRESSIVE_MISSILE_PODS, ItemNames.THOR_PROGRESSIVE_IMMORTALITY_PROTOCOL, ItemNames.PROGRESSIVE_FIRE_SUPPRESSION_SYSTEM, ItemNames.DIAMONDBACK_PROGRESSIVE_TRI_LITHIUM_POWER_CELL, ItemNames.PROGRESSIVE_ORBITAL_COMMAND } kerrigan_actives: typing.List[typing.Set[str]] = [ {ItemNames.KERRIGAN_KINETIC_BLAST, ItemNames.KERRIGAN_LEAPING_STRIKE}, {ItemNames.KERRIGAN_CRUSHING_GRIP, ItemNames.KERRIGAN_PSIONIC_SHIFT}, set(), {ItemNames.KERRIGAN_WILD_MUTATION, ItemNames.KERRIGAN_SPAWN_BANELINGS, ItemNames.KERRIGAN_MEND}, set(), set(), {ItemNames.KERRIGAN_APOCALYPSE, ItemNames.KERRIGAN_SPAWN_LEVIATHAN, ItemNames.KERRIGAN_DROP_PODS}, ] kerrigan_passives: typing.List[typing.Set[str]] = [ {ItemNames.KERRIGAN_HEROIC_FORTITUDE}, {ItemNames.KERRIGAN_CHAIN_REACTION}, {ItemNames.KERRIGAN_ZERGLING_RECONSTITUTION, ItemNames.KERRIGAN_IMPROVED_OVERLORDS, ItemNames.KERRIGAN_AUTOMATED_EXTRACTORS}, set(), {ItemNames.KERRIGAN_TWIN_DRONES, ItemNames.KERRIGAN_MALIGNANT_CREEP, ItemNames.KERRIGAN_VESPENE_EFFICIENCY}, {ItemNames.KERRIGAN_INFEST_BROODLINGS, ItemNames.KERRIGAN_FURY, ItemNames.KERRIGAN_ABILITY_EFFICIENCY}, set(), ] kerrigan_only_passives = { ItemNames.KERRIGAN_HEROIC_FORTITUDE, ItemNames.KERRIGAN_CHAIN_REACTION, ItemNames.KERRIGAN_INFEST_BROODLINGS, ItemNames.KERRIGAN_FURY, ItemNames.KERRIGAN_ABILITY_EFFICIENCY, } spear_of_adun_calldowns = { ItemNames.SOA_CHRONO_SURGE, ItemNames.SOA_PROGRESSIVE_PROXY_PYLON, ItemNames.SOA_PYLON_OVERCHARGE, ItemNames.SOA_ORBITAL_STRIKE, ItemNames.SOA_TEMPORAL_FIELD, ItemNames.SOA_SOLAR_LANCE, ItemNames.SOA_MASS_RECALL, ItemNames.SOA_SHIELD_OVERCHARGE, ItemNames.SOA_DEPLOY_FENIX, ItemNames.SOA_PURIFIER_BEAM, ItemNames.SOA_TIME_STOP, ItemNames.SOA_SOLAR_BOMBARDMENT } spear_of_adun_castable_passives = { ItemNames.RECONSTRUCTION_BEAM, ItemNames.OVERWATCH, } nova_equipment = { *[item_name for item_name, item_data in get_full_item_list().items() if item_data.type == "Nova Gear"], ItemNames.NOVA_PROGRESSIVE_STEALTH_SUIT_MODULE } # 'number' values of upgrades for upgrade bundle items upgrade_numbers = [ # Terran {0, 4, 8}, # Weapon {2, 6, 10}, # Armor {0, 2}, # Infantry {4, 6}, # Vehicle {8, 10}, # Starship {0, 2, 4, 6, 8, 10}, # All # Zerg {0, 2, 6}, # Weapon {4, 8}, # Armor {0, 2, 4}, # Ground {6, 8}, # Flyer {0, 2, 4, 6, 8}, # All # Protoss {0, 6}, # Weapon {2, 4, 8}, # Armor {0, 2}, # Ground, Shields are handled specially {6, 8}, # Air, Shields are handled specially {0, 2, 4, 6, 8}, # All ] # 'upgrade_numbers' indices for all upgrades upgrade_numbers_all = { SC2Race.TERRAN: 5, SC2Race.ZERG: 10, SC2Race.PROTOSS: 15, } # Names of upgrades to be included for different options upgrade_included_names = [ { # Individual Items ItemNames.PROGRESSIVE_TERRAN_INFANTRY_WEAPON, ItemNames.PROGRESSIVE_TERRAN_INFANTRY_ARMOR, ItemNames.PROGRESSIVE_TERRAN_VEHICLE_WEAPON, ItemNames.PROGRESSIVE_TERRAN_VEHICLE_ARMOR, ItemNames.PROGRESSIVE_TERRAN_SHIP_WEAPON, ItemNames.PROGRESSIVE_TERRAN_SHIP_ARMOR, ItemNames.PROGRESSIVE_ZERG_MELEE_ATTACK, ItemNames.PROGRESSIVE_ZERG_MISSILE_ATTACK, ItemNames.PROGRESSIVE_ZERG_GROUND_CARAPACE, ItemNames.PROGRESSIVE_ZERG_FLYER_ATTACK, ItemNames.PROGRESSIVE_ZERG_FLYER_CARAPACE, ItemNames.PROGRESSIVE_PROTOSS_GROUND_WEAPON, ItemNames.PROGRESSIVE_PROTOSS_GROUND_ARMOR, ItemNames.PROGRESSIVE_PROTOSS_SHIELDS, ItemNames.PROGRESSIVE_PROTOSS_AIR_WEAPON, ItemNames.PROGRESSIVE_PROTOSS_AIR_ARMOR, }, { # Bundle Weapon And Armor ItemNames.PROGRESSIVE_TERRAN_WEAPON_UPGRADE, ItemNames.PROGRESSIVE_TERRAN_ARMOR_UPGRADE, ItemNames.PROGRESSIVE_ZERG_WEAPON_UPGRADE, ItemNames.PROGRESSIVE_ZERG_ARMOR_UPGRADE, ItemNames.PROGRESSIVE_PROTOSS_WEAPON_UPGRADE, ItemNames.PROGRESSIVE_PROTOSS_ARMOR_UPGRADE, }, { # Bundle Unit Class ItemNames.PROGRESSIVE_TERRAN_INFANTRY_UPGRADE, ItemNames.PROGRESSIVE_TERRAN_VEHICLE_UPGRADE, ItemNames.PROGRESSIVE_TERRAN_SHIP_UPGRADE, ItemNames.PROGRESSIVE_ZERG_GROUND_UPGRADE, ItemNames.PROGRESSIVE_ZERG_FLYER_UPGRADE, ItemNames.PROGRESSIVE_PROTOSS_GROUND_UPGRADE, ItemNames.PROGRESSIVE_PROTOSS_AIR_UPGRADE, }, { # Bundle All ItemNames.PROGRESSIVE_TERRAN_WEAPON_ARMOR_UPGRADE, ItemNames.PROGRESSIVE_ZERG_WEAPON_ARMOR_UPGRADE, ItemNames.PROGRESSIVE_PROTOSS_WEAPON_ARMOR_UPGRADE, } ] lookup_id_to_name: typing.Dict[int, str] = {data.code: item_name for item_name, data in get_full_item_list().items() if data.code} # Map type to expected int type_flaggroups: typing.Dict[SC2Race, typing.Dict[str, int]] = { SC2Race.ANY: { "Minerals": 0, "Vespene": 1, "Supply": 2, "Goal": 3, "Nothing Group": 4, }, SC2Race.TERRAN: { "Armory 1": 0, "Armory 2": 1, "Armory 3": 2, "Armory 4": 3, "Armory 5": 4, "Armory 6": 5, "Progressive Upgrade": 6, # Unit upgrades that exist multiple times (Stimpack / Super Stimpack) "Laboratory": 7, "Upgrade": 8, # Weapon / Armor upgrades "Unit": 9, "Building": 10, "Mercenary": 11, "Nova Gear": 12, "Progressive Upgrade 2": 13, }, SC2Race.ZERG: { "Ability": 0, "Mutation 1": 1, "Strain": 2, "Morph": 3, "Upgrade": 4, "Mercenary": 5, "Unit": 6, "Level": 7, "Primal Form": 8, "Evolution Pit": 9, "Mutation 2": 10, "Mutation 3": 11 }, SC2Race.PROTOSS: { "Unit": 0, "Unit 2": 1, "Upgrade": 2, # Weapon / Armor upgrades "Building": 3, "Progressive Upgrade": 4, "Spear of Adun": 5, "Solarite Core": 6, "Forge 1": 7, "Forge 2": 8, "Forge 3": 9, } }