From a1ac7c994a0d0de32e668fc568fee4cee0489734 Mon Sep 17 00:00:00 2001 From: EnvyDragon <138727357+EnvyDragon@users.noreply.github.com> Date: Wed, 10 Jul 2024 17:51:19 -0400 Subject: [PATCH] SC2: Updating Dawnbringer name/desc/logic --- worlds/sc2/item_descriptions.py | 4 ++-- worlds/sc2/item_groups.py | 4 ++-- worlds/sc2/item_names.py | 4 +++- worlds/sc2/items.py | 4 ++-- worlds/sc2/pool_filter.py | 6 +++--- worlds/sc2/rules.py | 10 +++++----- 6 files changed, 17 insertions(+), 15 deletions(-) diff --git a/worlds/sc2/item_descriptions.py b/worlds/sc2/item_descriptions.py index 3db569ae1f53..74708fef59a1 100644 --- a/worlds/sc2/item_descriptions.py +++ b/worlds/sc2/item_descriptions.py @@ -743,7 +743,7 @@ def _ability_desc(unit_name_plural: str, ability_name: str, ability_description: item_names.CORSAIR: "Air superiority starfighter. Can use the Disruption Web ability.", item_names.DESTROYER: "Area assault craft. Can use the Destruction Beam ability to attack multiple units at once.", item_names.WARP_RAY: "Surgical-strike craft. Damage output increases the longer the Warp Ray remains on target.", - item_names.SCORCHER: "Flying Assault Ship. Can use prismatic alignment to temporarily deal increased damage at the cost of movement speed.", + item_names.DAWNBRINGER: "Flying Anti-Surface Assault Ship. Attacks in an area around the target. Attack count increases as it continues firing.", item_names.SCOUT: "Versatile high-speed fighter.", item_names.TEMPEST: "Siege artillery craft. Attacks from long range. Can use the Disintegration ability.", item_names.MOTHERSHIP: "Ultimate Protoss vessel, Can use the Vortex and Mass Recall abilities. Cloaks nearby units and structures.", @@ -801,7 +801,7 @@ def _ability_desc(unit_name_plural: str, ability_name: str, ability_description: item_names.ARBITER_ENHANCED_CLOAK_FIELD: "Increases Arbiter Cloaking Field range.", item_names.CARRIER_SKYLORD_PURGER_GRAVITON_CATAPULT: "Carriers can launch Interceptors more quickly.", item_names.CARRIER_SKYLORD_PURGER_HULL_OF_PAST_GLORIES: "Carriers gain +2 armour.", - item_names.VOID_RAY_DESTROYER_WARP_RAY_SCORCHER_FLUX_VANES: "Increases Void Ray and Destroyer movement speed.", + item_names.VOID_RAY_DESTROYER_WARP_RAY_DAWNBRINGER_FLUX_VANES: "Increases movement speed of Void Ray variants.", item_names.DESTROYER_REFORGED_BLOODSHARD_CORE: "When fully charged, the Destroyer's Destruction Beam weapon does full damage to secondary targets.", item_names.WARP_PRISM_GRAVITIC_DRIVE: "Increases the movement speed of Warp Prisms.", item_names.WARP_PRISM_PHASE_BLASTER: "Equips Warp Prisms with an auto-attack that can hit ground and air targets.", diff --git a/worlds/sc2/item_groups.py b/worlds/sc2/item_groups.py index f98a99f06264..3806c8fc052d 100644 --- a/worlds/sc2/item_groups.py +++ b/worlds/sc2/item_groups.py @@ -532,7 +532,7 @@ def get_all_group_names(cls) -> typing.Set[str]: ] item_name_groups[ItemGroupNames.STARGATE_UNITS] = stargate_units = [ item_names.PHOENIX, item_names.MIRAGE, item_names.CORSAIR, - item_names.VOID_RAY, item_names.DESTROYER, item_names.WARP_RAY, item_names.SCORCHER, + item_names.VOID_RAY, item_names.DESTROYER, item_names.WARP_RAY, item_names.DAWNBRINGER, item_names.CARRIER, item_names.SKYLORD, item_names.PURGER, item_names.TEMPEST, item_names.SCOUT, item_names.MOTHERSHIP, item_names.ARBITER, item_names.ORACLE, @@ -559,7 +559,7 @@ def get_all_group_names(cls) -> typing.Set[str]: item_name_groups[ItemGroupNames.PURIFIER_UNITS] = [ item_names.SENTINEL, item_names.ADEPT, item_names.INSTIGATOR, item_names.ENERGIZER, item_names.STALWART, item_names.COLOSSUS, item_names.DISRUPTOR, - item_names.MIRAGE, item_names.SCORCHER, item_names.PURGER, item_names.TEMPEST, + item_names.MIRAGE, item_names.DAWNBRINGER, item_names.PURGER, item_names.TEMPEST, ] item_name_groups[ItemGroupNames.SOA_ITEMS] = soa_items = [ *[item_name for item_name, item_data in items.item_table.items() if item_data.type == items.ProtossItemType.Spear_Of_Adun], diff --git a/worlds/sc2/item_names.py b/worlds/sc2/item_names.py index 491102c12426..1201259b451b 100644 --- a/worlds/sc2/item_names.py +++ b/worlds/sc2/item_names.py @@ -568,7 +568,9 @@ CORSAIR = "Corsair" DESTROYER = "Destroyer" WARP_RAY = "Warp Ray" +# Retaining name for backward compatibility SCORCHER = "Scorcher" +DAWNBRINGER = "Dawnbringer" SCOUT = "Scout" TEMPEST = "Tempest" MOTHERSHIP = "Mothership" @@ -633,7 +635,7 @@ ARBITER_ENHANCED_CLOAK_FIELD = "Enhanced Cloak Field (Arbiter)" CARRIER_SKYLORD_PURGER_GRAVITON_CATAPULT = "Graviton Catapult (Carrier/Skylord/Purger)" CARRIER_SKYLORD_PURGER_HULL_OF_PAST_GLORIES = "Hull of Past Glories (Carrier/Skylord/Purger)" -VOID_RAY_DESTROYER_WARP_RAY_SCORCHER_FLUX_VANES = "Flux Vanes (Void Ray/Destroyer/Warp Ray/Scorcher)" +VOID_RAY_DESTROYER_WARP_RAY_DAWNBRINGER_FLUX_VANES = "Flux Vanes (Void Ray/Destroyer/Warp Ray/Dawnbringer)" DESTROYER_REFORGED_BLOODSHARD_CORE = "Reforged Bloodshard Core (Destroyer)" WARP_PRISM_GRAVITIC_DRIVE = "Gravitic Drive (Warp Prism)" WARP_PRISM_PHASE_BLASTER = "Phase Blaster (Warp Prism)" diff --git a/worlds/sc2/items.py b/worlds/sc2/items.py index 3c7818db485c..7235ff99b470 100644 --- a/worlds/sc2/items.py +++ b/worlds/sc2/items.py @@ -1584,7 +1584,7 @@ def get_full_item_list(): item_names.WARP_RAY: ItemData(31 + SC2LOTV_ITEM_ID_OFFSET, ProtossItemType.Unit_2, 10, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"wol"}), - item_names.SCORCHER: + item_names.DAWNBRINGER: ItemData(32 + SC2LOTV_ITEM_ID_OFFSET, ProtossItemType.Unit_2, 11, SC2Race.PROTOSS, classification=ItemClassification.progression, origin={"ext"}), item_names.SKYLORD: @@ -1650,7 +1650,7 @@ def get_full_item_list(): ItemData(333 + SC2LOTV_ITEM_ID_OFFSET, ProtossItemType.Forge_2, 3, SC2Race.PROTOSS, origin={"wol"}), item_names.CARRIER_SKYLORD_PURGER_HULL_OF_PAST_GLORIES: ItemData(334 + SC2LOTV_ITEM_ID_OFFSET, ProtossItemType.Forge_2, 4, SC2Race.PROTOSS, origin={"bw"}), - item_names.VOID_RAY_DESTROYER_WARP_RAY_SCORCHER_FLUX_VANES: + item_names.VOID_RAY_DESTROYER_WARP_RAY_DAWNBRINGER_FLUX_VANES: ItemData(335 + SC2LOTV_ITEM_ID_OFFSET, ProtossItemType.Forge_2, 5, SC2Race.PROTOSS, classification=ItemClassification.filler, origin={"ext"}), item_names.DESTROYER_REFORGED_BLOODSHARD_CORE: diff --git a/worlds/sc2/pool_filter.py b/worlds/sc2/pool_filter.py index da8a73f40c63..49f2b6b9b3a3 100644 --- a/worlds/sc2/pool_filter.py +++ b/worlds/sc2/pool_filter.py @@ -507,9 +507,9 @@ def attempt_removal(item: Item) -> bool: if not {item_names.PHOENIX, item_names.MIRAGE} & logical_inventory_set: inventory = [item for item in inventory if not item.name.endswith("(Phoenix/Mirage)")] unused_items = [item_name for item_name in unused_items if not item_name.endswith("(Phoenix/Mirage)")] - if not {item_names.VOID_RAY, item_names.DESTROYER, item_names.WARP_RAY, item_names.SCORCHER} & logical_inventory_set: - inventory = [item for item in inventory if not item.name.endswith("(Void Ray/Destroyer/Warp Ray/Scorcher)")] - unused_items = [item_name for item_name in unused_items if not item_name.endswith("(Void Ray/Destroyer/Warp Ray/Scorcher)")] + if not {item_names.VOID_RAY, item_names.DESTROYER, item_names.WARP_RAY, item_names.DAWNBRINGER} & logical_inventory_set: + inventory = [item for item in inventory if not item.name.endswith("(Void Ray/Destroyer/Warp Ray/Dawnbringer)")] + unused_items = [item_name for item_name in unused_items if not item_name.endswith("(Void Ray/Destroyer/Warp Ray/Dawnbringer)")] if not {item_names.CARRIER, item_names.SKYLORD, item_names.PURGER} & logical_inventory_set: inventory = [item for item in inventory if not item.name.endswith("(Carrier/Skylord/Purger)")] unused_items = [item_name for item_name in unused_items if not item_name.endswith("(Carrier/Skylord/Purger)")] diff --git a/worlds/sc2/rules.py b/worlds/sc2/rules.py index 58b983a4c19f..48f0e49c51d0 100644 --- a/worlds/sc2/rules.py +++ b/worlds/sc2/rules.py @@ -488,7 +488,7 @@ def protoss_basic_anti_air(self, state: CollectionState) -> bool: def protoss_anti_armor_anti_air(self, state: CollectionState) -> bool: return self.protoss_competent_anti_air(state) \ - or state.has_any({item_names.SCOUT, item_names.WRATHWALKER, item_names.WARP_RAY, item_names.SCORCHER}, self.player) \ + or state.has_any({item_names.SCOUT, item_names.WRATHWALKER, item_names.WARP_RAY}, self.player) \ or (state.has_any({item_names.IMMORTAL, item_names.ANNIHILATOR, item_names.STALWART}, self.player) and state.has(item_names.IMMORTAL_ANNIHILATOR_STALWART_ADVANCED_TARGETING_MECHANICS, self.player)) @@ -509,7 +509,7 @@ def protoss_competent_anti_air(self, state: CollectionState) -> bool: item_names.SKYLORD }, self.player) and state.has_any({ - item_names.SCOUT, item_names.WRATHWALKER, item_names.SCORCHER, item_names.WARP_RAY + item_names.SCOUT, item_names.WRATHWALKER, item_names.WARP_RAY }, self.player) ) \ or (self.advanced_tactics @@ -526,7 +526,7 @@ def protoss_has_blink(self, state: CollectionState) -> bool: def protoss_can_attack_behind_chasm(self, state: CollectionState) -> bool: return state.has_any({ item_names.SCOUT, item_names.TEMPEST, item_names.CARRIER, item_names.SKYLORD, item_names.PURGER, - item_names.VOID_RAY, item_names.DESTROYER, item_names.WARP_RAY, item_names.SCORCHER, item_names.MOTHERSHIP + item_names.VOID_RAY, item_names.DESTROYER, item_names.WARP_RAY, item_names.DAWNBRINGER, item_names.MOTHERSHIP }, self.player) \ or self.protoss_has_blink(state) \ or (state.has(item_names.WARP_PRISM, self.player) @@ -537,7 +537,7 @@ def protoss_can_attack_behind_chasm(self, state: CollectionState) -> bool: def protoss_fleet(self, state: CollectionState) -> bool: return state.has_any({ item_names.CARRIER, item_names.SKYLORD, item_names.PURGER, item_names.TEMPEST, item_names.VOID_RAY, - item_names.DESTROYER, item_names.WARP_RAY, item_names.SCORCHER + item_names.DESTROYER, item_names.WARP_RAY, item_names.DAWNBRINGER }, self.player) def templars_return_requirement(self, state: CollectionState) -> bool: @@ -601,7 +601,7 @@ def the_infinite_cycle_requirement(self, state: CollectionState) -> bool: def protoss_basic_splash(self, state: CollectionState) -> bool: return state.has_any( {item_names.ZEALOT, item_names.COLOSSUS, item_names.VANGUARD, item_names.HIGH_TEMPLAR, item_names.SIGNIFIER, - item_names.DARK_TEMPLAR, item_names.REAVER, item_names.ASCENDANT}, self.player) + item_names.DARK_TEMPLAR, item_names.REAVER, item_names.ASCENDANT, item_names.DAWNBRINGER}, self.player) def protoss_static_defense(self, state: CollectionState) -> bool: return state.has_any({item_names.PHOTON_CANNON, item_names.KHAYDARIN_MONOLITH}, self.player)