From cbdb52f9dab7fb30c370539deeadf1ef5ff048ac Mon Sep 17 00:00:00 2001 From: EnvyDragon <138727357+EnvyDragon@users.noreply.github.com> Date: Thu, 4 Jul 2024 17:44:10 -0400 Subject: [PATCH] SC2: Adding Primal Igniter and upgrades --- worlds/sc2/item_descriptions.py | 3 +++ worlds/sc2/item_names.py | 3 +++ worlds/sc2/items.py | 9 +++++++++ worlds/sc2/pool_filter.py | 4 ++++ 4 files changed, 19 insertions(+) diff --git a/worlds/sc2/item_descriptions.py b/worlds/sc2/item_descriptions.py index 7bd7f160e093..4801ddc23b8b 100644 --- a/worlds/sc2/item_descriptions.py +++ b/worlds/sc2/item_descriptions.py @@ -651,6 +651,8 @@ def _ability_desc(unit_name_plural: str, ability_name: str, ability_description: item_names.CORRUPTOR_CONSTRUCT_REGENERATION: "Corruptors gain increased life regeneration.", item_names.CORRUPTOR_SCOURGE_INCUBATION: "Corruptors spawn 2 Scourge upon death (3 with Swarm Scourge).", item_names.CORRUPTOR_RESOURCE_EFFICIENCY: _get_resource_efficiency_desc(item_names.CORRUPTOR), + item_names.PRIMAL_IGNITER_CONCENTRATED_FIRE: "Primal Igniters deal +15 damage vs light armor.", + item_names.PRIMAL_IGNITER_PRIMAL_TENACITY: "Primal Igniters gain +100 health and +1 armor.", item_names.ZERGLING_RAPTOR_STRAIN: "Allows Zerglings to jump up and down cliffs and leap onto enemies. Also increases Zergling attack damage by 2.", item_names.ZERGLING_SWARMLING_STRAIN: "Zerglings will spawn instantly and with an extra Zergling per egg at no additional cost.", item_names.ROACH_VILE_STRAIN: "Roach attacks will slow the movement and attack speed of enemies.", @@ -712,6 +714,7 @@ def _ability_desc(unit_name_plural: str, ability_name: str, ability_description: item_names.MUTALISK_CORRUPTOR_GUARDIAN_ASPECT: "Long-range anti-ground flyer. Can attack ground units. Morphed from the Mutalisk or Corruptor.", item_names.MUTALISK_CORRUPTOR_DEVOURER_ASPECT: "Anti-air flyer. Attack inflict Acid Spores. Can attack air units. Morphed from the Mutalisk or Corruptor.", item_names.ROACH_RAVAGER_ASPECT: "Ranged artillery. Can use Corrosive Bile. Can attack ground units. Morphed from the Roach.", + item_names.ROACH_PRIMAL_IGNITER_ASPECT: "Assault unit. Has an area-damage attack. Regenerates life quickly when burrowed. Can attack ground units. Morphed by merging two Roaches.", item_names.OBSERVER: "Flying spy. Cloak renders the unit invisible to enemies without detection.", item_names.CENTURION: "Powerful melee warrior. Has the Shadow Charge and Darkcoil abilities.", item_names.SENTINEL: "Powerful melee warrior. Has the Charge and Reconstruction abilities.", diff --git a/worlds/sc2/item_names.py b/worlds/sc2/item_names.py index 4eaf6e5e1015..6e31c5ae8684 100644 --- a/worlds/sc2/item_names.py +++ b/worlds/sc2/item_names.py @@ -451,6 +451,8 @@ CORRUPTOR_CONSTRUCT_REGENERATION = "Construct Regeneration (Corruptor)" CORRUPTOR_SCOURGE_INCUBATION = "Scourge Incubation (Corruptor)" CORRUPTOR_RESOURCE_EFFICIENCY = "Resource Efficiency (Corruptor)" +PRIMAL_IGNITER_CONCENTRATED_FIRE = "Concentrated Fire (Primal Igniter)" +PRIMAL_IGNITER_PRIMAL_TENACITY = "Primal Tenacity (Primal Igniter)" OVERLORD_IMPROVED_OVERLORDS = "Improved Overlords (Overlord)" OVERLORD_VENTRAL_SACS = "Ventral Sacs (Overlord)" OVERLORD_GENERATE_CREEP = "Generate Creep (Overlord)" @@ -479,6 +481,7 @@ MUTALISK_CORRUPTOR_DEVOURER_ASPECT = "Devourer Aspect (Mutalisk/Corruptor)" ROACH_RAVAGER_ASPECT = "Ravager Aspect (Roach)" OVERLORD_OVERSEER_ASPECT = "Overseer Aspect (Overlord)" +ROACH_PRIMAL_IGNITER_ASPECT = "Primal Igniter Aspect (Roach)" # Zerg Mercs INFESTED_MEDICS = "Infested Medics" diff --git a/worlds/sc2/items.py b/worlds/sc2/items.py index 3e63ec6c3b4c..064d503212ca 100644 --- a/worlds/sc2/items.py +++ b/worlds/sc2/items.py @@ -60,6 +60,7 @@ class ZergItemType(ItemTypeEnum): """Zerg global economy upgrades, like automated extractors""" Mutation_2 = "Mutation", 10 Mutation_3 = "Mutation", 11 + Mutation_4 = "Mutation", 12 class ProtossItemType(ItemTypeEnum): @@ -1380,6 +1381,13 @@ def get_full_item_list(): ItemData(289 + SC2HOTS_ITEM_ID_OFFSET, ZergItemType.Mutation_3, 29, SC2Race.ZERG, parent_item=item_names.CORRUPTOR, origin={"ext"}), + item_names.PRIMAL_IGNITER_CONCENTRATED_FIRE: + ItemData(290 + SC2HOTS_ITEM_ID_OFFSET, ZergItemType.Mutation_4, 0, SC2Race.ZERG, parent_item=item_names.ROACH_PRIMAL_IGNITER_ASPECT, + origin={"ext"}), + item_names.PRIMAL_IGNITER_PRIMAL_TENACITY: + ItemData(291 + SC2HOTS_ITEM_ID_OFFSET, ZergItemType.Mutation_4, 1, SC2Race.ZERG, parent_item=item_names.ROACH_PRIMAL_IGNITER_ASPECT, + origin={"ext"}), + item_names.ZERGLING_RAPTOR_STRAIN: ItemData(300 + SC2HOTS_ITEM_ID_OFFSET, ZergItemType.Strain, 0, SC2Race.ZERG, parent_item=item_names.ZERGLING, origin={"hots"}), @@ -1476,6 +1484,7 @@ def get_full_item_list(): item_names.MUTALISK_CORRUPTOR_DEVOURER_ASPECT: ItemData(801 + SC2HOTS_ITEM_ID_OFFSET, ZergItemType.Morph, 7, SC2Race.ZERG, origin={"bw"}), item_names.ROACH_RAVAGER_ASPECT: ItemData(802 + SC2HOTS_ITEM_ID_OFFSET, ZergItemType.Morph, 8, SC2Race.ZERG, origin={"ext"}), item_names.OVERLORD_OVERSEER_ASPECT: ItemData(803 + SC2HOTS_ITEM_ID_OFFSET, ZergItemType.Morph, 4, SC2Race.ZERG, origin={"ext"}, classification=ItemClassification.progression), + item_names.ROACH_PRIMAL_IGNITER_ASPECT: ItemData(804 + SC2HOTS_ITEM_ID_OFFSET, ZergItemType.Morph, 9, SC2Race.ZERG, origin={"ext"}), # Protoss Units (those that aren't as items in WoL (Prophecy)) diff --git a/worlds/sc2/pool_filter.py b/worlds/sc2/pool_filter.py index 4a76bf182179..61b6253c8c07 100644 --- a/worlds/sc2/pool_filter.py +++ b/worlds/sc2/pool_filter.py @@ -486,8 +486,12 @@ def attempt_removal(item: Item) -> bool: if item_names.ROACH not in logical_inventory_set and not enable_morphling: inventory = [item for item in inventory if item.name != item_names.ROACH_RAVAGER_ASPECT] inventory = [item for item in inventory if item_list[item.name].parent_item != item_names.ROACH_RAVAGER_ASPECT] + inventory = [item for item in inventory if item.name != item_names.ROACH_PRIMAL_IGNITER_ASPECT] + inventory = [item for item in inventory if item_list[item.name].parent_item != item_names.ROACH_PRIMAL_IGNITER_ASPECT] unused_items = [item_name for item_name in unused_items if item_name != item_names.ROACH_RAVAGER_ASPECT] unused_items = [item_name for item_name in unused_items if item_list[item_name].parent_item != item_names.ROACH_RAVAGER_ASPECT] + unused_items = [item_name for item_name in unused_items if item_name != item_names.ROACH_PRIMAL_IGNITER_ASPECT] + unused_items = [item_name for item_name in unused_items if item_list[item_name].parent_item != item_names.ROACH_PRIMAL_IGNITER_ASPECT] if item_names.HYDRALISK not in logical_inventory_set and not enable_morphling: inventory = [item for item in inventory if not item.name.endswith("(Hydralisk)")] inventory = [item for item in inventory if item_list[item.name].parent_item != item_names.HYDRALISK_LURKER_ASPECT]