From a6ea3e1953bfbc8f8a9f828a0dd4e3747dd4c72d Mon Sep 17 00:00:00 2001 From: Ziktofel Date: Thu, 20 Apr 2023 09:13:34 +0200 Subject: [PATCH] Sc2wol logic update (#1715) Fixes some issues with typos and oversights logic generation in SC2 Rebalancing Adds Vultures to Advanced tactics as train killers Drops Firebats from basic unit pool and moves Goliaths from advanced tactics to standard --- worlds/sc2wol/Items.py | 3 +-- worlds/sc2wol/LogicMixin.py | 13 ++++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/worlds/sc2wol/Items.py b/worlds/sc2wol/Items.py index e17a7cbc..ea495adf 100644 --- a/worlds/sc2wol/Items.py +++ b/worlds/sc2wol/Items.py @@ -152,14 +152,13 @@ item_table = { basic_units = { 'Marine', 'Marauder', - 'Firebat', + 'Goliath', 'Hellion', 'Vulture' } advanced_basic_units = basic_units.union({ 'Reaper', - 'Goliath', 'Diamondback', 'Viking' }) diff --git a/worlds/sc2wol/LogicMixin.py b/worlds/sc2wol/LogicMixin.py index c803835f..8c7182e0 100644 --- a/worlds/sc2wol/LogicMixin.py +++ b/worlds/sc2wol/LogicMixin.py @@ -30,7 +30,7 @@ class SC2WoLLogic(LogicMixin): 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): defense_score += 3 - if self.has_all({'Siege Tank', 'Maelstrom Rounds'}, player): + if self.has_all({'Siege Tank', 'Maelstrom Rounds (Siege Tank)'}, player): defense_score += 2 if zerg_enemy: defense_score += sum((zerg_defense_ratings[item] for item in zerg_defense_ratings if self.has(item, player))) @@ -51,8 +51,15 @@ class SC2WoLLogic(LogicMixin): self.has('Siege Tank', player) and self._sc2wol_has_competent_anti_air(multiworld, player) def _sc2wol_has_train_killers(self, multiworld: MultiWorld, player: int) -> bool: - return (self.has_any({'Siege Tank', 'Diamondback', 'Marauder'}, player) or get_option_value(multiworld, player, 'required_tactics') > 0 - and self.has_all({'Reaper', "G-4 Clusterbomb"}, player) or self.has_all({'Spectre', 'Psionic Lash'}, player)) + return ( + self.has_any({'Siege Tank', 'Diamondback', 'Marauder'}, player) + or get_option_value(multiworld, player, 'required_tactics') > 0 + and ( + self.has_all({'Reaper', "G-4 Clusterbomb"}, player) + or self.has_all({'Spectre', 'Psionic Lash'}, player) + or self.has('Vulture', player) + ) + ) def _sc2wol_able_to_rescue(self, multiworld: MultiWorld, player: int) -> bool: return self.has_any({'Medivac', 'Hercules', 'Raven', 'Viking'}, player) or get_option_value(multiworld, player, 'required_tactics') > 0