From e1c8ba36a12cf169f46c3003e4e81ca33cef803c Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 11 Oct 2023 23:47:59 -0700 Subject: [PATCH 1/7] sc2: Moved all item names to be variables in a new file; converted Items.py to use those variables --- worlds/sc2/ItemNames.py | 329 +++++++++++++++++ worlds/sc2/Items.py | 800 ++++++++++++++++++++-------------------- 2 files changed, 729 insertions(+), 400 deletions(-) create mode 100644 worlds/sc2/ItemNames.py diff --git a/worlds/sc2/ItemNames.py b/worlds/sc2/ItemNames.py new file mode 100644 index 000000000000..5a8a22f4d59f --- /dev/null +++ b/worlds/sc2/ItemNames.py @@ -0,0 +1,329 @@ +""" +A complete collection of Starcraft 2 item names as strings. +""" + +# Terran Units +Marine = "Marine" +Medic = "Medic" +Firebat = "Firebat" +Marauder = "Marauder" +Reaper = "Reaper" +Hellion = "Hellion" +Vulture = "Vulture" +Goliath = "Goliath" +Diamondback = "Diamondback" +Siege_Tank = "Siege Tank" +Medivac = "Medivac" +Wraith = "Wraith" +Viking = "Viking" +Banshee = "Banshee" +Battlecruiser = "Battlecruiser" +Ghost = "Ghost" +Spectre = "Spectre" +Thor = "Thor" +Raven = "Raven" +Science_Vessel = "Science Vessel" +Predator = "Predator" +Hercules = "Hercules" +# Extended units +Liberator = "Liberator" +Valkyrie = "Valkyrie" +Widow_Mine = "Widow Mine" +Cyclone = "Cyclone" + +# Terran Buildings +Bunker = "Bunker" +Missile_Turret = "Missile Turret" +Sensor_Tower = "Sensor Tower" + +# Terran Weapon / Armor Upgrades +Progressive_Terran_Infantry_Weapon = "Progressive Terran Infantry Weapon" +Progressive_Terran_Infantry_Armor = "Progressive Terran Infantry Armor" +Progressive_Terran_Vehicle_Weapon = "Progressive Terran Vehicle Weapon" +Progressive_Terran_Vehicle_Armor = "Progressive Terran Vehicle Armor" +Progressive_Terran_Ship_Weapon = "Progressive Terran Ship Weapon" +Progressive_Terran_Ship_Armor = "Progressive Terran Ship Armor" +Progressive_Terran_Weapon_Upgrade = "Progressive Terran Weapon Upgrade" +Progressive_Terran_Armor_Upgrade = "Progressive Terran Armor Upgrade" +Progressive_Terran_Infantry_Upgrade = "Progressive Terran Infantry Upgrade" +Progressive_Terran_Vehicle_Upgrade = "Progressive Terran Vehicle Upgrade" +Progressive_Terran_Ship_Upgrade = "Progressive Terran Ship Upgrade" +Progressive_Terran_Weapon_Armor_Upgrade = "Progressive Terran Weapon/Armor Upgrade" + +# Mercenaries +War_Pigs = "War Pigs" +Devil_Dogs = "Devil Dogs" +Hammer_Securities = "Hammer Securities" +Spartan_Company = "Spartan Company" +Siege_Breakers = "Siege Breakers" +Hels_Angel = "Hel's Angel" +Dusk_Wings = "Dusk Wings" +Jacksons_Revenge = "Jackson's Revenge" + +# Lab / Global +Ultra_Capacitors = "Ultra-Capacitors" +Vanadium_Plating = "Vanadium Plating" +Orbital_Depots = "Orbital Depots" +Micro_Filtering = "Micro-Filtering" +Automated_Refinery = "Automated Refinery" +Command_Center_Reactor = "Command Center Reactor" +Tech_Reactor = "Tech Reactor" +Orbital_Strike = "Orbital Strike" +Bunker_Shrike_Turret = "Shrike Turret (Bunker)" +Bunker_Fortified_Bunker = "Fortified Bunker (Bunker)" +Planetary_Fortress = "Planetary Fortress" +Perdition_Turret = "Perdition Turret" +Cellular_Reactor = "Cellular Reactor" +Progressive_Regenerative_Bio_Steel = "Progressive Regenerative Bio-Steel" +Hive_Mind_Emulator = "Hive Mind Emulator" +Psi_Disrupter = "Psi Disrupter" + +# Terran Unit Upgrades +Banshee_Hyperflight_Rotors = "Hyperflight Rotors (Banshee)" +Banshee_Internal_Tech_Module = "Internal Tech Module (Banshee)" +Banshee_Laser_Targeting_System = "Laser Targeting System (Banshee)" +Banshee_Progressive_Cross_Spectrum_Dampeners = "Progressive Cross-Spectrum Dampeners (Banshee)" +Banshee_Shockwave_Missile_Battery = "Shockwave Missile Battery (Banshee)" +Battlecruiser_ATX_Laser_Battery = "ATX Laser Battery (Battlecruiser)" +Battlecruiser_Cloak = "Cloak (Battlecruiser)" +Battlecruiser_Defensive_Matrix = "Defensive Matrix (Battlecruiser)" +Battlecruiser_Internal_Tech_Module = "Internal Tech Module (Battlecruiser)" +Battlecruiser_Missile_Pods = "Missile Pods (Battlecruiser)" +Battlecruiser_Optimized_Logistics = "Optimized Logistics (Battlecruiser)" +Battlecruiser_Tactical_Jump = "Tactical Jump (Battlecruiser)" +Building_Fire_Suppression_System = "Fire-Suppression System (Building)" +Building_Orbital_Command = "Orbital Command (Building)" +Bunker_Neosteel_Bunker = "Neosteel Bunker (Bunker)" +Bunker_Projectile_Accelerator = "Projectile Accelerator (Bunker)" +Cyclone_Mag_Field_Accelerators = "Mag-Field Accelerators (Cyclone)" +Cyclone_Mag_Field_Launchers = "Mag-Field Launchers (Cyclone)" +Cyclone_Rapid_Fire_Launchers = "Rapid Fire Launchers (Cyclone)" +Cyclone_Targeting_Optics = "Targeting Optics (Cyclone)" +Diamondback_Burst_Capacitors = "Burst Capacitors (Diamondback)" +Diamondback_Hyperfluxor = "Hyperfluxor (Diamondback)" +Diamondback_Optimized_Logistics = "Optimized Logistics (Diamondback)" +Diamondback_Shaped_Hull = "Shaped Hull (Diamondback)" +Diamondback_Tri_Lithium_Power_Cell = "Tri-Lithium Power Cell (Diamondback)" +Firebat_Incinerator_Gauntlets = "Incinerator Gauntlets (Firebat)" +Firebat_Juggernaut_Plating = "Juggernaut Plating (Firebat)" +Firebat_Optimized_Logistics = "Optimized Logistics (Firebat)" +Firebat_Progressive_Stimpack = "Progressive Stimpack (Firebat)" +Ghost_Crius_Suit = "Crius Suit (Ghost)" +Ghost_EMP_Rounds = "EMP Rounds (Ghost)" +Ghost_Lockdown = "Lockdown (Ghost)" +Ghost_Ocular_Implants = "Ocular Implants (Ghost)" +Goliath_Ares_Class_Targeting_System = "Ares-Class Targeting System (Goliath)" +Goliath_Jump_Jets = "Jump Jets (Goliath)" +Goliath_Multi_Lock_Weapons_System = "Multi-Lock Weapons System (Goliath)" +Goliath_Optimized_Logistics = "Optimized Logistics (Goliath)" +Hellion_Hellbat_Aspect = "Hellbat Aspect (Hellion)" +Hellion_Jump_Jets = "Jump Jets (Hellion)" +Hellion_Optimized_Logistics = "Optimized Logistics (Hellion)" +Hellion_Progressive_Stimpack = "Progressive Stimpack (Hellion)" +Hellion_Smart_Servos = "Smart Servos (Hellion)" +Hellion_Thermite_Filaments = "Thermite Filaments (Hellion)" +Hellion_Twin_Linked_Flamethrower = "Twin-Linked Flamethrower (Hellion)" +Liberator_Advanced_Ballistics = "Advanced Ballistics (Liberator)" +Liberator_Cloak = "Cloak (Liberator)" +Liberator_Laser_Targeting_System = "Laser Targeting System (Liberator)" +Liberator_Optimized_Logistics = "Optimized Logistics (Liberator)" +Liberator_Raid_Artillery = "Raid Artillery (Liberator)" +Marauder_Concussive_Shells = "Concussive Shells (Marauder)" +Marauder_Internal_Tech_Module = "Internal Tech Module (Marauder)" +Marauder_Kinetic_Foam = "Kinetic Foam (Marauder)" +Marauder_Laser_Targeting_System = "Laser Targeting System (Marauder)" +Marauder_Magrail_Munitions = "Magrail Munitions (Marauder)" +Marauder_Progressive_Stimpack = "Progressive Stimpack (Marauder)" +Marine_Combat_Shield = "Combat Shield (Marine)" +Marine_Laser_Targeting_System = "Laser Targeting System (Marine)" +Marine_Magrail_Munitions = "Magrail Munitions (Marine)" +Marine_Optimized_Logistics = "Optimized Logistics (Marine)" +Marine_Progressive_Stimpack = "Progressive Stimpack (Marine)" +Medic_Advanced_Medic_Facilities = "Advanced Medic Facilities (Medic)" +Medic_Optical_Flare = "Optical Flare (Medic)" +Medic_Optimized_Logistics = "Optimized Logistics (Medic)" +Medic_Restoration = "Restoration (Medic)" +Medic_Stabilizer_Medpacks = "Stabilizer Medpacks (Medic)" +Medivac_Advanced_Healing_AI = "Advanced Healing AI (Medivac)" +Medivac_Afterburners = "Afterburners (Medivac)" +Medivac_Expanded_Hull = "Expanded Hull (Medivac)" +Medivac_Rapid_Deployment_Tube = "Rapid Deployment Tube (Medivac)" +Missile_Turret_Hellstorm_Batteries = "Hellstorm Batteries (Missile Turret)" +Missile_Turret_Titanium_Housing = "Titanium Housing (Missile Turret)" +Predator_Optimized_Logistics = "Optimized Logistics (Predator)" +Raven_Anti_Armor_Missile = "Anti-Armor Missile (Raven)" +Raven_Bio_Mechanical_Repair_Drone = "Bio Mechanical Repair Drone (Raven)" +Raven_Hunter_Seeker_Weapon = "Hunter-Seeker Weapon (Raven)" +Raven_Interference_Matrix = "Interference Matrix (Raven)" +Raven_Internal_Tech_Module = "Internal Tech Module (Raven)" +Raven_Railgun_Turret = "Railgun Turret (Raven)" +Raven_Spider_Mines = "Spider Mines (Raven)" +Reaper_Advanced_Cloaking_Field = "Advanced Cloaking Field (Reaper)" +Reaper_Combat_Drugs = "Combat Drugs (Reaper)" +Reaper_G4_Clusterbomb = "G-4 Clusterbomb (Reaper)" +Reaper_Laser_Targeting_System = "Laser Targeting System (Reaper)" +Reaper_Progressive_Stimpack = "Progressive Stimpack (Reaper)" +Reaper_Spider_Mines = "Spider Mines (Reaper)" +Reaper_U238_Rounds = "U-238 Rounds (Reaper)" +Science_Vessel_Defensive_Matrix = "Defensive Matrix (Science Vessel)" +Science_Vessel_EMP_Shockwave = "EMP Shockwave (Science Vessel)" +SCV_Advanced_Construction = "Advanced Construction (SCV)" +SCV_Dual_Fusion_Welders = "Dual-Fusion Welders (SCV)" +Siege_Tank_Advanced_Siege_Tech = "Advanced Siege Tech (Siege Tank)" +Siege_Tank_Graduating_Range = "Graduating Range (Siege Tank)" +Siege_Tank_Internal_Tech_Module = "Internal Tech Module (Siege Tank)" +Siege_Tank_Jump_Jets = "Jump Jets (Siege Tank)" +Siege_Tank_Laser_Targeting_System = "Laser Targeting System (Siege Tank)" +Siege_Tank_Maelstrom_Rounds = "Maelstrom Rounds (Siege Tank)" +Siege_Tank_Shaped_Blast = "Shaped Blast (Siege Tank)" +Siege_Tank_Smart_Servos = "Smart Servos (Siege Tank)" +Siege_Tank_Spider_Mines = "Spider Mines (Siege Tank)" +Spectre_Impaler_Rounds = "Impaler Rounds (Spectre)" +Spectre_Nyx_Class_Cloaking_Module = "Nyx-Class Cloaking Module (Spectre)" +Spectre_Psionic_Lash = "Psionic Lash (Spectre)" +Spider_Mine_Cerberus_Mine = "Cerberus Mine (Spider Mine)" +Spider_Mine_High_Explosive_Munition = "High Explosive Munition (Spider Mine)" +Thor_330mm_Barrage_Cannon = "330mm Barrage Cannon (Thor)" +Thor_Immortality_Protocol = "Immortality Protocol (Thor)" +Thor_Progressive_High_Impact_Payload = "Progressive High Impact Payload (Thor)" +Valkyrie_Afterburners = "Afterburners (Valkyrie)" +Valkyrie_Burst_Lasers = "Burst Lasers (Valkyrie)" +Valkyrie_Enhanced_Cluster_Launchers = "Enhanced Cluster Launchers (Valkyrie)" +Valkyrie_Shaped_Hull = "Shaped Hull (Valkyrie)" +Viking_Magrail_Munitions = "Magrail Munitions (Viking)" +Viking_Phobos_Class_Weapons_System = "Phobos-Class Weapons System (Viking)" +Viking_Ripwave_Missiles = "Ripwave Missiles (Viking)" +Viking_Smart_Servos = "Smart Servos (Viking)" +Vulture_Auto_Launchers = "Auto Launchers (Vulture)" +Vulture_Ion_Thrusters = "Ion Thrusters (Vulture)" +Vulture_Replenishable_Magazine = "Replenishable Magazine (Vulture)" +Widow_Mine_Black_Market_Launchers = "Black Market Launchers (Widow Mine)" +Widow_Mine_Concealment = "Concealment (Widow Mine)" +Widow_Mine_Drilling_Claws = "Drilling Claws (Widow Mine)" +Widow_Mine_Executioner_Missiles = "Executioner Missiles (Widow Mine)" +Wraith_Advanced_Laser_Technology = "Advanced Laser Technology (Wraith)" +Wraith_Displacement_Field = "Displacement Field (Wraith)" +Wraith_Tomahawk_Power_Cells = "Tomahawk Power Cells (Wraith)" + +# Protoss Units +Zealot = "Zealot" +Stalker = "Stalker" +High_Templar = "High Templar" +Dark_Templar = "Dark Templar" +Immortal = "Immortal" +Colossus = "Colossus" +Phoenix = "Phoenix" +Void_Ray = "Void Ray" +Carrier = "Carrier" + +# Filler items +Starting_Minerals = "+15 Starting Minerals" +Starting_Vespene = "+15 Starting Vespene" +Starting_Supply = "+2 Starting Supply" +Nothing = "Nothing" + + +# Zerg Units +Zergling = "Zergling" +Swarm_Queen = "Swarm Queen" +Roach = "Roach" +Hydralisk = "Hydralisk" +Baneling = "Baneling" +Aberration = "Aberration" +Mutalisk = "Mutalisk" +Swarm_Host = "Swarm Host" +Infestor = "Infestor" +Ultralisk = "Ultralisk" +Spore_Crawler = "Spore Crawler" +Spine_Crawler = "Spine Crawler" + +# Zerg Weapon / Armor Upgrades +Progressive_Zerg_Melee_Attack = "Progressive Zerg Melee Attack" +Progressive_Zerg_Missile_Attack = "Progressive Zerg Missile Attack" +Progressive_Zerg_Ground_Carapace = "Progressive Zerg Ground Carapace" +Progressive_Zerg_Flyer_Attack = "Progressive Zerg Flyer Attack" +Progressive_Zerg_Flyer_Carapace = "Progressive Zerg Flyer Carapace" +Progressive_Zerg_Weapon_Upgrade = "Progressive Zerg Weapon Upgrade" +Progressive_Zerg_Armor_Upgrade = "Progressive Zerg Armor Upgrade" +Progressive_Zerg_Ground_Upgrade = "Progressive Zerg Ground Upgrade" +Progressive_Zerg_Flyer_Upgrade = "Progressive Zerg Flyer Upgrade" +Progressive_Zerg_Weapon_Armor_Upgrade = "Progressive Zerg Weapon/Armor Upgrade" + +# Zerg Unit Upgrades +Zergling_Hardened_Carapace = "Hardened Carapace (Zergling)" +Zergling_Adrenal_Overload = "Adrenal Overload (Zergling)" +Zergling_Metabolic_Boost = "Metabolic Boost (Zergling)" +Roach_Hydriodic_Bile = "Hydriodic Bile (Roach)" +Roach_Adaptive_Plating = "Adaptive Plating (Roach)" +Roach_Tunneling_Claws = "Tunneling Claws (Roach)" +Hydralisk_Frenzy = "Frenzy (Hydralisk)" +Hydralisk_Ancillary_Carapace = "Ancillary Carapace (Hydralisk)" +Hydralisk_Grooved_Spines = "Grooved Spines (Hydralisk)" +Baneling_Corrosive_Acid = "Corrosive Acid (Baneling)" +Baneling_Rupture = "Rupture (Baneling)" +Baneling_Regenerative_Acid = "Regenerative Acid (Baneling)" +Mutalisk_Vicious_Glave = "Vicious Glave (Mutalisk)" +Mutalisk_Rapid_Regeneration = "Rapid Regeneration (Mutalisk)" +Mutalisk_Sundering_Glave = "Sundering Glave (Mutalisk)" +Swarm_Host_Burrow = "Burrow (Swarm Host)" +Swarm_Host_Rapid_Incubation = "Rapid Incubation (Swarm Host)" +Swarm_Host_Pressurized_Glands = "Pressurized Glands (Swarm Host)" +Ultralisk_Burrow_Charge = "Burrow Charge (Ultralisk)" +Ultralisk_Tissue_Animation = "Tissue Animation (Ultralisk)" +Ultralisk_Monarch_Blades = "Monarch Blades (Ultralisk)" + +# Zerg Strains +Zergling_Raptor_Strain = "Raptor Strain (Zergling)" +Zergling_Swarmling_Strain = "Swarmling Strain (Zergling)" +Roach_Vile_Strain = "Vile Strain (Roach)" +Roach_Corpser_Strain = "Corpser Strain (Roach)" +Hydralisk_Impaler_Strain = "Impaler Strain (Hydralisk)" +Hydralisk_Lurker_Strain = "Lurker Strain (Hydralisk)" +Baneling_Splitter_Strain = "Splitter Strain (Baneling)" +Baneling_Hunter_Strain = "Hunter Strain (Baneling)" +Mutalisk_Brood_Lord_Strain = "Brood Lord Strain (Mutalisk)" +Mutalisk_Viper_Strain = "Viper Strain (Mutalisk)" +Swarm_Host_Carrion_Strain = "Carrion Strain (Swarm Host)" +Swarm_Host_Creeper_Strain = "Creeper Strain (Swarm Host)" +Ultralisk_Noxious_Strain = "Noxious Strain (Ultralisk)" +Ultralisk_Torrasque_Strain = "Torrasque Strain (Ultralisk)" + +# Kerrigan Upgrades +Kerrigan_Kinetic_Blast = "Kinetic Blast (Kerrigan Tier 1)" +Kerrigan_Heroic_Fortitude = "Heroic Fortitude (Kerrigan Tier 1)" +Kerrigan_Leaping_Strike = "Leaping Strike (Kerrigan Tier 1)" +Kerrigan_Crushing_Grip = "Crushing Grip (Kerrigan Tier 2)" +Kerrigan_Chain_Reaction = "Chain Reaction (Kerrigan Tier 2)" +Kerrigan_Psionic_Shift = "Psionic Shift (Kerrigan Tier 2)" +Kerrigan_Zergling_Reconstitution = "Zergling Reconstitution (Kerrigan Tier 3)" +Kerrigan_Improved_Overlords = "Improved Overlords (Kerrigan Tier 3)" +Kerrigan_Automated_Extractors = "Automated Extractors (Kerrigan Tier 3)" +Kerrigan_Wild_Mutation = "Wild Mutation (Kerrigan Tier 4)" +Kerrigan_Spawn_Banelings = "Spawn Banelings (Kerrigan Tier 4)" +Kerrigan_Mend = "Mend (Kerrigan Tier 4)" +Kerrigan_Twin_Drones = "Twin Drones (Kerrigan Tier 5)" +Kerrigan_Malignant_Creep = "Malignant Creep (Kerrigan Tier 5)" +Kerrigan_Vespene_Efficiency = "Vespene Efficiency (Kerrigan Tier 5)" +Kerrigan_Infest_Broodlings = "Infest Broodlings (Kerrigan Tier 6)" +Kerrigan_Fury = "Fury (Kerrigan Tier 6)" +Kerrigan_Ability_Efficiency = "Ability Efficiency (Kerrigan Tier 6)" +Kerrigan_Apocalypse = "Apocalypse (Kerrigan Tier 7)" +Kerrigan_Spawn_Leviathan = "Spawn Leviathan (Kerrigan Tier 7)" +Kerrigan_Drop_Pods = "Drop-Pods (Kerrigan Tier 7)" +Kerrigan_Primal_Form = "Primal Form (Kerrigan)" + +# Kerrigan Levels +Ten_Kerrigan_Levels = "10 Kerrigan Levels" +Nine_Kerrigan_Levels = "9 Kerrigan Levels" +Eight_Kerrigan_Levels = "8 Kerrigan Levels" +Seven_Kerrigan_Levels = "7 Kerrigan Levels" +Six_Kerrigan_Levels = "6 Kerrigan Levels" +Five_Kerrigan_Levels = "5 Kerrigan Levels" +Four_Kerrigan_Levels = "4 Kerrigan Levels" +Three_Kerrigan_Levels = "3 Kerrigan Levels" +Two_Kerrigan_Levels = "2 Kerrigan Levels" +One_Kerrigan_Level = "1 Kerrigan Level" +Fourteen_Kerrigan_Levels = "14 Kerrigan Levels" +Thirty_Five_Kerrigan_Levels = "35 Kerrigan Levels" +Seventy_Kerrigan_Levels = "70 Kerrigan Levels" + diff --git a/worlds/sc2/Items.py b/worlds/sc2/Items.py index a0a364f6c447..55c25c6da18b 100644 --- a/worlds/sc2/Items.py +++ b/worlds/sc2/Items.py @@ -3,7 +3,7 @@ from .Options import get_option_value, RequiredTactics from .MissionTables import SC2Mission, SC2Race, SC2Campaign, campaign_mission_table - +from . import ItemNames class ItemData(typing.NamedTuple): code: typing.Optional[int] @@ -29,335 +29,335 @@ def get_full_item_list(): item_table = { # WoL - "Marine": ItemData(0 + SC2WOL_ITEM_ID_OFFSET, "Unit", 0, SC2Race.TERRAN, classification=ItemClassification.progression), - "Medic": ItemData(1 + SC2WOL_ITEM_ID_OFFSET, "Unit", 1, SC2Race.TERRAN, classification=ItemClassification.progression), - "Firebat": ItemData(2 + SC2WOL_ITEM_ID_OFFSET, "Unit", 2, SC2Race.TERRAN, classification=ItemClassification.progression), - "Marauder": ItemData(3 + SC2WOL_ITEM_ID_OFFSET, "Unit", 3, SC2Race.TERRAN, classification=ItemClassification.progression), - "Reaper": ItemData(4 + SC2WOL_ITEM_ID_OFFSET, "Unit", 4, SC2Race.TERRAN, classification=ItemClassification.progression), - "Hellion": ItemData(5 + SC2WOL_ITEM_ID_OFFSET, "Unit", 5, SC2Race.TERRAN, classification=ItemClassification.progression), - "Vulture": ItemData(6 + SC2WOL_ITEM_ID_OFFSET, "Unit", 6, SC2Race.TERRAN, classification=ItemClassification.progression), - "Goliath": ItemData(7 + SC2WOL_ITEM_ID_OFFSET, "Unit", 7, SC2Race.TERRAN, classification=ItemClassification.progression), - "Diamondback": ItemData(8 + SC2WOL_ITEM_ID_OFFSET, "Unit", 8, SC2Race.TERRAN, classification=ItemClassification.progression), - "Siege Tank": ItemData(9 + SC2WOL_ITEM_ID_OFFSET, "Unit", 9, SC2Race.TERRAN, classification=ItemClassification.progression), - "Medivac": ItemData(10 + SC2WOL_ITEM_ID_OFFSET, "Unit", 10, SC2Race.TERRAN, classification=ItemClassification.progression), - "Wraith": ItemData(11 + SC2WOL_ITEM_ID_OFFSET, "Unit", 11, SC2Race.TERRAN, classification=ItemClassification.progression), - "Viking": ItemData(12 + SC2WOL_ITEM_ID_OFFSET, "Unit", 12, SC2Race.TERRAN, classification=ItemClassification.progression), - "Banshee": ItemData(13 + SC2WOL_ITEM_ID_OFFSET, "Unit", 13, SC2Race.TERRAN, classification=ItemClassification.progression), - "Battlecruiser": ItemData(14 + SC2WOL_ITEM_ID_OFFSET, "Unit", 14, SC2Race.TERRAN, classification=ItemClassification.progression), - "Ghost": ItemData(15 + SC2WOL_ITEM_ID_OFFSET, "Unit", 15, SC2Race.TERRAN, classification=ItemClassification.progression), - "Spectre": ItemData(16 + SC2WOL_ITEM_ID_OFFSET, "Unit", 16, SC2Race.TERRAN, classification=ItemClassification.progression), - "Thor": ItemData(17 + SC2WOL_ITEM_ID_OFFSET, "Unit", 17, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Marine: ItemData(0 + SC2WOL_ITEM_ID_OFFSET, "Unit", 0, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Medic: ItemData(1 + SC2WOL_ITEM_ID_OFFSET, "Unit", 1, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Firebat: ItemData(2 + SC2WOL_ITEM_ID_OFFSET, "Unit", 2, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Marauder: ItemData(3 + SC2WOL_ITEM_ID_OFFSET, "Unit", 3, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Reaper: ItemData(4 + SC2WOL_ITEM_ID_OFFSET, "Unit", 4, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Hellion: ItemData(5 + SC2WOL_ITEM_ID_OFFSET, "Unit", 5, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Vulture: ItemData(6 + SC2WOL_ITEM_ID_OFFSET, "Unit", 6, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Goliath: ItemData(7 + SC2WOL_ITEM_ID_OFFSET, "Unit", 7, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Diamondback: ItemData(8 + SC2WOL_ITEM_ID_OFFSET, "Unit", 8, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Siege_Tank: ItemData(9 + SC2WOL_ITEM_ID_OFFSET, "Unit", 9, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Medivac: ItemData(10 + SC2WOL_ITEM_ID_OFFSET, "Unit", 10, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Wraith: ItemData(11 + SC2WOL_ITEM_ID_OFFSET, "Unit", 11, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Viking: ItemData(12 + SC2WOL_ITEM_ID_OFFSET, "Unit", 12, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Banshee: ItemData(13 + SC2WOL_ITEM_ID_OFFSET, "Unit", 13, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Battlecruiser: ItemData(14 + SC2WOL_ITEM_ID_OFFSET, "Unit", 14, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Ghost: ItemData(15 + SC2WOL_ITEM_ID_OFFSET, "Unit", 15, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Spectre: ItemData(16 + SC2WOL_ITEM_ID_OFFSET, "Unit", 16, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Thor: ItemData(17 + SC2WOL_ITEM_ID_OFFSET, "Unit", 17, SC2Race.TERRAN, classification=ItemClassification.progression), # EE units - "Liberator": ItemData(18 + SC2WOL_ITEM_ID_OFFSET, "Unit", 18, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"nco", "ext"}), - "Valkyrie": ItemData(19 + SC2WOL_ITEM_ID_OFFSET, "Unit", 19, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"bw"}), - "Widow Mine": ItemData(20 + SC2WOL_ITEM_ID_OFFSET, "Unit", 20, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"ext"}), - "Cyclone": ItemData(21 + SC2WOL_ITEM_ID_OFFSET, "Unit", 21, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"ext"}), + ItemNames.Liberator: ItemData(18 + SC2WOL_ITEM_ID_OFFSET, "Unit", 18, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"nco", "ext"}), + ItemNames.Valkyrie: ItemData(19 + SC2WOL_ITEM_ID_OFFSET, "Unit", 19, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"bw"}), + ItemNames.Widow_Mine: ItemData(20 + SC2WOL_ITEM_ID_OFFSET, "Unit", 20, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"ext"}), + ItemNames.Cyclone: ItemData(21 + SC2WOL_ITEM_ID_OFFSET, "Unit", 21, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"ext"}), # Some other items are moved to Upgrade group because of the way how the bot message is parsed - "Progressive Terran Infantry Weapon": ItemData(100 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 0, SC2Race.TERRAN, quantity=3), - "Progressive Terran Infantry Armor": ItemData(102 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 2, SC2Race.TERRAN, quantity=3), - "Progressive Terran Vehicle Weapon": ItemData(103 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 4, SC2Race.TERRAN, quantity=3), - "Progressive Terran Vehicle Armor": ItemData(104 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 6, SC2Race.TERRAN, quantity=3), - "Progressive Terran Ship Weapon": ItemData(105 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 8, SC2Race.TERRAN, quantity=3), - "Progressive Terran Ship Armor": ItemData(106 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 10, SC2Race.TERRAN, quantity=3), + ItemNames.Progressive_Terran_Infantry_Weapon: ItemData(100 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 0, SC2Race.TERRAN, quantity=3), + ItemNames.Progressive_Terran_Infantry_Armor: ItemData(102 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 2, SC2Race.TERRAN, quantity=3), + ItemNames.Progressive_Terran_Vehicle_Weapon: ItemData(103 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 4, SC2Race.TERRAN, quantity=3), + ItemNames.Progressive_Terran_Vehicle_Armor: ItemData(104 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 6, SC2Race.TERRAN, quantity=3), + ItemNames.Progressive_Terran_Ship_Weapon: ItemData(105 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 8, SC2Race.TERRAN, quantity=3), + ItemNames.Progressive_Terran_Ship_Armor: ItemData(106 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 10, SC2Race.TERRAN, quantity=3), # Upgrade bundle 'number' values are used as indices to get affected 'number's - "Progressive Terran Weapon Upgrade": ItemData(107 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 0, SC2Race.TERRAN, quantity=3), - "Progressive Terran Armor Upgrade": ItemData(108 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 1, SC2Race.TERRAN, quantity=3), - "Progressive Terran Infantry Upgrade": ItemData(109 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 2, SC2Race.TERRAN, quantity=3), - "Progressive Terran Vehicle Upgrade": ItemData(110 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 3, SC2Race.TERRAN, quantity=3), - "Progressive Terran Ship Upgrade": ItemData(111 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 4, SC2Race.TERRAN, quantity=3), - "Progressive Terran Weapon/Armor Upgrade": ItemData(112 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 5, SC2Race.TERRAN, quantity=3), - - "Projectile Accelerator (Bunker)": ItemData(200 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 0, SC2Race.TERRAN, parent_item="Bunker"), - "Neosteel Bunker (Bunker)": ItemData(201 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 1, SC2Race.TERRAN, parent_item="Bunker"), - "Titanium Housing (Missile Turret)": ItemData(202 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Missile Turret"), - "Hellstorm Batteries (Missile Turret)": ItemData(203 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 3, SC2Race.TERRAN, parent_item="Missile Turret"), - "Advanced Construction (SCV)": ItemData(204 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 4, SC2Race.TERRAN), - "Dual-Fusion Welders (SCV)": ItemData(205 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 5, SC2Race.TERRAN), - "Fire-Suppression System (Building)": ItemData(206 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 6, SC2Race.TERRAN), - "Orbital Command (Building)": ItemData(207 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 7, SC2Race.TERRAN), - "Progressive Stimpack (Marine)": ItemData(208 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 0, SC2Race.TERRAN, parent_item="Marine", quantity=2), - "Combat Shield (Marine)": ItemData(209 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 9, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Marine"), - "Advanced Medic Facilities (Medic)": ItemData(210 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 10, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic"), - "Stabilizer Medpacks (Medic)": ItemData(211 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 11, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Medic"), - "Incinerator Gauntlets (Firebat)": ItemData(212 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 12, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Firebat"), - "Juggernaut Plating (Firebat)": ItemData(213 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 13, SC2Race.TERRAN, parent_item="Firebat"), - "Concussive Shells (Marauder)": ItemData(214 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 14, SC2Race.TERRAN, parent_item="Marauder"), - "Kinetic Foam (Marauder)": ItemData(215 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 15, SC2Race.TERRAN, parent_item="Marauder"), - "U-238 Rounds (Reaper)": ItemData(216 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 16, SC2Race.TERRAN, parent_item="Reaper"), - "G-4 Clusterbomb (Reaper)": ItemData(217 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 17, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Reaper"), + 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), + + ItemNames.Bunker_Projectile_Accelerator: ItemData(200 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 0, SC2Race.TERRAN, parent_item="Bunker"), + ItemNames.Bunker_Neosteel_Bunker: ItemData(201 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 1, SC2Race.TERRAN, parent_item="Bunker"), + ItemNames.Missile_Turret_Titanium_Housing: ItemData(202 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Missile Turret"), + ItemNames.Missile_Turret_Hellstorm_Batteries: ItemData(203 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 3, SC2Race.TERRAN, parent_item="Missile Turret"), + ItemNames.SCV_Advanced_Construction: ItemData(204 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 4, SC2Race.TERRAN), + ItemNames.SCV_Dual_Fusion_Welders: ItemData(205 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 5, SC2Race.TERRAN), + ItemNames.Building_Fire_Suppression_System: ItemData(206 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 6, SC2Race.TERRAN), + ItemNames.Building_Orbital_Command: ItemData(207 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 7, SC2Race.TERRAN), + ItemNames.Marine_Progressive_Stimpack: ItemData(208 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 0, SC2Race.TERRAN, parent_item="Marine", quantity=2), + ItemNames.Marine_Combat_Shield: ItemData(209 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 9, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Marine"), + ItemNames.Medic_Advanced_Medic_Facilities: ItemData(210 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 10, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic"), + ItemNames.Medic_Stabilizer_Medpacks: ItemData(211 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 11, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Medic"), + ItemNames.Firebat_Incinerator_Gauntlets: ItemData(212 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 12, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Firebat"), + ItemNames.Firebat_Juggernaut_Plating: ItemData(213 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 13, SC2Race.TERRAN, parent_item="Firebat"), + ItemNames.Marauder_Concussive_Shells: ItemData(214 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 14, SC2Race.TERRAN, parent_item="Marauder"), + ItemNames.Marauder_Kinetic_Foam: ItemData(215 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 15, SC2Race.TERRAN, parent_item="Marauder"), + ItemNames.Reaper_U238_Rounds: ItemData(216 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 16, SC2Race.TERRAN, parent_item="Reaper"), + ItemNames.Reaper_G4_Clusterbomb: ItemData(217 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 17, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Reaper"), # Items from EE - "Mag-Field Accelerators (Cyclone)": ItemData(218 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 18, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), - "Mag-Field Launchers (Cyclone)": ItemData(219 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 19, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), + ItemNames.Cyclone_Mag_Field_Accelerators: ItemData(218 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 18, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), + ItemNames.Cyclone_Mag_Field_Launchers: ItemData(219 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 19, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), # Items from new mod - "Laser Targeting System (Marine)": ItemData(220 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 8, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marine", origin={"nco"}), # Freed slot from Stimpack - "Magrail Munitions (Marine)": ItemData(221 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 20, SC2Race.TERRAN, parent_item="Marine", origin={"nco"}), - "Optimized Logistics (Marine)": ItemData(222 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 21, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marine", origin={"nco"}), - "Restoration (Medic)": ItemData(223 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 22, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic", origin={"bw"}), - "Optical Flare (Medic)": ItemData(224 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 23, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic", origin={"bw"}), - "Optimized Logistics (Medic)": ItemData(225 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic", origin={"bw"}), - "Progressive Stimpack (Firebat)": ItemData(226 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 6, SC2Race.TERRAN, parent_item="Firebat", quantity=2, origin={"bw"}), - "Optimized Logistics (Firebat)": ItemData(227 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 25, SC2Race.TERRAN, parent_item="Firebat", origin={"bw"}), - "Progressive Stimpack (Marauder)": ItemData(228 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 8, SC2Race.TERRAN, parent_item="Marauder", quantity=2, origin={"nco"}), - "Laser Targeting System (Marauder)": ItemData(229 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 26, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marauder", origin={"nco"}), - "Magrail Munitions (Marauder)": ItemData(230 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 27, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marauder", origin={"nco"}), - "Internal Tech Module (Marauder)": ItemData(231 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 28, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marauder", origin={"nco"}), + ItemNames.Marine_Laser_Targeting_System: ItemData(220 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 8, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marine", origin={"nco"}), # Freed slot from Stimpack + ItemNames.Marine_Magrail_Munitions: ItemData(221 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 20, SC2Race.TERRAN, parent_item="Marine", origin={"nco"}), + ItemNames.Marine_Optimized_Logistics: ItemData(222 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 21, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marine", origin={"nco"}), + ItemNames.Medic_Restoration: ItemData(223 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 22, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic", origin={"bw"}), + ItemNames.Medic_Optical_Flare: ItemData(224 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 23, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic", origin={"bw"}), + ItemNames.Medic_Optimized_Logistics: ItemData(225 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic", origin={"bw"}), + ItemNames.Firebat_Progressive_Stimpack: ItemData(226 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 6, SC2Race.TERRAN, parent_item="Firebat", quantity=2, origin={"bw"}), + ItemNames.Firebat_Optimized_Logistics: ItemData(227 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 25, SC2Race.TERRAN, parent_item="Firebat", origin={"bw"}), + ItemNames.Marauder_Progressive_Stimpack: ItemData(228 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 8, SC2Race.TERRAN, parent_item="Marauder", quantity=2, origin={"nco"}), + ItemNames.Marauder_Laser_Targeting_System: ItemData(229 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 26, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marauder", origin={"nco"}), + ItemNames.Marauder_Magrail_Munitions: ItemData(230 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 27, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marauder", origin={"nco"}), + ItemNames.Marauder_Internal_Tech_Module: ItemData(231 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 28, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marauder", origin={"nco"}), # Items from new mod - "Progressive Stimpack (Reaper)": ItemData(250 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 10, SC2Race.TERRAN, parent_item="Reaper", quantity=2, origin={"nco"}), - "Laser Targeting System (Reaper)": ItemData(251 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 0, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Reaper", origin={"nco"}), - "Advanced Cloaking Field (Reaper)": ItemData(252 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 1, SC2Race.TERRAN, parent_item="Reaper", origin={"nco"}), - "Spider Mines (Reaper)": ItemData(253 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Reaper", origin={"nco"}), - "Combat Drugs (Reaper)": ItemData(254 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 3, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Reaper", origin={"ext"}), - "Hellbat Aspect (Hellion)": ItemData(255 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 4, SC2Race.TERRAN, parent_item="Hellion", origin={"nco"}), - "Smart Servos (Hellion)": ItemData(256 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 5, SC2Race.TERRAN, parent_item="Hellion", origin={"nco"}), - "Optimized Logistics (Hellion)": ItemData(257 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 6, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Hellion", origin={"nco"}), - "Jump Jets (Hellion)": ItemData(258 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 7, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Hellion", origin={"nco"}), - "Progressive Stimpack (Hellion)": ItemData(259 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 12, SC2Race.TERRAN, parent_item="Hellion", quantity=2, origin={"nco"}), - "Ion Thrusters (Vulture)": ItemData(260 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 8, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Vulture", origin={"bw"}), - "Auto Launchers (Vulture)": ItemData(261 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 9, SC2Race.TERRAN, parent_item="Vulture", origin={"bw"}), - "High Explosive Munition (Spider Mine)": ItemData(262 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 10, SC2Race.TERRAN, origin={"bw"}), - "Jump Jets (Goliath)": ItemData(263 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 11, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Goliath", origin={"nco"}), - "Optimized Logistics (Goliath)": ItemData(264 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 12, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Goliath", origin={"nco"}), - "Hyperfluxor (Diamondback)": ItemData(265 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 13, SC2Race.TERRAN, parent_item="Diamondback", origin={"ext"}), - "Burst Capacitors (Diamondback)": ItemData(266 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 14, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Diamondback", origin={"ext"}), - "Optimized Logistics (Diamondback)": ItemData(267 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 15, SC2Race.TERRAN, parent_item="Diamondback", origin={"ext"}), - "Jump Jets (Siege Tank)": ItemData(268 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 16, SC2Race.TERRAN, parent_item="Siege Tank", origin={"nco"}), - "Spider Mines (Siege Tank)": ItemData(269 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 17, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Siege Tank", origin={"nco"}), - "Smart Servos (Siege Tank)": ItemData(270 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 18, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Siege Tank", origin={"nco"}), - "Graduating Range (Siege Tank)": ItemData(271 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 19, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Siege Tank", origin={"ext"}), - "Laser Targeting System (Siege Tank)": ItemData(272 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 20, SC2Race.TERRAN, parent_item="Siege Tank", origin={"nco"}), - "Advanced Siege Tech (Siege Tank)": ItemData(273 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 21, SC2Race.TERRAN, parent_item="Siege Tank", origin={"ext"}), - "Internal Tech Module (Siege Tank)": ItemData(274 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 22, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Siege Tank", origin={"nco"}), - "Optimized Logistics (Predator)": ItemData(275 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 23, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Predator", origin={"ext"}), - "Expanded Hull (Medivac)": ItemData(276 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac", origin={"ext"}), - "Afterburners (Medivac)": ItemData(277 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac", origin={"ext"}), - "Advanced Laser Technology (Wraith)": ItemData(278 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 26, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Wraith", origin={"ext"}), - "Smart Servos (Viking)": ItemData(279 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 27, SC2Race.TERRAN, parent_item="Viking", origin={"ext"}), - "Magrail Munitions (Viking)": ItemData(280 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 28, SC2Race.TERRAN, parent_item="Viking", origin={"ext"}), - - "Twin-Linked Flamethrower (Hellion)": ItemData(300 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 0, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Hellion"), - "Thermite Filaments (Hellion)": ItemData(301 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 1, SC2Race.TERRAN, parent_item="Hellion"), - "Cerberus Mine (Spider Mine)": ItemData(302 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 2, SC2Race.TERRAN, classification=ItemClassification.filler), - "Replenishable Magazine (Vulture)": ItemData(303 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 3, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Vulture"), - "Multi-Lock Weapons System (Goliath)": ItemData(304 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 4, SC2Race.TERRAN, parent_item="Goliath"), - "Ares-Class Targeting System (Goliath)": ItemData(305 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 5, SC2Race.TERRAN, parent_item="Goliath"), - "Tri-Lithium Power Cell (Diamondback)": ItemData(306 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 6, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Diamondback"), - "Shaped Hull (Diamondback)": ItemData(307 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 7, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Diamondback"), - "Maelstrom Rounds (Siege Tank)": ItemData(308 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 8, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Siege Tank"), - "Shaped Blast (Siege Tank)": ItemData(309 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 9, SC2Race.TERRAN, parent_item="Siege Tank"), - "Rapid Deployment Tube (Medivac)": ItemData(310 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 10, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac"), - "Advanced Healing AI (Medivac)": ItemData(311 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 11, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac"), - "Tomahawk Power Cells (Wraith)": ItemData(312 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 12, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Wraith"), - "Displacement Field (Wraith)": ItemData(313 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 13, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Wraith"), - "Ripwave Missiles (Viking)": ItemData(314 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 14, SC2Race.TERRAN, parent_item="Viking"), - "Phobos-Class Weapons System (Viking)": ItemData(315 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 15, SC2Race.TERRAN, parent_item="Viking"), - "Progressive Cross-Spectrum Dampeners (Banshee)": ItemData(316 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", quantity=2), - "Shockwave Missile Battery (Banshee)": ItemData(317 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 17, SC2Race.TERRAN, parent_item="Banshee"), - "Missile Pods (Battlecruiser)": ItemData(318 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 18, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser"), - "Defensive Matrix (Battlecruiser)": ItemData(319 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 19, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser"), - "Ocular Implants (Ghost)": ItemData(320 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 20, SC2Race.TERRAN, parent_item="Ghost"), - "Crius Suit (Ghost)": ItemData(321 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 21, SC2Race.TERRAN, parent_item="Ghost"), - "Psionic Lash (Spectre)": ItemData(322 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 22, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Spectre"), - "Nyx-Class Cloaking Module (Spectre)": ItemData(323 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 23, SC2Race.TERRAN, parent_item="Spectre"), - "330mm Barrage Cannon (Thor)": ItemData(324 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Thor"), - "Immortality Protocol (Thor)": ItemData(325 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Thor"), + ItemNames.Reaper_Progressive_Stimpack: ItemData(250 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 10, SC2Race.TERRAN, parent_item="Reaper", quantity=2, origin={"nco"}), + ItemNames.Reaper_Laser_Targeting_System: ItemData(251 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 0, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Reaper", origin={"nco"}), + ItemNames.Reaper_Advanced_Cloaking_Field: ItemData(252 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 1, SC2Race.TERRAN, parent_item="Reaper", origin={"nco"}), + ItemNames.Reaper_Spider_Mines: ItemData(253 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Reaper", origin={"nco"}), + ItemNames.Reaper_Combat_Drugs: ItemData(254 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 3, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Reaper", origin={"ext"}), + ItemNames.Hellion_Hellbat_Aspect: ItemData(255 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 4, SC2Race.TERRAN, parent_item="Hellion", origin={"nco"}), + ItemNames.Hellion_Smart_Servos: ItemData(256 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 5, SC2Race.TERRAN, parent_item="Hellion", origin={"nco"}), + ItemNames.Hellion_Optimized_Logistics: ItemData(257 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 6, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Hellion", origin={"nco"}), + ItemNames.Hellion_Jump_Jets: ItemData(258 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 7, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Hellion", origin={"nco"}), + ItemNames.Hellion_Progressive_Stimpack: ItemData(259 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 12, SC2Race.TERRAN, parent_item="Hellion", quantity=2, origin={"nco"}), + ItemNames.Vulture_Ion_Thrusters: ItemData(260 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 8, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Vulture", origin={"bw"}), + ItemNames.Vulture_Auto_Launchers: ItemData(261 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 9, SC2Race.TERRAN, parent_item="Vulture", origin={"bw"}), + ItemNames.Spider_Mine_High_Explosive_Munition: ItemData(262 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 10, SC2Race.TERRAN, origin={"bw"}), + ItemNames.Goliath_Jump_Jets: ItemData(263 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 11, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Goliath", origin={"nco"}), + ItemNames.Goliath_Optimized_Logistics: ItemData(264 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 12, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Goliath", origin={"nco"}), + ItemNames.Diamondback_Hyperfluxor: ItemData(265 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 13, SC2Race.TERRAN, parent_item="Diamondback", origin={"ext"}), + ItemNames.Diamondback_Burst_Capacitors: ItemData(266 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 14, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Diamondback", origin={"ext"}), + ItemNames.Diamondback_Optimized_Logistics: ItemData(267 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 15, SC2Race.TERRAN, parent_item="Diamondback", origin={"ext"}), + ItemNames.Siege_Tank_Jump_Jets: ItemData(268 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 16, SC2Race.TERRAN, parent_item="Siege Tank", origin={"nco"}), + ItemNames.Siege_Tank_Spider_Mines: ItemData(269 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 17, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Siege Tank", origin={"nco"}), + ItemNames.Siege_Tank_Smart_Servos: ItemData(270 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 18, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Siege Tank", origin={"nco"}), + ItemNames.Siege_Tank_Graduating_Range: ItemData(271 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 19, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Siege Tank", origin={"ext"}), + ItemNames.Siege_Tank_Laser_Targeting_System: ItemData(272 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 20, SC2Race.TERRAN, parent_item="Siege Tank", origin={"nco"}), + ItemNames.Siege_Tank_Advanced_Siege_Tech: ItemData(273 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 21, SC2Race.TERRAN, parent_item="Siege Tank", origin={"ext"}), + ItemNames.Siege_Tank_Internal_Tech_Module: ItemData(274 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 22, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Siege Tank", origin={"nco"}), + ItemNames.Predator_Optimized_Logistics: ItemData(275 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 23, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Predator", origin={"ext"}), + ItemNames.Medivac_Expanded_Hull: ItemData(276 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac", origin={"ext"}), + ItemNames.Medivac_Afterburners: ItemData(277 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac", origin={"ext"}), + ItemNames.Wraith_Advanced_Laser_Technology: ItemData(278 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 26, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Wraith", origin={"ext"}), + ItemNames.Viking_Smart_Servos: ItemData(279 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 27, SC2Race.TERRAN, parent_item="Viking", origin={"ext"}), + ItemNames.Viking_Magrail_Munitions: ItemData(280 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 28, SC2Race.TERRAN, parent_item="Viking", origin={"ext"}), + + ItemNames.Hellion_Twin_Linked_Flamethrower: ItemData(300 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 0, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Hellion"), + ItemNames.Hellion_Thermite_Filaments: ItemData(301 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 1, SC2Race.TERRAN, parent_item="Hellion"), + ItemNames.Spider_Mine_Cerberus_Mine: ItemData(302 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 2, SC2Race.TERRAN, classification=ItemClassification.filler), + ItemNames.Vulture_Replenishable_Magazine: ItemData(303 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 3, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Vulture"), + ItemNames.Goliath_Multi_Lock_Weapons_System: ItemData(304 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 4, SC2Race.TERRAN, parent_item="Goliath"), + ItemNames.Goliath_Ares_Class_Targeting_System: ItemData(305 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 5, SC2Race.TERRAN, parent_item="Goliath"), + ItemNames.Diamondback_Tri_Lithium_Power_Cell: ItemData(306 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 6, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Diamondback"), + ItemNames.Diamondback_Shaped_Hull: ItemData(307 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 7, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Diamondback"), + ItemNames.Siege_Tank_Maelstrom_Rounds: ItemData(308 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 8, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Siege Tank"), + ItemNames.Siege_Tank_Shaped_Blast: ItemData(309 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 9, SC2Race.TERRAN, parent_item="Siege Tank"), + ItemNames.Medivac_Rapid_Deployment_Tube: ItemData(310 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 10, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac"), + ItemNames.Medivac_Advanced_Healing_AI: ItemData(311 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 11, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac"), + ItemNames.Wraith_Tomahawk_Power_Cells: ItemData(312 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 12, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Wraith"), + ItemNames.Wraith_Displacement_Field: ItemData(313 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 13, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Wraith"), + ItemNames.Viking_Ripwave_Missiles: ItemData(314 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 14, SC2Race.TERRAN, parent_item="Viking"), + ItemNames.Viking_Phobos_Class_Weapons_System: ItemData(315 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 15, SC2Race.TERRAN, parent_item="Viking"), + ItemNames.Banshee_Progressive_Cross_Spectrum_Dampeners: ItemData(316 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", quantity=2), + ItemNames.Banshee_Shockwave_Missile_Battery: ItemData(317 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 17, SC2Race.TERRAN, parent_item="Banshee"), + ItemNames.Battlecruiser_Missile_Pods: ItemData(318 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 18, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser"), + ItemNames.Battlecruiser_Defensive_Matrix: ItemData(319 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 19, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser"), + ItemNames.Ghost_Ocular_Implants: ItemData(320 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 20, SC2Race.TERRAN, parent_item="Ghost"), + ItemNames.Ghost_Crius_Suit: ItemData(321 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 21, SC2Race.TERRAN, parent_item="Ghost"), + ItemNames.Spectre_Psionic_Lash: ItemData(322 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 22, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Spectre"), + ItemNames.Spectre_Nyx_Class_Cloaking_Module: ItemData(323 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 23, SC2Race.TERRAN, parent_item="Spectre"), + ItemNames.Thor_330mm_Barrage_Cannon: ItemData(324 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Thor"), + ItemNames.Thor_Immortality_Protocol: ItemData(325 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Thor"), # Items from EE - "Advanced Ballistics (Liberator)": ItemData(326 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 26, SC2Race.TERRAN, parent_item="Liberator", origin={"ext"}), - "Raid Artillery (Liberator)": ItemData(327 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 27, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Liberator", origin={"nco"}), - "Drilling Claws (Widow Mine)": ItemData(328 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 28, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Widow Mine", origin={"ext"}), - "Concealment (Widow Mine)": ItemData(329 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 29, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Widow Mine", origin={"ext"}), + ItemNames.Liberator_Advanced_Ballistics: ItemData(326 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 26, SC2Race.TERRAN, parent_item="Liberator", origin={"ext"}), + ItemNames.Liberator_Raid_Artillery: ItemData(327 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 27, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Liberator", origin={"nco"}), + ItemNames.Widow_Mine_Drilling_Claws: ItemData(328 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 28, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Widow Mine", origin={"ext"}), + ItemNames.Widow_Mine_Concealment: ItemData(329 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 29, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Widow Mine", origin={"ext"}), #Items from new mod - "Hyperflight Rotors (Banshee)": ItemData(350 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 0, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", origin={"ext"}), - "Laser Targeting System (Banshee)": ItemData(351 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 1, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", origin={"nco"}), - "Internal Tech Module (Banshee)": ItemData(352 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", origin={"nco"}), - "Tactical Jump (Battlecruiser)": ItemData(353 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 3, SC2Race.TERRAN, parent_item="Battlecruiser", origin={"nco", "ext"}), - "Cloak (Battlecruiser)": ItemData(354 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 4, SC2Race.TERRAN, parent_item="Battlecruiser", origin={"nco"}), - "ATX Laser Battery (Battlecruiser)": ItemData(355 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 5, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Battlecruiser", origin={"nco"}), - "Optimized Logistics (Battlecruiser)": ItemData(356 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 6, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser", origin={"ext"}), - "Internal Tech Module (Battlecruiser)": ItemData(357 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 7, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser", origin={"nco"}), - "EMP Rounds (Ghost)": ItemData(358 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 8, SC2Race.TERRAN, parent_item="Ghost", origin={"ext"}), - "Lockdown (Ghost)": ItemData(359 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 9, SC2Race.TERRAN, parent_item="Ghost", origin={"bw"}), - "Impaler Rounds (Spectre)": ItemData(360 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 10, SC2Race.TERRAN, parent_item="Spectre", origin={"ext"}), - "Progressive High Impact Payload (Thor)": ItemData(361 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 14, SC2Race.TERRAN, parent_item="Thor", quantity=2, origin={"ext"}), # L2 is Smart Servos - "Bio Mechanical Repair Drone (Raven)": ItemData(363 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 13, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), - "Spider Mines (Raven)": ItemData(364 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 14, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), - "Railgun Turret (Raven)": ItemData(365 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 15, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), - "Hunter-Seeker Weapon (Raven)": ItemData(366 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 16, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), - "Interference Matrix (Raven)": ItemData(367 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 17, SC2Race.TERRAN, parent_item="Raven", origin={"ext"}), - "Anti-Armor Missile (Raven)": ItemData(368 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 18, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Raven", origin={"ext"}), - "Internal Tech Module (Raven)": ItemData(369 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 19, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Raven", origin={"nco"}), - "EMP Shockwave (Science Vessel)": ItemData(370 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 20, SC2Race.TERRAN, parent_item="Science Vessel", origin={"bw"}), - "Defensive Matrix (Science Vessel)": ItemData(371 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 21, SC2Race.TERRAN, parent_item="Science Vessel", origin={"bw"}), - "Targeting Optics (Cyclone)": ItemData(372 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 22, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), - "Rapid Fire Launchers (Cyclone)": ItemData(373 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 23, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), - "Cloak (Liberator)": ItemData(374 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Liberator", origin={"nco"}), - "Laser Targeting System (Liberator)": ItemData(375 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Liberator", origin={"ext"}), - "Optimized Logistics (Liberator)": ItemData(376 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 26, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Liberator", origin={"nco"}), - "Black Market Launchers (Widow Mine)": ItemData(377 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 27, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Widow Mine", origin={"ext"}), - "Executioner Missiles (Widow Mine)": ItemData(378 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 28, SC2Race.TERRAN, parent_item="Widow Mine", origin={"ext"}), + ItemNames.Banshee_Hyperflight_Rotors: ItemData(350 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 0, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", origin={"ext"}), + ItemNames.Banshee_Laser_Targeting_System: ItemData(351 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 1, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", origin={"nco"}), + ItemNames.Banshee_Internal_Tech_Module: ItemData(352 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", origin={"nco"}), + ItemNames.Battlecruiser_Tactical_Jump: ItemData(353 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 3, SC2Race.TERRAN, parent_item="Battlecruiser", origin={"nco", "ext"}), + ItemNames.Battlecruiser_Cloak: ItemData(354 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 4, SC2Race.TERRAN, parent_item="Battlecruiser", origin={"nco"}), + ItemNames.Battlecruiser_ATX_Laser_Battery: ItemData(355 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 5, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Battlecruiser", origin={"nco"}), + ItemNames.Battlecruiser_Optimized_Logistics: ItemData(356 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 6, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser", origin={"ext"}), + ItemNames.Battlecruiser_Internal_Tech_Module: ItemData(357 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 7, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser", origin={"nco"}), + ItemNames.Ghost_EMP_Rounds: ItemData(358 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 8, SC2Race.TERRAN, parent_item="Ghost", origin={"ext"}), + ItemNames.Ghost_Lockdown: ItemData(359 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 9, SC2Race.TERRAN, parent_item="Ghost", origin={"bw"}), + ItemNames.Spectre_Impaler_Rounds: ItemData(360 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 10, SC2Race.TERRAN, parent_item="Spectre", origin={"ext"}), + ItemNames.Thor_Progressive_High_Impact_Payload: ItemData(361 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 14, SC2Race.TERRAN, parent_item="Thor", quantity=2, origin={"ext"}), # L2 is Smart Servos + ItemNames.Raven_Bio_Mechanical_Repair_Drone: ItemData(363 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 13, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), + ItemNames.Raven_Spider_Mines: ItemData(364 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 14, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), + ItemNames.Raven_Railgun_Turret: ItemData(365 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 15, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), + ItemNames.Raven_Hunter_Seeker_Weapon: ItemData(366 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 16, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), + ItemNames.Raven_Interference_Matrix: ItemData(367 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 17, SC2Race.TERRAN, parent_item="Raven", origin={"ext"}), + ItemNames.Raven_Anti_Armor_Missile: ItemData(368 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 18, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Raven", origin={"ext"}), + ItemNames.Raven_Internal_Tech_Module: ItemData(369 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 19, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Raven", origin={"nco"}), + ItemNames.Science_Vessel_EMP_Shockwave: ItemData(370 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 20, SC2Race.TERRAN, parent_item="Science Vessel", origin={"bw"}), + ItemNames.Science_Vessel_Defensive_Matrix: ItemData(371 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 21, SC2Race.TERRAN, parent_item="Science Vessel", origin={"bw"}), + ItemNames.Cyclone_Targeting_Optics: ItemData(372 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 22, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), + ItemNames.Cyclone_Rapid_Fire_Launchers: ItemData(373 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 23, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), + ItemNames.Liberator_Cloak: ItemData(374 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Liberator", origin={"nco"}), + ItemNames.Liberator_Laser_Targeting_System: ItemData(375 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Liberator", origin={"ext"}), + ItemNames.Liberator_Optimized_Logistics: ItemData(376 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 26, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Liberator", origin={"nco"}), + ItemNames.Widow_Mine_Black_Market_Launchers: ItemData(377 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 27, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Widow Mine", origin={"ext"}), + ItemNames.Widow_Mine_Executioner_Missiles: ItemData(378 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 28, SC2Race.TERRAN, parent_item="Widow Mine", origin={"ext"}), # Just lazy to create a new group for one unit - "Enhanced Cluster Launchers (Valkyrie)": ItemData(379 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 17, SC2Race.TERRAN, parent_item="Valkyrie", origin={"ext"}), - "Shaped Hull (Valkyrie)": ItemData(380 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 20, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Valkyrie", origin={"ext"}), - "Burst Lasers (Valkyrie)": ItemData(381 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 21, SC2Race.TERRAN, parent_item="Valkyrie", origin={"ext"}), - "Afterburners (Valkyrie)": ItemData(382 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 22, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Valkyrie", origin={"ext"}), - - "Bunker": ItemData(400 + SC2WOL_ITEM_ID_OFFSET, "Building", 0, SC2Race.TERRAN, classification=ItemClassification.progression), - "Missile Turret": ItemData(401 + SC2WOL_ITEM_ID_OFFSET, "Building", 1, SC2Race.TERRAN, classification=ItemClassification.progression), - "Sensor Tower": ItemData(402 + SC2WOL_ITEM_ID_OFFSET, "Building", 2, SC2Race.TERRAN), - - "War Pigs": ItemData(500 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 0, SC2Race.TERRAN, classification=ItemClassification.progression), - "Devil Dogs": ItemData(501 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 1, SC2Race.TERRAN, classification=ItemClassification.filler), - "Hammer Securities": ItemData(502 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 2, SC2Race.TERRAN), - "Spartan Company": ItemData(503 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 3, SC2Race.TERRAN, classification=ItemClassification.progression), - "Siege Breakers": ItemData(504 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 4, SC2Race.TERRAN), - "Hel's Angel": ItemData(505 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 5, SC2Race.TERRAN, classification=ItemClassification.progression), - "Dusk Wings": ItemData(506 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 6, SC2Race.TERRAN), - "Jackson's Revenge": ItemData(507 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 7, SC2Race.TERRAN), - - "Ultra-Capacitors": ItemData(600 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 0, SC2Race.TERRAN), - "Vanadium Plating": ItemData(601 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 1, SC2Race.TERRAN), - "Orbital Depots": ItemData(602 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 2, SC2Race.TERRAN), - "Micro-Filtering": ItemData(603 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 3, SC2Race.TERRAN), - "Automated Refinery": ItemData(604 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 4, SC2Race.TERRAN), - "Command Center Reactor": ItemData(605 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 5, SC2Race.TERRAN), - "Raven": ItemData(606 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 6, SC2Race.TERRAN), - "Science Vessel": ItemData(607 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 7, SC2Race.TERRAN, classification=ItemClassification.progression), - "Tech Reactor": ItemData(608 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 8, SC2Race.TERRAN), - "Orbital Strike": ItemData(609 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 9, SC2Race.TERRAN), - "Shrike Turret (Bunker)": ItemData(610 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 10, SC2Race.TERRAN, parent_item="Bunker"), - "Fortified Bunker (Bunker)": ItemData(611 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 11, SC2Race.TERRAN, parent_item="Bunker"), - "Planetary Fortress": ItemData(612 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 12, SC2Race.TERRAN, classification=ItemClassification.progression), - "Perdition Turret": ItemData(613 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 13, SC2Race.TERRAN, classification=ItemClassification.progression), - "Predator": ItemData(614 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 14, SC2Race.TERRAN, classification=ItemClassification.filler), - "Hercules": ItemData(615 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 15, SC2Race.TERRAN, classification=ItemClassification.progression), - "Cellular Reactor": ItemData(616 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 16, SC2Race.TERRAN), - "Progressive Regenerative Bio-Steel": ItemData(617 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 4, SC2Race.TERRAN, quantity=2), - "Hive Mind Emulator": ItemData(618 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 18, SC2Race.TERRAN, ItemClassification.progression), - "Psi Disrupter": ItemData(619 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 19, SC2Race.TERRAN, classification=ItemClassification.progression), - - "Zealot": ItemData(700 + SC2WOL_ITEM_ID_OFFSET, "Unit", 0, SC2Race.PROTOSS, classification=ItemClassification.progression), - "Stalker": ItemData(701 + SC2WOL_ITEM_ID_OFFSET, "Unit", 1, SC2Race.PROTOSS, classification=ItemClassification.progression), - "High Templar": ItemData(702 + SC2WOL_ITEM_ID_OFFSET, "Unit", 2, SC2Race.PROTOSS, classification=ItemClassification.progression), - "Dark Templar": ItemData(703 + SC2WOL_ITEM_ID_OFFSET, "Unit", 3, SC2Race.PROTOSS, classification=ItemClassification.progression), - "Immortal": ItemData(704 + SC2WOL_ITEM_ID_OFFSET, "Unit", 4, SC2Race.PROTOSS, classification=ItemClassification.progression), - "Colossus": ItemData(705 + SC2WOL_ITEM_ID_OFFSET, "Unit", 5, SC2Race.PROTOSS), - "Phoenix": ItemData(706 + SC2WOL_ITEM_ID_OFFSET, "Unit", 6, SC2Race.PROTOSS, classification=ItemClassification.filler), - "Void Ray": ItemData(707 + SC2WOL_ITEM_ID_OFFSET, "Unit", 7, SC2Race.PROTOSS, classification=ItemClassification.progression), - "Carrier": ItemData(708 + SC2WOL_ITEM_ID_OFFSET, "Unit", 8, SC2Race.PROTOSS, classification=ItemClassification.progression), + ItemNames.Valkyrie_Enhanced_Cluster_Launchers: ItemData(379 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 17, SC2Race.TERRAN, parent_item="Valkyrie", origin={"ext"}), + ItemNames.Valkyrie_Shaped_Hull: ItemData(380 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 20, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Valkyrie", origin={"ext"}), + ItemNames.Valkyrie_Burst_Lasers: ItemData(381 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 21, SC2Race.TERRAN, parent_item="Valkyrie", origin={"ext"}), + ItemNames.Valkyrie_Afterburners: ItemData(382 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 22, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Valkyrie", origin={"ext"}), + + ItemNames.Bunker: ItemData(400 + SC2WOL_ITEM_ID_OFFSET, "Building", 0, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Missile_Turret: ItemData(401 + SC2WOL_ITEM_ID_OFFSET, "Building", 1, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Sensor_Tower: ItemData(402 + SC2WOL_ITEM_ID_OFFSET, "Building", 2, SC2Race.TERRAN), + + ItemNames.War_Pigs: ItemData(500 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 0, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Devil_Dogs: ItemData(501 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 1, SC2Race.TERRAN, classification=ItemClassification.filler), + ItemNames.Hammer_Securities: ItemData(502 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 2, SC2Race.TERRAN), + ItemNames.Spartan_Company: ItemData(503 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 3, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Siege_Breakers: ItemData(504 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 4, SC2Race.TERRAN), + ItemNames.Hels_Angel: ItemData(505 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 5, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Dusk_Wings: ItemData(506 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 6, SC2Race.TERRAN), + ItemNames.Jacksons_Revenge: ItemData(507 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 7, SC2Race.TERRAN), + + ItemNames.Ultra_Capacitors: ItemData(600 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 0, SC2Race.TERRAN), + ItemNames.Vanadium_Plating: ItemData(601 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 1, SC2Race.TERRAN), + ItemNames.Orbital_Depots: ItemData(602 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 2, SC2Race.TERRAN), + ItemNames.Micro_Filtering: ItemData(603 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 3, SC2Race.TERRAN), + ItemNames.Automated_Refinery: ItemData(604 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 4, SC2Race.TERRAN), + ItemNames.Command_Center_Reactor: ItemData(605 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 5, SC2Race.TERRAN), + ItemNames.Raven: ItemData(606 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 6, SC2Race.TERRAN), + ItemNames.Science_Vessel: ItemData(607 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 7, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Tech_Reactor: ItemData(608 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 8, SC2Race.TERRAN), + ItemNames.Orbital_Strike: ItemData(609 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 9, SC2Race.TERRAN), + ItemNames.Bunker_Shrike_Turret: ItemData(610 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 10, SC2Race.TERRAN, parent_item="Bunker"), + ItemNames.Bunker_Fortified_Bunker: ItemData(611 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 11, SC2Race.TERRAN, parent_item="Bunker"), + ItemNames.Planetary_Fortress: ItemData(612 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 12, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Perdition_Turret: ItemData(613 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 13, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Predator: ItemData(614 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 14, SC2Race.TERRAN, classification=ItemClassification.filler), + ItemNames.Hercules: ItemData(615 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 15, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.Cellular_Reactor: ItemData(616 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 16, SC2Race.TERRAN), + ItemNames.Progressive_Regenerative_Bio_Steel: ItemData(617 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 4, SC2Race.TERRAN, quantity=2), + ItemNames.Hive_Mind_Emulator: ItemData(618 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 18, SC2Race.TERRAN, ItemClassification.progression), + ItemNames.Psi_Disrupter: ItemData(619 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 19, SC2Race.TERRAN, classification=ItemClassification.progression), + + ItemNames.Zealot: ItemData(700 + SC2WOL_ITEM_ID_OFFSET, "Unit", 0, SC2Race.PROTOSS, classification=ItemClassification.progression), + ItemNames.Stalker: ItemData(701 + SC2WOL_ITEM_ID_OFFSET, "Unit", 1, SC2Race.PROTOSS, classification=ItemClassification.progression), + ItemNames.High_Templar: ItemData(702 + SC2WOL_ITEM_ID_OFFSET, "Unit", 2, SC2Race.PROTOSS, classification=ItemClassification.progression), + ItemNames.Dark_Templar: ItemData(703 + SC2WOL_ITEM_ID_OFFSET, "Unit", 3, SC2Race.PROTOSS, classification=ItemClassification.progression), + ItemNames.Immortal: ItemData(704 + SC2WOL_ITEM_ID_OFFSET, "Unit", 4, SC2Race.PROTOSS, classification=ItemClassification.progression), + ItemNames.Colossus: ItemData(705 + SC2WOL_ITEM_ID_OFFSET, "Unit", 5, SC2Race.PROTOSS), + ItemNames.Phoenix: ItemData(706 + SC2WOL_ITEM_ID_OFFSET, "Unit", 6, SC2Race.PROTOSS, classification=ItemClassification.filler), + ItemNames.Void_Ray: ItemData(707 + SC2WOL_ITEM_ID_OFFSET, "Unit", 7, SC2Race.PROTOSS, classification=ItemClassification.progression), + ItemNames.Carrier: ItemData(708 + SC2WOL_ITEM_ID_OFFSET, "Unit", 8, SC2Race.PROTOSS, classification=ItemClassification.progression), # Filler items to fill remaining spots - "+15 Starting Minerals": ItemData(800 + SC2WOL_ITEM_ID_OFFSET, "Minerals", 15, SC2Race.ANY, quantity=0, classification=ItemClassification.filler), - "+15 Starting Vespene": ItemData(801 + SC2WOL_ITEM_ID_OFFSET, "Vespene", 15, SC2Race.ANY, quantity=0, classification=ItemClassification.filler), + ItemNames.Starting_Minerals: ItemData(800 + SC2WOL_ITEM_ID_OFFSET, "Minerals", 15, SC2Race.ANY, quantity=0, classification=ItemClassification.filler), + ItemNames.Starting_Vespene: ItemData(801 + SC2WOL_ITEM_ID_OFFSET, "Vespene", 15, SC2Race.ANY, quantity=0, classification=ItemClassification.filler), # This Filler item isn't placed by the generator yet unless plando'd - "+2 Starting Supply": ItemData(802 + SC2WOL_ITEM_ID_OFFSET, "Supply", 2, SC2Race.ANY, quantity=0, classification=ItemClassification.filler), + ItemNames.Starting_Supply: ItemData(802 + SC2WOL_ITEM_ID_OFFSET, "Supply", 2, SC2Race.ANY, quantity=0, classification=ItemClassification.filler), # This item is used to "remove" location from the game. Never placed unless plando'd - "Nothing": ItemData(803 + SC2WOL_ITEM_ID_OFFSET, "Nothing Group", 2, SC2Race.ANY, quantity=0, classification=ItemClassification.trap), + ItemNames.Nothing: ItemData(803 + SC2WOL_ITEM_ID_OFFSET, "Nothing Group", 2, SC2Race.ANY, quantity=0, classification=ItemClassification.trap), - # "Keystone Piece": ItemData(850 + SC2WOL_ITEM_ID_OFFSET, "Goal", 0, quantity=0, classification=ItemClassification.progression_skip_balancing) + # ItemNames.Keystone_Piece: ItemData(850 + SC2WOL_ITEM_ID_OFFSET, "Goal", 0, quantity=0, classification=ItemClassification.progression_skip_balancing) # HotS - "Zergling": ItemData(0 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 0, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - "Swarm Queen": ItemData(1 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 1, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - "Roach": ItemData(2 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 2, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - "Hydralisk": ItemData(3 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 3, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - "Baneling": ItemData(4 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 4, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - "Aberration": ItemData(5 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 5, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - "Mutalisk": ItemData(6 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 6, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - "Swarm Host": ItemData(7 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 7, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - "Infestor": ItemData(8 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 8, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - "Ultralisk": ItemData(9 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 9, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - "Spore Crawler": ItemData(10 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 10, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - "Spine Crawler": ItemData(11 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 11, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.Zergling: ItemData(0 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 0, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.Swarm_Queen: ItemData(1 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 1, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.Roach: ItemData(2 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 2, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.Hydralisk: ItemData(3 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 3, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.Baneling: ItemData(4 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 4, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.Aberration: ItemData(5 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 5, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.Mutalisk: ItemData(6 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 6, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.Swarm_Host: ItemData(7 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 7, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.Infestor: ItemData(8 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 8, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.Ultralisk: ItemData(9 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 9, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.Spore_Crawler: ItemData(10 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 10, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.Spine_Crawler: ItemData(11 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 11, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - "Progressive Zerg Melee Attack": ItemData(100 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 0, SC2Race.ZERG, quantity=3, origin={"hots"}), - "Progressive Zerg Missile Attack": ItemData(101 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 2, SC2Race.ZERG, quantity=3, origin={"hots"}), - "Progressive Zerg Ground Carapace": ItemData(102 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 4, SC2Race.ZERG, quantity=3, origin={"hots"}), - "Progressive Zerg Flyer Attack": ItemData(103 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 6, SC2Race.ZERG, quantity=3, origin={"hots"}), - "Progressive Zerg Flyer Carapace": ItemData(104 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 8, SC2Race.ZERG, quantity=3, origin={"hots"}), + 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 - "Progressive Zerg Weapon Upgrade": ItemData(105 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 6, SC2Race.ZERG, quantity=3, origin={"hots"}), - "Progressive Zerg Armor Upgrade": ItemData(106 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 7, SC2Race.ZERG, quantity=3, origin={"hots"}), - "Progressive Zerg Ground Upgrade": ItemData(107 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 8, SC2Race.ZERG, quantity=3, origin={"hots"}), - "Progressive Zerg Flyer Upgrade": ItemData(108 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 9, SC2Race.ZERG, quantity=3, origin={"hots"}), - "Progressive Zerg Weapon/Armor Upgrade": ItemData(109 + SC2HOTS_ITEM_ID_OFFSET, "Upgrade", 10, SC2Race.ZERG, quantity=3, origin={"hots"}), - - "Hardened Carapace (Zergling)": ItemData(200 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 0, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), - "Adrenal Overload (Zergling)": ItemData(201 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 1, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), - "Metabolic Boost (Zergling)": ItemData(202 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 2, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}, classification=ItemClassification.filler), - "Hydriodic Bile (Roach)": ItemData(203 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 3, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), - "Adaptive Plating (Roach)": ItemData(204 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 4, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), - "Tunneling Claws (Roach)": ItemData(205 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 5, SC2Race.ZERG, parent_item="Roach", origin={"hots"}, classification=ItemClassification.filler), - "Frenzy (Hydralisk)": ItemData(206 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 6, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}), - "Ancillary Carapace (Hydralisk)": ItemData(207 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 7, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}, classification=ItemClassification.filler), - "Grooved Spines (Hydralisk)": ItemData(208 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 8, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}), - "Corrosive Acid (Baneling)": ItemData(209 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 9, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}), - "Rupture (Baneling)": ItemData(210 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 10, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}, classification=ItemClassification.filler), - "Regenerative Acid (Baneling)": ItemData(211 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 11, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}, classification=ItemClassification.filler), - "Vicious Glave (Mutalisk)": ItemData(212 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 12, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}), - "Rapid Regeneration (Mutalisk)": ItemData(213 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 13, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}), - "Sundering Glave (Mutalisk)": ItemData(214 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 14, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}), - "Burrow (Swarm Host)": ItemData(215 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 15, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}, classification=ItemClassification.filler), - "Rapid Incubation (Swarm Host)": ItemData(216 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 16, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}), - "Pressurized Glands (Swarm Host)": ItemData(217 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 17, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}, classification=ItemClassification.progression), - "Burrow Charge (Ultralisk)": ItemData(218 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 18, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), - "Tissue Animation (Ultralisk)": ItemData(219 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 19, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), - "Monarch Blades (Ultralisk)": ItemData(220 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 20, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), + 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", 0, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), + ItemNames.Zergling_Adrenal_Overload: ItemData(201 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 1, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), + ItemNames.Zergling_Metabolic_Boost: ItemData(202 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 2, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.Roach_Hydriodic_Bile: ItemData(203 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 3, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), + ItemNames.Roach_Adaptive_Plating: ItemData(204 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 4, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), + ItemNames.Roach_Tunneling_Claws: ItemData(205 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 5, SC2Race.ZERG, parent_item="Roach", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.Hydralisk_Frenzy: ItemData(206 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 6, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}), + ItemNames.Hydralisk_Ancillary_Carapace: ItemData(207 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 7, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.Hydralisk_Grooved_Spines: ItemData(208 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 8, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}), + ItemNames.Baneling_Corrosive_Acid: ItemData(209 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 9, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}), + ItemNames.Baneling_Rupture: ItemData(210 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 10, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.Baneling_Regenerative_Acid: ItemData(211 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 11, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.Mutalisk_Vicious_Glave: ItemData(212 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 12, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}), + ItemNames.Mutalisk_Rapid_Regeneration: ItemData(213 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 13, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}), + ItemNames.Mutalisk_Sundering_Glave: ItemData(214 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 14, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}), + ItemNames.Swarm_Host_Burrow: ItemData(215 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 15, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.Swarm_Host_Rapid_Incubation: ItemData(216 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 16, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}), + ItemNames.Swarm_Host_Pressurized_Glands: ItemData(217 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 17, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}, classification=ItemClassification.progression), + ItemNames.Ultralisk_Burrow_Charge: ItemData(218 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 18, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), + ItemNames.Ultralisk_Tissue_Animation: ItemData(219 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 19, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), + ItemNames.Ultralisk_Monarch_Blades: ItemData(220 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 20, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), - "Raptor Strain (Zergling)": ItemData(300 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 0, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), - "Swarmling Strain (Zergling)": ItemData(301 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 1, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), - "Vile Strain (Roach)": ItemData(302 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 2, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), - "Corpser Strain (Roach)": ItemData(303 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 3, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), - "Impaler Strain (Hydralisk)": ItemData(304 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 4, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}, classification=ItemClassification.progression), - "Lurker Strain (Hydralisk)": ItemData(305 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 5, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}, classification=ItemClassification.progression), - "Splitter Strain (Baneling)": ItemData(306 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 6, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}), - "Hunter Strain (Baneling)": ItemData(307 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 7, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}), - "Brood Lord Strain (Mutalisk)": ItemData(308 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 8, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}, classification=ItemClassification.progression), - "Viper Strain (Mutalisk)": ItemData(309 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 9, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}, classification=ItemClassification.progression), - "Carrion Strain (Swarm Host)": ItemData(310 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 10, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}), - "Creeper Strain (Swarm Host)": ItemData(311 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 11, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}, classification=ItemClassification.filler), - "Noxious Strain (Ultralisk)": ItemData(312 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 12, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}, classification=ItemClassification.filler), - "Torrasque Strain (Ultralisk)": ItemData(313 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 13, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), + ItemNames.Zergling_Raptor_Strain: ItemData(300 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 0, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), + ItemNames.Zergling_Swarmling_Strain: ItemData(301 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 1, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), + ItemNames.Roach_Vile_Strain: ItemData(302 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 2, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), + ItemNames.Roach_Corpser_Strain: ItemData(303 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 3, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), + ItemNames.Hydralisk_Impaler_Strain: ItemData(304 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 4, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}, classification=ItemClassification.progression), + ItemNames.Hydralisk_Lurker_Strain: ItemData(305 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 5, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}, classification=ItemClassification.progression), + ItemNames.Baneling_Splitter_Strain: ItemData(306 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 6, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}), + ItemNames.Baneling_Hunter_Strain: ItemData(307 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 7, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}), + ItemNames.Mutalisk_Brood_Lord_Strain: ItemData(308 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 8, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}, classification=ItemClassification.progression), + ItemNames.Mutalisk_Viper_Strain: ItemData(309 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 9, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}, classification=ItemClassification.progression), + ItemNames.Swarm_Host_Carrion_Strain: ItemData(310 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 10, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}), + ItemNames.Swarm_Host_Creeper_Strain: ItemData(311 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 11, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.Ultralisk_Noxious_Strain: ItemData(312 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 12, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.Ultralisk_Torrasque_Strain: ItemData(313 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 13, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), - "Kinetic Blast (Kerrigan Tier 1)": ItemData(400 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 0, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - "Heroic Fortitude (Kerrigan Tier 1)": ItemData(401 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 1, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - "Leaping Strike (Kerrigan Tier 1)": ItemData(402 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 2, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - "Crushing Grip (Kerrigan Tier 2)": ItemData(403 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 3, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - "Chain Reaction (Kerrigan Tier 2)": ItemData(404 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 4, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - "Psionic Shift (Kerrigan Tier 2)": ItemData(405 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 5, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - "Zergling Reconstitution (Kerrigan Tier 3)": ItemData(406 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 6, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.filler), - "Improved Overlords (Kerrigan Tier 3)": ItemData(407 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 7, SC2Race.ZERG, origin={"hots"}), - "Automated Extractors (Kerrigan Tier 3)": ItemData(408 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 8, SC2Race.ZERG, origin={"hots"}), - "Wild Mutation (Kerrigan Tier 4)": ItemData(409 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 9, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - "Spawn Banelings (Kerrigan Tier 4)": ItemData(410 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 10, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - "Mend (Kerrigan Tier 4)": ItemData(411 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 11, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - "Twin Drones (Kerrigan Tier 5)": ItemData(412 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 12, SC2Race.ZERG, origin={"hots"}), - "Malignant Creep (Kerrigan Tier 5)": ItemData(413 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 13, SC2Race.ZERG, origin={"hots"}), - "Vespene Efficiency (Kerrigan Tier 5)": ItemData(414 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 14, SC2Race.ZERG, origin={"hots"}), - "Infest Broodlings (Kerrigan Tier 6)": ItemData(415 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 15, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - "Fury (Kerrigan Tier 6)": ItemData(416 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 16, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - "Ability Efficiency (Kerrigan Tier 6)": ItemData(417 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 17, SC2Race.ZERG, origin={"hots"}), - "Apocalypse (Kerrigan Tier 7)": ItemData(418 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 18, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - "Spawn Leviathan (Kerrigan Tier 7)": ItemData(419 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 19, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - "Drop-Pods (Kerrigan Tier 7)": ItemData(420 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 20, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + 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, "Ability", 6, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.filler), + ItemNames.Kerrigan_Improved_Overlords: ItemData(407 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 7, SC2Race.ZERG, origin={"hots"}), + ItemNames.Kerrigan_Automated_Extractors: ItemData(408 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 8, SC2Race.ZERG, origin={"hots"}), + ItemNames.Kerrigan_Wild_Mutation: ItemData(409 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 9, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + ItemNames.Kerrigan_Spawn_Banelings: ItemData(410 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 10, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + ItemNames.Kerrigan_Mend: ItemData(411 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 11, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + ItemNames.Kerrigan_Twin_Drones: ItemData(412 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 12, SC2Race.ZERG, origin={"hots"}), + ItemNames.Kerrigan_Malignant_Creep: ItemData(413 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 13, SC2Race.ZERG, origin={"hots"}), + ItemNames.Kerrigan_Vespene_Efficiency: ItemData(414 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 14, SC2Race.ZERG, origin={"hots"}), + ItemNames.Kerrigan_Infest_Broodlings: ItemData(415 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 15, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + ItemNames.Kerrigan_Fury: ItemData(416 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 16, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + ItemNames.Kerrigan_Ability_Efficiency: ItemData(417 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 17, SC2Race.ZERG, origin={"hots"}), + ItemNames.Kerrigan_Apocalypse: ItemData(418 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 18, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + ItemNames.Kerrigan_Spawn_Leviathan: ItemData(419 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 19, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + ItemNames.Kerrigan_Drop_Pods: ItemData(420 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 20, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), # Handled separately from other abilities - "Primal Form (Kerrigan)": ItemData(421 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 0, SC2Race.ZERG, origin={"hots"}), + ItemNames.Kerrigan_Primal_Form: ItemData(421 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 0, SC2Race.ZERG, origin={"hots"}), - "10 Kerrigan Levels": ItemData(500 + SC2HOTS_ITEM_ID_OFFSET, "Level", 10, SC2Race.ZERG, origin={"hots"}, quantity=0), - "9 Kerrigan Levels": ItemData(501 + SC2HOTS_ITEM_ID_OFFSET, "Level", 9, SC2Race.ZERG, origin={"hots"}, quantity=0), - "8 Kerrigan Levels": ItemData(502 + SC2HOTS_ITEM_ID_OFFSET, "Level", 8, SC2Race.ZERG, origin={"hots"}, quantity=0), - "7 Kerrigan Levels": ItemData(503 + SC2HOTS_ITEM_ID_OFFSET, "Level", 7, SC2Race.ZERG, origin={"hots"}, quantity=0), - "6 Kerrigan Levels": ItemData(504 + SC2HOTS_ITEM_ID_OFFSET, "Level", 6, SC2Race.ZERG, origin={"hots"}, quantity=0), - "5 Kerrigan Levels": ItemData(505 + SC2HOTS_ITEM_ID_OFFSET, "Level", 5, SC2Race.ZERG, origin={"hots"}, quantity=0), - "4 Kerrigan Levels": ItemData(506 + SC2HOTS_ITEM_ID_OFFSET, "Level", 4, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), - "3 Kerrigan Levels": ItemData(507 + SC2HOTS_ITEM_ID_OFFSET, "Level", 3, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), - "2 Kerrigan Levels": ItemData(508 + SC2HOTS_ITEM_ID_OFFSET, "Level", 2, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), - "1 Kerrigan Level": ItemData(509 + SC2HOTS_ITEM_ID_OFFSET, "Level", 1, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), - "14 Kerrigan Levels": ItemData(510 + SC2HOTS_ITEM_ID_OFFSET, "Level", 14, SC2Race.ZERG, origin={"hots"}, quantity=0), - "35 Kerrigan Levels": ItemData(511 + SC2HOTS_ITEM_ID_OFFSET, "Level", 35, SC2Race.ZERG, origin={"hots"}, quantity=0), - "70 Kerrigan Levels": ItemData(512 + SC2HOTS_ITEM_ID_OFFSET, "Level", 70, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Ten_Kerrigan_Levels: ItemData(500 + SC2HOTS_ITEM_ID_OFFSET, "Level", 10, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Nine_Kerrigan_Levels: ItemData(501 + SC2HOTS_ITEM_ID_OFFSET, "Level", 9, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Eight_Kerrigan_Levels: ItemData(502 + SC2HOTS_ITEM_ID_OFFSET, "Level", 8, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Seven_Kerrigan_Levels: ItemData(503 + SC2HOTS_ITEM_ID_OFFSET, "Level", 7, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Six_Kerrigan_Levels: ItemData(504 + SC2HOTS_ITEM_ID_OFFSET, "Level", 6, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Five_Kerrigan_Levels: ItemData(505 + SC2HOTS_ITEM_ID_OFFSET, "Level", 5, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Four_Kerrigan_Levels: ItemData(506 + SC2HOTS_ITEM_ID_OFFSET, "Level", 4, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), + ItemNames.Three_Kerrigan_Levels: ItemData(507 + SC2HOTS_ITEM_ID_OFFSET, "Level", 3, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), + ItemNames.Two_Kerrigan_Levels: ItemData(508 + SC2HOTS_ITEM_ID_OFFSET, "Level", 2, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), + ItemNames.One_Kerrigan_Level: ItemData(509 + SC2HOTS_ITEM_ID_OFFSET, "Level", 1, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), + ItemNames.Fourteen_Kerrigan_Levels: ItemData(510 + SC2HOTS_ITEM_ID_OFFSET, "Level", 14, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Thirty_Five_Kerrigan_Levels: ItemData(511 + SC2HOTS_ITEM_ID_OFFSET, "Level", 35, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Seventy_Kerrigan_Levels: ItemData(512 + SC2HOTS_ITEM_ID_OFFSET, "Level", 70, SC2Race.ZERG, origin={"hots"}, quantity=0), } def get_item_table(multiworld: MultiWorld, player: int): @@ -365,37 +365,37 @@ def get_item_table(multiworld: MultiWorld, player: int): basic_units = { SC2Race.TERRAN: { - 'Marine', - 'Marauder', - 'Goliath', - 'Hellion', - 'Vulture' + ItemNames.Marine, + ItemNames.Marauder, + ItemNames.Goliath, + ItemNames.Hellion, + ItemNames.Vulture, }, SC2Race.ZERG: { - 'Zergling', - 'Swarm Queen', - 'Roach', - 'Hydralisk' + ItemNames.Zergling, + ItemNames.Swarm_Queen, + ItemNames.Roach, + ItemNames.Hydralisk, }, # TODO Placeholder for Prophecy SC2Race.PROTOSS: { - 'Zealot', - 'Stalker' + ItemNames.Zealot, + ItemNames.Stalker, } } advanced_basic_units = { SC2Race.TERRAN: basic_units[SC2Race.TERRAN].union({ - 'Reaper', - 'Diamondback', - 'Viking' + ItemNames.Reaper, + ItemNames.Diamondback, + ItemNames.Viking, }), SC2Race.ZERG: basic_units[SC2Race.ZERG].union({ - 'Infestor', - 'Aberration' + ItemNames.Infestor, + ItemNames.Aberration, }), SC2Race.PROTOSS: basic_units[SC2Race.PROTOSS].union({ - 'Dark Templar', + ItemNames.Dark_Templar, }) } @@ -430,100 +430,100 @@ def get_basic_units(multiworld: MultiWorld, player: int, race: SC2Race) -> typin # TODO needs zerg items second_pass_placeable_items: typing.Tuple[str, ...] = ( # Buildings without upgrades - "Sensor Tower", - "Hive Mind Emulator", - "Psi Disrupter", - "Perdition Turret", + ItemNames.Sensor_Tower, + ItemNames.Hive_Mind_Emulator, + ItemNames.Psi_Disrupter, + ItemNames.Perdition_Turret, # General upgrades without any dependencies - "Advanced Construction (SCV)", - "Dual-Fusion Welders (SCV)", - "Fire-Suppression System (Building)", - "Orbital Command (Building)", - "Ultra-Capacitors", - "Vanadium Plating", - "Orbital Depots", - "Micro-Filtering", - "Automated Refinery", - "Command Center Reactor", - "Tech Reactor", - "Planetary Fortress", - "Cellular Reactor", - "Progressive Regenerative Bio-Steel", # Place only L1 + ItemNames.SCV_Advanced_Construction, + ItemNames.SCV_Dual_Fusion_Welders, + ItemNames.Building_Fire_Suppression_System, + ItemNames.Building_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.Planetary_Fortress, + ItemNames.Cellular_Reactor, + ItemNames.Progressive_Regenerative_Bio_Steel, # Place only L1 # Mercenaries - "War Pigs", - "Devil Dogs", - "Hammer Securities", - "Spartan Company", - "Siege Breakers", - "Hel's Angel", - "Dusk Wings", - "Jackson's Revenge" + ItemNames.War_Pigs, + ItemNames.Devil_Dogs, + ItemNames.Hammer_Securities, + ItemNames.Spartan_Company, + ItemNames.Siege_Breakers, + ItemNames.Hels_Angel, + ItemNames.Dusk_Wings, + ItemNames.Jacksons_Revenge, ) filler_items: typing.Tuple[str, ...] = ( - '+15 Starting Minerals', - '+15 Starting Vespene' + ItemNames.Starting_Minerals, + ItemNames.Starting_Vespene, ) # Defense rating table # Commented defense ratings are handled in LogicMixin defense_ratings = { - "Siege Tank": 5, + ItemNames.Siege_Tank: 5, # "Maelstrom Rounds": 2, - "Planetary Fortress": 3, + ItemNames.Planetary_Fortress: 3, # Bunker w/ Marine/Marauder: 3, - "Perdition Turret": 2, - "Missile Turret": 2, - "Vulture": 2, - "Liberator": 2, - "Widow Mine": 2 + ItemNames.Perdition_Turret: 2, + ItemNames.Missile_Turret: 2, + ItemNames.Vulture: 2, + ItemNames.Liberator: 2, + ItemNames.Widow_Mine: 2, # "Concealment (Widow Mine)": 1 } zerg_defense_ratings = { - "Perdition Turret": 2, + ItemNames.Perdition_Turret: 2, # Bunker w/ Firebat: 2, - "Hive Mind Emulator": 3, - "Psi Disruptor": 3 + ItemNames.Hive_Mind_Emulator: 3, + ItemNames.Psi_Disrupter: 3, } spider_mine_sources = { - "Vulture", - "Spider Mines (Reaper)", - "Spider Mines (Siege Tank)", - "Spider Mines (Raven)" + ItemNames.Vulture, + ItemNames.Reaper_Spider_Mines, + ItemNames.Siege_Tank_Spider_Mines, + ItemNames.Raven_Spider_Mines, } progressive_if_nco = { - "Progressive Stimpack (Marine)", - "Progressive Stimpack (Firebat)", - "Progressive Cross-Spectrum Dampeners (Banshee)", - "Progressive Regenerative Bio-Steel" + ItemNames.Marine_Progressive_Stimpack, + ItemNames.Firebat_Progressive_Stimpack, + ItemNames.Banshee_Progressive_Cross_Spectrum_Dampeners, + ItemNames.Progressive_Regenerative_Bio_Steel, } kerrigan_actives: typing.List[typing.Set[str]] = [ - {'Kinetic Blast (Kerrigan Tier 1)', 'Leaping Strike (Kerrigan Tier 1)'}, - {'Crushing Grip (Kerrigan Tier 2)', 'Psionic Shift (Kerrigan Tier 2)'}, + {ItemNames.Kerrigan_Kinetic_Blast, ItemNames.Kerrigan_Leaping_Strike}, + {ItemNames.Kerrigan_Crushing_Grip, ItemNames.Kerrigan_Psionic_Shift}, set(), - {'Wild Mutation (Kerrigan Tier 4)', 'Spawn Banelings (Kerrigan Tier 4)', 'Mend (Kerrigan Tier 4)'}, + {ItemNames.Kerrigan_Wild_Mutation, ItemNames.Kerrigan_Spawn_Banelings, ItemNames.Kerrigan_Mend}, set(), set(), - {'Apocalypse (Kerrigan Tier 7)', 'Spawn Leviathan (Kerrigan Tier 7)', 'Drop-Pods (Kerrigan Tier 7)'}, + {ItemNames.Kerrigan_Apocalypse, ItemNames.Kerrigan_Spawn_Leviathan, ItemNames.Kerrigan_Drop_Pods}, ] kerrigan_passives: typing.List[typing.Set[str]] = [ - {"Heroic Fortitude (Kerrigan Tier 1)"}, - {"Chain Reaction (Kerrigan Tier 2)"}, - {"Zergling Reconstitution (Kerrigan Tier 3)", "Improved Overlords (Kerrigan Tier 3)", "Automated Extractors (Kerrigan Tier 3)"}, + {ItemNames.Kerrigan_Heroic_Fortitude}, + {ItemNames.Kerrigan_Chain_Reaction}, + {ItemNames.Kerrigan_Zergling_Reconstitution, ItemNames.Kerrigan_Improved_Overlords, ItemNames.Kerrigan_Automated_Extractors}, set(), - {"Twin Drones (Kerrigan Tier 5)", "Malignant Creep (Kerrigan Tier 5)", "Vespene Efficiency (Kerrigan Tier 5)"}, - {"Infest Broodlings (Kerrigan Tier 6)", "Fury (Kerrigan Tier 6)", "Ability Efficiency (Kerrigan Tier 6)"}, + {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 = { - "Heroic Fortitude (Kerrigan Tier 1)", "Chain Reaction (Kerrigan Tier 2)", - "Infest Broodlings (Kerrigan Tier 6)", "Fury (Kerrigan Tier 6)", "Ability Efficiency (Kerrigan Tier 6)" + ItemNames.Kerrigan_Heroic_Fortitude, ItemNames.Kerrigan_Chain_Reaction, + ItemNames.Kerrigan_Infest_Broodlings, ItemNames.Kerrigan_Fury, ItemNames.Kerrigan_Ability_Efficiency, } # 'number' values of upgrades for upgrade bundle items @@ -551,34 +551,34 @@ def get_basic_units(multiworld: MultiWorld, player: int, race: SC2Race) -> typin # Names of upgrades to be included for different options upgrade_included_names = [ { # Individual Items - "Progressive Terran Infantry Weapon", - "Progressive Terran Infantry Armor", - "Progressive Terran Vehicle Weapon", - "Progressive Terran Vehicle Armor", - "Progressive Terran Ship Weapon", - "Progressive Terran Ship Armor", - "Progressive Zerg Melee Attack", - "Progressive Zerg Missile Attack", - "Progressive Zerg Ground Carapace", - "Progressive Zerg Flyer Attack", - "Progressive Zerg Flyer Carapace" + 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, }, { # Bundle Weapon And Armor - "Progressive Terran Weapon Upgrade", - "Progressive Terran Armor Upgrade", - "Progressive Zerg Weapon Upgrade", - "Progressive Zerg Armor Upgrade" + ItemNames.Progressive_Terran_Weapon_Upgrade, + ItemNames.Progressive_Terran_Armor_Upgrade, + ItemNames.Progressive_Zerg_Weapon_Upgrade, + ItemNames.Progressive_Zerg_Armor_Upgrade, }, { # Bundle Unit Class - "Progressive Terran Infantry Upgrade", - "Progressive Terran Vehicle Upgrade", - "Progressive Terran Starship Upgrade", - "Progressive Zerg Ground Upgrade", - "Progressive Zerg Flyer Upgrade" + 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, }, { # Bundle All - "Progressive Terran Weapon/Armor Upgrade", - "Progressive Zerg Weapon/Armor Upgrade" + ItemNames.Progressive_Terran_Weapon_Armor_Upgrade, + ItemNames.Progressive_Zerg_Weapon_Armor_Upgrade, } ] From ebda200237ba42f76fa3c69b1dd11c666a826083 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 12 Oct 2023 00:29:42 -0700 Subject: [PATCH 2/7] sc2: used variable item names in LogicMixin.py --- worlds/sc2/LogicMixin.py | 234 +++++++++++++++++++++++---------------- 1 file changed, 137 insertions(+), 97 deletions(-) diff --git a/worlds/sc2/LogicMixin.py b/worlds/sc2/LogicMixin.py index 50ef9a399a6c..c6dd60706ec4 100644 --- a/worlds/sc2/LogicMixin.py +++ b/worlds/sc2/LogicMixin.py @@ -3,9 +3,16 @@ from .Options import get_option_value, RequiredTactics, kerrigan_unit_available, AllInMap, GameDifficulty from .Items import get_basic_units, defense_ratings, zerg_defense_ratings, kerrigan_actives from .MissionTables import SC2Race - +from . import ItemNames class SC2Logic(LogicMixin): + # Note(phaneros): Uncomment these to make mypy happy; I don't know if it has runtime impact. + # Note(phaneros): They come from CollectionState in BaseClasses.py + # def has_group(self, item_name_group: str, player: int, count: int = 1) -> bool: ... + # def has(self, item: str, player: int, count: int = 1) -> bool: ... + # def has_all(self, items: set[str], player: int) -> bool: ... + # def has_any(self, items: set[str], player: int) -> bool: ... + # General def _sc2_cleared_missions(self, multiworld: MultiWorld, player: int, mission_count: int) -> bool: return self.has_group("Missions", player, mission_count) @@ -18,140 +25,162 @@ def _sc2wol_has_common_unit(self, multiworld: MultiWorld, player: int) -> bool: return self.has_any(get_basic_units(multiworld, player, SC2Race.TERRAN), player) def _sc2wol_has_air(self, multiworld: MultiWorld, player: int) -> bool: - return self.has_any({'Viking', 'Wraith', 'Banshee', 'Battlecruiser'}, player) or self._sc2_advanced_tactics(multiworld, player) \ - and self.has_any({'Hercules', 'Medivac'}, player) and self._sc2wol_has_common_unit(multiworld, player) + return (self.has_any({ItemNames.Viking, ItemNames.Wraith, ItemNames.Banshee, ItemNames.Battlecruiser}, player) or self._sc2_advanced_tactics(multiworld, player) + and self.has_any({ItemNames.Hercules, ItemNames.Medivac}, player) and self._sc2wol_has_common_unit(multiworld, player) + ) def _sc2wol_has_air_anti_air(self, multiworld: MultiWorld, player: int) -> bool: - return self.has('Viking', player) \ - or self.has_all({'Wraith', 'Advanced Laser Technology (Wraith)'}, player) \ - or self.has_all({'Battlecruiser', 'ATX Laser Battery (Battlecruiser)'}, player) \ - or self._sc2_advanced_tactics(multiworld, player) and self.has_any({'Wraith', 'Valkyrie', 'Battlecruiser'}, player) + return ( + self.has(ItemNames.Viking, player) + or self.has_all({ItemNames.Wraith, ItemNames.Wraith_Advanced_Laser_Technology}, player) + or self.has_all({ItemNames.Battlecruiser, ItemNames.Battlecruiser_ATX_Laser_Battery}, player) + or self._sc2_advanced_tactics(multiworld, player) and self.has_any({ItemNames.Wraith, ItemNames.Valkyrie, ItemNames.Battlecruiser}, player) + ) def _sc2wol_has_competent_ground_to_air(self, multiworld: MultiWorld, player: int) -> bool: - return self.has('Goliath', player) \ - or self.has('Marine', player) and self.has_any({'Medic', 'Medivac'}, player) \ - or self._sc2_advanced_tactics(multiworld, player) and self.has('Cyclone', player) + return ( + self.has(ItemNames.Goliath, player) + or self.has(ItemNames.Marine, player) and self.has_any({ItemNames.Medic, ItemNames.Medivac}, player) + or self._sc2_advanced_tactics(multiworld, player) and self.has(ItemNames.Cyclone, player) + ) def _sc2wol_has_competent_anti_air(self, multiworld: MultiWorld, player: int) -> bool: - return self._sc2wol_has_competent_ground_to_air(multiworld, player) \ - or self._sc2wol_has_air_anti_air(multiworld, player) + return ( + self._sc2wol_has_competent_ground_to_air(multiworld, player) + or self._sc2wol_has_air_anti_air(multiworld, player) + ) def _sc2wol_welcome_to_the_jungle_requirement(self, multiworld: MultiWorld, player: int) -> bool: return ( - self._sc2wol_has_common_unit(multiworld, player) - and self._sc2wol_has_competent_ground_to_air(multiworld, player) + self._sc2wol_has_common_unit(multiworld, player) + and self._sc2wol_has_competent_ground_to_air(multiworld, player) ) or ( - self._sc2_advanced_tactics(multiworld, player) - and self.has_any({'Marine', 'Vulture'}, player) - and self._sc2wol_has_air_anti_air(multiworld, player) + self._sc2_advanced_tactics(multiworld, player) + and self.has_any({ItemNames.Marine, ItemNames.Vulture}, player) + and self._sc2wol_has_air_anti_air(multiworld, player) ) def _sc2wol_has_anti_air(self, multiworld: MultiWorld, player: int) -> bool: - return self.has_any({'Missile Turret', 'Thor', 'War Pigs', 'Spartan Company', "Hel's Angel", 'Battlecruiser', 'Marine', 'Wraith', 'Valkyrie', 'Cyclone'}, player) \ - or self._sc2wol_has_competent_anti_air(multiworld, player) \ - or self._sc2_advanced_tactics(multiworld, player) and self.has_any({'Ghost', 'Spectre', 'Widow Mine', 'Liberator'}, player) + return ( + self.has_any({ + ItemNames.Missile_Turret, ItemNames.Thor, ItemNames.War_Pigs, ItemNames.Spartan_Company, + ItemNames.Hels_Angel, ItemNames.Battlecruiser, ItemNames.Marine, ItemNames.Wraith, + ItemNames.Valkyrie, ItemNames.Cyclone, + }, player) + or self._sc2wol_has_competent_anti_air(multiworld, player) + or self._sc2_advanced_tactics(multiworld, player) + and self.has_any({ItemNames.Ghost, ItemNames.Spectre, ItemNames.Widow_Mine, ItemNames.Liberator}, player) + ) - def _sc2wol_defense_rating(self, multiworld: MultiWorld, player: int, zerg_enemy: bool, air_enemy: bool = True) -> bool: + def _sc2wol_defense_rating(self, multiworld: MultiWorld, player: int, zerg_enemy: bool, air_enemy: bool = True) -> int: defense_score = sum((defense_ratings[item] for item in defense_ratings if self.has(item, player))) - if self.has_any({'Marine', 'Marauder'}, player) and self.has('Bunker', player): + if self.has_any({ItemNames.Marine, ItemNames.Marauder}, player) and self.has(ItemNames.Bunker, player): defense_score += 3 - if self.has_all({'Siege Tank', 'Maelstrom Rounds (Siege Tank)'}, player): + if self.has_all({ItemNames.Siege_Tank, ItemNames.Siege_Tank_Maelstrom_Rounds}, player): defense_score += 2 - if self.has_all({'Siege Tank', 'Graduating Range (Siege Tank)'}, player): + if self.has_all({ItemNames.Siege_Tank, ItemNames.Siege_Tank_Graduating_Range}, player): defense_score += 1 - if self.has_all({'Widow Mine', 'Concealment (Widow Mine)'}, player): + if self.has_all({ItemNames.Widow_Mine, ItemNames.Widow_Mine_Concealment}, player): defense_score += 1 if zerg_enemy: defense_score += sum((zerg_defense_ratings[item] for item in zerg_defense_ratings if self.has(item, player))) - if self.has('Firebat', player) and self.has('Bunker', player): + if self.has(ItemNames.Firebat, player) and self.has(ItemNames.Bunker, player): defense_score += 2 - if not air_enemy and self.has('Missile Turret', player): - defense_score -= defense_ratings['Missile Turret'] + if not air_enemy and self.has(ItemNames.Missile_Turret, player): + defense_score -= defense_ratings[ItemNames.Missile_Turret] # Advanced Tactics bumps defense rating requirements down by 2 if self._sc2_advanced_tactics(multiworld, player): defense_score += 2 return defense_score def _sc2wol_has_competent_comp(self, multiworld: MultiWorld, player: int) -> bool: - return \ - ( - ( - self.has_any({'Marine', 'Marauder'}, player) and self.has_any({'Medivac', 'Medic'}, player) - or self.has_any({'Thor', 'Banshee', 'Siege Tank'}, player) - or self.has_all({'Liberator', 'Raid Artillery (Liberator)'}, player) - ) and self._sc2wol_has_competent_anti_air(multiworld, player) - ) \ - or \ - ( - self.has('Battlecruiser', player) and self._sc2wol_has_common_unit(multiworld, player) - ) + return ( + ( + (self.has_any({ItemNames.Marine, ItemNames.Marauder}, player) + and self.has_any({ItemNames.Medivac, ItemNames.Medic}, player)) + or self.has_any({ItemNames.Thor, ItemNames.Banshee, ItemNames.Siege_Tank}, player) + or self.has_all({ItemNames.Liberator, ItemNames.Liberator_Raid_Artillery}, player) + ) + and self._sc2wol_has_competent_anti_air(multiworld, player) + ) or ( + self.has(ItemNames.Battlecruiser, player) and self._sc2wol_has_common_unit(multiworld, player) + ) def _sc2wol_has_train_killers(self, multiworld: MultiWorld, player: int) -> bool: return ( - self.has_any({'Siege Tank', 'Diamondback', 'Marauder', 'Cyclone'}, player) - or self._sc2_advanced_tactics(multiworld, player) - and ( - self.has_all({'Reaper', "G-4 Clusterbomb"}, player) - or self.has_all({'Spectre', 'Psionic Lash'}, player) - or self.has_any({'Vulture', 'Liberator'}, player) - ) + self.has_any({ItemNames.Siege_Tank, ItemNames.Diamondback, ItemNames.Marauder, ItemNames.Cyclone}, player) + or self._sc2_advanced_tactics(multiworld, player) + and ( + self.has_all({ItemNames.Reaper, ItemNames.Reaper_G4_Clusterbomb}, player) + or self.has_all({ItemNames.Spectre, ItemNames.Spectre_Psionic_Lash}, player) + or self.has_any({ItemNames.Vulture, ItemNames.Liberator}, player) + ) ) def _sc2wol_able_to_rescue(self, multiworld: MultiWorld, player: int) -> bool: - return self.has_any({'Medivac', 'Hercules', 'Raven', 'Viking'}, player) or self._sc2_advanced_tactics(multiworld, player) + return (self.has_any({ItemNames.Medivac, ItemNames.Hercules, ItemNames.Raven, ItemNames.Viking}, player) + or self._sc2_advanced_tactics(multiworld, player) + ) def _sc2wol_has_protoss_common_units(self, multiworld: MultiWorld, player: int) -> bool: - return self.has_any({'Zealot', 'Immortal', 'Stalker', 'Dark Templar'}, player) \ - or self._sc2_advanced_tactics(multiworld, player) and self.has('High Templar', player) + return (self.has_any({ItemNames.Zealot, ItemNames.Immortal, ItemNames.Stalker, ItemNames.Dark_Templar}, player) + or self._sc2_advanced_tactics(multiworld, player) and self.has(ItemNames.High_Templar, player) + ) def _sc2wol_has_protoss_medium_units(self, multiworld: MultiWorld, player: int) -> bool: - return self._sc2wol_has_protoss_common_units(multiworld, player) and \ - self.has_any({'Stalker', 'Void Ray', 'Carrier'}, player) \ - or self._sc2_advanced_tactics(multiworld, player) and self.has('Dark Templar', player) + return ( + self._sc2wol_has_protoss_common_units(multiworld, player) + and self.has_any({ItemNames.Stalker, ItemNames.Void_Ray, ItemNames.Carrier}, player) + or self._sc2_advanced_tactics(multiworld, player) + and self.has(ItemNames.Dark_Templar, player) + ) def _sc2wol_beats_protoss_deathball(self, multiworld: MultiWorld, player: int) -> bool: - return (self.has_any({'Banshee', 'Battlecruiser'}, player) or - self.has_all({'Liberator', 'Raid Artillery (Liberator)'}, player)) \ - and self._sc2wol_has_competent_anti_air(multiworld, player) or \ - self._sc2wol_has_competent_comp(multiworld, player) and self._sc2wol_has_air_anti_air(multiworld, player) + return ( + ( + self.has_any({ItemNames.Banshee, ItemNames.Battlecruiser}, player) + or self.has_all({ItemNames.Liberator, ItemNames.Liberator_Raid_Artillery}, player) + ) and self._sc2wol_has_competent_anti_air(multiworld, player) + or self._sc2wol_has_competent_comp(multiworld, player) and self._sc2wol_has_air_anti_air(multiworld, player) + ) def _sc2wol_has_mm_upgrade(self, multiworld: MultiWorld, player: int) -> bool: - return self.has_any({"Combat Shield (Marine)", "Stabilizer Medpacks (Medic)"}, player) + return self.has_any({ItemNames.Marine_Combat_Shield, ItemNames.Medic_Stabilizer_Medpacks}, player) def _sc2wol_survives_rip_field(self, multiworld: MultiWorld, player: int) -> bool: - return self.has("Battlecruiser", player) or \ + return self.has(ItemNames.Battlecruiser, player) or \ self._sc2wol_has_air(multiworld, player) and \ self._sc2wol_has_competent_anti_air(multiworld, player) and \ - self.has("Science Vessel", player) + self.has(ItemNames.Science_Vessel, player) def _sc2wol_has_nukes(self, multiworld: MultiWorld, player: int) -> bool: - return self._sc2_advanced_tactics(multiworld, player) and self.has_any({'Ghost', 'Spectre'}, player) + return self._sc2_advanced_tactics(multiworld, player) and self.has_any({ItemNames.Ghost, ItemNames.Spectre}, player) def _sc2wol_can_respond_to_colony_infestations(self, multiworld: MultiWorld, player: int) -> bool: - return self._sc2wol_has_common_unit(multiworld, player) \ - and self._sc2wol_has_competent_anti_air(multiworld, player) \ - and \ - ( - self._sc2wol_has_air_anti_air(multiworld, player) or - self.has_any({'Battlecruiser', 'Valkyrie'}), player - ) \ - and \ - self._sc2wol_defense_rating(multiworld, player, True) >= 3 + return ( + self._sc2wol_has_common_unit(multiworld, player) + and self._sc2wol_has_competent_anti_air(multiworld, player) + and ( + self._sc2wol_has_air_anti_air(multiworld, player) + or self.has_any({ItemNames.Battlecruiser, ItemNames.Valkyrie}, player) + ) + and self._sc2wol_defense_rating(multiworld, player, True) >= 3 + ) def _sc2wol_final_mission_requirements(self, multiworld: MultiWorld, player: int): - beats_kerrigan = self.has_any({'Marine', 'Banshee', 'Ghost'}, player) or self._sc2_advanced_tactics(multiworld, player) + beats_kerrigan = self.has_any({ItemNames.Marine, ItemNames.Banshee, ItemNames.Ghost}, player) or self._sc2_advanced_tactics(multiworld, player) if get_option_value(multiworld, player, 'all_in_map') == AllInMap.option_ground: # Ground defense_rating = self._sc2wol_defense_rating(multiworld, player, True, False) - if self.has_any({'Battlecruiser', 'Banshee'}, player): + if self.has_any({ItemNames.Battlecruiser, ItemNames.Banshee}, player): defense_rating += 3 return defense_rating >= 12 and beats_kerrigan else: # Air defense_rating = self._sc2wol_defense_rating(multiworld, player, True, True) return defense_rating >= 8 and beats_kerrigan \ - and self.has_any({'Viking', 'Battlecruiser', 'Valkyrie'}, player) \ - and self.has_any({'Hive Mind Emulator', 'Psi Disruptor', 'Missile Turret'}, player) + and self.has_any({ItemNames.Viking, ItemNames.Battlecruiser, ItemNames.Valkyrie}, player) \ + and self.has_any({ItemNames.Hive_Mind_Emulator, ItemNames.Psi_Disrupter, ItemNames.Missile_Turret}, player) def _sc2wol_cleared_missions(self, multiworld: MultiWorld, player: int, mission_count: int) -> bool: return self.has_group("WoL Missions", player, mission_count) @@ -161,34 +190,34 @@ def _sc2hots_has_common_unit(self, multiworld: MultiWorld, player: int) -> bool: return self.has_any(get_basic_units(multiworld, player, SC2Race.ZERG), player) def _sc2hots_has_good_antiair(self, multiworld: MultiWorld, player: int) -> bool: - return self.has_any({'Hydralisk', 'Mutalisk'}, player) or \ - self.has_all({'Swarm Host', 'Pressurized Glands (Swarm Host)'}, player) or \ - (self._sc2_advanced_tactics(multiworld, player) and self.has('Infestor', player)) + return self.has_any({ItemNames.Hydralisk, ItemNames.Mutalisk}, player) or \ + self.has_all({ItemNames.Swarm_Host, ItemNames.Swarm_Host_Pressurized_Glands}, player) or \ + (self._sc2_advanced_tactics(multiworld, player) and self.has(ItemNames.Infestor, player)) def _sc2hots_has_minimal_antiair(self, multiworld: MultiWorld, player: int) -> bool: return self._sc2hots_has_good_antiair(multiworld, player) or get_option_value(multiworld, player, 'kerriganless') in kerrigan_unit_available or \ - self.has('Swarm Queen', player) or (self._sc2_advanced_tactics(multiworld, player) and self.has('Spore Crawler', player)) + self.has(ItemNames.Swarm_Queen, player) or (self._sc2_advanced_tactics(multiworld, player) and self.has(ItemNames.Spore_Crawler, player)) def _sc2hots_has_brood_lord(self, multiworld: MultiWorld, player: int) -> bool: - return self.has_all({'Mutalisk', 'Brood Lord Strain (Mutalisk)'}, player) + return self.has_all({ItemNames.Mutalisk, ItemNames.Mutalisk_Brood_Lord_Strain}, player) def _sc2hots_has_viper(self, multiworld: MultiWorld, player: int) -> bool: - return self.has_all({'Mutalisk', 'Viper Strain (Mutalisk)'}, player) + return self.has_all({ItemNames.Mutalisk, ItemNames.Mutalisk_Viper_Strain}, player) def _sc2hots_has_impaler_or_lurker(self, multiworld: MultiWorld, player: int) -> bool: - return self.has('Hydralisk', player) and self.has_any({'Impaler Strain (Hydralisk)', 'Lurker Strain (Hydralisk)'}, player) + return self.has(ItemNames.Hydralisk, player) and self.has_any({ItemNames.Hydralisk_Impaler_Strain, ItemNames.Hydralisk_Lurker_Strain}, player) def _sc2hots_has_competent_comp(self, multiworld: MultiWorld, player: int) -> bool: advanced = self._sc2_advanced_tactics(multiworld, player) - core_unit = self.has_any({'Roach', 'Aberration', 'Zergling'}, player) - support_unit = self.has_any({'Swarm Queen', 'Hydralisk'}, player) \ + core_unit = self.has_any({ItemNames.Roach, ItemNames.Aberration, ItemNames.Zergling}, player) + support_unit = self.has_any({ItemNames.Swarm_Queen, ItemNames.Hydralisk}, player) \ or self._sc2hots_has_brood_lord(multiworld, player) \ - or advanced and (self.has('Infestor', player) or self._sc2hots_has_viper(multiworld, player)) + or advanced and (self.has(ItemNames.Infestor, player) or self._sc2hots_has_viper(multiworld, player)) if core_unit and support_unit: return True - vespene_unit = self.has_any({'Ultralisk', 'Aberration'}, player) \ + vespene_unit = self.has_any({ItemNames.Ultralisk, ItemNames.Aberration}, player) \ or advanced and self._sc2hots_has_viper(multiworld, player) - return vespene_unit and self.has_any({'Zergling', 'Swarm Queen'}, player) + return vespene_unit and self.has_any({ItemNames.Zergling, ItemNames.Swarm_Queen}, player) def _sc2hots_has_basic_comp(self, multiworld: MultiWorld, player: int) -> bool: if get_option_value(multiworld, player, 'game_difficulty') < GameDifficulty.option_brutal \ @@ -199,25 +228,36 @@ def _sc2hots_has_basic_comp(self, multiworld: MultiWorld, player: int) -> bool: return self._sc2hots_has_competent_comp(multiworld, player) def _sc2hots_can_spread_creep(self, multiworld: MultiWorld, player: int) -> bool: - return self._sc2_advanced_tactics(multiworld, player) or self.has('Swarm Queen', player) + return self._sc2_advanced_tactics(multiworld, player) or self.has(ItemNames.Swarm_Queen, player) def _sc2hots_has_competent_defense(self, multiworld: MultiWorld, player: int) -> bool: - return self._sc2hots_has_common_unit(multiworld, player) and \ - ((self.has('Swarm Host', player) or self._sc2hots_has_brood_lord(multiworld, player) or self._sc2hots_has_impaler_or_lurker(multiworld, player)) or \ - (self._sc2_advanced_tactics(multiworld, player) and (self._sc2hots_has_viper(multiworld, player) or self.has('Spine Crawler', player)))) + return ( + self._sc2hots_has_common_unit(multiworld, player) + and ( + ( + self.has(ItemNames.Swarm_Host, player) + or self._sc2hots_has_brood_lord(multiworld, player) + or self._sc2hots_has_impaler_or_lurker(multiworld, player) + ) or ( + self._sc2_advanced_tactics(multiworld, player) + and (self._sc2hots_has_viper(multiworld, player) + or self.has(ItemNames.Spine_Crawler, player)) + ) + ) + ) def _sc2hots_has_basic_kerrigan(self, multiworld: MultiWorld, player: int) -> bool: # One active ability that can be used to defeat enemies directly on Standard if not self._sc2_advanced_tactics(multiworld, player) and \ - not self.has_any({"Kinetic Blast (Kerrigan Tier 1)", "Leaping Strike (Kerrigan Tier 1)", - "Crushing Grip (Kerrigan Tier 2)", "Psionic Shift (Kerrigan Tier 2)", - "Spawn Banelings (Kerrigan Tier 4)"}, player): + not self.has_any({ItemNames.Kerrigan_Kinetic_Blast, ItemNames.Kerrigan_Leaping_Strike, + ItemNames.Kerrigan_Crushing_Grip, ItemNames.Kerrigan_Psionic_Shift, + ItemNames.Kerrigan_Spawn_Banelings}, player): return False # Two non-ultimate abilities count = 0 - for item in ("Kinetic Blast (Kerrigan Tier 1)", "Leaping Strike (Kerrigan Tier 1)", "Heroic Fortitude (Kerrigan Tier 1)", - "Chain Reaction (Kerrigan Tier 2)", "Crushing Grip (Kerrigan Tier 2)", "Psionic Shift (Kerrigan Tier 2)", - "Spawn Banelings (Kerrigan Tier 4)", "Infest Broodlings (Kerrigan Tier 6)", "Fury (Kerrigan Tier 6)"): + for item in (ItemNames.Kerrigan_Kinetic_Blast, ItemNames.Kerrigan_Leaping_Strike, ItemNames.Kerrigan_Heroic_Fortitude, + ItemNames.Kerrigan_Chain_Reaction, ItemNames.Kerrigan_Crushing_Grip, ItemNames.Kerrigan_Psionic_Shift, + ItemNames.Kerrigan_Spawn_Banelings, ItemNames.Kerrigan_Infest_Broodlings, ItemNames.Kerrigan_Fury): if self.has(item, player): count += 1 if count >= 2: @@ -232,5 +272,5 @@ def _sc2hots_has_two_kerrigan_actives(self, multiworld: MultiWorld, player: int) return count >= 2 def _sc2hots_has_low_tech(self, multiworld: MultiWorld, player: int) -> bool: - return self.has_any({'Zergling', 'Swarm Queen', 'Spine Crawler'}, player) \ + return self.has_any({ItemNames.Zergling, ItemNames.Swarm_Queen, ItemNames.Spine_Crawler}, player) \ or self._sc2hots_has_common_unit(multiworld, player) and self._sc2hots_has_basic_kerrigan(multiworld, player) From 5dca8a6ab1be4eef6acc246f5fbb38c34b6c0863 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 12 Oct 2023 01:00:42 -0700 Subject: [PATCH 3/7] sc2: used variable item names in PoolFilter.py --- worlds/sc2/ItemNames.py | 55 +++++++++++++++++++++--------------- worlds/sc2/PoolFilter.py | 60 ++++++++++++++++++++++------------------ 2 files changed, 66 insertions(+), 49 deletions(-) diff --git a/worlds/sc2/ItemNames.py b/worlds/sc2/ItemNames.py index 5a8a22f4d59f..043d691ddc8d 100644 --- a/worlds/sc2/ItemNames.py +++ b/worlds/sc2/ItemNames.py @@ -1,5 +1,8 @@ """ A complete collection of Starcraft 2 item names as strings. +Users of this data may make some assumptions about the structure of a name: +* The upgrade for a unit will end with the unit's name in parentheses +* Weapon / armor upgrades may may be grouped by a common prefix specified within this file """ # Terran Units @@ -37,18 +40,23 @@ Sensor_Tower = "Sensor Tower" # Terran Weapon / Armor Upgrades -Progressive_Terran_Infantry_Weapon = "Progressive Terran Infantry Weapon" -Progressive_Terran_Infantry_Armor = "Progressive Terran Infantry Armor" -Progressive_Terran_Vehicle_Weapon = "Progressive Terran Vehicle Weapon" -Progressive_Terran_Vehicle_Armor = "Progressive Terran Vehicle Armor" -Progressive_Terran_Ship_Weapon = "Progressive Terran Ship Weapon" -Progressive_Terran_Ship_Armor = "Progressive Terran Ship Armor" -Progressive_Terran_Weapon_Upgrade = "Progressive Terran Weapon Upgrade" -Progressive_Terran_Armor_Upgrade = "Progressive Terran Armor Upgrade" -Progressive_Terran_Infantry_Upgrade = "Progressive Terran Infantry Upgrade" -Progressive_Terran_Vehicle_Upgrade = "Progressive Terran Vehicle Upgrade" -Progressive_Terran_Ship_Upgrade = "Progressive Terran Ship Upgrade" -Progressive_Terran_Weapon_Armor_Upgrade = "Progressive Terran Weapon/Armor Upgrade" +terran_upgrade_prefix = "Progressive Terran" +terran_infantry_upgrade_prefix = f"{terran_upgrade_prefix} Infantry" +terran_vehicle_upgrade_prefix = f"{terran_upgrade_prefix} Vehicle" +terran_ship_upgrade_prefix = f"{terran_upgrade_prefix} Ship" + +Progressive_Terran_Infantry_Weapon = f"{terran_infantry_upgrade_prefix} Weapon" +Progressive_Terran_Infantry_Armor = f"{terran_infantry_upgrade_prefix} Armor" +Progressive_Terran_Vehicle_Weapon = f"{terran_vehicle_upgrade_prefix} Weapon" +Progressive_Terran_Vehicle_Armor = f"{terran_vehicle_upgrade_prefix} Armor" +Progressive_Terran_Ship_Weapon = f"{terran_ship_upgrade_prefix} Weapon" +Progressive_Terran_Ship_Armor = f"{terran_ship_upgrade_prefix} Armor" +Progressive_Terran_Weapon_Upgrade = f"{terran_upgrade_prefix} Weapon Upgrade" +Progressive_Terran_Armor_Upgrade = f"{terran_upgrade_prefix} Armor Upgrade" +Progressive_Terran_Infantry_Upgrade = f"{terran_infantry_upgrade_prefix} Upgrade" +Progressive_Terran_Vehicle_Upgrade = f"{terran_vehicle_upgrade_prefix} Upgrade" +Progressive_Terran_Ship_Upgrade = f"{terran_ship_upgrade_prefix} Upgrade" +Progressive_Terran_Weapon_Armor_Upgrade = f"{terran_upgrade_prefix} Weapon/Armor Upgrade" # Mercenaries War_Pigs = "War Pigs" @@ -238,16 +246,19 @@ Spine_Crawler = "Spine Crawler" # Zerg Weapon / Armor Upgrades -Progressive_Zerg_Melee_Attack = "Progressive Zerg Melee Attack" -Progressive_Zerg_Missile_Attack = "Progressive Zerg Missile Attack" -Progressive_Zerg_Ground_Carapace = "Progressive Zerg Ground Carapace" -Progressive_Zerg_Flyer_Attack = "Progressive Zerg Flyer Attack" -Progressive_Zerg_Flyer_Carapace = "Progressive Zerg Flyer Carapace" -Progressive_Zerg_Weapon_Upgrade = "Progressive Zerg Weapon Upgrade" -Progressive_Zerg_Armor_Upgrade = "Progressive Zerg Armor Upgrade" -Progressive_Zerg_Ground_Upgrade = "Progressive Zerg Ground Upgrade" -Progressive_Zerg_Flyer_Upgrade = "Progressive Zerg Flyer Upgrade" -Progressive_Zerg_Weapon_Armor_Upgrade = "Progressive Zerg Weapon/Armor Upgrade" +zerg_upgrade_prefix = "Progressive Zerg" +zerg_flyer_upgrade_prefix = f"{zerg_upgrade_prefix} Flyer" + +Progressive_Zerg_Melee_Attack = f"{zerg_upgrade_prefix} Melee Attack" +Progressive_Zerg_Missile_Attack = f"{zerg_upgrade_prefix} Missile Attack" +Progressive_Zerg_Ground_Carapace = f"{zerg_upgrade_prefix} Ground Carapace" +Progressive_Zerg_Flyer_Attack = f"{zerg_flyer_upgrade_prefix} Attack" +Progressive_Zerg_Flyer_Carapace = f"{zerg_flyer_upgrade_prefix} Carapace" +Progressive_Zerg_Weapon_Upgrade = f"{zerg_upgrade_prefix} Weapon Upgrade" +Progressive_Zerg_Armor_Upgrade = f"{zerg_upgrade_prefix} Armor Upgrade" +Progressive_Zerg_Ground_Upgrade = f"{zerg_upgrade_prefix} Ground Upgrade" +Progressive_Zerg_Flyer_Upgrade = f"{zerg_flyer_upgrade_prefix} Upgrade" +Progressive_Zerg_Weapon_Armor_Upgrade = f"{zerg_upgrade_prefix} Weapon/Armor Upgrade" # Zerg Unit Upgrades Zergling_Hardened_Carapace = "Hardened Carapace (Zergling)" diff --git a/worlds/sc2/PoolFilter.py b/worlds/sc2/PoolFilter.py index 42b8968972b8..3b7fc94b51b6 100644 --- a/worlds/sc2/PoolFilter.py +++ b/worlds/sc2/PoolFilter.py @@ -8,21 +8,25 @@ from .Options import get_option_value, MissionOrder, \ get_enabled_campaigns, get_disabled_campaigns, RequiredTactics, kerrigan_unit_available from .LogicMixin import SC2Logic +from . import ItemNames # Items with associated upgrades -UPGRADABLE_ITEMS = [ - # WoL - "Marine", "Medic", "Firebat", "Marauder", "Reaper", "Ghost", "Spectre", - "Hellion", "Vulture", "Goliath", "Diamondback", "Siege Tank", "Thor", "Predator", "Widow Mine", "Cyclone", - "Medivac", "Wraith", "Viking", "Banshee", "Battlecruiser", "Raven", "Science Vessel", "Liberator", "Valkyrie", - "Bunker", "Missile Turret", - # HotS - "Zergling", "Roach", "Hydralisk", "Baneling", "Mutalisk", "Swarm Host", "Ultralisk" -] - -BARRACKS_UNITS = {"Marine", "Medic", "Firebat", "Marauder", "Reaper", "Ghost", "Spectre"} -FACTORY_UNITS = {"Hellion", "Vulture", "Goliath", "Diamondback", "Siege Tank", "Thor", "Predator", "Widow Mine", "Cyclone"} -STARPORT_UNITS = {"Medivac", "Wraith", "Viking", "Banshee", "Battlecruiser", "Hercules", "Science Vessel", "Raven", "Liberator", "Valkyrie"} +UPGRADABLE_ITEMS = {item.parent_item for item in get_full_item_list().values()} + +BARRACKS_UNITS = { + ItemNames.Marine, ItemNames.Medic, ItemNames.Firebat, ItemNames.Marauder, + ItemNames.Reaper, ItemNames.Ghost, ItemNames.Spectre, +} +FACTORY_UNITS = { + ItemNames.Hellion, ItemNames.Vulture, ItemNames.Goliath, ItemNames.Diamondback, + ItemNames.Siege_Tank, ItemNames.Thor, ItemNames.Predator, ItemNames.Widow_Mine, + ItemNames.Cyclone, +} +STARPORT_UNITS = { + ItemNames.Medivac, ItemNames.Wraith, ItemNames.Viking, ItemNames.Banshee, + ItemNames.Battlecruiser, ItemNames.Hercules, ItemNames.Science_Vessel, ItemNames.Raven, + ItemNames.Liberator, ItemNames.Valkyrie, +} def filter_missions(multiworld: MultiWorld, player: int) -> Dict[MissionPools, List[SC2Mission]]: @@ -327,25 +331,27 @@ def attempt_removal(item: Item) -> bool: inventory = [item for item in inventory if not item.name.endswith("(Spider Mine)")] if not BARRACKS_UNITS & self.logical_inventory: inventory = [item for item in inventory if - not (item.name.startswith("Progressive Infantry") or item.name == "Orbital Strike")] + not (item.name.startswith(ItemNames.terran_infantry_upgrade_prefix) or item.name == ItemNames.Orbital_Strike)] if not FACTORY_UNITS & self.logical_inventory: - inventory = [item for item in inventory if not item.name.startswith("Progressive Vehicle")] + inventory = [item for item in inventory if not item.name.startswith(ItemNames.terran_vehicle_upgrade_prefix)] if not STARPORT_UNITS & self.logical_inventory: - inventory = [item for item in inventory if not item.name.startswith("Progressive Ship")] + inventory = [item for item in inventory if not item.name.startswith(ItemNames.terran_ship_upgrade_prefix)] # HotS # Baneling without sources => remove Baneling and upgrades - if "Baneling" in self.logical_inventory and\ - "Zergling" not in self.logical_inventory and\ - "Spawn Banelings (Kerrigan Tier 4)" not in self.logical_inventory: - inventory = [item for item in inventory if "Baneling" not in item.name] + if (ItemNames.Baneling in self.logical_inventory + and ItemNames.Zergling not in self.logical_inventory + and ItemNames.Kerrigan_Spawn_Banelings not in self.logical_inventory + ): + inventory = [item for item in inventory if ItemNames.Baneling not in item.name] # Spawn Banelings without Zergling => remove Baneling unit, keep upgrades - if "Baneling" in self.logical_inventory and\ - "Zergling" not in self.logical_inventory and\ - "Spawn Banelings (Kerrigan Tier 4)" in self.logical_inventory: - inventory = [item for item in inventory if item.name != "Baneling"] - if "Mutalisk" not in self.logical_inventory: - inventory = [item for item in inventory if not item.name.startswith("Progressive Zerg Flyer")] - locked_items = [item for item in locked_items if not item.name.startswith("Progressive Zerg Flyer")] + if (ItemNames.Baneling in self.logical_inventory + and ItemNames.Zergling not in self.logical_inventory + and ItemNames.Kerrigan_Spawn_Banelings in self.logical_inventory + ): + inventory = [item for item in inventory if item.name != ItemNames.Baneling] + if ItemNames.Mutalisk not in self.logical_inventory: + inventory = [item for item in inventory if not item.name.startswith(ItemNames.zerg_flyer_upgrade_prefix)] + locked_items = [item for item in locked_items if not item.name.startswith(ItemNames.zerg_flyer_upgrade_prefix)] # Cull finished, adding locked items back into inventory inventory += locked_items From 5221ea3594ca43179832d12e778b31bf4f8a5909 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 12 Oct 2023 01:14:34 -0700 Subject: [PATCH 4/7] sc2: updating kerrigan level item variable names per request --- worlds/sc2/ItemNames.py | 26 +++++++++++++------------- worlds/sc2/Items.py | 26 +++++++++++++------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/worlds/sc2/ItemNames.py b/worlds/sc2/ItemNames.py index 043d691ddc8d..7d1ff5c30d48 100644 --- a/worlds/sc2/ItemNames.py +++ b/worlds/sc2/ItemNames.py @@ -324,17 +324,17 @@ Kerrigan_Primal_Form = "Primal Form (Kerrigan)" # Kerrigan Levels -Ten_Kerrigan_Levels = "10 Kerrigan Levels" -Nine_Kerrigan_Levels = "9 Kerrigan Levels" -Eight_Kerrigan_Levels = "8 Kerrigan Levels" -Seven_Kerrigan_Levels = "7 Kerrigan Levels" -Six_Kerrigan_Levels = "6 Kerrigan Levels" -Five_Kerrigan_Levels = "5 Kerrigan Levels" -Four_Kerrigan_Levels = "4 Kerrigan Levels" -Three_Kerrigan_Levels = "3 Kerrigan Levels" -Two_Kerrigan_Levels = "2 Kerrigan Levels" -One_Kerrigan_Level = "1 Kerrigan Level" -Fourteen_Kerrigan_Levels = "14 Kerrigan Levels" -Thirty_Five_Kerrigan_Levels = "35 Kerrigan Levels" -Seventy_Kerrigan_Levels = "70 Kerrigan Levels" +Kerrigan_Levels_10 = "10 Kerrigan Levels" +Kerrigan_Levels_9 = "9 Kerrigan Levels" +Kerrigan_Levels_8 = "8 Kerrigan Levels" +Kerrigan_Levels_7 = "7 Kerrigan Levels" +Kerrigan_Levels_6 = "6 Kerrigan Levels" +Kerrigan_Levels_5 = "5 Kerrigan Levels" +Kerrigan_Levels_4 = "4 Kerrigan Levels" +Kerrigan_Levels_3 = "3 Kerrigan Levels" +Kerrigan_Levels_2 = "2 Kerrigan Levels" +Kerrigan_Levels_1 = "1 Kerrigan Level" +Kerrigan_Levels_14 = "14 Kerrigan Levels" +Kerrigan_Levels_35 = "35 Kerrigan Levels" +Kerrigan_Levels_70 = "70 Kerrigan Levels" diff --git a/worlds/sc2/Items.py b/worlds/sc2/Items.py index 55c25c6da18b..fb0411219e4d 100644 --- a/worlds/sc2/Items.py +++ b/worlds/sc2/Items.py @@ -345,19 +345,19 @@ def get_full_item_list(): # Handled separately from other abilities ItemNames.Kerrigan_Primal_Form: ItemData(421 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 0, SC2Race.ZERG, origin={"hots"}), - ItemNames.Ten_Kerrigan_Levels: ItemData(500 + SC2HOTS_ITEM_ID_OFFSET, "Level", 10, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Nine_Kerrigan_Levels: ItemData(501 + SC2HOTS_ITEM_ID_OFFSET, "Level", 9, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Eight_Kerrigan_Levels: ItemData(502 + SC2HOTS_ITEM_ID_OFFSET, "Level", 8, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Seven_Kerrigan_Levels: ItemData(503 + SC2HOTS_ITEM_ID_OFFSET, "Level", 7, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Six_Kerrigan_Levels: ItemData(504 + SC2HOTS_ITEM_ID_OFFSET, "Level", 6, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Five_Kerrigan_Levels: ItemData(505 + SC2HOTS_ITEM_ID_OFFSET, "Level", 5, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Four_Kerrigan_Levels: ItemData(506 + SC2HOTS_ITEM_ID_OFFSET, "Level", 4, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), - ItemNames.Three_Kerrigan_Levels: ItemData(507 + SC2HOTS_ITEM_ID_OFFSET, "Level", 3, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), - ItemNames.Two_Kerrigan_Levels: ItemData(508 + SC2HOTS_ITEM_ID_OFFSET, "Level", 2, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), - ItemNames.One_Kerrigan_Level: ItemData(509 + SC2HOTS_ITEM_ID_OFFSET, "Level", 1, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), - ItemNames.Fourteen_Kerrigan_Levels: ItemData(510 + SC2HOTS_ITEM_ID_OFFSET, "Level", 14, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Thirty_Five_Kerrigan_Levels: ItemData(511 + SC2HOTS_ITEM_ID_OFFSET, "Level", 35, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Seventy_Kerrigan_Levels: ItemData(512 + SC2HOTS_ITEM_ID_OFFSET, "Level", 70, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Kerrigan_Levels_10: ItemData(500 + SC2HOTS_ITEM_ID_OFFSET, "Level", 10, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Kerrigan_Levels_9: ItemData(501 + SC2HOTS_ITEM_ID_OFFSET, "Level", 9, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Kerrigan_Levels_8: ItemData(502 + SC2HOTS_ITEM_ID_OFFSET, "Level", 8, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Kerrigan_Levels_7: ItemData(503 + SC2HOTS_ITEM_ID_OFFSET, "Level", 7, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Kerrigan_Levels_6: ItemData(504 + SC2HOTS_ITEM_ID_OFFSET, "Level", 6, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Kerrigan_Levels_5: ItemData(505 + SC2HOTS_ITEM_ID_OFFSET, "Level", 5, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Kerrigan_Levels_4: ItemData(506 + SC2HOTS_ITEM_ID_OFFSET, "Level", 4, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), + ItemNames.Kerrigan_Levels_3: ItemData(507 + SC2HOTS_ITEM_ID_OFFSET, "Level", 3, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), + ItemNames.Kerrigan_Levels_2: ItemData(508 + SC2HOTS_ITEM_ID_OFFSET, "Level", 2, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), + ItemNames.Kerrigan_Levels_1: ItemData(509 + SC2HOTS_ITEM_ID_OFFSET, "Level", 1, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), + ItemNames.Kerrigan_Levels_14: ItemData(510 + SC2HOTS_ITEM_ID_OFFSET, "Level", 14, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Kerrigan_Levels_35: ItemData(511 + SC2HOTS_ITEM_ID_OFFSET, "Level", 35, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.Kerrigan_Levels_70: ItemData(512 + SC2HOTS_ITEM_ID_OFFSET, "Level", 70, SC2Race.ZERG, origin={"hots"}, quantity=0), } def get_item_table(multiworld: MultiWorld, player: int): From 0229c497656416c892cd0575391ccd7565e0cfcd Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 12 Oct 2023 01:38:19 -0700 Subject: [PATCH 5/7] sc2: Filtered none from UPGRADEABLE_ITEMS --- worlds/sc2/PoolFilter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/sc2/PoolFilter.py b/worlds/sc2/PoolFilter.py index 3b7fc94b51b6..6df5442b14b1 100644 --- a/worlds/sc2/PoolFilter.py +++ b/worlds/sc2/PoolFilter.py @@ -11,7 +11,7 @@ from . import ItemNames # Items with associated upgrades -UPGRADABLE_ITEMS = {item.parent_item for item in get_full_item_list().values()} +UPGRADABLE_ITEMS = {item.parent_item for item in get_full_item_list().values() if item.parent_item} BARRACKS_UNITS = { ItemNames.Marine, ItemNames.Medic, ItemNames.Firebat, ItemNames.Marauder, From 02eb1864ec76e76393998a350c50bbedf216a935 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 12 Oct 2023 18:03:52 -0700 Subject: [PATCH 6/7] sc2: Sorting kerrigan level item names; fixing some indentation --- worlds/sc2/ItemNames.py | 72 ++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/worlds/sc2/ItemNames.py b/worlds/sc2/ItemNames.py index 7d1ff5c30d48..3e6bec1066bf 100644 --- a/worlds/sc2/ItemNames.py +++ b/worlds/sc2/ItemNames.py @@ -35,9 +35,9 @@ Cyclone = "Cyclone" # Terran Buildings -Bunker = "Bunker" -Missile_Turret = "Missile Turret" -Sensor_Tower = "Sensor Tower" +Bunker = "Bunker" +Missile_Turret = "Missile Turret" +Sensor_Tower = "Sensor Tower" # Terran Weapon / Armor Upgrades terran_upgrade_prefix = "Progressive Terran" @@ -59,32 +59,32 @@ Progressive_Terran_Weapon_Armor_Upgrade = f"{terran_upgrade_prefix} Weapon/Armor Upgrade" # Mercenaries -War_Pigs = "War Pigs" -Devil_Dogs = "Devil Dogs" -Hammer_Securities = "Hammer Securities" -Spartan_Company = "Spartan Company" -Siege_Breakers = "Siege Breakers" -Hels_Angel = "Hel's Angel" -Dusk_Wings = "Dusk Wings" -Jacksons_Revenge = "Jackson's Revenge" +War_Pigs = "War Pigs" +Devil_Dogs = "Devil Dogs" +Hammer_Securities = "Hammer Securities" +Spartan_Company = "Spartan Company" +Siege_Breakers = "Siege Breakers" +Hels_Angel = "Hel's Angel" +Dusk_Wings = "Dusk Wings" +Jacksons_Revenge = "Jackson's Revenge" # Lab / Global -Ultra_Capacitors = "Ultra-Capacitors" -Vanadium_Plating = "Vanadium Plating" -Orbital_Depots = "Orbital Depots" -Micro_Filtering = "Micro-Filtering" -Automated_Refinery = "Automated Refinery" -Command_Center_Reactor = "Command Center Reactor" -Tech_Reactor = "Tech Reactor" -Orbital_Strike = "Orbital Strike" -Bunker_Shrike_Turret = "Shrike Turret (Bunker)" -Bunker_Fortified_Bunker = "Fortified Bunker (Bunker)" -Planetary_Fortress = "Planetary Fortress" -Perdition_Turret = "Perdition Turret" -Cellular_Reactor = "Cellular Reactor" -Progressive_Regenerative_Bio_Steel = "Progressive Regenerative Bio-Steel" -Hive_Mind_Emulator = "Hive Mind Emulator" -Psi_Disrupter = "Psi Disrupter" +Ultra_Capacitors = "Ultra-Capacitors" +Vanadium_Plating = "Vanadium Plating" +Orbital_Depots = "Orbital Depots" +Micro_Filtering = "Micro-Filtering" +Automated_Refinery = "Automated Refinery" +Command_Center_Reactor = "Command Center Reactor" +Tech_Reactor = "Tech Reactor" +Orbital_Strike = "Orbital Strike" +Bunker_Shrike_Turret = "Shrike Turret (Bunker)" +Bunker_Fortified_Bunker = "Fortified Bunker (Bunker)" +Planetary_Fortress = "Planetary Fortress" +Perdition_Turret = "Perdition Turret" +Cellular_Reactor = "Cellular Reactor" +Progressive_Regenerative_Bio_Steel = "Progressive Regenerative Bio-Steel" +Hive_Mind_Emulator = "Hive Mind Emulator" +Psi_Disrupter = "Psi Disrupter" # Terran Unit Upgrades Banshee_Hyperflight_Rotors = "Hyperflight Rotors (Banshee)" @@ -324,16 +324,16 @@ Kerrigan_Primal_Form = "Primal Form (Kerrigan)" # Kerrigan Levels -Kerrigan_Levels_10 = "10 Kerrigan Levels" -Kerrigan_Levels_9 = "9 Kerrigan Levels" -Kerrigan_Levels_8 = "8 Kerrigan Levels" -Kerrigan_Levels_7 = "7 Kerrigan Levels" -Kerrigan_Levels_6 = "6 Kerrigan Levels" -Kerrigan_Levels_5 = "5 Kerrigan Levels" -Kerrigan_Levels_4 = "4 Kerrigan Levels" -Kerrigan_Levels_3 = "3 Kerrigan Levels" -Kerrigan_Levels_2 = "2 Kerrigan Levels" Kerrigan_Levels_1 = "1 Kerrigan Level" +Kerrigan_Levels_2 = "2 Kerrigan Levels" +Kerrigan_Levels_3 = "3 Kerrigan Levels" +Kerrigan_Levels_4 = "4 Kerrigan Levels" +Kerrigan_Levels_5 = "5 Kerrigan Levels" +Kerrigan_Levels_6 = "6 Kerrigan Levels" +Kerrigan_Levels_7 = "7 Kerrigan Levels" +Kerrigan_Levels_8 = "8 Kerrigan Levels" +Kerrigan_Levels_9 = "9 Kerrigan Levels" +Kerrigan_Levels_10 = "10 Kerrigan Levels" Kerrigan_Levels_14 = "14 Kerrigan Levels" Kerrigan_Levels_35 = "35 Kerrigan Levels" Kerrigan_Levels_70 = "70 Kerrigan Levels" From 0fa545387693c2300491b893dd69b05ab0c2936f Mon Sep 17 00:00:00 2001 From: Matthew Date: Fri, 13 Oct 2023 23:08:20 -0700 Subject: [PATCH 7/7] sc2: Made item name variables UPPER_CASE --- worlds/sc2/ItemNames.py | 602 ++++++++++++++--------------- worlds/sc2/Items.py | 798 +++++++++++++++++++-------------------- worlds/sc2/LogicMixin.py | 136 +++---- worlds/sc2/PoolFilter.py | 44 +-- 4 files changed, 790 insertions(+), 790 deletions(-) diff --git a/worlds/sc2/ItemNames.py b/worlds/sc2/ItemNames.py index 3e6bec1066bf..34c3daa0144e 100644 --- a/worlds/sc2/ItemNames.py +++ b/worlds/sc2/ItemNames.py @@ -6,335 +6,335 @@ """ # Terran Units -Marine = "Marine" -Medic = "Medic" -Firebat = "Firebat" -Marauder = "Marauder" -Reaper = "Reaper" -Hellion = "Hellion" -Vulture = "Vulture" -Goliath = "Goliath" -Diamondback = "Diamondback" -Siege_Tank = "Siege Tank" -Medivac = "Medivac" -Wraith = "Wraith" -Viking = "Viking" -Banshee = "Banshee" -Battlecruiser = "Battlecruiser" -Ghost = "Ghost" -Spectre = "Spectre" -Thor = "Thor" -Raven = "Raven" -Science_Vessel = "Science Vessel" -Predator = "Predator" -Hercules = "Hercules" +MARINE = "Marine" +MEDIC = "Medic" +FIREBAT = "Firebat" +MARAUDER = "Marauder" +REAPER = "Reaper" +HELLION = "Hellion" +VULTURE = "Vulture" +GOLIATH = "Goliath" +DIAMONDBACK = "Diamondback" +SIEGE_TANK = "Siege Tank" +MEDIVAC = "Medivac" +WRAITH = "Wraith" +VIKING = "Viking" +BANSHEE = "Banshee" +BATTLECRUISER = "Battlecruiser" +GHOST = "Ghost" +SPECTRE = "Spectre" +THOR = "Thor" +RAVEN = "Raven" +SCIENCE_VESSEL = "Science Vessel" +PREDATOR = "Predator" +HERCULES = "Hercules" # Extended units -Liberator = "Liberator" -Valkyrie = "Valkyrie" -Widow_Mine = "Widow Mine" -Cyclone = "Cyclone" +LIBERATOR = "Liberator" +VALKYRIE = "Valkyrie" +WIDOW_MINE = "Widow Mine" +CYCLONE = "Cyclone" # Terran Buildings -Bunker = "Bunker" -Missile_Turret = "Missile Turret" -Sensor_Tower = "Sensor Tower" +BUNKER = "Bunker" +MISSILE_TURRET = "Missile Turret" +SENSOR_TOWER = "Sensor Tower" # Terran Weapon / Armor Upgrades -terran_upgrade_prefix = "Progressive Terran" -terran_infantry_upgrade_prefix = f"{terran_upgrade_prefix} Infantry" -terran_vehicle_upgrade_prefix = f"{terran_upgrade_prefix} Vehicle" -terran_ship_upgrade_prefix = f"{terran_upgrade_prefix} Ship" +TERRAN_UPGRADE_PREFIX = "Progressive Terran" +TERRAN_INFANTRY_UPGRADE_PREFIX = f"{TERRAN_UPGRADE_PREFIX} Infantry" +TERRAN_VEHICLE_UPGRADE_PREFIX = f"{TERRAN_UPGRADE_PREFIX} Vehicle" +TERRAN_SHIP_UPGRADE_PREFIX = f"{TERRAN_UPGRADE_PREFIX} Ship" -Progressive_Terran_Infantry_Weapon = f"{terran_infantry_upgrade_prefix} Weapon" -Progressive_Terran_Infantry_Armor = f"{terran_infantry_upgrade_prefix} Armor" -Progressive_Terran_Vehicle_Weapon = f"{terran_vehicle_upgrade_prefix} Weapon" -Progressive_Terran_Vehicle_Armor = f"{terran_vehicle_upgrade_prefix} Armor" -Progressive_Terran_Ship_Weapon = f"{terran_ship_upgrade_prefix} Weapon" -Progressive_Terran_Ship_Armor = f"{terran_ship_upgrade_prefix} Armor" -Progressive_Terran_Weapon_Upgrade = f"{terran_upgrade_prefix} Weapon Upgrade" -Progressive_Terran_Armor_Upgrade = f"{terran_upgrade_prefix} Armor Upgrade" -Progressive_Terran_Infantry_Upgrade = f"{terran_infantry_upgrade_prefix} Upgrade" -Progressive_Terran_Vehicle_Upgrade = f"{terran_vehicle_upgrade_prefix} Upgrade" -Progressive_Terran_Ship_Upgrade = f"{terran_ship_upgrade_prefix} Upgrade" -Progressive_Terran_Weapon_Armor_Upgrade = f"{terran_upgrade_prefix} Weapon/Armor Upgrade" +PROGRESSIVE_TERRAN_INFANTRY_WEAPON = f"{TERRAN_INFANTRY_UPGRADE_PREFIX} Weapon" +PROGRESSIVE_TERRAN_INFANTRY_ARMOR = f"{TERRAN_INFANTRY_UPGRADE_PREFIX} Armor" +PROGRESSIVE_TERRAN_VEHICLE_WEAPON = f"{TERRAN_VEHICLE_UPGRADE_PREFIX} Weapon" +PROGRESSIVE_TERRAN_VEHICLE_ARMOR = f"{TERRAN_VEHICLE_UPGRADE_PREFIX} Armor" +PROGRESSIVE_TERRAN_SHIP_WEAPON = f"{TERRAN_SHIP_UPGRADE_PREFIX} Weapon" +PROGRESSIVE_TERRAN_SHIP_ARMOR = f"{TERRAN_SHIP_UPGRADE_PREFIX} Armor" +PROGRESSIVE_TERRAN_WEAPON_UPGRADE = f"{TERRAN_UPGRADE_PREFIX} Weapon Upgrade" +PROGRESSIVE_TERRAN_ARMOR_UPGRADE = f"{TERRAN_UPGRADE_PREFIX} Armor Upgrade" +PROGRESSIVE_TERRAN_INFANTRY_UPGRADE = f"{TERRAN_INFANTRY_UPGRADE_PREFIX} Upgrade" +PROGRESSIVE_TERRAN_VEHICLE_UPGRADE = f"{TERRAN_VEHICLE_UPGRADE_PREFIX} Upgrade" +PROGRESSIVE_TERRAN_SHIP_UPGRADE = f"{TERRAN_SHIP_UPGRADE_PREFIX} Upgrade" +PROGRESSIVE_TERRAN_WEAPON_ARMOR_UPGRADE = f"{TERRAN_UPGRADE_PREFIX} Weapon/Armor Upgrade" # Mercenaries -War_Pigs = "War Pigs" -Devil_Dogs = "Devil Dogs" -Hammer_Securities = "Hammer Securities" -Spartan_Company = "Spartan Company" -Siege_Breakers = "Siege Breakers" -Hels_Angel = "Hel's Angel" -Dusk_Wings = "Dusk Wings" -Jacksons_Revenge = "Jackson's Revenge" +WAR_PIGS = "War Pigs" +DEVIL_DOGS = "Devil Dogs" +HAMMER_SECURITIES = "Hammer Securities" +SPARTAN_COMPANY = "Spartan Company" +SIEGE_BREAKERS = "Siege Breakers" +HELS_ANGEL = "Hel's Angel" +DUSK_WINGS = "Dusk Wings" +JACKSONS_REVENGE = "Jackson's Revenge" # Lab / Global -Ultra_Capacitors = "Ultra-Capacitors" -Vanadium_Plating = "Vanadium Plating" -Orbital_Depots = "Orbital Depots" -Micro_Filtering = "Micro-Filtering" -Automated_Refinery = "Automated Refinery" -Command_Center_Reactor = "Command Center Reactor" -Tech_Reactor = "Tech Reactor" -Orbital_Strike = "Orbital Strike" -Bunker_Shrike_Turret = "Shrike Turret (Bunker)" -Bunker_Fortified_Bunker = "Fortified Bunker (Bunker)" -Planetary_Fortress = "Planetary Fortress" -Perdition_Turret = "Perdition Turret" -Cellular_Reactor = "Cellular Reactor" -Progressive_Regenerative_Bio_Steel = "Progressive Regenerative Bio-Steel" -Hive_Mind_Emulator = "Hive Mind Emulator" -Psi_Disrupter = "Psi Disrupter" +ULTRA_CAPACITORS = "Ultra-Capacitors" +VANADIUM_PLATING = "Vanadium Plating" +ORBITAL_DEPOTS = "Orbital Depots" +MICRO_FILTERING = "Micro-Filtering" +AUTOMATED_REFINERY = "Automated Refinery" +COMMAND_CENTER_REACTOR = "Command Center Reactor" +TECH_REACTOR = "Tech Reactor" +ORBITAL_STRIKE = "Orbital Strike" +BUNKER_SHRIKE_TURRET = "Shrike Turret (Bunker)" +BUNKER_FORTIFIED_BUNKER = "Fortified Bunker (Bunker)" +PLANETARY_FORTRESS = "Planetary Fortress" +PERDITION_TURRET = "Perdition Turret" +CELLULAR_REACTOR = "Cellular Reactor" +PROGRESSIVE_REGENERATIVE_BIO_STEEL = "Progressive Regenerative Bio-Steel" +HIVE_MIND_EMULATOR = "Hive Mind Emulator" +PSI_DISRUPTER = "Psi Disrupter" # Terran Unit Upgrades -Banshee_Hyperflight_Rotors = "Hyperflight Rotors (Banshee)" -Banshee_Internal_Tech_Module = "Internal Tech Module (Banshee)" -Banshee_Laser_Targeting_System = "Laser Targeting System (Banshee)" -Banshee_Progressive_Cross_Spectrum_Dampeners = "Progressive Cross-Spectrum Dampeners (Banshee)" -Banshee_Shockwave_Missile_Battery = "Shockwave Missile Battery (Banshee)" -Battlecruiser_ATX_Laser_Battery = "ATX Laser Battery (Battlecruiser)" -Battlecruiser_Cloak = "Cloak (Battlecruiser)" -Battlecruiser_Defensive_Matrix = "Defensive Matrix (Battlecruiser)" -Battlecruiser_Internal_Tech_Module = "Internal Tech Module (Battlecruiser)" -Battlecruiser_Missile_Pods = "Missile Pods (Battlecruiser)" -Battlecruiser_Optimized_Logistics = "Optimized Logistics (Battlecruiser)" -Battlecruiser_Tactical_Jump = "Tactical Jump (Battlecruiser)" -Building_Fire_Suppression_System = "Fire-Suppression System (Building)" -Building_Orbital_Command = "Orbital Command (Building)" -Bunker_Neosteel_Bunker = "Neosteel Bunker (Bunker)" -Bunker_Projectile_Accelerator = "Projectile Accelerator (Bunker)" -Cyclone_Mag_Field_Accelerators = "Mag-Field Accelerators (Cyclone)" -Cyclone_Mag_Field_Launchers = "Mag-Field Launchers (Cyclone)" -Cyclone_Rapid_Fire_Launchers = "Rapid Fire Launchers (Cyclone)" -Cyclone_Targeting_Optics = "Targeting Optics (Cyclone)" -Diamondback_Burst_Capacitors = "Burst Capacitors (Diamondback)" -Diamondback_Hyperfluxor = "Hyperfluxor (Diamondback)" -Diamondback_Optimized_Logistics = "Optimized Logistics (Diamondback)" -Diamondback_Shaped_Hull = "Shaped Hull (Diamondback)" -Diamondback_Tri_Lithium_Power_Cell = "Tri-Lithium Power Cell (Diamondback)" -Firebat_Incinerator_Gauntlets = "Incinerator Gauntlets (Firebat)" -Firebat_Juggernaut_Plating = "Juggernaut Plating (Firebat)" -Firebat_Optimized_Logistics = "Optimized Logistics (Firebat)" -Firebat_Progressive_Stimpack = "Progressive Stimpack (Firebat)" -Ghost_Crius_Suit = "Crius Suit (Ghost)" -Ghost_EMP_Rounds = "EMP Rounds (Ghost)" -Ghost_Lockdown = "Lockdown (Ghost)" -Ghost_Ocular_Implants = "Ocular Implants (Ghost)" -Goliath_Ares_Class_Targeting_System = "Ares-Class Targeting System (Goliath)" -Goliath_Jump_Jets = "Jump Jets (Goliath)" -Goliath_Multi_Lock_Weapons_System = "Multi-Lock Weapons System (Goliath)" -Goliath_Optimized_Logistics = "Optimized Logistics (Goliath)" -Hellion_Hellbat_Aspect = "Hellbat Aspect (Hellion)" -Hellion_Jump_Jets = "Jump Jets (Hellion)" -Hellion_Optimized_Logistics = "Optimized Logistics (Hellion)" -Hellion_Progressive_Stimpack = "Progressive Stimpack (Hellion)" -Hellion_Smart_Servos = "Smart Servos (Hellion)" -Hellion_Thermite_Filaments = "Thermite Filaments (Hellion)" -Hellion_Twin_Linked_Flamethrower = "Twin-Linked Flamethrower (Hellion)" -Liberator_Advanced_Ballistics = "Advanced Ballistics (Liberator)" -Liberator_Cloak = "Cloak (Liberator)" -Liberator_Laser_Targeting_System = "Laser Targeting System (Liberator)" -Liberator_Optimized_Logistics = "Optimized Logistics (Liberator)" -Liberator_Raid_Artillery = "Raid Artillery (Liberator)" -Marauder_Concussive_Shells = "Concussive Shells (Marauder)" -Marauder_Internal_Tech_Module = "Internal Tech Module (Marauder)" -Marauder_Kinetic_Foam = "Kinetic Foam (Marauder)" -Marauder_Laser_Targeting_System = "Laser Targeting System (Marauder)" -Marauder_Magrail_Munitions = "Magrail Munitions (Marauder)" -Marauder_Progressive_Stimpack = "Progressive Stimpack (Marauder)" -Marine_Combat_Shield = "Combat Shield (Marine)" -Marine_Laser_Targeting_System = "Laser Targeting System (Marine)" -Marine_Magrail_Munitions = "Magrail Munitions (Marine)" -Marine_Optimized_Logistics = "Optimized Logistics (Marine)" -Marine_Progressive_Stimpack = "Progressive Stimpack (Marine)" -Medic_Advanced_Medic_Facilities = "Advanced Medic Facilities (Medic)" -Medic_Optical_Flare = "Optical Flare (Medic)" -Medic_Optimized_Logistics = "Optimized Logistics (Medic)" -Medic_Restoration = "Restoration (Medic)" -Medic_Stabilizer_Medpacks = "Stabilizer Medpacks (Medic)" -Medivac_Advanced_Healing_AI = "Advanced Healing AI (Medivac)" -Medivac_Afterburners = "Afterburners (Medivac)" -Medivac_Expanded_Hull = "Expanded Hull (Medivac)" -Medivac_Rapid_Deployment_Tube = "Rapid Deployment Tube (Medivac)" -Missile_Turret_Hellstorm_Batteries = "Hellstorm Batteries (Missile Turret)" -Missile_Turret_Titanium_Housing = "Titanium Housing (Missile Turret)" -Predator_Optimized_Logistics = "Optimized Logistics (Predator)" -Raven_Anti_Armor_Missile = "Anti-Armor Missile (Raven)" -Raven_Bio_Mechanical_Repair_Drone = "Bio Mechanical Repair Drone (Raven)" -Raven_Hunter_Seeker_Weapon = "Hunter-Seeker Weapon (Raven)" -Raven_Interference_Matrix = "Interference Matrix (Raven)" -Raven_Internal_Tech_Module = "Internal Tech Module (Raven)" -Raven_Railgun_Turret = "Railgun Turret (Raven)" -Raven_Spider_Mines = "Spider Mines (Raven)" -Reaper_Advanced_Cloaking_Field = "Advanced Cloaking Field (Reaper)" -Reaper_Combat_Drugs = "Combat Drugs (Reaper)" -Reaper_G4_Clusterbomb = "G-4 Clusterbomb (Reaper)" -Reaper_Laser_Targeting_System = "Laser Targeting System (Reaper)" -Reaper_Progressive_Stimpack = "Progressive Stimpack (Reaper)" -Reaper_Spider_Mines = "Spider Mines (Reaper)" -Reaper_U238_Rounds = "U-238 Rounds (Reaper)" -Science_Vessel_Defensive_Matrix = "Defensive Matrix (Science Vessel)" -Science_Vessel_EMP_Shockwave = "EMP Shockwave (Science Vessel)" -SCV_Advanced_Construction = "Advanced Construction (SCV)" -SCV_Dual_Fusion_Welders = "Dual-Fusion Welders (SCV)" -Siege_Tank_Advanced_Siege_Tech = "Advanced Siege Tech (Siege Tank)" -Siege_Tank_Graduating_Range = "Graduating Range (Siege Tank)" -Siege_Tank_Internal_Tech_Module = "Internal Tech Module (Siege Tank)" -Siege_Tank_Jump_Jets = "Jump Jets (Siege Tank)" -Siege_Tank_Laser_Targeting_System = "Laser Targeting System (Siege Tank)" -Siege_Tank_Maelstrom_Rounds = "Maelstrom Rounds (Siege Tank)" -Siege_Tank_Shaped_Blast = "Shaped Blast (Siege Tank)" -Siege_Tank_Smart_Servos = "Smart Servos (Siege Tank)" -Siege_Tank_Spider_Mines = "Spider Mines (Siege Tank)" -Spectre_Impaler_Rounds = "Impaler Rounds (Spectre)" -Spectre_Nyx_Class_Cloaking_Module = "Nyx-Class Cloaking Module (Spectre)" -Spectre_Psionic_Lash = "Psionic Lash (Spectre)" -Spider_Mine_Cerberus_Mine = "Cerberus Mine (Spider Mine)" -Spider_Mine_High_Explosive_Munition = "High Explosive Munition (Spider Mine)" -Thor_330mm_Barrage_Cannon = "330mm Barrage Cannon (Thor)" -Thor_Immortality_Protocol = "Immortality Protocol (Thor)" -Thor_Progressive_High_Impact_Payload = "Progressive High Impact Payload (Thor)" -Valkyrie_Afterburners = "Afterburners (Valkyrie)" -Valkyrie_Burst_Lasers = "Burst Lasers (Valkyrie)" -Valkyrie_Enhanced_Cluster_Launchers = "Enhanced Cluster Launchers (Valkyrie)" -Valkyrie_Shaped_Hull = "Shaped Hull (Valkyrie)" -Viking_Magrail_Munitions = "Magrail Munitions (Viking)" -Viking_Phobos_Class_Weapons_System = "Phobos-Class Weapons System (Viking)" -Viking_Ripwave_Missiles = "Ripwave Missiles (Viking)" -Viking_Smart_Servos = "Smart Servos (Viking)" -Vulture_Auto_Launchers = "Auto Launchers (Vulture)" -Vulture_Ion_Thrusters = "Ion Thrusters (Vulture)" -Vulture_Replenishable_Magazine = "Replenishable Magazine (Vulture)" -Widow_Mine_Black_Market_Launchers = "Black Market Launchers (Widow Mine)" -Widow_Mine_Concealment = "Concealment (Widow Mine)" -Widow_Mine_Drilling_Claws = "Drilling Claws (Widow Mine)" -Widow_Mine_Executioner_Missiles = "Executioner Missiles (Widow Mine)" -Wraith_Advanced_Laser_Technology = "Advanced Laser Technology (Wraith)" -Wraith_Displacement_Field = "Displacement Field (Wraith)" -Wraith_Tomahawk_Power_Cells = "Tomahawk Power Cells (Wraith)" +BANSHEE_HYPERFLIGHT_ROTORS = "Hyperflight Rotors (Banshee)" +BANSHEE_INTERNAL_TECH_MODULE = "Internal Tech Module (Banshee)" +BANSHEE_LASER_TARGETING_SYSTEM = "Laser Targeting System (Banshee)" +BANSHEE_PROGRESSIVE_CROSS_SPECTRUM_DAMPENERS = "Progressive Cross-Spectrum Dampeners (Banshee)" +BANSHEE_SHOCKWAVE_MISSILE_BATTERY = "Shockwave Missile Battery (Banshee)" +BATTLECRUISER_ATX_LASER_BATTERY = "ATX Laser Battery (Battlecruiser)" +BATTLECRUISER_CLOAK = "Cloak (Battlecruiser)" +BATTLECRUISER_DEFENSIVE_MATRIX = "Defensive Matrix (Battlecruiser)" +BATTLECRUISER_INTERNAL_TECH_MODULE = "Internal Tech Module (Battlecruiser)" +BATTLECRUISER_MISSILE_PODS = "Missile Pods (Battlecruiser)" +BATTLECRUISER_OPTIMIZED_LOGISTICS = "Optimized Logistics (Battlecruiser)" +BATTLECRUISER_TACTICAL_JUMP = "Tactical Jump (Battlecruiser)" +BUILDING_FIRE_SUPPRESSION_SYSTEM = "Fire-Suppression System (Building)" +BUILDING_ORBITAL_COMMAND = "Orbital Command (Building)" +BUNKER_NEOSTEEL_BUNKER = "Neosteel Bunker (Bunker)" +BUNKER_PROJECTILE_ACCELERATOR = "Projectile Accelerator (Bunker)" +CYCLONE_MAG_FIELD_ACCELERATORS = "Mag-Field Accelerators (Cyclone)" +CYCLONE_MAG_FIELD_LAUNCHERS = "Mag-Field Launchers (Cyclone)" +CYCLONE_RAPID_FIRE_LAUNCHERS = "Rapid Fire Launchers (Cyclone)" +CYCLONE_TARGETING_OPTICS = "Targeting Optics (Cyclone)" +DIAMONDBACK_BURST_CAPACITORS = "Burst Capacitors (Diamondback)" +DIAMONDBACK_HYPERFLUXOR = "Hyperfluxor (Diamondback)" +DIAMONDBACK_OPTIMIZED_LOGISTICS = "Optimized Logistics (Diamondback)" +DIAMONDBACK_SHAPED_HULL = "Shaped Hull (Diamondback)" +DIAMONDBACK_TRI_LITHIUM_POWER_CELL = "Tri-Lithium Power Cell (Diamondback)" +FIREBAT_INCINERATOR_GAUNTLETS = "Incinerator Gauntlets (Firebat)" +FIREBAT_JUGGERNAUT_PLATING = "Juggernaut Plating (Firebat)" +FIREBAT_OPTIMIZED_LOGISTICS = "Optimized Logistics (Firebat)" +FIREBAT_PROGRESSIVE_STIMPACK = "Progressive Stimpack (Firebat)" +GHOST_CRIUS_SUIT = "Crius Suit (Ghost)" +GHOST_EMP_ROUNDS = "EMP Rounds (Ghost)" +GHOST_LOCKDOWN = "Lockdown (Ghost)" +GHOST_OCULAR_IMPLANTS = "Ocular Implants (Ghost)" +GOLIATH_ARES_CLASS_TARGETING_SYSTEM = "Ares-Class Targeting System (Goliath)" +GOLIATH_JUMP_JETS = "Jump Jets (Goliath)" +GOLIATH_MULTI_LOCK_WEAPONS_SYSTEM = "Multi-Lock Weapons System (Goliath)" +GOLIATH_OPTIMIZED_LOGISTICS = "Optimized Logistics (Goliath)" +HELLION_HELLBAT_ASPECT = "Hellbat Aspect (Hellion)" +HELLION_JUMP_JETS = "Jump Jets (Hellion)" +HELLION_OPTIMIZED_LOGISTICS = "Optimized Logistics (Hellion)" +HELLION_PROGRESSIVE_STIMPACK = "Progressive Stimpack (Hellion)" +HELLION_SMART_SERVOS = "Smart Servos (Hellion)" +HELLION_THERMITE_FILAMENTS = "Thermite Filaments (Hellion)" +HELLION_TWIN_LINKED_FLAMETHROWER = "Twin-Linked Flamethrower (Hellion)" +LIBERATOR_ADVANCED_BALLISTICS = "Advanced Ballistics (Liberator)" +LIBERATOR_CLOAK = "Cloak (Liberator)" +LIBERATOR_LASER_TARGETING_SYSTEM = "Laser Targeting System (Liberator)" +LIBERATOR_OPTIMIZED_LOGISTICS = "Optimized Logistics (Liberator)" +LIBERATOR_RAID_ARTILLERY = "Raid Artillery (Liberator)" +MARAUDER_CONCUSSIVE_SHELLS = "Concussive Shells (Marauder)" +MARAUDER_INTERNAL_TECH_MODULE = "Internal Tech Module (Marauder)" +MARAUDER_KINETIC_FOAM = "Kinetic Foam (Marauder)" +MARAUDER_LASER_TARGETING_SYSTEM = "Laser Targeting System (Marauder)" +MARAUDER_MAGRAIL_MUNITIONS = "Magrail Munitions (Marauder)" +MARAUDER_PROGRESSIVE_STIMPACK = "Progressive Stimpack (Marauder)" +MARINE_COMBAT_SHIELD = "Combat Shield (Marine)" +MARINE_LASER_TARGETING_SYSTEM = "Laser Targeting System (Marine)" +MARINE_MAGRAIL_MUNITIONS = "Magrail Munitions (Marine)" +MARINE_OPTIMIZED_LOGISTICS = "Optimized Logistics (Marine)" +MARINE_PROGRESSIVE_STIMPACK = "Progressive Stimpack (Marine)" +MEDIC_ADVANCED_MEDIC_FACILITIES = "Advanced Medic Facilities (Medic)" +MEDIC_OPTICAL_FLARE = "Optical Flare (Medic)" +MEDIC_OPTIMIZED_LOGISTICS = "Optimized Logistics (Medic)" +MEDIC_RESTORATION = "Restoration (Medic)" +MEDIC_STABILIZER_MEDPACKS = "Stabilizer Medpacks (Medic)" +MEDIVAC_ADVANCED_HEALING_AI = "Advanced Healing AI (Medivac)" +MEDIVAC_AFTERBURNERS = "Afterburners (Medivac)" +MEDIVAC_EXPANDED_HULL = "Expanded Hull (Medivac)" +MEDIVAC_RAPID_DEPLOYMENT_TUBE = "Rapid Deployment Tube (Medivac)" +MISSILE_TURRET_HELLSTORM_BATTERIES = "Hellstorm Batteries (Missile Turret)" +MISSILE_TURRET_TITANIUM_HOUSING = "Titanium Housing (Missile Turret)" +PREDATOR_OPTIMIZED_LOGISTICS = "Optimized Logistics (Predator)" +RAVEN_ANTI_ARMOR_MISSILE = "Anti-Armor Missile (Raven)" +RAVEN_BIO_MECHANICAL_REPAIR_DRONE = "Bio Mechanical Repair Drone (Raven)" +RAVEN_HUNTER_SEEKER_WEAPON = "Hunter-Seeker Weapon (Raven)" +RAVEN_INTERFERENCE_MATRIX = "Interference Matrix (Raven)" +RAVEN_INTERNAL_TECH_MODULE = "Internal Tech Module (Raven)" +RAVEN_RAILGUN_TURRET = "Railgun Turret (Raven)" +RAVEN_SPIDER_MINES = "Spider Mines (Raven)" +REAPER_ADVANCED_CLOAKING_FIELD = "Advanced Cloaking Field (Reaper)" +REAPER_COMBAT_DRUGS = "Combat Drugs (Reaper)" +REAPER_G4_CLUSTERBOMB = "G-4 Clusterbomb (Reaper)" +REAPER_LASER_TARGETING_SYSTEM = "Laser Targeting System (Reaper)" +REAPER_PROGRESSIVE_STIMPACK = "Progressive Stimpack (Reaper)" +REAPER_SPIDER_MINES = "Spider Mines (Reaper)" +REAPER_U238_ROUNDS = "U-238 Rounds (Reaper)" +SCIENCE_VESSEL_DEFENSIVE_MATRIX = "Defensive Matrix (Science Vessel)" +SCIENCE_VESSEL_EMP_SHOCKWAVE = "EMP Shockwave (Science Vessel)" +SCV_ADVANCED_CONSTRUCTION = "Advanced Construction (SCV)" +SCV_DUAL_FUSION_WELDERS = "Dual-Fusion Welders (SCV)" +SIEGE_TANK_ADVANCED_SIEGE_TECH = "Advanced Siege Tech (Siege Tank)" +SIEGE_TANK_GRADUATING_RANGE = "Graduating Range (Siege Tank)" +SIEGE_TANK_INTERNAL_TECH_MODULE = "Internal Tech Module (Siege Tank)" +SIEGE_TANK_JUMP_JETS = "Jump Jets (Siege Tank)" +SIEGE_TANK_LASER_TARGETING_SYSTEM = "Laser Targeting System (Siege Tank)" +SIEGE_TANK_MAELSTROM_ROUNDS = "Maelstrom Rounds (Siege Tank)" +SIEGE_TANK_SHAPED_BLAST = "Shaped Blast (Siege Tank)" +SIEGE_TANK_SMART_SERVOS = "Smart Servos (Siege Tank)" +SIEGE_TANK_SPIDER_MINES = "Spider Mines (Siege Tank)" +SPECTRE_IMPALER_ROUNDS = "Impaler Rounds (Spectre)" +SPECTRE_NYX_CLASS_CLOAKING_MODULE = "Nyx-Class Cloaking Module (Spectre)" +SPECTRE_PSIONIC_LASH = "Psionic Lash (Spectre)" +SPIDER_MINE_CERBERUS_MINE = "Cerberus Mine (Spider Mine)" +SPIDER_MINE_HIGH_EXPLOSIVE_MUNITION = "High Explosive Munition (Spider Mine)" +THOR_330MM_BARRAGE_CANNON = "330mm Barrage Cannon (Thor)" +THOR_IMMORTALITY_PROTOCOL = "Immortality Protocol (Thor)" +THOR_PROGRESSIVE_HIGH_IMPACT_PAYLOAD = "Progressive High Impact Payload (Thor)" +VALKYRIE_AFTERBURNERS = "Afterburners (Valkyrie)" +VALKYRIE_BURST_LASERS = "Burst Lasers (Valkyrie)" +VALKYRIE_ENHANCED_CLUSTER_LAUNCHERS = "Enhanced Cluster Launchers (Valkyrie)" +VALKYRIE_SHAPED_HULL = "Shaped Hull (Valkyrie)" +VIKING_MAGRAIL_MUNITIONS = "Magrail Munitions (Viking)" +VIKING_PHOBOS_CLASS_WEAPONS_SYSTEM = "Phobos-Class Weapons System (Viking)" +VIKING_RIPWAVE_MISSILES = "Ripwave Missiles (Viking)" +VIKING_SMART_SERVOS = "Smart Servos (Viking)" +VULTURE_AUTO_LAUNCHERS = "Auto Launchers (Vulture)" +VULTURE_ION_THRUSTERS = "Ion Thrusters (Vulture)" +VULTURE_REPLENISHABLE_MAGAZINE = "Replenishable Magazine (Vulture)" +WIDOW_MINE_BLACK_MARKET_LAUNCHERS = "Black Market Launchers (Widow Mine)" +WIDOW_MINE_CONCEALMENT = "Concealment (Widow Mine)" +WIDOW_MINE_DRILLING_CLAWS = "Drilling Claws (Widow Mine)" +WIDOW_MINE_EXECUTIONER_MISSILES = "Executioner Missiles (Widow Mine)" +WRAITH_ADVANCED_LASER_TECHNOLOGY = "Advanced Laser Technology (Wraith)" +WRAITH_DISPLACEMENT_FIELD = "Displacement Field (Wraith)" +WRAITH_TOMAHAWK_POWER_CELLS = "Tomahawk Power Cells (Wraith)" # Protoss Units -Zealot = "Zealot" -Stalker = "Stalker" -High_Templar = "High Templar" -Dark_Templar = "Dark Templar" -Immortal = "Immortal" -Colossus = "Colossus" -Phoenix = "Phoenix" -Void_Ray = "Void Ray" -Carrier = "Carrier" +ZEALOT = "Zealot" +STALKER = "Stalker" +HIGH_TEMPLAR = "High Templar" +DARK_TEMPLAR = "Dark Templar" +IMMORTAL = "Immortal" +COLOSSUS = "Colossus" +PHOENIX = "Phoenix" +VOID_RAY = "Void Ray" +CARRIER = "Carrier" # Filler items -Starting_Minerals = "+15 Starting Minerals" -Starting_Vespene = "+15 Starting Vespene" -Starting_Supply = "+2 Starting Supply" -Nothing = "Nothing" +STARTING_MINERALS = "+15 Starting Minerals" +STARTING_VESPENE = "+15 Starting Vespene" +STARTING_SUPPLY = "+2 Starting Supply" +NOTHING = "Nothing" # Zerg Units -Zergling = "Zergling" -Swarm_Queen = "Swarm Queen" -Roach = "Roach" -Hydralisk = "Hydralisk" -Baneling = "Baneling" -Aberration = "Aberration" -Mutalisk = "Mutalisk" -Swarm_Host = "Swarm Host" -Infestor = "Infestor" -Ultralisk = "Ultralisk" -Spore_Crawler = "Spore Crawler" -Spine_Crawler = "Spine Crawler" +ZERGLING = "Zergling" +SWARM_QUEEN = "Swarm Queen" +ROACH = "Roach" +HYDRALISK = "Hydralisk" +BANELING = "Baneling" +ABERRATION = "Aberration" +MUTALISK = "Mutalisk" +SWARM_HOST = "Swarm Host" +INFESTOR = "Infestor" +ULTRALISK = "Ultralisk" +SPORE_CRAWLER = "Spore Crawler" +SPINE_CRAWLER = "Spine Crawler" # Zerg Weapon / Armor Upgrades -zerg_upgrade_prefix = "Progressive Zerg" -zerg_flyer_upgrade_prefix = f"{zerg_upgrade_prefix} Flyer" +ZERG_UPGRADE_PREFIX = "Progressive Zerg" +ZERG_FLYER_UPGRADE_PREFIX = f"{ZERG_UPGRADE_PREFIX} Flyer" -Progressive_Zerg_Melee_Attack = f"{zerg_upgrade_prefix} Melee Attack" -Progressive_Zerg_Missile_Attack = f"{zerg_upgrade_prefix} Missile Attack" -Progressive_Zerg_Ground_Carapace = f"{zerg_upgrade_prefix} Ground Carapace" -Progressive_Zerg_Flyer_Attack = f"{zerg_flyer_upgrade_prefix} Attack" -Progressive_Zerg_Flyer_Carapace = f"{zerg_flyer_upgrade_prefix} Carapace" -Progressive_Zerg_Weapon_Upgrade = f"{zerg_upgrade_prefix} Weapon Upgrade" -Progressive_Zerg_Armor_Upgrade = f"{zerg_upgrade_prefix} Armor Upgrade" -Progressive_Zerg_Ground_Upgrade = f"{zerg_upgrade_prefix} Ground Upgrade" -Progressive_Zerg_Flyer_Upgrade = f"{zerg_flyer_upgrade_prefix} Upgrade" -Progressive_Zerg_Weapon_Armor_Upgrade = f"{zerg_upgrade_prefix} Weapon/Armor Upgrade" +PROGRESSIVE_ZERG_MELEE_ATTACK = f"{ZERG_UPGRADE_PREFIX} Melee Attack" +PROGRESSIVE_ZERG_MISSILE_ATTACK = f"{ZERG_UPGRADE_PREFIX} Missile Attack" +PROGRESSIVE_ZERG_GROUND_CARAPACE = f"{ZERG_UPGRADE_PREFIX} Ground Carapace" +PROGRESSIVE_ZERG_FLYER_ATTACK = f"{ZERG_FLYER_UPGRADE_PREFIX} Attack" +PROGRESSIVE_ZERG_FLYER_CARAPACE = f"{ZERG_FLYER_UPGRADE_PREFIX} Carapace" +PROGRESSIVE_ZERG_WEAPON_UPGRADE = f"{ZERG_UPGRADE_PREFIX} Weapon Upgrade" +PROGRESSIVE_ZERG_ARMOR_UPGRADE = f"{ZERG_UPGRADE_PREFIX} Armor Upgrade" +PROGRESSIVE_ZERG_GROUND_UPGRADE = f"{ZERG_UPGRADE_PREFIX} Ground Upgrade" +PROGRESSIVE_ZERG_FLYER_UPGRADE = f"{ZERG_FLYER_UPGRADE_PREFIX} Upgrade" +PROGRESSIVE_ZERG_WEAPON_ARMOR_UPGRADE = f"{ZERG_UPGRADE_PREFIX} Weapon/Armor Upgrade" # Zerg Unit Upgrades -Zergling_Hardened_Carapace = "Hardened Carapace (Zergling)" -Zergling_Adrenal_Overload = "Adrenal Overload (Zergling)" -Zergling_Metabolic_Boost = "Metabolic Boost (Zergling)" -Roach_Hydriodic_Bile = "Hydriodic Bile (Roach)" -Roach_Adaptive_Plating = "Adaptive Plating (Roach)" -Roach_Tunneling_Claws = "Tunneling Claws (Roach)" -Hydralisk_Frenzy = "Frenzy (Hydralisk)" -Hydralisk_Ancillary_Carapace = "Ancillary Carapace (Hydralisk)" -Hydralisk_Grooved_Spines = "Grooved Spines (Hydralisk)" -Baneling_Corrosive_Acid = "Corrosive Acid (Baneling)" -Baneling_Rupture = "Rupture (Baneling)" -Baneling_Regenerative_Acid = "Regenerative Acid (Baneling)" -Mutalisk_Vicious_Glave = "Vicious Glave (Mutalisk)" -Mutalisk_Rapid_Regeneration = "Rapid Regeneration (Mutalisk)" -Mutalisk_Sundering_Glave = "Sundering Glave (Mutalisk)" -Swarm_Host_Burrow = "Burrow (Swarm Host)" -Swarm_Host_Rapid_Incubation = "Rapid Incubation (Swarm Host)" -Swarm_Host_Pressurized_Glands = "Pressurized Glands (Swarm Host)" -Ultralisk_Burrow_Charge = "Burrow Charge (Ultralisk)" -Ultralisk_Tissue_Animation = "Tissue Animation (Ultralisk)" -Ultralisk_Monarch_Blades = "Monarch Blades (Ultralisk)" +ZERGLING_HARDENED_CARAPACE = "Hardened Carapace (Zergling)" +ZERGLING_ADRENAL_OVERLOAD = "Adrenal Overload (Zergling)" +ZERGLING_METABOLIC_BOOST = "Metabolic Boost (Zergling)" +ROACH_HYDRIODIC_BILE = "Hydriodic Bile (Roach)" +ROACH_ADAPTIVE_PLATING = "Adaptive Plating (Roach)" +ROACH_TUNNELING_CLAWS = "Tunneling Claws (Roach)" +HYDRALISK_FRENZY = "Frenzy (Hydralisk)" +HYDRALISK_ANCILLARY_CARAPACE = "Ancillary Carapace (Hydralisk)" +HYDRALISK_GROOVED_SPINES = "Grooved Spines (Hydralisk)" +BANELING_CORROSIVE_ACID = "Corrosive Acid (Baneling)" +BANELING_RUPTURE = "Rupture (Baneling)" +BANELING_REGENERATIVE_ACID = "Regenerative Acid (Baneling)" +MUTALISK_VICIOUS_GLAVE = "Vicious Glave (Mutalisk)" +MUTALISK_RAPID_REGENERATION = "Rapid Regeneration (Mutalisk)" +MUTALISK_SUNDERING_GLAVE = "Sundering Glave (Mutalisk)" +SWARM_HOST_BURROW = "Burrow (Swarm Host)" +SWARM_HOST_RAPID_INCUBATION = "Rapid Incubation (Swarm Host)" +SWARM_HOST_PRESSURIZED_GLANDS = "Pressurized Glands (Swarm Host)" +ULTRALISK_BURROW_CHARGE = "Burrow Charge (Ultralisk)" +ULTRALISK_TISSUE_ANIMATION = "Tissue Animation (Ultralisk)" +ULTRALISK_MONARCH_BLADES = "Monarch Blades (Ultralisk)" # Zerg Strains -Zergling_Raptor_Strain = "Raptor Strain (Zergling)" -Zergling_Swarmling_Strain = "Swarmling Strain (Zergling)" -Roach_Vile_Strain = "Vile Strain (Roach)" -Roach_Corpser_Strain = "Corpser Strain (Roach)" -Hydralisk_Impaler_Strain = "Impaler Strain (Hydralisk)" -Hydralisk_Lurker_Strain = "Lurker Strain (Hydralisk)" -Baneling_Splitter_Strain = "Splitter Strain (Baneling)" -Baneling_Hunter_Strain = "Hunter Strain (Baneling)" -Mutalisk_Brood_Lord_Strain = "Brood Lord Strain (Mutalisk)" -Mutalisk_Viper_Strain = "Viper Strain (Mutalisk)" -Swarm_Host_Carrion_Strain = "Carrion Strain (Swarm Host)" -Swarm_Host_Creeper_Strain = "Creeper Strain (Swarm Host)" -Ultralisk_Noxious_Strain = "Noxious Strain (Ultralisk)" -Ultralisk_Torrasque_Strain = "Torrasque Strain (Ultralisk)" +ZERGLING_RAPTOR_STRAIN = "Raptor Strain (Zergling)" +ZERGLING_SWARMLING_STRAIN = "Swarmling Strain (Zergling)" +ROACH_VILE_STRAIN = "Vile Strain (Roach)" +ROACH_CORPSER_STRAIN = "Corpser Strain (Roach)" +HYDRALISK_IMPALER_STRAIN = "Impaler Strain (Hydralisk)" +HYDRALISK_LURKER_STRAIN = "Lurker Strain (Hydralisk)" +BANELING_SPLITTER_STRAIN = "Splitter Strain (Baneling)" +BANELING_HUNTER_STRAIN = "Hunter Strain (Baneling)" +MUTALISK_BROOD_LORD_STRAIN = "Brood Lord Strain (Mutalisk)" +MUTALISK_VIPER_STRAIN = "Viper Strain (Mutalisk)" +SWARM_HOST_CARRION_STRAIN = "Carrion Strain (Swarm Host)" +SWARM_HOST_CREEPER_STRAIN = "Creeper Strain (Swarm Host)" +ULTRALISK_NOXIOUS_STRAIN = "Noxious Strain (Ultralisk)" +ULTRALISK_TORRASQUE_STRAIN = "Torrasque Strain (Ultralisk)" # Kerrigan Upgrades -Kerrigan_Kinetic_Blast = "Kinetic Blast (Kerrigan Tier 1)" -Kerrigan_Heroic_Fortitude = "Heroic Fortitude (Kerrigan Tier 1)" -Kerrigan_Leaping_Strike = "Leaping Strike (Kerrigan Tier 1)" -Kerrigan_Crushing_Grip = "Crushing Grip (Kerrigan Tier 2)" -Kerrigan_Chain_Reaction = "Chain Reaction (Kerrigan Tier 2)" -Kerrigan_Psionic_Shift = "Psionic Shift (Kerrigan Tier 2)" -Kerrigan_Zergling_Reconstitution = "Zergling Reconstitution (Kerrigan Tier 3)" -Kerrigan_Improved_Overlords = "Improved Overlords (Kerrigan Tier 3)" -Kerrigan_Automated_Extractors = "Automated Extractors (Kerrigan Tier 3)" -Kerrigan_Wild_Mutation = "Wild Mutation (Kerrigan Tier 4)" -Kerrigan_Spawn_Banelings = "Spawn Banelings (Kerrigan Tier 4)" -Kerrigan_Mend = "Mend (Kerrigan Tier 4)" -Kerrigan_Twin_Drones = "Twin Drones (Kerrigan Tier 5)" -Kerrigan_Malignant_Creep = "Malignant Creep (Kerrigan Tier 5)" -Kerrigan_Vespene_Efficiency = "Vespene Efficiency (Kerrigan Tier 5)" -Kerrigan_Infest_Broodlings = "Infest Broodlings (Kerrigan Tier 6)" -Kerrigan_Fury = "Fury (Kerrigan Tier 6)" -Kerrigan_Ability_Efficiency = "Ability Efficiency (Kerrigan Tier 6)" -Kerrigan_Apocalypse = "Apocalypse (Kerrigan Tier 7)" -Kerrigan_Spawn_Leviathan = "Spawn Leviathan (Kerrigan Tier 7)" -Kerrigan_Drop_Pods = "Drop-Pods (Kerrigan Tier 7)" -Kerrigan_Primal_Form = "Primal Form (Kerrigan)" +KERRIGAN_KINETIC_BLAST = "Kinetic Blast (Kerrigan Tier 1)" +KERRIGAN_HEROIC_FORTITUDE = "Heroic Fortitude (Kerrigan Tier 1)" +KERRIGAN_LEAPING_STRIKE = "Leaping Strike (Kerrigan Tier 1)" +KERRIGAN_CRUSHING_GRIP = "Crushing Grip (Kerrigan Tier 2)" +KERRIGAN_CHAIN_REACTION = "Chain Reaction (Kerrigan Tier 2)" +KERRIGAN_PSIONIC_SHIFT = "Psionic Shift (Kerrigan Tier 2)" +KERRIGAN_ZERGLING_RECONSTITUTION = "Zergling Reconstitution (Kerrigan Tier 3)" +KERRIGAN_IMPROVED_OVERLORDS = "Improved Overlords (Kerrigan Tier 3)" +KERRIGAN_AUTOMATED_EXTRACTORS = "Automated Extractors (Kerrigan Tier 3)" +KERRIGAN_WILD_MUTATION = "Wild Mutation (Kerrigan Tier 4)" +KERRIGAN_SPAWN_BANELINGS = "Spawn Banelings (Kerrigan Tier 4)" +KERRIGAN_MEND = "Mend (Kerrigan Tier 4)" +KERRIGAN_TWIN_DRONES = "Twin Drones (Kerrigan Tier 5)" +KERRIGAN_MALIGNANT_CREEP = "Malignant Creep (Kerrigan Tier 5)" +KERRIGAN_VESPENE_EFFICIENCY = "Vespene Efficiency (Kerrigan Tier 5)" +KERRIGAN_INFEST_BROODLINGS = "Infest Broodlings (Kerrigan Tier 6)" +KERRIGAN_FURY = "Fury (Kerrigan Tier 6)" +KERRIGAN_ABILITY_EFFICIENCY = "Ability Efficiency (Kerrigan Tier 6)" +KERRIGAN_APOCALYPSE = "Apocalypse (Kerrigan Tier 7)" +KERRIGAN_SPAWN_LEVIATHAN = "Spawn Leviathan (Kerrigan Tier 7)" +KERRIGAN_DROP_PODS = "Drop-Pods (Kerrigan Tier 7)" +KERRIGAN_PRIMAL_FORM = "Primal Form (Kerrigan)" # Kerrigan Levels -Kerrigan_Levels_1 = "1 Kerrigan Level" -Kerrigan_Levels_2 = "2 Kerrigan Levels" -Kerrigan_Levels_3 = "3 Kerrigan Levels" -Kerrigan_Levels_4 = "4 Kerrigan Levels" -Kerrigan_Levels_5 = "5 Kerrigan Levels" -Kerrigan_Levels_6 = "6 Kerrigan Levels" -Kerrigan_Levels_7 = "7 Kerrigan Levels" -Kerrigan_Levels_8 = "8 Kerrigan Levels" -Kerrigan_Levels_9 = "9 Kerrigan Levels" -Kerrigan_Levels_10 = "10 Kerrigan Levels" -Kerrigan_Levels_14 = "14 Kerrigan Levels" -Kerrigan_Levels_35 = "35 Kerrigan Levels" -Kerrigan_Levels_70 = "70 Kerrigan Levels" +KERRIGAN_LEVELS_1 = "1 Kerrigan Level" +KERRIGAN_LEVELS_2 = "2 Kerrigan Levels" +KERRIGAN_LEVELS_3 = "3 Kerrigan Levels" +KERRIGAN_LEVELS_4 = "4 Kerrigan Levels" +KERRIGAN_LEVELS_5 = "5 Kerrigan Levels" +KERRIGAN_LEVELS_6 = "6 Kerrigan Levels" +KERRIGAN_LEVELS_7 = "7 Kerrigan Levels" +KERRIGAN_LEVELS_8 = "8 Kerrigan Levels" +KERRIGAN_LEVELS_9 = "9 Kerrigan Levels" +KERRIGAN_LEVELS_10 = "10 Kerrigan Levels" +KERRIGAN_LEVELS_14 = "14 Kerrigan Levels" +KERRIGAN_LEVELS_35 = "35 Kerrigan Levels" +KERRIGAN_LEVELS_70 = "70 Kerrigan Levels" diff --git a/worlds/sc2/Items.py b/worlds/sc2/Items.py index fb0411219e4d..d9dfd1987515 100644 --- a/worlds/sc2/Items.py +++ b/worlds/sc2/Items.py @@ -29,335 +29,335 @@ def get_full_item_list(): item_table = { # WoL - ItemNames.Marine: ItemData(0 + SC2WOL_ITEM_ID_OFFSET, "Unit", 0, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Medic: ItemData(1 + SC2WOL_ITEM_ID_OFFSET, "Unit", 1, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Firebat: ItemData(2 + SC2WOL_ITEM_ID_OFFSET, "Unit", 2, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Marauder: ItemData(3 + SC2WOL_ITEM_ID_OFFSET, "Unit", 3, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Reaper: ItemData(4 + SC2WOL_ITEM_ID_OFFSET, "Unit", 4, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Hellion: ItemData(5 + SC2WOL_ITEM_ID_OFFSET, "Unit", 5, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Vulture: ItemData(6 + SC2WOL_ITEM_ID_OFFSET, "Unit", 6, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Goliath: ItemData(7 + SC2WOL_ITEM_ID_OFFSET, "Unit", 7, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Diamondback: ItemData(8 + SC2WOL_ITEM_ID_OFFSET, "Unit", 8, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Siege_Tank: ItemData(9 + SC2WOL_ITEM_ID_OFFSET, "Unit", 9, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Medivac: ItemData(10 + SC2WOL_ITEM_ID_OFFSET, "Unit", 10, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Wraith: ItemData(11 + SC2WOL_ITEM_ID_OFFSET, "Unit", 11, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Viking: ItemData(12 + SC2WOL_ITEM_ID_OFFSET, "Unit", 12, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Banshee: ItemData(13 + SC2WOL_ITEM_ID_OFFSET, "Unit", 13, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Battlecruiser: ItemData(14 + SC2WOL_ITEM_ID_OFFSET, "Unit", 14, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Ghost: ItemData(15 + SC2WOL_ITEM_ID_OFFSET, "Unit", 15, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Spectre: ItemData(16 + SC2WOL_ITEM_ID_OFFSET, "Unit", 16, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Thor: ItemData(17 + SC2WOL_ITEM_ID_OFFSET, "Unit", 17, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.MARINE: ItemData(0 + SC2WOL_ITEM_ID_OFFSET, "Unit", 0, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.MEDIC: ItemData(1 + SC2WOL_ITEM_ID_OFFSET, "Unit", 1, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.FIREBAT: ItemData(2 + SC2WOL_ITEM_ID_OFFSET, "Unit", 2, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.MARAUDER: ItemData(3 + SC2WOL_ITEM_ID_OFFSET, "Unit", 3, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.REAPER: ItemData(4 + SC2WOL_ITEM_ID_OFFSET, "Unit", 4, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.HELLION: ItemData(5 + SC2WOL_ITEM_ID_OFFSET, "Unit", 5, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.VULTURE: ItemData(6 + SC2WOL_ITEM_ID_OFFSET, "Unit", 6, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.GOLIATH: ItemData(7 + SC2WOL_ITEM_ID_OFFSET, "Unit", 7, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.DIAMONDBACK: ItemData(8 + SC2WOL_ITEM_ID_OFFSET, "Unit", 8, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.SIEGE_TANK: ItemData(9 + SC2WOL_ITEM_ID_OFFSET, "Unit", 9, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.MEDIVAC: ItemData(10 + SC2WOL_ITEM_ID_OFFSET, "Unit", 10, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.WRAITH: ItemData(11 + SC2WOL_ITEM_ID_OFFSET, "Unit", 11, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.VIKING: ItemData(12 + SC2WOL_ITEM_ID_OFFSET, "Unit", 12, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.BANSHEE: ItemData(13 + SC2WOL_ITEM_ID_OFFSET, "Unit", 13, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.BATTLECRUISER: ItemData(14 + SC2WOL_ITEM_ID_OFFSET, "Unit", 14, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.GHOST: ItemData(15 + SC2WOL_ITEM_ID_OFFSET, "Unit", 15, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.SPECTRE: ItemData(16 + SC2WOL_ITEM_ID_OFFSET, "Unit", 16, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.THOR: ItemData(17 + SC2WOL_ITEM_ID_OFFSET, "Unit", 17, SC2Race.TERRAN, classification=ItemClassification.progression), # EE units - ItemNames.Liberator: ItemData(18 + SC2WOL_ITEM_ID_OFFSET, "Unit", 18, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"nco", "ext"}), - ItemNames.Valkyrie: ItemData(19 + SC2WOL_ITEM_ID_OFFSET, "Unit", 19, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"bw"}), - ItemNames.Widow_Mine: ItemData(20 + SC2WOL_ITEM_ID_OFFSET, "Unit", 20, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"ext"}), - ItemNames.Cyclone: ItemData(21 + SC2WOL_ITEM_ID_OFFSET, "Unit", 21, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"ext"}), + ItemNames.LIBERATOR: ItemData(18 + SC2WOL_ITEM_ID_OFFSET, "Unit", 18, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"nco", "ext"}), + ItemNames.VALKYRIE: ItemData(19 + SC2WOL_ITEM_ID_OFFSET, "Unit", 19, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"bw"}), + ItemNames.WIDOW_MINE: ItemData(20 + SC2WOL_ITEM_ID_OFFSET, "Unit", 20, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"ext"}), + ItemNames.CYCLONE: ItemData(21 + SC2WOL_ITEM_ID_OFFSET, "Unit", 21, SC2Race.TERRAN, classification=ItemClassification.progression, origin={"ext"}), # 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), - ItemNames.Progressive_Terran_Infantry_Armor: ItemData(102 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 2, SC2Race.TERRAN, quantity=3), - ItemNames.Progressive_Terran_Vehicle_Weapon: ItemData(103 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 4, SC2Race.TERRAN, quantity=3), - ItemNames.Progressive_Terran_Vehicle_Armor: ItemData(104 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 6, SC2Race.TERRAN, quantity=3), - ItemNames.Progressive_Terran_Ship_Weapon: ItemData(105 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 8, SC2Race.TERRAN, quantity=3), - ItemNames.Progressive_Terran_Ship_Armor: ItemData(106 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 10, SC2Race.TERRAN, quantity=3), + ItemNames.PROGRESSIVE_TERRAN_INFANTRY_WEAPON: ItemData(100 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 0, SC2Race.TERRAN, quantity=3), + ItemNames.PROGRESSIVE_TERRAN_INFANTRY_ARMOR: ItemData(102 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 2, SC2Race.TERRAN, quantity=3), + ItemNames.PROGRESSIVE_TERRAN_VEHICLE_WEAPON: ItemData(103 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 4, SC2Race.TERRAN, quantity=3), + ItemNames.PROGRESSIVE_TERRAN_VEHICLE_ARMOR: ItemData(104 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 6, SC2Race.TERRAN, quantity=3), + ItemNames.PROGRESSIVE_TERRAN_SHIP_WEAPON: ItemData(105 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 8, SC2Race.TERRAN, quantity=3), + ItemNames.PROGRESSIVE_TERRAN_SHIP_ARMOR: ItemData(106 + SC2WOL_ITEM_ID_OFFSET, "Upgrade", 10, SC2Race.TERRAN, quantity=3), # 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), - - ItemNames.Bunker_Projectile_Accelerator: ItemData(200 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 0, SC2Race.TERRAN, parent_item="Bunker"), - ItemNames.Bunker_Neosteel_Bunker: ItemData(201 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 1, SC2Race.TERRAN, parent_item="Bunker"), - ItemNames.Missile_Turret_Titanium_Housing: ItemData(202 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Missile Turret"), - ItemNames.Missile_Turret_Hellstorm_Batteries: ItemData(203 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 3, SC2Race.TERRAN, parent_item="Missile Turret"), - ItemNames.SCV_Advanced_Construction: ItemData(204 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 4, SC2Race.TERRAN), - ItemNames.SCV_Dual_Fusion_Welders: ItemData(205 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 5, SC2Race.TERRAN), - ItemNames.Building_Fire_Suppression_System: ItemData(206 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 6, SC2Race.TERRAN), - ItemNames.Building_Orbital_Command: ItemData(207 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 7, SC2Race.TERRAN), - ItemNames.Marine_Progressive_Stimpack: ItemData(208 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 0, SC2Race.TERRAN, parent_item="Marine", quantity=2), - ItemNames.Marine_Combat_Shield: ItemData(209 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 9, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Marine"), - ItemNames.Medic_Advanced_Medic_Facilities: ItemData(210 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 10, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic"), - ItemNames.Medic_Stabilizer_Medpacks: ItemData(211 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 11, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Medic"), - ItemNames.Firebat_Incinerator_Gauntlets: ItemData(212 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 12, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Firebat"), - ItemNames.Firebat_Juggernaut_Plating: ItemData(213 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 13, SC2Race.TERRAN, parent_item="Firebat"), - ItemNames.Marauder_Concussive_Shells: ItemData(214 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 14, SC2Race.TERRAN, parent_item="Marauder"), - ItemNames.Marauder_Kinetic_Foam: ItemData(215 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 15, SC2Race.TERRAN, parent_item="Marauder"), - ItemNames.Reaper_U238_Rounds: ItemData(216 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 16, SC2Race.TERRAN, parent_item="Reaper"), - ItemNames.Reaper_G4_Clusterbomb: ItemData(217 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 17, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Reaper"), + 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), + + ItemNames.BUNKER_PROJECTILE_ACCELERATOR: ItemData(200 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 0, SC2Race.TERRAN, parent_item="Bunker"), + ItemNames.BUNKER_NEOSTEEL_BUNKER: ItemData(201 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 1, SC2Race.TERRAN, parent_item="Bunker"), + ItemNames.MISSILE_TURRET_TITANIUM_HOUSING: ItemData(202 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Missile Turret"), + ItemNames.MISSILE_TURRET_HELLSTORM_BATTERIES: ItemData(203 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 3, SC2Race.TERRAN, parent_item="Missile Turret"), + ItemNames.SCV_ADVANCED_CONSTRUCTION: ItemData(204 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 4, SC2Race.TERRAN), + ItemNames.SCV_DUAL_FUSION_WELDERS: ItemData(205 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 5, SC2Race.TERRAN), + ItemNames.BUILDING_FIRE_SUPPRESSION_SYSTEM: ItemData(206 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 6, SC2Race.TERRAN), + ItemNames.BUILDING_ORBITAL_COMMAND: ItemData(207 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 7, SC2Race.TERRAN), + ItemNames.MARINE_PROGRESSIVE_STIMPACK: ItemData(208 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 0, SC2Race.TERRAN, parent_item="Marine", quantity=2), + ItemNames.MARINE_COMBAT_SHIELD: ItemData(209 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 9, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Marine"), + ItemNames.MEDIC_ADVANCED_MEDIC_FACILITIES: ItemData(210 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 10, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic"), + ItemNames.MEDIC_STABILIZER_MEDPACKS: ItemData(211 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 11, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Medic"), + ItemNames.FIREBAT_INCINERATOR_GAUNTLETS: ItemData(212 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 12, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Firebat"), + ItemNames.FIREBAT_JUGGERNAUT_PLATING: ItemData(213 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 13, SC2Race.TERRAN, parent_item="Firebat"), + ItemNames.MARAUDER_CONCUSSIVE_SHELLS: ItemData(214 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 14, SC2Race.TERRAN, parent_item="Marauder"), + ItemNames.MARAUDER_KINETIC_FOAM: ItemData(215 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 15, SC2Race.TERRAN, parent_item="Marauder"), + ItemNames.REAPER_U238_ROUNDS: ItemData(216 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 16, SC2Race.TERRAN, parent_item="Reaper"), + ItemNames.REAPER_G4_CLUSTERBOMB: ItemData(217 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 17, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Reaper"), # Items from EE - ItemNames.Cyclone_Mag_Field_Accelerators: ItemData(218 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 18, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), - ItemNames.Cyclone_Mag_Field_Launchers: ItemData(219 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 19, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), + ItemNames.CYCLONE_MAG_FIELD_ACCELERATORS: ItemData(218 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 18, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), + ItemNames.CYCLONE_MAG_FIELD_LAUNCHERS: ItemData(219 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 19, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), # Items from new mod - ItemNames.Marine_Laser_Targeting_System: ItemData(220 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 8, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marine", origin={"nco"}), # Freed slot from Stimpack - ItemNames.Marine_Magrail_Munitions: ItemData(221 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 20, SC2Race.TERRAN, parent_item="Marine", origin={"nco"}), - ItemNames.Marine_Optimized_Logistics: ItemData(222 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 21, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marine", origin={"nco"}), - ItemNames.Medic_Restoration: ItemData(223 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 22, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic", origin={"bw"}), - ItemNames.Medic_Optical_Flare: ItemData(224 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 23, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic", origin={"bw"}), - ItemNames.Medic_Optimized_Logistics: ItemData(225 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic", origin={"bw"}), - ItemNames.Firebat_Progressive_Stimpack: ItemData(226 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 6, SC2Race.TERRAN, parent_item="Firebat", quantity=2, origin={"bw"}), - ItemNames.Firebat_Optimized_Logistics: ItemData(227 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 25, SC2Race.TERRAN, parent_item="Firebat", origin={"bw"}), - ItemNames.Marauder_Progressive_Stimpack: ItemData(228 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 8, SC2Race.TERRAN, parent_item="Marauder", quantity=2, origin={"nco"}), - ItemNames.Marauder_Laser_Targeting_System: ItemData(229 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 26, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marauder", origin={"nco"}), - ItemNames.Marauder_Magrail_Munitions: ItemData(230 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 27, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marauder", origin={"nco"}), - ItemNames.Marauder_Internal_Tech_Module: ItemData(231 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 28, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marauder", origin={"nco"}), + ItemNames.MARINE_LASER_TARGETING_SYSTEM: ItemData(220 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 8, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marine", origin={"nco"}), # Freed slot from Stimpack + ItemNames.MARINE_MAGRAIL_MUNITIONS: ItemData(221 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 20, SC2Race.TERRAN, parent_item="Marine", origin={"nco"}), + ItemNames.MARINE_OPTIMIZED_LOGISTICS: ItemData(222 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 21, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marine", origin={"nco"}), + ItemNames.MEDIC_RESTORATION: ItemData(223 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 22, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic", origin={"bw"}), + ItemNames.MEDIC_OPTICAL_FLARE: ItemData(224 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 23, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic", origin={"bw"}), + ItemNames.MEDIC_OPTIMIZED_LOGISTICS: ItemData(225 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medic", origin={"bw"}), + ItemNames.FIREBAT_PROGRESSIVE_STIMPACK: ItemData(226 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 6, SC2Race.TERRAN, parent_item="Firebat", quantity=2, origin={"bw"}), + ItemNames.FIREBAT_OPTIMIZED_LOGISTICS: ItemData(227 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 25, SC2Race.TERRAN, parent_item="Firebat", origin={"bw"}), + ItemNames.MARAUDER_PROGRESSIVE_STIMPACK: ItemData(228 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 8, SC2Race.TERRAN, parent_item="Marauder", quantity=2, origin={"nco"}), + ItemNames.MARAUDER_LASER_TARGETING_SYSTEM: ItemData(229 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 26, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marauder", origin={"nco"}), + ItemNames.MARAUDER_MAGRAIL_MUNITIONS: ItemData(230 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 27, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marauder", origin={"nco"}), + ItemNames.MARAUDER_INTERNAL_TECH_MODULE: ItemData(231 + SC2WOL_ITEM_ID_OFFSET, "Armory 1", 28, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Marauder", origin={"nco"}), # Items from new mod - ItemNames.Reaper_Progressive_Stimpack: ItemData(250 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 10, SC2Race.TERRAN, parent_item="Reaper", quantity=2, origin={"nco"}), - ItemNames.Reaper_Laser_Targeting_System: ItemData(251 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 0, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Reaper", origin={"nco"}), - ItemNames.Reaper_Advanced_Cloaking_Field: ItemData(252 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 1, SC2Race.TERRAN, parent_item="Reaper", origin={"nco"}), - ItemNames.Reaper_Spider_Mines: ItemData(253 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Reaper", origin={"nco"}), - ItemNames.Reaper_Combat_Drugs: ItemData(254 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 3, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Reaper", origin={"ext"}), - ItemNames.Hellion_Hellbat_Aspect: ItemData(255 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 4, SC2Race.TERRAN, parent_item="Hellion", origin={"nco"}), - ItemNames.Hellion_Smart_Servos: ItemData(256 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 5, SC2Race.TERRAN, parent_item="Hellion", origin={"nco"}), - ItemNames.Hellion_Optimized_Logistics: ItemData(257 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 6, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Hellion", origin={"nco"}), - ItemNames.Hellion_Jump_Jets: ItemData(258 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 7, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Hellion", origin={"nco"}), - ItemNames.Hellion_Progressive_Stimpack: ItemData(259 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 12, SC2Race.TERRAN, parent_item="Hellion", quantity=2, origin={"nco"}), - ItemNames.Vulture_Ion_Thrusters: ItemData(260 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 8, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Vulture", origin={"bw"}), - ItemNames.Vulture_Auto_Launchers: ItemData(261 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 9, SC2Race.TERRAN, parent_item="Vulture", origin={"bw"}), - ItemNames.Spider_Mine_High_Explosive_Munition: ItemData(262 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 10, SC2Race.TERRAN, origin={"bw"}), - ItemNames.Goliath_Jump_Jets: ItemData(263 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 11, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Goliath", origin={"nco"}), - ItemNames.Goliath_Optimized_Logistics: ItemData(264 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 12, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Goliath", origin={"nco"}), - ItemNames.Diamondback_Hyperfluxor: ItemData(265 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 13, SC2Race.TERRAN, parent_item="Diamondback", origin={"ext"}), - ItemNames.Diamondback_Burst_Capacitors: ItemData(266 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 14, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Diamondback", origin={"ext"}), - ItemNames.Diamondback_Optimized_Logistics: ItemData(267 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 15, SC2Race.TERRAN, parent_item="Diamondback", origin={"ext"}), - ItemNames.Siege_Tank_Jump_Jets: ItemData(268 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 16, SC2Race.TERRAN, parent_item="Siege Tank", origin={"nco"}), - ItemNames.Siege_Tank_Spider_Mines: ItemData(269 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 17, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Siege Tank", origin={"nco"}), - ItemNames.Siege_Tank_Smart_Servos: ItemData(270 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 18, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Siege Tank", origin={"nco"}), - ItemNames.Siege_Tank_Graduating_Range: ItemData(271 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 19, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Siege Tank", origin={"ext"}), - ItemNames.Siege_Tank_Laser_Targeting_System: ItemData(272 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 20, SC2Race.TERRAN, parent_item="Siege Tank", origin={"nco"}), - ItemNames.Siege_Tank_Advanced_Siege_Tech: ItemData(273 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 21, SC2Race.TERRAN, parent_item="Siege Tank", origin={"ext"}), - ItemNames.Siege_Tank_Internal_Tech_Module: ItemData(274 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 22, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Siege Tank", origin={"nco"}), - ItemNames.Predator_Optimized_Logistics: ItemData(275 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 23, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Predator", origin={"ext"}), - ItemNames.Medivac_Expanded_Hull: ItemData(276 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac", origin={"ext"}), - ItemNames.Medivac_Afterburners: ItemData(277 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac", origin={"ext"}), - ItemNames.Wraith_Advanced_Laser_Technology: ItemData(278 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 26, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Wraith", origin={"ext"}), - ItemNames.Viking_Smart_Servos: ItemData(279 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 27, SC2Race.TERRAN, parent_item="Viking", origin={"ext"}), - ItemNames.Viking_Magrail_Munitions: ItemData(280 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 28, SC2Race.TERRAN, parent_item="Viking", origin={"ext"}), - - ItemNames.Hellion_Twin_Linked_Flamethrower: ItemData(300 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 0, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Hellion"), - ItemNames.Hellion_Thermite_Filaments: ItemData(301 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 1, SC2Race.TERRAN, parent_item="Hellion"), - ItemNames.Spider_Mine_Cerberus_Mine: ItemData(302 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 2, SC2Race.TERRAN, classification=ItemClassification.filler), - ItemNames.Vulture_Replenishable_Magazine: ItemData(303 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 3, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Vulture"), - ItemNames.Goliath_Multi_Lock_Weapons_System: ItemData(304 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 4, SC2Race.TERRAN, parent_item="Goliath"), - ItemNames.Goliath_Ares_Class_Targeting_System: ItemData(305 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 5, SC2Race.TERRAN, parent_item="Goliath"), - ItemNames.Diamondback_Tri_Lithium_Power_Cell: ItemData(306 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 6, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Diamondback"), - ItemNames.Diamondback_Shaped_Hull: ItemData(307 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 7, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Diamondback"), - ItemNames.Siege_Tank_Maelstrom_Rounds: ItemData(308 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 8, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Siege Tank"), - ItemNames.Siege_Tank_Shaped_Blast: ItemData(309 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 9, SC2Race.TERRAN, parent_item="Siege Tank"), - ItemNames.Medivac_Rapid_Deployment_Tube: ItemData(310 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 10, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac"), - ItemNames.Medivac_Advanced_Healing_AI: ItemData(311 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 11, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac"), - ItemNames.Wraith_Tomahawk_Power_Cells: ItemData(312 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 12, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Wraith"), - ItemNames.Wraith_Displacement_Field: ItemData(313 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 13, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Wraith"), - ItemNames.Viking_Ripwave_Missiles: ItemData(314 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 14, SC2Race.TERRAN, parent_item="Viking"), - ItemNames.Viking_Phobos_Class_Weapons_System: ItemData(315 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 15, SC2Race.TERRAN, parent_item="Viking"), - ItemNames.Banshee_Progressive_Cross_Spectrum_Dampeners: ItemData(316 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", quantity=2), - ItemNames.Banshee_Shockwave_Missile_Battery: ItemData(317 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 17, SC2Race.TERRAN, parent_item="Banshee"), - ItemNames.Battlecruiser_Missile_Pods: ItemData(318 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 18, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser"), - ItemNames.Battlecruiser_Defensive_Matrix: ItemData(319 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 19, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser"), - ItemNames.Ghost_Ocular_Implants: ItemData(320 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 20, SC2Race.TERRAN, parent_item="Ghost"), - ItemNames.Ghost_Crius_Suit: ItemData(321 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 21, SC2Race.TERRAN, parent_item="Ghost"), - ItemNames.Spectre_Psionic_Lash: ItemData(322 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 22, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Spectre"), - ItemNames.Spectre_Nyx_Class_Cloaking_Module: ItemData(323 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 23, SC2Race.TERRAN, parent_item="Spectre"), - ItemNames.Thor_330mm_Barrage_Cannon: ItemData(324 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Thor"), - ItemNames.Thor_Immortality_Protocol: ItemData(325 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Thor"), + ItemNames.REAPER_PROGRESSIVE_STIMPACK: ItemData(250 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 10, SC2Race.TERRAN, parent_item="Reaper", quantity=2, origin={"nco"}), + ItemNames.REAPER_LASER_TARGETING_SYSTEM: ItemData(251 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 0, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Reaper", origin={"nco"}), + ItemNames.REAPER_ADVANCED_CLOAKING_FIELD: ItemData(252 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 1, SC2Race.TERRAN, parent_item="Reaper", origin={"nco"}), + ItemNames.REAPER_SPIDER_MINES: ItemData(253 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Reaper", origin={"nco"}), + ItemNames.REAPER_COMBAT_DRUGS: ItemData(254 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 3, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Reaper", origin={"ext"}), + ItemNames.HELLION_HELLBAT_ASPECT: ItemData(255 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 4, SC2Race.TERRAN, parent_item="Hellion", origin={"nco"}), + ItemNames.HELLION_SMART_SERVOS: ItemData(256 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 5, SC2Race.TERRAN, parent_item="Hellion", origin={"nco"}), + ItemNames.HELLION_OPTIMIZED_LOGISTICS: ItemData(257 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 6, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Hellion", origin={"nco"}), + ItemNames.HELLION_JUMP_JETS: ItemData(258 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 7, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Hellion", origin={"nco"}), + ItemNames.HELLION_PROGRESSIVE_STIMPACK: ItemData(259 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 12, SC2Race.TERRAN, parent_item="Hellion", quantity=2, origin={"nco"}), + ItemNames.VULTURE_ION_THRUSTERS: ItemData(260 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 8, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Vulture", origin={"bw"}), + ItemNames.VULTURE_AUTO_LAUNCHERS: ItemData(261 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 9, SC2Race.TERRAN, parent_item="Vulture", origin={"bw"}), + ItemNames.SPIDER_MINE_HIGH_EXPLOSIVE_MUNITION: ItemData(262 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 10, SC2Race.TERRAN, origin={"bw"}), + ItemNames.GOLIATH_JUMP_JETS: ItemData(263 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 11, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Goliath", origin={"nco"}), + ItemNames.GOLIATH_OPTIMIZED_LOGISTICS: ItemData(264 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 12, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Goliath", origin={"nco"}), + ItemNames.DIAMONDBACK_HYPERFLUXOR: ItemData(265 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 13, SC2Race.TERRAN, parent_item="Diamondback", origin={"ext"}), + ItemNames.DIAMONDBACK_BURST_CAPACITORS: ItemData(266 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 14, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Diamondback", origin={"ext"}), + ItemNames.DIAMONDBACK_OPTIMIZED_LOGISTICS: ItemData(267 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 15, SC2Race.TERRAN, parent_item="Diamondback", origin={"ext"}), + ItemNames.SIEGE_TANK_JUMP_JETS: ItemData(268 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 16, SC2Race.TERRAN, parent_item="Siege Tank", origin={"nco"}), + ItemNames.SIEGE_TANK_SPIDER_MINES: ItemData(269 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 17, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Siege Tank", origin={"nco"}), + ItemNames.SIEGE_TANK_SMART_SERVOS: ItemData(270 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 18, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Siege Tank", origin={"nco"}), + ItemNames.SIEGE_TANK_GRADUATING_RANGE: ItemData(271 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 19, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Siege Tank", origin={"ext"}), + ItemNames.SIEGE_TANK_LASER_TARGETING_SYSTEM: ItemData(272 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 20, SC2Race.TERRAN, parent_item="Siege Tank", origin={"nco"}), + ItemNames.SIEGE_TANK_ADVANCED_SIEGE_TECH: ItemData(273 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 21, SC2Race.TERRAN, parent_item="Siege Tank", origin={"ext"}), + ItemNames.SIEGE_TANK_INTERNAL_TECH_MODULE: ItemData(274 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 22, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Siege Tank", origin={"nco"}), + ItemNames.PREDATOR_OPTIMIZED_LOGISTICS: ItemData(275 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 23, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Predator", origin={"ext"}), + ItemNames.MEDIVAC_EXPANDED_HULL: ItemData(276 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac", origin={"ext"}), + ItemNames.MEDIVAC_AFTERBURNERS: ItemData(277 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac", origin={"ext"}), + ItemNames.WRAITH_ADVANCED_LASER_TECHNOLOGY: ItemData(278 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 26, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Wraith", origin={"ext"}), + ItemNames.VIKING_SMART_SERVOS: ItemData(279 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 27, SC2Race.TERRAN, parent_item="Viking", origin={"ext"}), + ItemNames.VIKING_MAGRAIL_MUNITIONS: ItemData(280 + SC2WOL_ITEM_ID_OFFSET, "Armory 3", 28, SC2Race.TERRAN, parent_item="Viking", origin={"ext"}), + + ItemNames.HELLION_TWIN_LINKED_FLAMETHROWER: ItemData(300 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 0, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Hellion"), + ItemNames.HELLION_THERMITE_FILAMENTS: ItemData(301 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 1, SC2Race.TERRAN, parent_item="Hellion"), + ItemNames.SPIDER_MINE_CERBERUS_MINE: ItemData(302 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 2, SC2Race.TERRAN, classification=ItemClassification.filler), + ItemNames.VULTURE_REPLENISHABLE_MAGAZINE: ItemData(303 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 3, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Vulture"), + ItemNames.GOLIATH_MULTI_LOCK_WEAPONS_SYSTEM: ItemData(304 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 4, SC2Race.TERRAN, parent_item="Goliath"), + ItemNames.GOLIATH_ARES_CLASS_TARGETING_SYSTEM: ItemData(305 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 5, SC2Race.TERRAN, parent_item="Goliath"), + ItemNames.DIAMONDBACK_TRI_LITHIUM_POWER_CELL: ItemData(306 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 6, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Diamondback"), + ItemNames.DIAMONDBACK_SHAPED_HULL: ItemData(307 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 7, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Diamondback"), + ItemNames.SIEGE_TANK_MAELSTROM_ROUNDS: ItemData(308 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 8, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Siege Tank"), + ItemNames.SIEGE_TANK_SHAPED_BLAST: ItemData(309 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 9, SC2Race.TERRAN, parent_item="Siege Tank"), + ItemNames.MEDIVAC_RAPID_DEPLOYMENT_TUBE: ItemData(310 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 10, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac"), + ItemNames.MEDIVAC_ADVANCED_HEALING_AI: ItemData(311 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 11, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Medivac"), + ItemNames.WRAITH_TOMAHAWK_POWER_CELLS: ItemData(312 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 12, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Wraith"), + ItemNames.WRAITH_DISPLACEMENT_FIELD: ItemData(313 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 13, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Wraith"), + ItemNames.VIKING_RIPWAVE_MISSILES: ItemData(314 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 14, SC2Race.TERRAN, parent_item="Viking"), + ItemNames.VIKING_PHOBOS_CLASS_WEAPONS_SYSTEM: ItemData(315 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 15, SC2Race.TERRAN, parent_item="Viking"), + ItemNames.BANSHEE_PROGRESSIVE_CROSS_SPECTRUM_DAMPENERS: ItemData(316 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", quantity=2), + ItemNames.BANSHEE_SHOCKWAVE_MISSILE_BATTERY: ItemData(317 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 17, SC2Race.TERRAN, parent_item="Banshee"), + ItemNames.BATTLECRUISER_MISSILE_PODS: ItemData(318 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 18, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser"), + ItemNames.BATTLECRUISER_DEFENSIVE_MATRIX: ItemData(319 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 19, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser"), + ItemNames.GHOST_OCULAR_IMPLANTS: ItemData(320 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 20, SC2Race.TERRAN, parent_item="Ghost"), + ItemNames.GHOST_CRIUS_SUIT: ItemData(321 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 21, SC2Race.TERRAN, parent_item="Ghost"), + ItemNames.SPECTRE_PSIONIC_LASH: ItemData(322 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 22, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Spectre"), + ItemNames.SPECTRE_NYX_CLASS_CLOAKING_MODULE: ItemData(323 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 23, SC2Race.TERRAN, parent_item="Spectre"), + ItemNames.THOR_330MM_BARRAGE_CANNON: ItemData(324 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Thor"), + ItemNames.THOR_IMMORTALITY_PROTOCOL: ItemData(325 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Thor"), # Items from EE - ItemNames.Liberator_Advanced_Ballistics: ItemData(326 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 26, SC2Race.TERRAN, parent_item="Liberator", origin={"ext"}), - ItemNames.Liberator_Raid_Artillery: ItemData(327 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 27, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Liberator", origin={"nco"}), - ItemNames.Widow_Mine_Drilling_Claws: ItemData(328 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 28, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Widow Mine", origin={"ext"}), - ItemNames.Widow_Mine_Concealment: ItemData(329 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 29, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Widow Mine", origin={"ext"}), + ItemNames.LIBERATOR_ADVANCED_BALLISTICS: ItemData(326 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 26, SC2Race.TERRAN, parent_item="Liberator", origin={"ext"}), + ItemNames.LIBERATOR_RAID_ARTILLERY: ItemData(327 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 27, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Liberator", origin={"nco"}), + ItemNames.WIDOW_MINE_DRILLING_CLAWS: ItemData(328 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 28, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Widow Mine", origin={"ext"}), + ItemNames.WIDOW_MINE_CONCEALMENT: ItemData(329 + SC2WOL_ITEM_ID_OFFSET, "Armory 2", 29, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Widow Mine", origin={"ext"}), #Items from new mod - ItemNames.Banshee_Hyperflight_Rotors: ItemData(350 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 0, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", origin={"ext"}), - ItemNames.Banshee_Laser_Targeting_System: ItemData(351 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 1, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", origin={"nco"}), - ItemNames.Banshee_Internal_Tech_Module: ItemData(352 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", origin={"nco"}), - ItemNames.Battlecruiser_Tactical_Jump: ItemData(353 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 3, SC2Race.TERRAN, parent_item="Battlecruiser", origin={"nco", "ext"}), - ItemNames.Battlecruiser_Cloak: ItemData(354 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 4, SC2Race.TERRAN, parent_item="Battlecruiser", origin={"nco"}), - ItemNames.Battlecruiser_ATX_Laser_Battery: ItemData(355 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 5, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Battlecruiser", origin={"nco"}), - ItemNames.Battlecruiser_Optimized_Logistics: ItemData(356 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 6, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser", origin={"ext"}), - ItemNames.Battlecruiser_Internal_Tech_Module: ItemData(357 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 7, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser", origin={"nco"}), - ItemNames.Ghost_EMP_Rounds: ItemData(358 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 8, SC2Race.TERRAN, parent_item="Ghost", origin={"ext"}), - ItemNames.Ghost_Lockdown: ItemData(359 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 9, SC2Race.TERRAN, parent_item="Ghost", origin={"bw"}), - ItemNames.Spectre_Impaler_Rounds: ItemData(360 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 10, SC2Race.TERRAN, parent_item="Spectre", origin={"ext"}), - ItemNames.Thor_Progressive_High_Impact_Payload: ItemData(361 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 14, SC2Race.TERRAN, parent_item="Thor", quantity=2, origin={"ext"}), # L2 is Smart Servos - ItemNames.Raven_Bio_Mechanical_Repair_Drone: ItemData(363 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 13, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), - ItemNames.Raven_Spider_Mines: ItemData(364 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 14, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), - ItemNames.Raven_Railgun_Turret: ItemData(365 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 15, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), - ItemNames.Raven_Hunter_Seeker_Weapon: ItemData(366 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 16, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), - ItemNames.Raven_Interference_Matrix: ItemData(367 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 17, SC2Race.TERRAN, parent_item="Raven", origin={"ext"}), - ItemNames.Raven_Anti_Armor_Missile: ItemData(368 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 18, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Raven", origin={"ext"}), - ItemNames.Raven_Internal_Tech_Module: ItemData(369 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 19, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Raven", origin={"nco"}), - ItemNames.Science_Vessel_EMP_Shockwave: ItemData(370 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 20, SC2Race.TERRAN, parent_item="Science Vessel", origin={"bw"}), - ItemNames.Science_Vessel_Defensive_Matrix: ItemData(371 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 21, SC2Race.TERRAN, parent_item="Science Vessel", origin={"bw"}), - ItemNames.Cyclone_Targeting_Optics: ItemData(372 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 22, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), - ItemNames.Cyclone_Rapid_Fire_Launchers: ItemData(373 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 23, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), - ItemNames.Liberator_Cloak: ItemData(374 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Liberator", origin={"nco"}), - ItemNames.Liberator_Laser_Targeting_System: ItemData(375 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Liberator", origin={"ext"}), - ItemNames.Liberator_Optimized_Logistics: ItemData(376 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 26, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Liberator", origin={"nco"}), - ItemNames.Widow_Mine_Black_Market_Launchers: ItemData(377 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 27, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Widow Mine", origin={"ext"}), - ItemNames.Widow_Mine_Executioner_Missiles: ItemData(378 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 28, SC2Race.TERRAN, parent_item="Widow Mine", origin={"ext"}), + ItemNames.BANSHEE_HYPERFLIGHT_ROTORS: ItemData(350 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 0, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", origin={"ext"}), + ItemNames.BANSHEE_LASER_TARGETING_SYSTEM: ItemData(351 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 1, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", origin={"nco"}), + ItemNames.BANSHEE_INTERNAL_TECH_MODULE: ItemData(352 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 2, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Banshee", origin={"nco"}), + ItemNames.BATTLECRUISER_TACTICAL_JUMP: ItemData(353 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 3, SC2Race.TERRAN, parent_item="Battlecruiser", origin={"nco", "ext"}), + ItemNames.BATTLECRUISER_CLOAK: ItemData(354 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 4, SC2Race.TERRAN, parent_item="Battlecruiser", origin={"nco"}), + ItemNames.BATTLECRUISER_ATX_LASER_BATTERY: ItemData(355 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 5, SC2Race.TERRAN, classification=ItemClassification.progression, parent_item="Battlecruiser", origin={"nco"}), + ItemNames.BATTLECRUISER_OPTIMIZED_LOGISTICS: ItemData(356 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 6, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser", origin={"ext"}), + ItemNames.BATTLECRUISER_INTERNAL_TECH_MODULE: ItemData(357 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 7, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Battlecruiser", origin={"nco"}), + ItemNames.GHOST_EMP_ROUNDS: ItemData(358 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 8, SC2Race.TERRAN, parent_item="Ghost", origin={"ext"}), + ItemNames.GHOST_LOCKDOWN: ItemData(359 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 9, SC2Race.TERRAN, parent_item="Ghost", origin={"bw"}), + ItemNames.SPECTRE_IMPALER_ROUNDS: ItemData(360 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 10, SC2Race.TERRAN, parent_item="Spectre", origin={"ext"}), + ItemNames.THOR_PROGRESSIVE_HIGH_IMPACT_PAYLOAD: ItemData(361 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 14, SC2Race.TERRAN, parent_item="Thor", quantity=2, origin={"ext"}), # L2 is Smart Servos + ItemNames.RAVEN_BIO_MECHANICAL_REPAIR_DRONE: ItemData(363 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 13, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), + ItemNames.RAVEN_SPIDER_MINES: ItemData(364 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 14, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), + ItemNames.RAVEN_RAILGUN_TURRET: ItemData(365 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 15, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), + ItemNames.RAVEN_HUNTER_SEEKER_WEAPON: ItemData(366 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 16, SC2Race.TERRAN, parent_item="Raven", origin={"nco"}), + ItemNames.RAVEN_INTERFERENCE_MATRIX: ItemData(367 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 17, SC2Race.TERRAN, parent_item="Raven", origin={"ext"}), + ItemNames.RAVEN_ANTI_ARMOR_MISSILE: ItemData(368 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 18, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Raven", origin={"ext"}), + ItemNames.RAVEN_INTERNAL_TECH_MODULE: ItemData(369 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 19, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Raven", origin={"nco"}), + ItemNames.SCIENCE_VESSEL_EMP_SHOCKWAVE: ItemData(370 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 20, SC2Race.TERRAN, parent_item="Science Vessel", origin={"bw"}), + ItemNames.SCIENCE_VESSEL_DEFENSIVE_MATRIX: ItemData(371 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 21, SC2Race.TERRAN, parent_item="Science Vessel", origin={"bw"}), + ItemNames.CYCLONE_TARGETING_OPTICS: ItemData(372 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 22, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), + ItemNames.CYCLONE_RAPID_FIRE_LAUNCHERS: ItemData(373 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 23, SC2Race.TERRAN, parent_item="Cyclone", origin={"ext"}), + ItemNames.LIBERATOR_CLOAK: ItemData(374 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 24, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Liberator", origin={"nco"}), + ItemNames.LIBERATOR_LASER_TARGETING_SYSTEM: ItemData(375 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 25, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Liberator", origin={"ext"}), + ItemNames.LIBERATOR_OPTIMIZED_LOGISTICS: ItemData(376 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 26, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Liberator", origin={"nco"}), + ItemNames.WIDOW_MINE_BLACK_MARKET_LAUNCHERS: ItemData(377 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 27, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Widow Mine", origin={"ext"}), + ItemNames.WIDOW_MINE_EXECUTIONER_MISSILES: ItemData(378 + SC2WOL_ITEM_ID_OFFSET, "Armory 4", 28, SC2Race.TERRAN, parent_item="Widow Mine", origin={"ext"}), # Just lazy to create a new group for one unit - ItemNames.Valkyrie_Enhanced_Cluster_Launchers: ItemData(379 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 17, SC2Race.TERRAN, parent_item="Valkyrie", origin={"ext"}), - ItemNames.Valkyrie_Shaped_Hull: ItemData(380 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 20, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Valkyrie", origin={"ext"}), - ItemNames.Valkyrie_Burst_Lasers: ItemData(381 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 21, SC2Race.TERRAN, parent_item="Valkyrie", origin={"ext"}), - ItemNames.Valkyrie_Afterburners: ItemData(382 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 22, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Valkyrie", origin={"ext"}), - - ItemNames.Bunker: ItemData(400 + SC2WOL_ITEM_ID_OFFSET, "Building", 0, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Missile_Turret: ItemData(401 + SC2WOL_ITEM_ID_OFFSET, "Building", 1, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Sensor_Tower: ItemData(402 + SC2WOL_ITEM_ID_OFFSET, "Building", 2, SC2Race.TERRAN), - - ItemNames.War_Pigs: ItemData(500 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 0, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Devil_Dogs: ItemData(501 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 1, SC2Race.TERRAN, classification=ItemClassification.filler), - ItemNames.Hammer_Securities: ItemData(502 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 2, SC2Race.TERRAN), - ItemNames.Spartan_Company: ItemData(503 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 3, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Siege_Breakers: ItemData(504 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 4, SC2Race.TERRAN), - ItemNames.Hels_Angel: ItemData(505 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 5, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Dusk_Wings: ItemData(506 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 6, SC2Race.TERRAN), - ItemNames.Jacksons_Revenge: ItemData(507 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 7, SC2Race.TERRAN), - - ItemNames.Ultra_Capacitors: ItemData(600 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 0, SC2Race.TERRAN), - ItemNames.Vanadium_Plating: ItemData(601 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 1, SC2Race.TERRAN), - ItemNames.Orbital_Depots: ItemData(602 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 2, SC2Race.TERRAN), - ItemNames.Micro_Filtering: ItemData(603 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 3, SC2Race.TERRAN), - ItemNames.Automated_Refinery: ItemData(604 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 4, SC2Race.TERRAN), - ItemNames.Command_Center_Reactor: ItemData(605 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 5, SC2Race.TERRAN), - ItemNames.Raven: ItemData(606 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 6, SC2Race.TERRAN), - ItemNames.Science_Vessel: ItemData(607 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 7, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Tech_Reactor: ItemData(608 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 8, SC2Race.TERRAN), - ItemNames.Orbital_Strike: ItemData(609 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 9, SC2Race.TERRAN), - ItemNames.Bunker_Shrike_Turret: ItemData(610 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 10, SC2Race.TERRAN, parent_item="Bunker"), - ItemNames.Bunker_Fortified_Bunker: ItemData(611 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 11, SC2Race.TERRAN, parent_item="Bunker"), - ItemNames.Planetary_Fortress: ItemData(612 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 12, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Perdition_Turret: ItemData(613 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 13, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Predator: ItemData(614 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 14, SC2Race.TERRAN, classification=ItemClassification.filler), - ItemNames.Hercules: ItemData(615 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 15, SC2Race.TERRAN, classification=ItemClassification.progression), - ItemNames.Cellular_Reactor: ItemData(616 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 16, SC2Race.TERRAN), - ItemNames.Progressive_Regenerative_Bio_Steel: ItemData(617 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 4, SC2Race.TERRAN, quantity=2), - ItemNames.Hive_Mind_Emulator: ItemData(618 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 18, SC2Race.TERRAN, ItemClassification.progression), - ItemNames.Psi_Disrupter: ItemData(619 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 19, SC2Race.TERRAN, classification=ItemClassification.progression), - - ItemNames.Zealot: ItemData(700 + SC2WOL_ITEM_ID_OFFSET, "Unit", 0, SC2Race.PROTOSS, classification=ItemClassification.progression), - ItemNames.Stalker: ItemData(701 + SC2WOL_ITEM_ID_OFFSET, "Unit", 1, SC2Race.PROTOSS, classification=ItemClassification.progression), - ItemNames.High_Templar: ItemData(702 + SC2WOL_ITEM_ID_OFFSET, "Unit", 2, SC2Race.PROTOSS, classification=ItemClassification.progression), - ItemNames.Dark_Templar: ItemData(703 + SC2WOL_ITEM_ID_OFFSET, "Unit", 3, SC2Race.PROTOSS, classification=ItemClassification.progression), - ItemNames.Immortal: ItemData(704 + SC2WOL_ITEM_ID_OFFSET, "Unit", 4, SC2Race.PROTOSS, classification=ItemClassification.progression), - ItemNames.Colossus: ItemData(705 + SC2WOL_ITEM_ID_OFFSET, "Unit", 5, SC2Race.PROTOSS), - ItemNames.Phoenix: ItemData(706 + SC2WOL_ITEM_ID_OFFSET, "Unit", 6, SC2Race.PROTOSS, classification=ItemClassification.filler), - ItemNames.Void_Ray: ItemData(707 + SC2WOL_ITEM_ID_OFFSET, "Unit", 7, SC2Race.PROTOSS, classification=ItemClassification.progression), - ItemNames.Carrier: ItemData(708 + SC2WOL_ITEM_ID_OFFSET, "Unit", 8, SC2Race.PROTOSS, classification=ItemClassification.progression), + ItemNames.VALKYRIE_ENHANCED_CLUSTER_LAUNCHERS: ItemData(379 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 17, SC2Race.TERRAN, parent_item="Valkyrie", origin={"ext"}), + ItemNames.VALKYRIE_SHAPED_HULL: ItemData(380 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 20, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Valkyrie", origin={"ext"}), + ItemNames.VALKYRIE_BURST_LASERS: ItemData(381 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 21, SC2Race.TERRAN, parent_item="Valkyrie", origin={"ext"}), + ItemNames.VALKYRIE_AFTERBURNERS: ItemData(382 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 22, SC2Race.TERRAN, classification=ItemClassification.filler, parent_item="Valkyrie", origin={"ext"}), + + ItemNames.BUNKER: ItemData(400 + SC2WOL_ITEM_ID_OFFSET, "Building", 0, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.MISSILE_TURRET: ItemData(401 + SC2WOL_ITEM_ID_OFFSET, "Building", 1, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.SENSOR_TOWER: ItemData(402 + SC2WOL_ITEM_ID_OFFSET, "Building", 2, SC2Race.TERRAN), + + ItemNames.WAR_PIGS: ItemData(500 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 0, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.DEVIL_DOGS: ItemData(501 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 1, SC2Race.TERRAN, classification=ItemClassification.filler), + ItemNames.HAMMER_SECURITIES: ItemData(502 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 2, SC2Race.TERRAN), + ItemNames.SPARTAN_COMPANY: ItemData(503 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 3, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.SIEGE_BREAKERS: ItemData(504 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 4, SC2Race.TERRAN), + ItemNames.HELS_ANGEL: ItemData(505 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 5, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.DUSK_WINGS: ItemData(506 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 6, SC2Race.TERRAN), + ItemNames.JACKSONS_REVENGE: ItemData(507 + SC2WOL_ITEM_ID_OFFSET, "Mercenary", 7, SC2Race.TERRAN), + + ItemNames.ULTRA_CAPACITORS: ItemData(600 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 0, SC2Race.TERRAN), + ItemNames.VANADIUM_PLATING: ItemData(601 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 1, SC2Race.TERRAN), + ItemNames.ORBITAL_DEPOTS: ItemData(602 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 2, SC2Race.TERRAN), + ItemNames.MICRO_FILTERING: ItemData(603 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 3, SC2Race.TERRAN), + ItemNames.AUTOMATED_REFINERY: ItemData(604 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 4, SC2Race.TERRAN), + ItemNames.COMMAND_CENTER_REACTOR: ItemData(605 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 5, SC2Race.TERRAN), + ItemNames.RAVEN: ItemData(606 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 6, SC2Race.TERRAN), + ItemNames.SCIENCE_VESSEL: ItemData(607 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 7, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.TECH_REACTOR: ItemData(608 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 8, SC2Race.TERRAN), + ItemNames.ORBITAL_STRIKE: ItemData(609 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 9, SC2Race.TERRAN), + ItemNames.BUNKER_SHRIKE_TURRET: ItemData(610 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 10, SC2Race.TERRAN, parent_item="Bunker"), + ItemNames.BUNKER_FORTIFIED_BUNKER: ItemData(611 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 11, SC2Race.TERRAN, parent_item="Bunker"), + ItemNames.PLANETARY_FORTRESS: ItemData(612 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 12, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.PERDITION_TURRET: ItemData(613 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 13, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.PREDATOR: ItemData(614 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 14, SC2Race.TERRAN, classification=ItemClassification.filler), + ItemNames.HERCULES: ItemData(615 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 15, SC2Race.TERRAN, classification=ItemClassification.progression), + ItemNames.CELLULAR_REACTOR: ItemData(616 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 16, SC2Race.TERRAN), + ItemNames.PROGRESSIVE_REGENERATIVE_BIO_STEEL: ItemData(617 + SC2WOL_ITEM_ID_OFFSET, "Progressive Upgrade", 4, SC2Race.TERRAN, quantity=2), + ItemNames.HIVE_MIND_EMULATOR: ItemData(618 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 18, SC2Race.TERRAN, ItemClassification.progression), + ItemNames.PSI_DISRUPTER: ItemData(619 + SC2WOL_ITEM_ID_OFFSET, "Laboratory", 19, SC2Race.TERRAN, classification=ItemClassification.progression), + + ItemNames.ZEALOT: ItemData(700 + SC2WOL_ITEM_ID_OFFSET, "Unit", 0, SC2Race.PROTOSS, classification=ItemClassification.progression), + ItemNames.STALKER: ItemData(701 + SC2WOL_ITEM_ID_OFFSET, "Unit", 1, SC2Race.PROTOSS, classification=ItemClassification.progression), + ItemNames.HIGH_TEMPLAR: ItemData(702 + SC2WOL_ITEM_ID_OFFSET, "Unit", 2, SC2Race.PROTOSS, classification=ItemClassification.progression), + ItemNames.DARK_TEMPLAR: ItemData(703 + SC2WOL_ITEM_ID_OFFSET, "Unit", 3, SC2Race.PROTOSS, classification=ItemClassification.progression), + ItemNames.IMMORTAL: ItemData(704 + SC2WOL_ITEM_ID_OFFSET, "Unit", 4, SC2Race.PROTOSS, classification=ItemClassification.progression), + ItemNames.COLOSSUS: ItemData(705 + SC2WOL_ITEM_ID_OFFSET, "Unit", 5, SC2Race.PROTOSS), + ItemNames.PHOENIX: ItemData(706 + SC2WOL_ITEM_ID_OFFSET, "Unit", 6, SC2Race.PROTOSS, classification=ItemClassification.filler), + ItemNames.VOID_RAY: ItemData(707 + SC2WOL_ITEM_ID_OFFSET, "Unit", 7, SC2Race.PROTOSS, classification=ItemClassification.progression), + ItemNames.CARRIER: ItemData(708 + SC2WOL_ITEM_ID_OFFSET, "Unit", 8, SC2Race.PROTOSS, classification=ItemClassification.progression), # Filler items to fill remaining spots - ItemNames.Starting_Minerals: ItemData(800 + SC2WOL_ITEM_ID_OFFSET, "Minerals", 15, SC2Race.ANY, quantity=0, classification=ItemClassification.filler), - ItemNames.Starting_Vespene: ItemData(801 + SC2WOL_ITEM_ID_OFFSET, "Vespene", 15, SC2Race.ANY, quantity=0, classification=ItemClassification.filler), + ItemNames.STARTING_MINERALS: ItemData(800 + SC2WOL_ITEM_ID_OFFSET, "Minerals", 15, SC2Race.ANY, quantity=0, classification=ItemClassification.filler), + ItemNames.STARTING_VESPENE: ItemData(801 + SC2WOL_ITEM_ID_OFFSET, "Vespene", 15, SC2Race.ANY, quantity=0, classification=ItemClassification.filler), # This Filler item isn't placed by the generator yet unless plando'd - ItemNames.Starting_Supply: ItemData(802 + SC2WOL_ITEM_ID_OFFSET, "Supply", 2, SC2Race.ANY, quantity=0, classification=ItemClassification.filler), + ItemNames.STARTING_SUPPLY: ItemData(802 + SC2WOL_ITEM_ID_OFFSET, "Supply", 2, SC2Race.ANY, quantity=0, classification=ItemClassification.filler), # 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), + ItemNames.NOTHING: ItemData(803 + SC2WOL_ITEM_ID_OFFSET, "Nothing Group", 2, SC2Race.ANY, quantity=0, classification=ItemClassification.trap), - # ItemNames.Keystone_Piece: ItemData(850 + SC2WOL_ITEM_ID_OFFSET, "Goal", 0, quantity=0, classification=ItemClassification.progression_skip_balancing) + # ItemNames.KEYSTONE_PIECE: ItemData(850 + SC2WOL_ITEM_ID_OFFSET, "Goal", 0, quantity=0, classification=ItemClassification.progression_skip_balancing) # HotS - ItemNames.Zergling: ItemData(0 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 0, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - ItemNames.Swarm_Queen: ItemData(1 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 1, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - ItemNames.Roach: ItemData(2 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 2, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - ItemNames.Hydralisk: ItemData(3 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 3, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - ItemNames.Baneling: ItemData(4 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 4, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - ItemNames.Aberration: ItemData(5 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 5, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - ItemNames.Mutalisk: ItemData(6 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 6, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - ItemNames.Swarm_Host: ItemData(7 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 7, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - ItemNames.Infestor: ItemData(8 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 8, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - ItemNames.Ultralisk: ItemData(9 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 9, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - ItemNames.Spore_Crawler: ItemData(10 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 10, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - ItemNames.Spine_Crawler: ItemData(11 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 11, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.ZERGLING: ItemData(0 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 0, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.SWARM_QUEEN: ItemData(1 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 1, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.ROACH: ItemData(2 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 2, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.HYDRALISK: ItemData(3 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 3, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.BANELING: ItemData(4 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 4, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.ABERRATION: ItemData(5 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 5, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.MUTALISK: ItemData(6 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 6, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.SWARM_HOST: ItemData(7 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 7, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.INFESTOR: ItemData(8 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 8, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.ULTRALISK: ItemData(9 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 9, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.SPORE_CRAWLER: ItemData(10 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 10, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), + ItemNames.SPINE_CRAWLER: ItemData(11 + SC2HOTS_ITEM_ID_OFFSET, "Unit", 11, SC2Race.ZERG, classification=ItemClassification.progression, origin={"hots"}), - 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"}), + 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", 0, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), - ItemNames.Zergling_Adrenal_Overload: ItemData(201 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 1, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), - ItemNames.Zergling_Metabolic_Boost: ItemData(202 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 2, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}, classification=ItemClassification.filler), - ItemNames.Roach_Hydriodic_Bile: ItemData(203 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 3, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), - ItemNames.Roach_Adaptive_Plating: ItemData(204 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 4, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), - ItemNames.Roach_Tunneling_Claws: ItemData(205 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 5, SC2Race.ZERG, parent_item="Roach", origin={"hots"}, classification=ItemClassification.filler), - ItemNames.Hydralisk_Frenzy: ItemData(206 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 6, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}), - ItemNames.Hydralisk_Ancillary_Carapace: ItemData(207 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 7, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}, classification=ItemClassification.filler), - ItemNames.Hydralisk_Grooved_Spines: ItemData(208 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 8, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}), - ItemNames.Baneling_Corrosive_Acid: ItemData(209 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 9, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}), - ItemNames.Baneling_Rupture: ItemData(210 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 10, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}, classification=ItemClassification.filler), - ItemNames.Baneling_Regenerative_Acid: ItemData(211 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 11, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}, classification=ItemClassification.filler), - ItemNames.Mutalisk_Vicious_Glave: ItemData(212 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 12, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}), - ItemNames.Mutalisk_Rapid_Regeneration: ItemData(213 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 13, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}), - ItemNames.Mutalisk_Sundering_Glave: ItemData(214 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 14, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}), - ItemNames.Swarm_Host_Burrow: ItemData(215 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 15, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}, classification=ItemClassification.filler), - ItemNames.Swarm_Host_Rapid_Incubation: ItemData(216 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 16, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}), - ItemNames.Swarm_Host_Pressurized_Glands: ItemData(217 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 17, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}, classification=ItemClassification.progression), - ItemNames.Ultralisk_Burrow_Charge: ItemData(218 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 18, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), - ItemNames.Ultralisk_Tissue_Animation: ItemData(219 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 19, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), - ItemNames.Ultralisk_Monarch_Blades: ItemData(220 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 20, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), + 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", 0, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), + ItemNames.ZERGLING_ADRENAL_OVERLOAD: ItemData(201 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 1, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), + ItemNames.ZERGLING_METABOLIC_BOOST: ItemData(202 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 2, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.ROACH_HYDRIODIC_BILE: ItemData(203 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 3, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), + ItemNames.ROACH_ADAPTIVE_PLATING: ItemData(204 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 4, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), + ItemNames.ROACH_TUNNELING_CLAWS: ItemData(205 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 5, SC2Race.ZERG, parent_item="Roach", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.HYDRALISK_FRENZY: ItemData(206 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 6, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}), + ItemNames.HYDRALISK_ANCILLARY_CARAPACE: ItemData(207 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 7, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.HYDRALISK_GROOVED_SPINES: ItemData(208 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 8, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}), + ItemNames.BANELING_CORROSIVE_ACID: ItemData(209 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 9, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}), + ItemNames.BANELING_RUPTURE: ItemData(210 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 10, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.BANELING_REGENERATIVE_ACID: ItemData(211 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 11, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.MUTALISK_VICIOUS_GLAVE: ItemData(212 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 12, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}), + ItemNames.MUTALISK_RAPID_REGENERATION: ItemData(213 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 13, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}), + ItemNames.MUTALISK_SUNDERING_GLAVE: ItemData(214 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 14, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}), + ItemNames.SWARM_HOST_BURROW: ItemData(215 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 15, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.SWARM_HOST_RAPID_INCUBATION: ItemData(216 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 16, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}), + ItemNames.SWARM_HOST_PRESSURIZED_GLANDS: ItemData(217 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 17, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}, classification=ItemClassification.progression), + ItemNames.ULTRALISK_BURROW_CHARGE: ItemData(218 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 18, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), + ItemNames.ULTRALISK_TISSUE_ANIMATION: ItemData(219 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 19, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), + ItemNames.ULTRALISK_MONARCH_BLADES: ItemData(220 + SC2HOTS_ITEM_ID_OFFSET, "Mutation", 20, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), - ItemNames.Zergling_Raptor_Strain: ItemData(300 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 0, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), - ItemNames.Zergling_Swarmling_Strain: ItemData(301 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 1, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), - ItemNames.Roach_Vile_Strain: ItemData(302 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 2, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), - ItemNames.Roach_Corpser_Strain: ItemData(303 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 3, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), - ItemNames.Hydralisk_Impaler_Strain: ItemData(304 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 4, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}, classification=ItemClassification.progression), - ItemNames.Hydralisk_Lurker_Strain: ItemData(305 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 5, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}, classification=ItemClassification.progression), - ItemNames.Baneling_Splitter_Strain: ItemData(306 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 6, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}), - ItemNames.Baneling_Hunter_Strain: ItemData(307 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 7, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}), - ItemNames.Mutalisk_Brood_Lord_Strain: ItemData(308 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 8, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}, classification=ItemClassification.progression), - ItemNames.Mutalisk_Viper_Strain: ItemData(309 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 9, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}, classification=ItemClassification.progression), - ItemNames.Swarm_Host_Carrion_Strain: ItemData(310 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 10, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}), - ItemNames.Swarm_Host_Creeper_Strain: ItemData(311 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 11, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}, classification=ItemClassification.filler), - ItemNames.Ultralisk_Noxious_Strain: ItemData(312 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 12, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}, classification=ItemClassification.filler), - ItemNames.Ultralisk_Torrasque_Strain: ItemData(313 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 13, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), + ItemNames.ZERGLING_RAPTOR_STRAIN: ItemData(300 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 0, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), + ItemNames.ZERGLING_SWARMLING_STRAIN: ItemData(301 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 1, SC2Race.ZERG, parent_item="Zergling", origin={"hots"}), + ItemNames.ROACH_VILE_STRAIN: ItemData(302 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 2, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), + ItemNames.ROACH_CORPSER_STRAIN: ItemData(303 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 3, SC2Race.ZERG, parent_item="Roach", origin={"hots"}), + ItemNames.HYDRALISK_IMPALER_STRAIN: ItemData(304 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 4, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}, classification=ItemClassification.progression), + ItemNames.HYDRALISK_LURKER_STRAIN: ItemData(305 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 5, SC2Race.ZERG, parent_item="Hydralisk", origin={"hots"}, classification=ItemClassification.progression), + ItemNames.BANELING_SPLITTER_STRAIN: ItemData(306 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 6, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}), + ItemNames.BANELING_HUNTER_STRAIN: ItemData(307 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 7, SC2Race.ZERG, parent_item="Baneling", origin={"hots"}), + ItemNames.MUTALISK_BROOD_LORD_STRAIN: ItemData(308 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 8, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}, classification=ItemClassification.progression), + ItemNames.MUTALISK_VIPER_STRAIN: ItemData(309 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 9, SC2Race.ZERG, parent_item="Mutalisk", origin={"hots"}, classification=ItemClassification.progression), + ItemNames.SWARM_HOST_CARRION_STRAIN: ItemData(310 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 10, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}), + ItemNames.SWARM_HOST_CREEPER_STRAIN: ItemData(311 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 11, SC2Race.ZERG, parent_item="Swarm Host", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.ULTRALISK_NOXIOUS_STRAIN: ItemData(312 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 12, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}, classification=ItemClassification.filler), + ItemNames.ULTRALISK_TORRASQUE_STRAIN: ItemData(313 + SC2HOTS_ITEM_ID_OFFSET, "Strain", 13, SC2Race.ZERG, parent_item="Ultralisk", origin={"hots"}), - 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, "Ability", 6, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.filler), - ItemNames.Kerrigan_Improved_Overlords: ItemData(407 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 7, SC2Race.ZERG, origin={"hots"}), - ItemNames.Kerrigan_Automated_Extractors: ItemData(408 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 8, SC2Race.ZERG, origin={"hots"}), - ItemNames.Kerrigan_Wild_Mutation: ItemData(409 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 9, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - ItemNames.Kerrigan_Spawn_Banelings: ItemData(410 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 10, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - ItemNames.Kerrigan_Mend: ItemData(411 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 11, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - ItemNames.Kerrigan_Twin_Drones: ItemData(412 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 12, SC2Race.ZERG, origin={"hots"}), - ItemNames.Kerrigan_Malignant_Creep: ItemData(413 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 13, SC2Race.ZERG, origin={"hots"}), - ItemNames.Kerrigan_Vespene_Efficiency: ItemData(414 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 14, SC2Race.ZERG, origin={"hots"}), - ItemNames.Kerrigan_Infest_Broodlings: ItemData(415 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 15, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - ItemNames.Kerrigan_Fury: ItemData(416 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 16, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - ItemNames.Kerrigan_Ability_Efficiency: ItemData(417 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 17, SC2Race.ZERG, origin={"hots"}), - ItemNames.Kerrigan_Apocalypse: ItemData(418 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 18, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - ItemNames.Kerrigan_Spawn_Leviathan: ItemData(419 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 19, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), - ItemNames.Kerrigan_Drop_Pods: ItemData(420 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 20, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + 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, "Ability", 6, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.filler), + ItemNames.KERRIGAN_IMPROVED_OVERLORDS: ItemData(407 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 7, SC2Race.ZERG, origin={"hots"}), + ItemNames.KERRIGAN_AUTOMATED_EXTRACTORS: ItemData(408 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 8, SC2Race.ZERG, origin={"hots"}), + ItemNames.KERRIGAN_WILD_MUTATION: ItemData(409 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 9, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + ItemNames.KERRIGAN_SPAWN_BANELINGS: ItemData(410 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 10, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + ItemNames.KERRIGAN_MEND: ItemData(411 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 11, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + ItemNames.KERRIGAN_TWIN_DRONES: ItemData(412 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 12, SC2Race.ZERG, origin={"hots"}), + ItemNames.KERRIGAN_MALIGNANT_CREEP: ItemData(413 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 13, SC2Race.ZERG, origin={"hots"}), + ItemNames.KERRIGAN_VESPENE_EFFICIENCY: ItemData(414 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 14, SC2Race.ZERG, origin={"hots"}), + ItemNames.KERRIGAN_INFEST_BROODLINGS: ItemData(415 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 15, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + ItemNames.KERRIGAN_FURY: ItemData(416 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 16, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + ItemNames.KERRIGAN_ABILITY_EFFICIENCY: ItemData(417 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 17, SC2Race.ZERG, origin={"hots"}), + ItemNames.KERRIGAN_APOCALYPSE: ItemData(418 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 18, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + ItemNames.KERRIGAN_SPAWN_LEVIATHAN: ItemData(419 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 19, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), + ItemNames.KERRIGAN_DROP_PODS: ItemData(420 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 20, SC2Race.ZERG, origin={"hots"}, classification=ItemClassification.progression), # Handled separately from other abilities - ItemNames.Kerrigan_Primal_Form: ItemData(421 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 0, SC2Race.ZERG, origin={"hots"}), + ItemNames.KERRIGAN_PRIMAL_FORM: ItemData(421 + SC2HOTS_ITEM_ID_OFFSET, "Ability", 0, SC2Race.ZERG, origin={"hots"}), - ItemNames.Kerrigan_Levels_10: ItemData(500 + SC2HOTS_ITEM_ID_OFFSET, "Level", 10, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Kerrigan_Levels_9: ItemData(501 + SC2HOTS_ITEM_ID_OFFSET, "Level", 9, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Kerrigan_Levels_8: ItemData(502 + SC2HOTS_ITEM_ID_OFFSET, "Level", 8, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Kerrigan_Levels_7: ItemData(503 + SC2HOTS_ITEM_ID_OFFSET, "Level", 7, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Kerrigan_Levels_6: ItemData(504 + SC2HOTS_ITEM_ID_OFFSET, "Level", 6, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Kerrigan_Levels_5: ItemData(505 + SC2HOTS_ITEM_ID_OFFSET, "Level", 5, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Kerrigan_Levels_4: ItemData(506 + SC2HOTS_ITEM_ID_OFFSET, "Level", 4, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), - ItemNames.Kerrigan_Levels_3: ItemData(507 + SC2HOTS_ITEM_ID_OFFSET, "Level", 3, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), - ItemNames.Kerrigan_Levels_2: ItemData(508 + SC2HOTS_ITEM_ID_OFFSET, "Level", 2, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), - ItemNames.Kerrigan_Levels_1: ItemData(509 + SC2HOTS_ITEM_ID_OFFSET, "Level", 1, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), - ItemNames.Kerrigan_Levels_14: ItemData(510 + SC2HOTS_ITEM_ID_OFFSET, "Level", 14, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Kerrigan_Levels_35: ItemData(511 + SC2HOTS_ITEM_ID_OFFSET, "Level", 35, SC2Race.ZERG, origin={"hots"}, quantity=0), - ItemNames.Kerrigan_Levels_70: ItemData(512 + SC2HOTS_ITEM_ID_OFFSET, "Level", 70, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.KERRIGAN_LEVELS_10: ItemData(500 + SC2HOTS_ITEM_ID_OFFSET, "Level", 10, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.KERRIGAN_LEVELS_9: ItemData(501 + SC2HOTS_ITEM_ID_OFFSET, "Level", 9, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.KERRIGAN_LEVELS_8: ItemData(502 + SC2HOTS_ITEM_ID_OFFSET, "Level", 8, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.KERRIGAN_LEVELS_7: ItemData(503 + SC2HOTS_ITEM_ID_OFFSET, "Level", 7, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.KERRIGAN_LEVELS_6: ItemData(504 + SC2HOTS_ITEM_ID_OFFSET, "Level", 6, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.KERRIGAN_LEVELS_5: ItemData(505 + SC2HOTS_ITEM_ID_OFFSET, "Level", 5, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.KERRIGAN_LEVELS_4: ItemData(506 + SC2HOTS_ITEM_ID_OFFSET, "Level", 4, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), + ItemNames.KERRIGAN_LEVELS_3: ItemData(507 + SC2HOTS_ITEM_ID_OFFSET, "Level", 3, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), + ItemNames.KERRIGAN_LEVELS_2: ItemData(508 + SC2HOTS_ITEM_ID_OFFSET, "Level", 2, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), + ItemNames.KERRIGAN_LEVELS_1: ItemData(509 + SC2HOTS_ITEM_ID_OFFSET, "Level", 1, SC2Race.ZERG, origin={"hots"}, quantity=0, classification=ItemClassification.filler), + ItemNames.KERRIGAN_LEVELS_14: ItemData(510 + SC2HOTS_ITEM_ID_OFFSET, "Level", 14, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.KERRIGAN_LEVELS_35: ItemData(511 + SC2HOTS_ITEM_ID_OFFSET, "Level", 35, SC2Race.ZERG, origin={"hots"}, quantity=0), + ItemNames.KERRIGAN_LEVELS_70: ItemData(512 + SC2HOTS_ITEM_ID_OFFSET, "Level", 70, SC2Race.ZERG, origin={"hots"}, quantity=0), } def get_item_table(multiworld: MultiWorld, player: int): @@ -365,37 +365,37 @@ def get_item_table(multiworld: MultiWorld, player: int): basic_units = { SC2Race.TERRAN: { - ItemNames.Marine, - ItemNames.Marauder, - ItemNames.Goliath, - ItemNames.Hellion, - ItemNames.Vulture, + ItemNames.MARINE, + ItemNames.MARAUDER, + ItemNames.GOLIATH, + ItemNames.HELLION, + ItemNames.VULTURE, }, SC2Race.ZERG: { - ItemNames.Zergling, - ItemNames.Swarm_Queen, - ItemNames.Roach, - ItemNames.Hydralisk, + ItemNames.ZERGLING, + ItemNames.SWARM_QUEEN, + ItemNames.ROACH, + ItemNames.HYDRALISK, }, # TODO Placeholder for Prophecy SC2Race.PROTOSS: { - ItemNames.Zealot, - ItemNames.Stalker, + ItemNames.ZEALOT, + ItemNames.STALKER, } } advanced_basic_units = { SC2Race.TERRAN: basic_units[SC2Race.TERRAN].union({ - ItemNames.Reaper, - ItemNames.Diamondback, - ItemNames.Viking, + ItemNames.REAPER, + ItemNames.DIAMONDBACK, + ItemNames.VIKING, }), SC2Race.ZERG: basic_units[SC2Race.ZERG].union({ - ItemNames.Infestor, - ItemNames.Aberration, + ItemNames.INFESTOR, + ItemNames.ABERRATION, }), SC2Race.PROTOSS: basic_units[SC2Race.PROTOSS].union({ - ItemNames.Dark_Templar, + ItemNames.DARK_TEMPLAR, }) } @@ -430,100 +430,100 @@ def get_basic_units(multiworld: MultiWorld, player: int, race: SC2Race) -> typin # TODO needs zerg items second_pass_placeable_items: typing.Tuple[str, ...] = ( # Buildings without upgrades - ItemNames.Sensor_Tower, - ItemNames.Hive_Mind_Emulator, - ItemNames.Psi_Disrupter, - ItemNames.Perdition_Turret, + ItemNames.SENSOR_TOWER, + ItemNames.HIVE_MIND_EMULATOR, + ItemNames.PSI_DISRUPTER, + ItemNames.PERDITION_TURRET, # General upgrades without any dependencies - ItemNames.SCV_Advanced_Construction, - ItemNames.SCV_Dual_Fusion_Welders, - ItemNames.Building_Fire_Suppression_System, - ItemNames.Building_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.Planetary_Fortress, - ItemNames.Cellular_Reactor, - ItemNames.Progressive_Regenerative_Bio_Steel, # Place only L1 + ItemNames.SCV_ADVANCED_CONSTRUCTION, + ItemNames.SCV_DUAL_FUSION_WELDERS, + ItemNames.BUILDING_FIRE_SUPPRESSION_SYSTEM, + ItemNames.BUILDING_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.PLANETARY_FORTRESS, + ItemNames.CELLULAR_REACTOR, + ItemNames.PROGRESSIVE_REGENERATIVE_BIO_STEEL, # Place only L1 # Mercenaries - ItemNames.War_Pigs, - ItemNames.Devil_Dogs, - ItemNames.Hammer_Securities, - ItemNames.Spartan_Company, - ItemNames.Siege_Breakers, - ItemNames.Hels_Angel, - ItemNames.Dusk_Wings, - ItemNames.Jacksons_Revenge, + ItemNames.WAR_PIGS, + ItemNames.DEVIL_DOGS, + ItemNames.HAMMER_SECURITIES, + ItemNames.SPARTAN_COMPANY, + ItemNames.SIEGE_BREAKERS, + ItemNames.HELS_ANGEL, + ItemNames.DUSK_WINGS, + ItemNames.JACKSONS_REVENGE, ) filler_items: typing.Tuple[str, ...] = ( - ItemNames.Starting_Minerals, - ItemNames.Starting_Vespene, + ItemNames.STARTING_MINERALS, + ItemNames.STARTING_VESPENE, ) # Defense rating table # Commented defense ratings are handled in LogicMixin defense_ratings = { - ItemNames.Siege_Tank: 5, + ItemNames.SIEGE_TANK: 5, # "Maelstrom Rounds": 2, - ItemNames.Planetary_Fortress: 3, + ItemNames.PLANETARY_FORTRESS: 3, # Bunker w/ Marine/Marauder: 3, - ItemNames.Perdition_Turret: 2, - ItemNames.Missile_Turret: 2, - ItemNames.Vulture: 2, - ItemNames.Liberator: 2, - ItemNames.Widow_Mine: 2, + ItemNames.PERDITION_TURRET: 2, + ItemNames.MISSILE_TURRET: 2, + ItemNames.VULTURE: 2, + ItemNames.LIBERATOR: 2, + ItemNames.WIDOW_MINE: 2, # "Concealment (Widow Mine)": 1 } zerg_defense_ratings = { - ItemNames.Perdition_Turret: 2, + ItemNames.PERDITION_TURRET: 2, # Bunker w/ Firebat: 2, - ItemNames.Hive_Mind_Emulator: 3, - ItemNames.Psi_Disrupter: 3, + ItemNames.HIVE_MIND_EMULATOR: 3, + ItemNames.PSI_DISRUPTER: 3, } spider_mine_sources = { - ItemNames.Vulture, - ItemNames.Reaper_Spider_Mines, - ItemNames.Siege_Tank_Spider_Mines, - ItemNames.Raven_Spider_Mines, + 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, + ItemNames.MARINE_PROGRESSIVE_STIMPACK, + ItemNames.FIREBAT_PROGRESSIVE_STIMPACK, + ItemNames.BANSHEE_PROGRESSIVE_CROSS_SPECTRUM_DAMPENERS, + ItemNames.PROGRESSIVE_REGENERATIVE_BIO_STEEL, } kerrigan_actives: typing.List[typing.Set[str]] = [ - {ItemNames.Kerrigan_Kinetic_Blast, ItemNames.Kerrigan_Leaping_Strike}, - {ItemNames.Kerrigan_Crushing_Grip, ItemNames.Kerrigan_Psionic_Shift}, + {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}, + {ItemNames.KERRIGAN_WILD_MUTATION, ItemNames.KERRIGAN_SPAWN_BANELINGS, ItemNames.KERRIGAN_MEND}, set(), set(), - {ItemNames.Kerrigan_Apocalypse, ItemNames.Kerrigan_Spawn_Leviathan, ItemNames.Kerrigan_Drop_Pods}, + {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}, + {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}, + {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, + ItemNames.KERRIGAN_HEROIC_FORTITUDE, ItemNames.KERRIGAN_CHAIN_REACTION, + ItemNames.KERRIGAN_INFEST_BROODLINGS, ItemNames.KERRIGAN_FURY, ItemNames.KERRIGAN_ABILITY_EFFICIENCY, } # 'number' values of upgrades for upgrade bundle items @@ -551,34 +551,34 @@ def get_basic_units(multiworld: MultiWorld, player: int, race: SC2Race) -> typin # 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_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, }, { # 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_TERRAN_WEAPON_UPGRADE, + ItemNames.PROGRESSIVE_TERRAN_ARMOR_UPGRADE, + ItemNames.PROGRESSIVE_ZERG_WEAPON_UPGRADE, + ItemNames.PROGRESSIVE_ZERG_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_TERRAN_INFANTRY_UPGRADE, + ItemNames.PROGRESSIVE_TERRAN_VEHICLE_UPGRADE, + ItemNames.PROGRESSIVE_TERRAN_SHIP_UPGRADE, + ItemNames.PROGRESSIVE_ZERG_GROUND_UPGRADE, + ItemNames.PROGRESSIVE_ZERG_FLYER_UPGRADE, }, { # Bundle All - ItemNames.Progressive_Terran_Weapon_Armor_Upgrade, - ItemNames.Progressive_Zerg_Weapon_Armor_Upgrade, + ItemNames.PROGRESSIVE_TERRAN_WEAPON_ARMOR_UPGRADE, + ItemNames.PROGRESSIVE_ZERG_WEAPON_ARMOR_UPGRADE, } ] diff --git a/worlds/sc2/LogicMixin.py b/worlds/sc2/LogicMixin.py index c6dd60706ec4..1dba2f0d927a 100644 --- a/worlds/sc2/LogicMixin.py +++ b/worlds/sc2/LogicMixin.py @@ -25,23 +25,23 @@ def _sc2wol_has_common_unit(self, multiworld: MultiWorld, player: int) -> bool: return self.has_any(get_basic_units(multiworld, player, SC2Race.TERRAN), player) def _sc2wol_has_air(self, multiworld: MultiWorld, player: int) -> bool: - return (self.has_any({ItemNames.Viking, ItemNames.Wraith, ItemNames.Banshee, ItemNames.Battlecruiser}, player) or self._sc2_advanced_tactics(multiworld, player) - and self.has_any({ItemNames.Hercules, ItemNames.Medivac}, player) and self._sc2wol_has_common_unit(multiworld, player) + return (self.has_any({ItemNames.VIKING, ItemNames.WRAITH, ItemNames.BANSHEE, ItemNames.BATTLECRUISER}, player) or self._sc2_advanced_tactics(multiworld, player) + and self.has_any({ItemNames.HERCULES, ItemNames.MEDIVAC}, player) and self._sc2wol_has_common_unit(multiworld, player) ) def _sc2wol_has_air_anti_air(self, multiworld: MultiWorld, player: int) -> bool: return ( - self.has(ItemNames.Viking, player) - or self.has_all({ItemNames.Wraith, ItemNames.Wraith_Advanced_Laser_Technology}, player) - or self.has_all({ItemNames.Battlecruiser, ItemNames.Battlecruiser_ATX_Laser_Battery}, player) - or self._sc2_advanced_tactics(multiworld, player) and self.has_any({ItemNames.Wraith, ItemNames.Valkyrie, ItemNames.Battlecruiser}, player) + self.has(ItemNames.VIKING, player) + or self.has_all({ItemNames.WRAITH, ItemNames.WRAITH_ADVANCED_LASER_TECHNOLOGY}, player) + or self.has_all({ItemNames.BATTLECRUISER, ItemNames.BATTLECRUISER_ATX_LASER_BATTERY}, player) + or self._sc2_advanced_tactics(multiworld, player) and self.has_any({ItemNames.WRAITH, ItemNames.VALKYRIE, ItemNames.BATTLECRUISER}, player) ) def _sc2wol_has_competent_ground_to_air(self, multiworld: MultiWorld, player: int) -> bool: return ( - self.has(ItemNames.Goliath, player) - or self.has(ItemNames.Marine, player) and self.has_any({ItemNames.Medic, ItemNames.Medivac}, player) - or self._sc2_advanced_tactics(multiworld, player) and self.has(ItemNames.Cyclone, player) + self.has(ItemNames.GOLIATH, player) + or self.has(ItemNames.MARINE, player) and self.has_any({ItemNames.MEDIC, ItemNames.MEDIVAC}, player) + or self._sc2_advanced_tactics(multiworld, player) and self.has(ItemNames.CYCLONE, player) ) def _sc2wol_has_competent_anti_air(self, multiworld: MultiWorld, player: int) -> bool: @@ -56,38 +56,38 @@ def _sc2wol_welcome_to_the_jungle_requirement(self, multiworld: MultiWorld, play and self._sc2wol_has_competent_ground_to_air(multiworld, player) ) or ( self._sc2_advanced_tactics(multiworld, player) - and self.has_any({ItemNames.Marine, ItemNames.Vulture}, player) + and self.has_any({ItemNames.MARINE, ItemNames.VULTURE}, player) and self._sc2wol_has_air_anti_air(multiworld, player) ) def _sc2wol_has_anti_air(self, multiworld: MultiWorld, player: int) -> bool: return ( self.has_any({ - ItemNames.Missile_Turret, ItemNames.Thor, ItemNames.War_Pigs, ItemNames.Spartan_Company, - ItemNames.Hels_Angel, ItemNames.Battlecruiser, ItemNames.Marine, ItemNames.Wraith, - ItemNames.Valkyrie, ItemNames.Cyclone, + ItemNames.MISSILE_TURRET, ItemNames.THOR, ItemNames.WAR_PIGS, ItemNames.SPARTAN_COMPANY, + ItemNames.HELS_ANGEL, ItemNames.BATTLECRUISER, ItemNames.MARINE, ItemNames.WRAITH, + ItemNames.VALKYRIE, ItemNames.CYCLONE, }, player) or self._sc2wol_has_competent_anti_air(multiworld, player) or self._sc2_advanced_tactics(multiworld, player) - and self.has_any({ItemNames.Ghost, ItemNames.Spectre, ItemNames.Widow_Mine, ItemNames.Liberator}, player) + and self.has_any({ItemNames.GHOST, ItemNames.SPECTRE, ItemNames.WIDOW_MINE, ItemNames.LIBERATOR}, player) ) def _sc2wol_defense_rating(self, multiworld: MultiWorld, player: int, zerg_enemy: bool, air_enemy: bool = True) -> int: defense_score = sum((defense_ratings[item] for item in defense_ratings if self.has(item, player))) - if self.has_any({ItemNames.Marine, ItemNames.Marauder}, player) and self.has(ItemNames.Bunker, player): + if self.has_any({ItemNames.MARINE, ItemNames.MARAUDER}, player) and self.has(ItemNames.BUNKER, player): defense_score += 3 - if self.has_all({ItemNames.Siege_Tank, ItemNames.Siege_Tank_Maelstrom_Rounds}, player): + if self.has_all({ItemNames.SIEGE_TANK, ItemNames.SIEGE_TANK_MAELSTROM_ROUNDS}, player): defense_score += 2 - if self.has_all({ItemNames.Siege_Tank, ItemNames.Siege_Tank_Graduating_Range}, player): + if self.has_all({ItemNames.SIEGE_TANK, ItemNames.SIEGE_TANK_GRADUATING_RANGE}, player): defense_score += 1 - if self.has_all({ItemNames.Widow_Mine, ItemNames.Widow_Mine_Concealment}, player): + if self.has_all({ItemNames.WIDOW_MINE, ItemNames.WIDOW_MINE_CONCEALMENT}, player): defense_score += 1 if zerg_enemy: defense_score += sum((zerg_defense_ratings[item] for item in zerg_defense_ratings if self.has(item, player))) - if self.has(ItemNames.Firebat, player) and self.has(ItemNames.Bunker, player): + if self.has(ItemNames.FIREBAT, player) and self.has(ItemNames.BUNKER, player): defense_score += 2 - if not air_enemy and self.has(ItemNames.Missile_Turret, player): - defense_score -= defense_ratings[ItemNames.Missile_Turret] + if not air_enemy and self.has(ItemNames.MISSILE_TURRET, player): + defense_score -= defense_ratings[ItemNames.MISSILE_TURRET] # Advanced Tactics bumps defense rating requirements down by 2 if self._sc2_advanced_tactics(multiworld, player): defense_score += 2 @@ -96,65 +96,65 @@ def _sc2wol_defense_rating(self, multiworld: MultiWorld, player: int, zerg_enemy def _sc2wol_has_competent_comp(self, multiworld: MultiWorld, player: int) -> bool: return ( ( - (self.has_any({ItemNames.Marine, ItemNames.Marauder}, player) - and self.has_any({ItemNames.Medivac, ItemNames.Medic}, player)) - or self.has_any({ItemNames.Thor, ItemNames.Banshee, ItemNames.Siege_Tank}, player) - or self.has_all({ItemNames.Liberator, ItemNames.Liberator_Raid_Artillery}, player) + (self.has_any({ItemNames.MARINE, ItemNames.MARAUDER}, player) + and self.has_any({ItemNames.MEDIVAC, ItemNames.MEDIC}, player)) + or self.has_any({ItemNames.THOR, ItemNames.BANSHEE, ItemNames.SIEGE_TANK}, player) + or self.has_all({ItemNames.LIBERATOR, ItemNames.LIBERATOR_RAID_ARTILLERY}, player) ) and self._sc2wol_has_competent_anti_air(multiworld, player) ) or ( - self.has(ItemNames.Battlecruiser, player) and self._sc2wol_has_common_unit(multiworld, player) + self.has(ItemNames.BATTLECRUISER, player) and self._sc2wol_has_common_unit(multiworld, player) ) def _sc2wol_has_train_killers(self, multiworld: MultiWorld, player: int) -> bool: return ( - self.has_any({ItemNames.Siege_Tank, ItemNames.Diamondback, ItemNames.Marauder, ItemNames.Cyclone}, player) + self.has_any({ItemNames.SIEGE_TANK, ItemNames.DIAMONDBACK, ItemNames.MARAUDER, ItemNames.CYCLONE}, player) or self._sc2_advanced_tactics(multiworld, player) and ( - self.has_all({ItemNames.Reaper, ItemNames.Reaper_G4_Clusterbomb}, player) - or self.has_all({ItemNames.Spectre, ItemNames.Spectre_Psionic_Lash}, player) - or self.has_any({ItemNames.Vulture, ItemNames.Liberator}, player) + self.has_all({ItemNames.REAPER, ItemNames.REAPER_G4_CLUSTERBOMB}, player) + or self.has_all({ItemNames.SPECTRE, ItemNames.SPECTRE_PSIONIC_LASH}, player) + or self.has_any({ItemNames.VULTURE, ItemNames.LIBERATOR}, player) ) ) def _sc2wol_able_to_rescue(self, multiworld: MultiWorld, player: int) -> bool: - return (self.has_any({ItemNames.Medivac, ItemNames.Hercules, ItemNames.Raven, ItemNames.Viking}, player) + return (self.has_any({ItemNames.MEDIVAC, ItemNames.HERCULES, ItemNames.RAVEN, ItemNames.VIKING}, player) or self._sc2_advanced_tactics(multiworld, player) ) def _sc2wol_has_protoss_common_units(self, multiworld: MultiWorld, player: int) -> bool: - return (self.has_any({ItemNames.Zealot, ItemNames.Immortal, ItemNames.Stalker, ItemNames.Dark_Templar}, player) - or self._sc2_advanced_tactics(multiworld, player) and self.has(ItemNames.High_Templar, player) + return (self.has_any({ItemNames.ZEALOT, ItemNames.IMMORTAL, ItemNames.STALKER, ItemNames.DARK_TEMPLAR}, player) + or self._sc2_advanced_tactics(multiworld, player) and self.has(ItemNames.HIGH_TEMPLAR, player) ) def _sc2wol_has_protoss_medium_units(self, multiworld: MultiWorld, player: int) -> bool: return ( self._sc2wol_has_protoss_common_units(multiworld, player) - and self.has_any({ItemNames.Stalker, ItemNames.Void_Ray, ItemNames.Carrier}, player) + and self.has_any({ItemNames.STALKER, ItemNames.VOID_RAY, ItemNames.CARRIER}, player) or self._sc2_advanced_tactics(multiworld, player) - and self.has(ItemNames.Dark_Templar, player) + and self.has(ItemNames.DARK_TEMPLAR, player) ) def _sc2wol_beats_protoss_deathball(self, multiworld: MultiWorld, player: int) -> bool: return ( ( - self.has_any({ItemNames.Banshee, ItemNames.Battlecruiser}, player) - or self.has_all({ItemNames.Liberator, ItemNames.Liberator_Raid_Artillery}, player) + self.has_any({ItemNames.BANSHEE, ItemNames.BATTLECRUISER}, player) + or self.has_all({ItemNames.LIBERATOR, ItemNames.LIBERATOR_RAID_ARTILLERY}, player) ) and self._sc2wol_has_competent_anti_air(multiworld, player) or self._sc2wol_has_competent_comp(multiworld, player) and self._sc2wol_has_air_anti_air(multiworld, player) ) def _sc2wol_has_mm_upgrade(self, multiworld: MultiWorld, player: int) -> bool: - return self.has_any({ItemNames.Marine_Combat_Shield, ItemNames.Medic_Stabilizer_Medpacks}, player) + return self.has_any({ItemNames.MARINE_COMBAT_SHIELD, ItemNames.MEDIC_STABILIZER_MEDPACKS}, player) def _sc2wol_survives_rip_field(self, multiworld: MultiWorld, player: int) -> bool: - return self.has(ItemNames.Battlecruiser, player) or \ + return self.has(ItemNames.BATTLECRUISER, player) or \ self._sc2wol_has_air(multiworld, player) and \ self._sc2wol_has_competent_anti_air(multiworld, player) and \ - self.has(ItemNames.Science_Vessel, player) + self.has(ItemNames.SCIENCE_VESSEL, player) def _sc2wol_has_nukes(self, multiworld: MultiWorld, player: int) -> bool: - return self._sc2_advanced_tactics(multiworld, player) and self.has_any({ItemNames.Ghost, ItemNames.Spectre}, player) + return self._sc2_advanced_tactics(multiworld, player) and self.has_any({ItemNames.GHOST, ItemNames.SPECTRE}, player) def _sc2wol_can_respond_to_colony_infestations(self, multiworld: MultiWorld, player: int) -> bool: return ( @@ -162,25 +162,25 @@ def _sc2wol_can_respond_to_colony_infestations(self, multiworld: MultiWorld, pla and self._sc2wol_has_competent_anti_air(multiworld, player) and ( self._sc2wol_has_air_anti_air(multiworld, player) - or self.has_any({ItemNames.Battlecruiser, ItemNames.Valkyrie}, player) + or self.has_any({ItemNames.BATTLECRUISER, ItemNames.VALKYRIE}, player) ) and self._sc2wol_defense_rating(multiworld, player, True) >= 3 ) def _sc2wol_final_mission_requirements(self, multiworld: MultiWorld, player: int): - beats_kerrigan = self.has_any({ItemNames.Marine, ItemNames.Banshee, ItemNames.Ghost}, player) or self._sc2_advanced_tactics(multiworld, player) + beats_kerrigan = self.has_any({ItemNames.MARINE, ItemNames.BANSHEE, ItemNames.GHOST}, player) or self._sc2_advanced_tactics(multiworld, player) if get_option_value(multiworld, player, 'all_in_map') == AllInMap.option_ground: # Ground defense_rating = self._sc2wol_defense_rating(multiworld, player, True, False) - if self.has_any({ItemNames.Battlecruiser, ItemNames.Banshee}, player): + if self.has_any({ItemNames.BATTLECRUISER, ItemNames.BANSHEE}, player): defense_rating += 3 return defense_rating >= 12 and beats_kerrigan else: # Air defense_rating = self._sc2wol_defense_rating(multiworld, player, True, True) return defense_rating >= 8 and beats_kerrigan \ - and self.has_any({ItemNames.Viking, ItemNames.Battlecruiser, ItemNames.Valkyrie}, player) \ - and self.has_any({ItemNames.Hive_Mind_Emulator, ItemNames.Psi_Disrupter, ItemNames.Missile_Turret}, player) + and self.has_any({ItemNames.VIKING, ItemNames.BATTLECRUISER, ItemNames.VALKYRIE}, player) \ + and self.has_any({ItemNames.HIVE_MIND_EMULATOR, ItemNames.PSI_DISRUPTER, ItemNames.MISSILE_TURRET}, player) def _sc2wol_cleared_missions(self, multiworld: MultiWorld, player: int, mission_count: int) -> bool: return self.has_group("WoL Missions", player, mission_count) @@ -190,34 +190,34 @@ def _sc2hots_has_common_unit(self, multiworld: MultiWorld, player: int) -> bool: return self.has_any(get_basic_units(multiworld, player, SC2Race.ZERG), player) def _sc2hots_has_good_antiair(self, multiworld: MultiWorld, player: int) -> bool: - return self.has_any({ItemNames.Hydralisk, ItemNames.Mutalisk}, player) or \ - self.has_all({ItemNames.Swarm_Host, ItemNames.Swarm_Host_Pressurized_Glands}, player) or \ - (self._sc2_advanced_tactics(multiworld, player) and self.has(ItemNames.Infestor, player)) + return self.has_any({ItemNames.HYDRALISK, ItemNames.MUTALISK}, player) or \ + self.has_all({ItemNames.SWARM_HOST, ItemNames.SWARM_HOST_PRESSURIZED_GLANDS}, player) or \ + (self._sc2_advanced_tactics(multiworld, player) and self.has(ItemNames.INFESTOR, player)) def _sc2hots_has_minimal_antiair(self, multiworld: MultiWorld, player: int) -> bool: return self._sc2hots_has_good_antiair(multiworld, player) or get_option_value(multiworld, player, 'kerriganless') in kerrigan_unit_available or \ - self.has(ItemNames.Swarm_Queen, player) or (self._sc2_advanced_tactics(multiworld, player) and self.has(ItemNames.Spore_Crawler, player)) + self.has(ItemNames.SWARM_QUEEN, player) or (self._sc2_advanced_tactics(multiworld, player) and self.has(ItemNames.SPORE_CRAWLER, player)) def _sc2hots_has_brood_lord(self, multiworld: MultiWorld, player: int) -> bool: - return self.has_all({ItemNames.Mutalisk, ItemNames.Mutalisk_Brood_Lord_Strain}, player) + return self.has_all({ItemNames.MUTALISK, ItemNames.MUTALISK_BROOD_LORD_STRAIN}, player) def _sc2hots_has_viper(self, multiworld: MultiWorld, player: int) -> bool: - return self.has_all({ItemNames.Mutalisk, ItemNames.Mutalisk_Viper_Strain}, player) + return self.has_all({ItemNames.MUTALISK, ItemNames.MUTALISK_VIPER_STRAIN}, player) def _sc2hots_has_impaler_or_lurker(self, multiworld: MultiWorld, player: int) -> bool: - return self.has(ItemNames.Hydralisk, player) and self.has_any({ItemNames.Hydralisk_Impaler_Strain, ItemNames.Hydralisk_Lurker_Strain}, player) + return self.has(ItemNames.HYDRALISK, player) and self.has_any({ItemNames.HYDRALISK_IMPALER_STRAIN, ItemNames.HYDRALISK_LURKER_STRAIN}, player) def _sc2hots_has_competent_comp(self, multiworld: MultiWorld, player: int) -> bool: advanced = self._sc2_advanced_tactics(multiworld, player) - core_unit = self.has_any({ItemNames.Roach, ItemNames.Aberration, ItemNames.Zergling}, player) - support_unit = self.has_any({ItemNames.Swarm_Queen, ItemNames.Hydralisk}, player) \ + core_unit = self.has_any({ItemNames.ROACH, ItemNames.ABERRATION, ItemNames.ZERGLING}, player) + support_unit = self.has_any({ItemNames.SWARM_QUEEN, ItemNames.HYDRALISK}, player) \ or self._sc2hots_has_brood_lord(multiworld, player) \ - or advanced and (self.has(ItemNames.Infestor, player) or self._sc2hots_has_viper(multiworld, player)) + or advanced and (self.has(ItemNames.INFESTOR, player) or self._sc2hots_has_viper(multiworld, player)) if core_unit and support_unit: return True - vespene_unit = self.has_any({ItemNames.Ultralisk, ItemNames.Aberration}, player) \ + vespene_unit = self.has_any({ItemNames.ULTRALISK, ItemNames.ABERRATION}, player) \ or advanced and self._sc2hots_has_viper(multiworld, player) - return vespene_unit and self.has_any({ItemNames.Zergling, ItemNames.Swarm_Queen}, player) + return vespene_unit and self.has_any({ItemNames.ZERGLING, ItemNames.SWARM_QUEEN}, player) def _sc2hots_has_basic_comp(self, multiworld: MultiWorld, player: int) -> bool: if get_option_value(multiworld, player, 'game_difficulty') < GameDifficulty.option_brutal \ @@ -228,20 +228,20 @@ def _sc2hots_has_basic_comp(self, multiworld: MultiWorld, player: int) -> bool: return self._sc2hots_has_competent_comp(multiworld, player) def _sc2hots_can_spread_creep(self, multiworld: MultiWorld, player: int) -> bool: - return self._sc2_advanced_tactics(multiworld, player) or self.has(ItemNames.Swarm_Queen, player) + return self._sc2_advanced_tactics(multiworld, player) or self.has(ItemNames.SWARM_QUEEN, player) def _sc2hots_has_competent_defense(self, multiworld: MultiWorld, player: int) -> bool: return ( self._sc2hots_has_common_unit(multiworld, player) and ( ( - self.has(ItemNames.Swarm_Host, player) + self.has(ItemNames.SWARM_HOST, player) or self._sc2hots_has_brood_lord(multiworld, player) or self._sc2hots_has_impaler_or_lurker(multiworld, player) ) or ( self._sc2_advanced_tactics(multiworld, player) and (self._sc2hots_has_viper(multiworld, player) - or self.has(ItemNames.Spine_Crawler, player)) + or self.has(ItemNames.SPINE_CRAWLER, player)) ) ) ) @@ -249,15 +249,15 @@ def _sc2hots_has_competent_defense(self, multiworld: MultiWorld, player: int) -> def _sc2hots_has_basic_kerrigan(self, multiworld: MultiWorld, player: int) -> bool: # One active ability that can be used to defeat enemies directly on Standard if not self._sc2_advanced_tactics(multiworld, player) and \ - not self.has_any({ItemNames.Kerrigan_Kinetic_Blast, ItemNames.Kerrigan_Leaping_Strike, - ItemNames.Kerrigan_Crushing_Grip, ItemNames.Kerrigan_Psionic_Shift, - ItemNames.Kerrigan_Spawn_Banelings}, player): + not self.has_any({ItemNames.KERRIGAN_KINETIC_BLAST, ItemNames.KERRIGAN_LEAPING_STRIKE, + ItemNames.KERRIGAN_CRUSHING_GRIP, ItemNames.KERRIGAN_PSIONIC_SHIFT, + ItemNames.KERRIGAN_SPAWN_BANELINGS}, player): return False # Two non-ultimate abilities count = 0 - for item in (ItemNames.Kerrigan_Kinetic_Blast, ItemNames.Kerrigan_Leaping_Strike, ItemNames.Kerrigan_Heroic_Fortitude, - ItemNames.Kerrigan_Chain_Reaction, ItemNames.Kerrigan_Crushing_Grip, ItemNames.Kerrigan_Psionic_Shift, - ItemNames.Kerrigan_Spawn_Banelings, ItemNames.Kerrigan_Infest_Broodlings, ItemNames.Kerrigan_Fury): + for item in (ItemNames.KERRIGAN_KINETIC_BLAST, ItemNames.KERRIGAN_LEAPING_STRIKE, ItemNames.KERRIGAN_HEROIC_FORTITUDE, + ItemNames.KERRIGAN_CHAIN_REACTION, ItemNames.KERRIGAN_CRUSHING_GRIP, ItemNames.KERRIGAN_PSIONIC_SHIFT, + ItemNames.KERRIGAN_SPAWN_BANELINGS, ItemNames.KERRIGAN_INFEST_BROODLINGS, ItemNames.KERRIGAN_FURY): if self.has(item, player): count += 1 if count >= 2: @@ -272,5 +272,5 @@ def _sc2hots_has_two_kerrigan_actives(self, multiworld: MultiWorld, player: int) return count >= 2 def _sc2hots_has_low_tech(self, multiworld: MultiWorld, player: int) -> bool: - return self.has_any({ItemNames.Zergling, ItemNames.Swarm_Queen, ItemNames.Spine_Crawler}, player) \ + return self.has_any({ItemNames.ZERGLING, ItemNames.SWARM_QUEEN, ItemNames.SPINE_CRAWLER}, player) \ or self._sc2hots_has_common_unit(multiworld, player) and self._sc2hots_has_basic_kerrigan(multiworld, player) diff --git a/worlds/sc2/PoolFilter.py b/worlds/sc2/PoolFilter.py index 6df5442b14b1..e498f4123816 100644 --- a/worlds/sc2/PoolFilter.py +++ b/worlds/sc2/PoolFilter.py @@ -14,18 +14,18 @@ UPGRADABLE_ITEMS = {item.parent_item for item in get_full_item_list().values() if item.parent_item} BARRACKS_UNITS = { - ItemNames.Marine, ItemNames.Medic, ItemNames.Firebat, ItemNames.Marauder, - ItemNames.Reaper, ItemNames.Ghost, ItemNames.Spectre, + ItemNames.MARINE, ItemNames.MEDIC, ItemNames.FIREBAT, ItemNames.MARAUDER, + ItemNames.REAPER, ItemNames.GHOST, ItemNames.SPECTRE, } FACTORY_UNITS = { - ItemNames.Hellion, ItemNames.Vulture, ItemNames.Goliath, ItemNames.Diamondback, - ItemNames.Siege_Tank, ItemNames.Thor, ItemNames.Predator, ItemNames.Widow_Mine, - ItemNames.Cyclone, + ItemNames.HELLION, ItemNames.VULTURE, ItemNames.GOLIATH, ItemNames.DIAMONDBACK, + ItemNames.SIEGE_TANK, ItemNames.THOR, ItemNames.PREDATOR, ItemNames.WIDOW_MINE, + ItemNames.CYCLONE, } STARPORT_UNITS = { - ItemNames.Medivac, ItemNames.Wraith, ItemNames.Viking, ItemNames.Banshee, - ItemNames.Battlecruiser, ItemNames.Hercules, ItemNames.Science_Vessel, ItemNames.Raven, - ItemNames.Liberator, ItemNames.Valkyrie, + ItemNames.MEDIVAC, ItemNames.WRAITH, ItemNames.VIKING, ItemNames.BANSHEE, + ItemNames.BATTLECRUISER, ItemNames.HERCULES, ItemNames.SCIENCE_VESSEL, ItemNames.RAVEN, + ItemNames.LIBERATOR, ItemNames.VALKYRIE, } @@ -331,27 +331,27 @@ def attempt_removal(item: Item) -> bool: inventory = [item for item in inventory if not item.name.endswith("(Spider Mine)")] if not BARRACKS_UNITS & self.logical_inventory: inventory = [item for item in inventory if - not (item.name.startswith(ItemNames.terran_infantry_upgrade_prefix) or item.name == ItemNames.Orbital_Strike)] + not (item.name.startswith(ItemNames.TERRAN_INFANTRY_UPGRADE_PREFIX) or item.name == ItemNames.ORBITAL_STRIKE)] if not FACTORY_UNITS & self.logical_inventory: - inventory = [item for item in inventory if not item.name.startswith(ItemNames.terran_vehicle_upgrade_prefix)] + inventory = [item for item in inventory if not item.name.startswith(ItemNames.TERRAN_VEHICLE_UPGRADE_PREFIX)] if not STARPORT_UNITS & self.logical_inventory: - inventory = [item for item in inventory if not item.name.startswith(ItemNames.terran_ship_upgrade_prefix)] + inventory = [item for item in inventory if not item.name.startswith(ItemNames.TERRAN_SHIP_UPGRADE_PREFIX)] # HotS # Baneling without sources => remove Baneling and upgrades - if (ItemNames.Baneling in self.logical_inventory - and ItemNames.Zergling not in self.logical_inventory - and ItemNames.Kerrigan_Spawn_Banelings not in self.logical_inventory + if (ItemNames.BANELING in self.logical_inventory + and ItemNames.ZERGLING not in self.logical_inventory + and ItemNames.KERRIGAN_SPAWN_BANELINGS not in self.logical_inventory ): - inventory = [item for item in inventory if ItemNames.Baneling not in item.name] + inventory = [item for item in inventory if ItemNames.BANELING not in item.name] # Spawn Banelings without Zergling => remove Baneling unit, keep upgrades - if (ItemNames.Baneling in self.logical_inventory - and ItemNames.Zergling not in self.logical_inventory - and ItemNames.Kerrigan_Spawn_Banelings in self.logical_inventory + if (ItemNames.BANELING in self.logical_inventory + and ItemNames.ZERGLING not in self.logical_inventory + and ItemNames.KERRIGAN_SPAWN_BANELINGS in self.logical_inventory ): - inventory = [item for item in inventory if item.name != ItemNames.Baneling] - if ItemNames.Mutalisk not in self.logical_inventory: - inventory = [item for item in inventory if not item.name.startswith(ItemNames.zerg_flyer_upgrade_prefix)] - locked_items = [item for item in locked_items if not item.name.startswith(ItemNames.zerg_flyer_upgrade_prefix)] + inventory = [item for item in inventory if item.name != ItemNames.BANELING] + if ItemNames.MUTALISK not in self.logical_inventory: + inventory = [item for item in inventory if not item.name.startswith(ItemNames.ZERG_FLYER_UPGRADE_PREFIX)] + locked_items = [item for item in locked_items if not item.name.startswith(ItemNames.ZERG_FLYER_UPGRADE_PREFIX)] # Cull finished, adding locked items back into inventory inventory += locked_items