mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
SC2: Greater variety on short generations (#1367)
Originally, short generations used an artificial cull to create balanced mission distributions. This resulted in campaigns that were somewhat too consistent, and on some standard settings combinations, this resulted in campaigns having The Outlaws as the second mission 100% of the time. It also caused generation to fail a bit too easily if the player excluded too many missions. This removes the cull and adds an additional early Easy mission slot to all of the reduced sized campaigns. When playing on No Build settings, this also pushes many of the missions down a difficulty level to ensure greater variety, and pushes additional missions down on Advanced Tactics. Additional small fixes: The in-world Excluded Missions validation check is replaced by the core OptionSet check. Fixed issue with Existing Items not getting their upgrades locked with Units Always Have Upgrades on.
This commit is contained in:
@@ -17,10 +17,12 @@ class SC2WoLLogic(LogicMixin):
|
||||
or get_option_value(multiworld, player, 'required_tactics') > 0 and self.has('Wraith', player)
|
||||
|
||||
def _sc2wol_has_competent_anti_air(self, multiworld: MultiWorld, player: int) -> bool:
|
||||
return self.has_any({'Marine', 'Goliath'}, player) or self._sc2wol_has_air_anti_air(multiworld, player)
|
||||
return self.has('Goliath', player) \
|
||||
or self.has('Marine', player) and self.has_any({'Medic', 'Medivac'}, player) \
|
||||
or 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', 'Wraith'}, player) \
|
||||
return self.has_any({'Missile Turret', 'Thor', 'War Pigs', 'Spartan Company', "Hel's Angel", 'Battlecruiser', 'Marine', 'Wraith'}, player) \
|
||||
or self._sc2wol_has_competent_anti_air(multiworld, player) \
|
||||
or get_option_value(multiworld, player, 'required_tactics') > 0 and self.has_any({'Ghost', 'Spectre'}, player)
|
||||
|
||||
@@ -28,6 +30,8 @@ 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):
|
||||
defense_score += 2
|
||||
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):
|
||||
|
||||
Reference in New Issue
Block a user