* Fix Conviction logic for Grant Story Tech - Kinetic Blast and Crushing Grip is available for the mission if story tech is granted * Review updates
14165 lines
520 KiB
Python
14165 lines
520 KiB
Python
import enum
|
|
from typing import List, Tuple, Optional, Callable, NamedTuple, Set, TYPE_CHECKING
|
|
from .item import item_names
|
|
from .item.item_groups import kerrigan_logic_ultimates
|
|
from .options import (
|
|
get_option_value,
|
|
RequiredTactics,
|
|
LocationInclusion,
|
|
KerriganPresence,
|
|
GrantStoryTech,
|
|
get_enabled_campaigns,
|
|
)
|
|
from .mission_tables import SC2Mission, SC2Campaign
|
|
|
|
from BaseClasses import Location
|
|
from worlds.AutoWorld import World
|
|
|
|
if TYPE_CHECKING:
|
|
from BaseClasses import CollectionState
|
|
from . import SC2World
|
|
|
|
SC2WOL_LOC_ID_OFFSET = 1000
|
|
SC2HOTS_LOC_ID_OFFSET = 20000000 # Avoid clashes with The Legend of Zelda
|
|
SC2LOTV_LOC_ID_OFFSET = SC2HOTS_LOC_ID_OFFSET + 2000
|
|
SC2NCO_LOC_ID_OFFSET = SC2LOTV_LOC_ID_OFFSET + 2500
|
|
SC2_RACESWAP_LOC_ID_OFFSET = SC2NCO_LOC_ID_OFFSET + 900
|
|
VICTORY_CACHE_OFFSET = 90
|
|
|
|
|
|
class SC2Location(Location):
|
|
game: str = "Starcraft2"
|
|
|
|
|
|
class LocationType(enum.IntEnum):
|
|
VICTORY = 0 # Winning a mission
|
|
VANILLA = 1 # Objectives that provided metaprogression in the original campaign, along with a few other locations for a balanced experience
|
|
EXTRA = 2 # Additional locations based on mission progression, collecting in-mission rewards, etc. that do not significantly increase the challenge.
|
|
CHALLENGE = 3 # Challenging objectives, often harder than just completing a mission, and often associated with Achievements
|
|
MASTERY = 4 # Extremely challenging objectives often associated with Masteries and Feats of Strength in the original campaign
|
|
VICTORY_CACHE = 5 # Bonus locations for beating a mission
|
|
|
|
|
|
class LocationFlag(enum.IntFlag):
|
|
NONE = 0
|
|
BASEBUST = enum.auto()
|
|
"""Locations about killing challenging bases"""
|
|
SPEEDRUN = enum.auto()
|
|
"""Locations that are about doing something fast"""
|
|
PREVENTATIVE = enum.auto()
|
|
"""Locations that are about preventing something from happening"""
|
|
|
|
def values(self):
|
|
"""Hacky iterator for backwards-compatibility with Python <= 3.10. Not necessary on Python 3.11+"""
|
|
return tuple(
|
|
val
|
|
for val in (
|
|
LocationFlag.SPEEDRUN,
|
|
LocationFlag.PREVENTATIVE,
|
|
)
|
|
if val in self
|
|
)
|
|
|
|
|
|
class LocationData(NamedTuple):
|
|
region: str
|
|
name: str
|
|
code: int
|
|
type: LocationType
|
|
rule: Callable[["CollectionState"], bool] = Location.access_rule
|
|
flags: LocationFlag = LocationFlag.NONE
|
|
hard_rule: Optional[Callable[["CollectionState"], bool]] = None
|
|
|
|
|
|
def make_location_data(
|
|
region: str,
|
|
name: str,
|
|
code: int,
|
|
type: LocationType,
|
|
rule: Callable[["CollectionState"], bool] = Location.access_rule,
|
|
flags: LocationFlag = LocationFlag.NONE,
|
|
hard_rule: Optional[Callable[["CollectionState"], bool]] = None,
|
|
) -> LocationData:
|
|
return LocationData(region, f"{region}: {name}", code, type, rule, flags, hard_rule)
|
|
|
|
|
|
def get_location_types(world: "SC2World", inclusion_type: int) -> Set[LocationType]:
|
|
"""
|
|
:param world: The starcraft 2 world object
|
|
:param inclusion_type: Level of inclusion to check for
|
|
:return: A list of location types that match the inclusion type
|
|
"""
|
|
exclusion_options = [
|
|
("vanilla_locations", LocationType.VANILLA),
|
|
("extra_locations", LocationType.EXTRA),
|
|
("challenge_locations", LocationType.CHALLENGE),
|
|
("mastery_locations", LocationType.MASTERY),
|
|
]
|
|
excluded_location_types = set()
|
|
for option_name, location_type in exclusion_options:
|
|
if get_option_value(world, option_name) is inclusion_type:
|
|
excluded_location_types.add(location_type)
|
|
return excluded_location_types
|
|
|
|
|
|
def get_location_flags(world: "SC2World", inclusion_type: int) -> LocationFlag:
|
|
"""
|
|
:param world: The starcraft 2 world object
|
|
:param inclusion_type: Level of inclusion to check for
|
|
:return: A list of location types that match the inclusion type
|
|
"""
|
|
matching_location_flags = LocationFlag.NONE
|
|
if world.options.basebust_locations.value == inclusion_type:
|
|
matching_location_flags |= LocationFlag.BASEBUST
|
|
if world.options.speedrun_locations.value == inclusion_type:
|
|
matching_location_flags |= LocationFlag.SPEEDRUN
|
|
if world.options.preventative_locations.value == inclusion_type:
|
|
matching_location_flags |= LocationFlag.PREVENTATIVE
|
|
return matching_location_flags
|
|
|
|
|
|
def get_plando_locations(world: World) -> List[str]:
|
|
"""
|
|
:param multiworld:
|
|
:param player:
|
|
:return: A list of locations affected by a plando in a world
|
|
"""
|
|
if world is None:
|
|
return []
|
|
plando_locations = []
|
|
for plando_setting in world.options.plando_items:
|
|
plando_locations += plando_setting.locations
|
|
|
|
return plando_locations
|
|
|
|
|
|
def get_locations(world: Optional["SC2World"]) -> Tuple[LocationData, ...]:
|
|
# Note: rules which are ended with or True are rules identified as needed later when restricted units is an option
|
|
if world is None:
|
|
logic_level = int(RequiredTactics.default)
|
|
kerriganless = False
|
|
else:
|
|
logic_level = world.options.required_tactics.value
|
|
kerriganless = (
|
|
world.options.kerrigan_presence.value != KerriganPresence.option_vanilla
|
|
or SC2Campaign.HOTS not in get_enabled_campaigns(world)
|
|
)
|
|
adv_tactics = logic_level != RequiredTactics.option_standard
|
|
if world is not None and world.logic is not None:
|
|
logic = world.logic
|
|
else:
|
|
from .rules import SC2Logic
|
|
|
|
logic = SC2Logic(world)
|
|
player = 1 if world is None else world.player
|
|
location_table: List[LocationData] = [
|
|
# WoL
|
|
make_location_data(
|
|
SC2Mission.LIBERATION_DAY.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 100,
|
|
LocationType.VICTORY,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LIBERATION_DAY.mission_name,
|
|
"First Statue",
|
|
SC2WOL_LOC_ID_OFFSET + 101,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LIBERATION_DAY.mission_name,
|
|
"Second Statue",
|
|
SC2WOL_LOC_ID_OFFSET + 102,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LIBERATION_DAY.mission_name,
|
|
"Third Statue",
|
|
SC2WOL_LOC_ID_OFFSET + 103,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LIBERATION_DAY.mission_name,
|
|
"Fourth Statue",
|
|
SC2WOL_LOC_ID_OFFSET + 104,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LIBERATION_DAY.mission_name,
|
|
"Fifth Statue",
|
|
SC2WOL_LOC_ID_OFFSET + 105,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LIBERATION_DAY.mission_name,
|
|
"Sixth Statue",
|
|
SC2WOL_LOC_ID_OFFSET + 106,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LIBERATION_DAY.mission_name,
|
|
"Special Delivery",
|
|
SC2WOL_LOC_ID_OFFSET + 107,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LIBERATION_DAY.mission_name,
|
|
"Transport",
|
|
SC2WOL_LOC_ID_OFFSET + 108,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_OUTLAWS.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 200,
|
|
LocationType.VICTORY,
|
|
logic.terran_early_tech,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_OUTLAWS.mission_name,
|
|
"Rebel Base",
|
|
SC2WOL_LOC_ID_OFFSET + 201,
|
|
LocationType.VANILLA,
|
|
logic.terran_early_tech,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_OUTLAWS.mission_name,
|
|
"North Resource Pickups",
|
|
SC2WOL_LOC_ID_OFFSET + 202,
|
|
LocationType.EXTRA,
|
|
logic.terran_early_tech,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_OUTLAWS.mission_name,
|
|
"Bunker",
|
|
SC2WOL_LOC_ID_OFFSET + 203,
|
|
LocationType.VANILLA,
|
|
logic.terran_early_tech,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_OUTLAWS.mission_name,
|
|
"Close Resource Pickups",
|
|
SC2WOL_LOC_ID_OFFSET + 204,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 300,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_defense_rating(state, True) >= 2
|
|
and (adv_tactics or logic.terran_basic_anti_air(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR.mission_name,
|
|
"First Group Rescued",
|
|
SC2WOL_LOC_ID_OFFSET + 301,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR.mission_name,
|
|
"Second Group Rescued",
|
|
SC2WOL_LOC_ID_OFFSET + 302,
|
|
LocationType.VANILLA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR.mission_name,
|
|
"Third Group Rescued",
|
|
SC2WOL_LOC_ID_OFFSET + 303,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_defense_rating(state, True) >= 2
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR.mission_name,
|
|
"First Hatchery",
|
|
SC2WOL_LOC_ID_OFFSET + 304,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR.mission_name,
|
|
"Second Hatchery",
|
|
SC2WOL_LOC_ID_OFFSET + 305,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR.mission_name,
|
|
"Third Hatchery",
|
|
SC2WOL_LOC_ID_OFFSET + 306,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR.mission_name,
|
|
"Fourth Hatchery",
|
|
SC2WOL_LOC_ID_OFFSET + 307,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR.mission_name,
|
|
"Ride's on its Way",
|
|
SC2WOL_LOC_ID_OFFSET + 308,
|
|
LocationType.EXTRA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR.mission_name,
|
|
"Hold Just a Little Longer",
|
|
SC2WOL_LOC_ID_OFFSET + 309,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_defense_rating(state, True) >= 2
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR.mission_name,
|
|
"Cavalry's on the Way",
|
|
SC2WOL_LOC_ID_OFFSET + 310,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_defense_rating(state, True) >= 2
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 400,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_early_tech(state)
|
|
and (
|
|
(adv_tactics and logic.terran_basic_anti_air(state))
|
|
or logic.terran_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION.mission_name,
|
|
"North Chrysalis",
|
|
SC2WOL_LOC_ID_OFFSET + 401,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION.mission_name,
|
|
"West Chrysalis",
|
|
SC2WOL_LOC_ID_OFFSET + 402,
|
|
LocationType.VANILLA,
|
|
logic.terran_early_tech,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION.mission_name,
|
|
"East Chrysalis",
|
|
SC2WOL_LOC_ID_OFFSET + 403,
|
|
LocationType.VANILLA,
|
|
logic.terran_early_tech,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION.mission_name,
|
|
"Reach Hanson",
|
|
SC2WOL_LOC_ID_OFFSET + 404,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION.mission_name,
|
|
"Secret Resource Stash",
|
|
SC2WOL_LOC_ID_OFFSET + 405,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION.mission_name,
|
|
"Flawless",
|
|
SC2WOL_LOC_ID_OFFSET + 406,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_early_tech(state)
|
|
and logic.terran_defense_rating(state, True, False) >= 2
|
|
and (
|
|
(adv_tactics and logic.terran_basic_anti_air(state))
|
|
or logic.terran_competent_anti_air(state)
|
|
)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION.mission_name,
|
|
"Western Zerg Base",
|
|
SC2WOL_LOC_ID_OFFSET + 407,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_base_trasher(state)
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION.mission_name,
|
|
"Eastern Zerg Base",
|
|
SC2WOL_LOC_ID_OFFSET + 408,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_base_trasher(state)
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 500,
|
|
LocationType.VICTORY,
|
|
logic.terran_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK.mission_name,
|
|
"Left Infestor",
|
|
SC2WOL_LOC_ID_OFFSET + 501,
|
|
LocationType.VANILLA,
|
|
logic.terran_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK.mission_name,
|
|
"Right Infestor",
|
|
SC2WOL_LOC_ID_OFFSET + 502,
|
|
LocationType.VANILLA,
|
|
logic.terran_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK.mission_name,
|
|
"North Infested Command Center",
|
|
SC2WOL_LOC_ID_OFFSET + 503,
|
|
LocationType.EXTRA,
|
|
logic.terran_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK.mission_name,
|
|
"South Infested Command Center",
|
|
SC2WOL_LOC_ID_OFFSET + 504,
|
|
LocationType.EXTRA,
|
|
logic.terran_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK.mission_name,
|
|
"Northwest Bar",
|
|
SC2WOL_LOC_ID_OFFSET + 505,
|
|
LocationType.EXTRA,
|
|
logic.terran_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK.mission_name,
|
|
"North Bar",
|
|
SC2WOL_LOC_ID_OFFSET + 506,
|
|
LocationType.EXTRA,
|
|
logic.terran_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK.mission_name,
|
|
"South Bar",
|
|
SC2WOL_LOC_ID_OFFSET + 507,
|
|
LocationType.EXTRA,
|
|
logic.terran_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 600,
|
|
LocationType.VICTORY,
|
|
logic.terran_safe_haven_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN.mission_name,
|
|
"North Nexus",
|
|
SC2WOL_LOC_ID_OFFSET + 601,
|
|
LocationType.EXTRA,
|
|
logic.terran_safe_haven_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN.mission_name,
|
|
"East Nexus",
|
|
SC2WOL_LOC_ID_OFFSET + 602,
|
|
LocationType.EXTRA,
|
|
logic.terran_safe_haven_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN.mission_name,
|
|
"South Nexus",
|
|
SC2WOL_LOC_ID_OFFSET + 603,
|
|
LocationType.EXTRA,
|
|
logic.terran_safe_haven_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN.mission_name,
|
|
"First Terror Fleet",
|
|
SC2WOL_LOC_ID_OFFSET + 604,
|
|
LocationType.VANILLA,
|
|
logic.terran_safe_haven_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN.mission_name,
|
|
"Second Terror Fleet",
|
|
SC2WOL_LOC_ID_OFFSET + 605,
|
|
LocationType.VANILLA,
|
|
logic.terran_safe_haven_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN.mission_name,
|
|
"Third Terror Fleet",
|
|
SC2WOL_LOC_ID_OFFSET + 606,
|
|
LocationType.VANILLA,
|
|
logic.terran_safe_haven_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 700,
|
|
LocationType.VICTORY,
|
|
logic.terran_havens_fall_requirement,
|
|
hard_rule=logic.terran_any_anti_air_or_science_vessels,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL.mission_name,
|
|
"North Hive",
|
|
SC2WOL_LOC_ID_OFFSET + 701,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL.mission_name,
|
|
"East Hive",
|
|
SC2WOL_LOC_ID_OFFSET + 702,
|
|
LocationType.VANILLA,
|
|
logic.terran_havens_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL.mission_name,
|
|
"South Hive",
|
|
SC2WOL_LOC_ID_OFFSET + 703,
|
|
LocationType.VANILLA,
|
|
logic.terran_havens_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL.mission_name,
|
|
"Northeast Colony Base",
|
|
SC2WOL_LOC_ID_OFFSET + 704,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_respond_to_colony_infestations,
|
|
hard_rule=logic.terran_any_anti_air_or_science_vessels,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL.mission_name,
|
|
"East Colony Base",
|
|
SC2WOL_LOC_ID_OFFSET + 705,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_respond_to_colony_infestations,
|
|
hard_rule=logic.terran_any_anti_air_or_science_vessels,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL.mission_name,
|
|
"Middle Colony Base",
|
|
SC2WOL_LOC_ID_OFFSET + 706,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_respond_to_colony_infestations,
|
|
hard_rule=logic.terran_any_anti_air_or_science_vessels,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL.mission_name,
|
|
"Southeast Colony Base",
|
|
SC2WOL_LOC_ID_OFFSET + 707,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_respond_to_colony_infestations,
|
|
hard_rule=logic.terran_any_anti_air_or_science_vessels,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL.mission_name,
|
|
"Southwest Colony Base",
|
|
SC2WOL_LOC_ID_OFFSET + 708,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_respond_to_colony_infestations,
|
|
hard_rule=logic.terran_any_anti_air_or_science_vessels,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL.mission_name,
|
|
"Southwest Gas Pickups",
|
|
SC2WOL_LOC_ID_OFFSET + 709,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL.mission_name,
|
|
"East Gas Pickups",
|
|
SC2WOL_LOC_ID_OFFSET + 710,
|
|
LocationType.EXTRA,
|
|
logic.terran_havens_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL.mission_name,
|
|
"Southeast Gas Pickups",
|
|
SC2WOL_LOC_ID_OFFSET + 711,
|
|
LocationType.EXTRA,
|
|
logic.terran_havens_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 800,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and (
|
|
adv_tactics
|
|
and logic.terran_moderate_anti_air(state)
|
|
or logic.terran_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB.mission_name,
|
|
"First Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 801,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB.mission_name,
|
|
"Second Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 802,
|
|
LocationType.VANILLA,
|
|
lambda state: (adv_tactics or logic.terran_common_unit(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB.mission_name,
|
|
"Third Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 803,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and (
|
|
adv_tactics
|
|
and logic.terran_moderate_anti_air(state)
|
|
or logic.terran_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB.mission_name,
|
|
"Fourth Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 804,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and (
|
|
adv_tactics
|
|
and logic.terran_moderate_anti_air(state)
|
|
or logic.terran_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB.mission_name,
|
|
"First Forcefield Area Busted",
|
|
SC2WOL_LOC_ID_OFFSET + 805,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and (
|
|
adv_tactics
|
|
and logic.terran_moderate_anti_air(state)
|
|
or logic.terran_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB.mission_name,
|
|
"Second Forcefield Area Busted",
|
|
SC2WOL_LOC_ID_OFFSET + 806,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and (
|
|
adv_tactics
|
|
and logic.terran_moderate_anti_air(state)
|
|
or logic.terran_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB.mission_name,
|
|
"Defeat Kerrigan",
|
|
SC2WOL_LOC_ID_OFFSET + 807,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_base_trasher(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 900,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
(
|
|
logic.terran_competent_anti_air(state)
|
|
or adv_tactics
|
|
and logic.terran_moderate_anti_air(state)
|
|
)
|
|
and logic.terran_defense_rating(state, False, True) >= 8
|
|
and logic.terran_common_unit(state)
|
|
and (logic.marine_medic_upgrade(state) or adv_tactics)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG.mission_name,
|
|
"Left Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 901,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_defense_rating(state, False, False) >= 6
|
|
and logic.terran_common_unit(state)
|
|
and (logic.marine_medic_upgrade(state) or adv_tactics)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG.mission_name,
|
|
"Right Ground Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 902,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_defense_rating(state, False, False) >= 6
|
|
and logic.terran_common_unit(state)
|
|
and (logic.marine_medic_upgrade(state) or adv_tactics)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG.mission_name,
|
|
"Right Cliff Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 903,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_defense_rating(state, False, False) >= 6
|
|
and logic.terran_common_unit(state)
|
|
and (logic.marine_medic_upgrade(state) or adv_tactics)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG.mission_name,
|
|
"Moebius Base",
|
|
SC2WOL_LOC_ID_OFFSET + 904,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.marine_medic_upgrade(state) or adv_tactics,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG.mission_name,
|
|
"Door Outer Layer",
|
|
SC2WOL_LOC_ID_OFFSET + 905,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_defense_rating(state, False, False) >= 6
|
|
and logic.terran_common_unit(state)
|
|
and (logic.marine_medic_upgrade(state) or adv_tactics)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG.mission_name,
|
|
"Door Thermal Barrier",
|
|
SC2WOL_LOC_ID_OFFSET + 906,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
(
|
|
logic.terran_competent_anti_air(state)
|
|
or adv_tactics
|
|
and logic.terran_moderate_anti_air(state)
|
|
)
|
|
and logic.terran_defense_rating(state, False, True) >= 8
|
|
and logic.terran_common_unit(state)
|
|
and (logic.marine_medic_upgrade(state) or adv_tactics)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG.mission_name,
|
|
"Cutting Through the Core",
|
|
SC2WOL_LOC_ID_OFFSET + 907,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
(
|
|
logic.terran_competent_anti_air(state)
|
|
or adv_tactics
|
|
and logic.terran_moderate_anti_air(state)
|
|
)
|
|
and logic.terran_defense_rating(state, False, True) >= 8
|
|
and logic.terran_common_unit(state)
|
|
and (logic.marine_medic_upgrade(state) or adv_tactics)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG.mission_name,
|
|
"Structure Access Imminent",
|
|
SC2WOL_LOC_ID_OFFSET + 908,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
(
|
|
logic.terran_competent_anti_air(state)
|
|
or adv_tactics
|
|
and logic.terran_moderate_anti_air(state)
|
|
)
|
|
and logic.terran_defense_rating(state, False, True) >= 8
|
|
and logic.terran_common_unit(state)
|
|
and (logic.marine_medic_upgrade(state) or adv_tactics)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG.mission_name,
|
|
"Northwestern Protoss Base",
|
|
SC2WOL_LOC_ID_OFFSET + 909,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.terran_beats_protoss_deathball(state)
|
|
and logic.terran_defense_rating(state, False, True) >= 8
|
|
and logic.terran_common_unit(state)
|
|
and (logic.marine_medic_upgrade(state) or adv_tactics)
|
|
and logic.terran_base_trasher(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG.mission_name,
|
|
"Northeastern Protoss Base",
|
|
SC2WOL_LOC_ID_OFFSET + 910,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.terran_beats_protoss_deathball(state)
|
|
and logic.terran_defense_rating(state, False, True) >= 8
|
|
and logic.terran_common_unit(state)
|
|
and (logic.marine_medic_upgrade(state) or adv_tactics)
|
|
and logic.terran_base_trasher(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG.mission_name,
|
|
"Eastern Protoss Base",
|
|
SC2WOL_LOC_ID_OFFSET + 911,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.terran_beats_protoss_deathball(state)
|
|
and logic.terran_defense_rating(state, False, True) >= 8
|
|
and logic.terran_common_unit(state)
|
|
and logic.terran_base_trasher(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 1000,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
(
|
|
logic.terran_moderate_anti_air(state)
|
|
and state.has_any({item_names.MEDIVAC, item_names.HERCULES}, player)
|
|
or logic.terran_air_anti_air(state)
|
|
)
|
|
and (
|
|
logic.terran_air(state)
|
|
or state.has_any({item_names.MEDIVAC, item_names.HERCULES}, player)
|
|
and logic.terran_common_unit(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR.mission_name,
|
|
"1st Data Core",
|
|
SC2WOL_LOC_ID_OFFSET + 1001,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR.mission_name,
|
|
"2nd Data Core",
|
|
SC2WOL_LOC_ID_OFFSET + 1002,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_air(state)
|
|
or (
|
|
state.has_any({item_names.MEDIVAC, item_names.HERCULES}, player)
|
|
and logic.terran_common_unit(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR.mission_name,
|
|
"South Rescue",
|
|
SC2WOL_LOC_ID_OFFSET + 1003,
|
|
LocationType.EXTRA,
|
|
logic.terran_can_rescue,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR.mission_name,
|
|
"Wall Rescue",
|
|
SC2WOL_LOC_ID_OFFSET + 1004,
|
|
LocationType.EXTRA,
|
|
logic.terran_can_rescue,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR.mission_name,
|
|
"Mid Rescue",
|
|
SC2WOL_LOC_ID_OFFSET + 1005,
|
|
LocationType.EXTRA,
|
|
logic.terran_can_rescue,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR.mission_name,
|
|
"Nydus Roof Rescue",
|
|
SC2WOL_LOC_ID_OFFSET + 1006,
|
|
LocationType.EXTRA,
|
|
logic.terran_can_rescue,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR.mission_name,
|
|
"Alive Inside Rescue",
|
|
SC2WOL_LOC_ID_OFFSET + 1007,
|
|
LocationType.EXTRA,
|
|
logic.terran_can_rescue,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR.mission_name,
|
|
"Brutalisk",
|
|
SC2WOL_LOC_ID_OFFSET + 1008,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
(
|
|
logic.terran_moderate_anti_air(state)
|
|
and state.has_any({item_names.MEDIVAC, item_names.HERCULES}, player)
|
|
or logic.terran_air_anti_air(state)
|
|
)
|
|
and (
|
|
logic.terran_air(state)
|
|
or state.has_any({item_names.MEDIVAC, item_names.HERCULES}, player)
|
|
and logic.terran_common_unit(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR.mission_name,
|
|
"3rd Data Core",
|
|
SC2WOL_LOC_ID_OFFSET + 1009,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
(
|
|
logic.terran_moderate_anti_air(state)
|
|
and state.has_any({item_names.MEDIVAC, item_names.HERCULES}, player)
|
|
or logic.terran_air_anti_air(state)
|
|
)
|
|
and (
|
|
logic.terran_air(state)
|
|
or state.has_any({item_names.MEDIVAC, item_names.HERCULES}, player)
|
|
and logic.terran_common_unit(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 1100,
|
|
LocationType.VICTORY,
|
|
logic.terran_supernova_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA.mission_name,
|
|
"West Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 1101,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA.mission_name,
|
|
"North Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 1102,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA.mission_name,
|
|
"South Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 1103,
|
|
LocationType.VANILLA,
|
|
logic.terran_supernova_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA.mission_name,
|
|
"East Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 1104,
|
|
LocationType.VANILLA,
|
|
logic.terran_supernova_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA.mission_name,
|
|
"Landing Zone Cleared",
|
|
SC2WOL_LOC_ID_OFFSET + 1105,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA.mission_name,
|
|
"Middle Base",
|
|
SC2WOL_LOC_ID_OFFSET + 1106,
|
|
LocationType.EXTRA,
|
|
logic.terran_supernova_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA.mission_name,
|
|
"Southeast Base",
|
|
SC2WOL_LOC_ID_OFFSET + 1107,
|
|
LocationType.EXTRA,
|
|
logic.terran_supernova_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 1200,
|
|
LocationType.VICTORY,
|
|
logic.terran_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID.mission_name,
|
|
"Landing Zone Cleared",
|
|
SC2WOL_LOC_ID_OFFSET + 1201,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID.mission_name,
|
|
"Expansion Prisoners",
|
|
SC2WOL_LOC_ID_OFFSET + 1202,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.terran_maw_requirement(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID.mission_name,
|
|
"South Close Prisoners",
|
|
SC2WOL_LOC_ID_OFFSET + 1203,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.terran_maw_requirement(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID.mission_name,
|
|
"South Far Prisoners",
|
|
SC2WOL_LOC_ID_OFFSET + 1204,
|
|
LocationType.VANILLA,
|
|
logic.terran_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID.mission_name,
|
|
"North Prisoners",
|
|
SC2WOL_LOC_ID_OFFSET + 1205,
|
|
LocationType.VANILLA,
|
|
logic.terran_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID.mission_name,
|
|
"Mothership",
|
|
SC2WOL_LOC_ID_OFFSET + 1206,
|
|
LocationType.EXTRA,
|
|
logic.terran_maw_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID.mission_name,
|
|
"Expansion Rip Field Generator",
|
|
SC2WOL_LOC_ID_OFFSET + 1207,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or logic.terran_maw_requirement(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID.mission_name,
|
|
"Middle Rip Field Generator",
|
|
SC2WOL_LOC_ID_OFFSET + 1208,
|
|
LocationType.EXTRA,
|
|
logic.terran_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID.mission_name,
|
|
"Southeast Rip Field Generator",
|
|
SC2WOL_LOC_ID_OFFSET + 1209,
|
|
LocationType.EXTRA,
|
|
logic.terran_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID.mission_name,
|
|
"Stargate Rip Field Generator",
|
|
SC2WOL_LOC_ID_OFFSET + 1210,
|
|
LocationType.EXTRA,
|
|
logic.terran_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID.mission_name,
|
|
"Northwest Rip Field Generator",
|
|
SC2WOL_LOC_ID_OFFSET + 1211,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID.mission_name,
|
|
"West Rip Field Generator",
|
|
SC2WOL_LOC_ID_OFFSET + 1212,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID.mission_name,
|
|
"Southwest Rip Field Generator",
|
|
SC2WOL_LOC_ID_OFFSET + 1213,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 1300,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
adv_tactics
|
|
or logic.terran_moderate_anti_air(state)
|
|
and (
|
|
logic.terran_common_unit(state)
|
|
or state.has(item_names.REAPER, player)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND.mission_name,
|
|
"Tosh's Miners",
|
|
SC2WOL_LOC_ID_OFFSET + 1301,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND.mission_name,
|
|
"Brutalisk",
|
|
SC2WOL_LOC_ID_OFFSET + 1302,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics
|
|
or logic.terran_common_unit(state)
|
|
or state.has(item_names.REAPER, player),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND.mission_name,
|
|
"North Reapers",
|
|
SC2WOL_LOC_ID_OFFSET + 1303,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND.mission_name,
|
|
"Middle Reapers",
|
|
SC2WOL_LOC_ID_OFFSET + 1304,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND.mission_name,
|
|
"Southwest Reapers",
|
|
SC2WOL_LOC_ID_OFFSET + 1305,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics
|
|
or logic.terran_common_unit(state)
|
|
or state.has(item_names.REAPER, player),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND.mission_name,
|
|
"Southeast Reapers",
|
|
SC2WOL_LOC_ID_OFFSET + 1306,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
adv_tactics
|
|
or logic.terran_moderate_anti_air(state)
|
|
and (
|
|
logic.terran_common_unit(state)
|
|
or state.has(item_names.REAPER, player)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND.mission_name,
|
|
"East Reapers",
|
|
SC2WOL_LOC_ID_OFFSET + 1307,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_moderate_anti_air(state)
|
|
and (
|
|
adv_tactics
|
|
or logic.terran_common_unit(state)
|
|
or state.has(item_names.REAPER, player)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND.mission_name,
|
|
"Zerg Cleared",
|
|
SC2WOL_LOC_ID_OFFSET + 1308,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_competent_anti_air(state)
|
|
and (
|
|
logic.terran_common_unit(state)
|
|
or state.has(item_names.REAPER, player)
|
|
)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 1400,
|
|
LocationType.VICTORY,
|
|
logic.terran_welcome_to_the_jungle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE.mission_name,
|
|
"Close Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 1401,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE.mission_name,
|
|
"West Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 1402,
|
|
LocationType.VANILLA,
|
|
logic.terran_welcome_to_the_jungle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE.mission_name,
|
|
"North-East Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 1403,
|
|
LocationType.VANILLA,
|
|
logic.terran_welcome_to_the_jungle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE.mission_name,
|
|
"Middle Base",
|
|
SC2WOL_LOC_ID_OFFSET + 1404,
|
|
LocationType.EXTRA,
|
|
logic.terran_welcome_to_the_jungle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE.mission_name,
|
|
"Protoss Cleared",
|
|
SC2WOL_LOC_ID_OFFSET + 1405,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.terran_welcome_to_the_jungle_requirement(state)
|
|
and logic.terran_beats_protoss_deathball(state)
|
|
and logic.terran_base_trasher(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE.mission_name,
|
|
"No Terrazine Nodes Sealed",
|
|
SC2WOL_LOC_ID_OFFSET + 1406,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_welcome_to_the_jungle_requirement(state)
|
|
and logic.terran_competent_ground_to_air(state)
|
|
and logic.terran_beats_protoss_deathball(state)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE.mission_name,
|
|
"Up to 1 Terrazine Node Sealed",
|
|
SC2WOL_LOC_ID_OFFSET + 1407,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_welcome_to_the_jungle_requirement(state)
|
|
and logic.terran_competent_ground_to_air(state)
|
|
and logic.terran_beats_protoss_deathball(state)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE.mission_name,
|
|
"Up to 2 Terrazine Nodes Sealed",
|
|
SC2WOL_LOC_ID_OFFSET + 1408,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_welcome_to_the_jungle_requirement(state)
|
|
and logic.terran_beats_protoss_deathball(state)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE.mission_name,
|
|
"Up to 3 Terrazine Nodes Sealed",
|
|
SC2WOL_LOC_ID_OFFSET + 1409,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_welcome_to_the_jungle_requirement(state)
|
|
and logic.terran_competent_comp(state)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE.mission_name,
|
|
"Up to 4 Terrazine Nodes Sealed",
|
|
SC2WOL_LOC_ID_OFFSET + 1410,
|
|
LocationType.EXTRA,
|
|
logic.terran_welcome_to_the_jungle_requirement,
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE.mission_name,
|
|
"Up to 5 Terrazine Nodes Sealed",
|
|
SC2WOL_LOC_ID_OFFSET + 1411,
|
|
LocationType.EXTRA,
|
|
logic.terran_welcome_to_the_jungle_requirement,
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BREAKOUT.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 1500,
|
|
LocationType.VICTORY,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BREAKOUT.mission_name,
|
|
"Diamondback Prison",
|
|
SC2WOL_LOC_ID_OFFSET + 1501,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BREAKOUT.mission_name,
|
|
"Siege Tank Prison",
|
|
SC2WOL_LOC_ID_OFFSET + 1502,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BREAKOUT.mission_name,
|
|
"First Checkpoint",
|
|
SC2WOL_LOC_ID_OFFSET + 1503,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BREAKOUT.mission_name,
|
|
"Second Checkpoint",
|
|
SC2WOL_LOC_ID_OFFSET + 1504,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOST_OF_A_CHANCE.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 1600,
|
|
LocationType.VICTORY,
|
|
logic.ghost_of_a_chance_requirement,
|
|
hard_rule=logic.ghost_of_a_chance_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOST_OF_A_CHANCE.mission_name,
|
|
"Terrazine Tank",
|
|
SC2WOL_LOC_ID_OFFSET + 1601,
|
|
LocationType.EXTRA,
|
|
logic.ghost_of_a_chance_requirement,
|
|
hard_rule=logic.ghost_of_a_chance_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOST_OF_A_CHANCE.mission_name,
|
|
"Jorium Stockpile",
|
|
SC2WOL_LOC_ID_OFFSET + 1602,
|
|
LocationType.EXTRA,
|
|
logic.ghost_of_a_chance_requirement,
|
|
hard_rule=logic.ghost_of_a_chance_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOST_OF_A_CHANCE.mission_name,
|
|
"First Island Spectres",
|
|
SC2WOL_LOC_ID_OFFSET + 1603,
|
|
LocationType.VANILLA,
|
|
logic.ghost_of_a_chance_requirement,
|
|
hard_rule=logic.ghost_of_a_chance_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOST_OF_A_CHANCE.mission_name,
|
|
"Second Island Spectres",
|
|
SC2WOL_LOC_ID_OFFSET + 1604,
|
|
LocationType.VANILLA,
|
|
logic.ghost_of_a_chance_requirement,
|
|
hard_rule=logic.ghost_of_a_chance_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOST_OF_A_CHANCE.mission_name,
|
|
"Third Island Spectres",
|
|
SC2WOL_LOC_ID_OFFSET + 1605,
|
|
LocationType.VANILLA,
|
|
logic.ghost_of_a_chance_requirement,
|
|
hard_rule=logic.ghost_of_a_chance_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 1700,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_great_train_robbery_train_stopper(state)
|
|
and logic.terran_basic_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY.mission_name,
|
|
"North Defiler",
|
|
SC2WOL_LOC_ID_OFFSET + 1701,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY.mission_name,
|
|
"Mid Defiler",
|
|
SC2WOL_LOC_ID_OFFSET + 1702,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY.mission_name,
|
|
"South Defiler",
|
|
SC2WOL_LOC_ID_OFFSET + 1703,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY.mission_name,
|
|
"Close Diamondback",
|
|
SC2WOL_LOC_ID_OFFSET + 1704,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY.mission_name,
|
|
"Northwest Diamondback",
|
|
SC2WOL_LOC_ID_OFFSET + 1705,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY.mission_name,
|
|
"North Diamondback",
|
|
SC2WOL_LOC_ID_OFFSET + 1706,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY.mission_name,
|
|
"Northeast Diamondback",
|
|
SC2WOL_LOC_ID_OFFSET + 1707,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY.mission_name,
|
|
"Southwest Diamondback",
|
|
SC2WOL_LOC_ID_OFFSET + 1708,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY.mission_name,
|
|
"Southeast Diamondback",
|
|
SC2WOL_LOC_ID_OFFSET + 1709,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY.mission_name,
|
|
"Kill Team",
|
|
SC2WOL_LOC_ID_OFFSET + 1710,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
(adv_tactics or logic.terran_common_unit(state))
|
|
and logic.terran_great_train_robbery_train_stopper(state)
|
|
and logic.terran_basic_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY.mission_name,
|
|
"Flawless",
|
|
SC2WOL_LOC_ID_OFFSET + 1711,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_great_train_robbery_train_stopper(state)
|
|
and logic.terran_basic_anti_air(state)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY.mission_name,
|
|
"2 Trains Destroyed",
|
|
SC2WOL_LOC_ID_OFFSET + 1712,
|
|
LocationType.EXTRA,
|
|
logic.terran_great_train_robbery_train_stopper,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY.mission_name,
|
|
"4 Trains Destroyed",
|
|
SC2WOL_LOC_ID_OFFSET + 1713,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_great_train_robbery_train_stopper(state)
|
|
and logic.terran_basic_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY.mission_name,
|
|
"6 Trains Destroyed",
|
|
SC2WOL_LOC_ID_OFFSET + 1714,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_great_train_robbery_train_stopper(state)
|
|
and logic.terran_basic_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 1800,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and (adv_tactics or logic.terran_moderate_anti_air(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT.mission_name,
|
|
"Mira Han",
|
|
SC2WOL_LOC_ID_OFFSET + 1801,
|
|
LocationType.EXTRA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT.mission_name,
|
|
"North Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 1802,
|
|
LocationType.VANILLA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT.mission_name,
|
|
"Mid Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 1803,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT.mission_name,
|
|
"Southwest Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 1804,
|
|
LocationType.VANILLA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT.mission_name,
|
|
"North Command Center",
|
|
SC2WOL_LOC_ID_OFFSET + 1805,
|
|
LocationType.EXTRA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT.mission_name,
|
|
"South Command Center",
|
|
SC2WOL_LOC_ID_OFFSET + 1806,
|
|
LocationType.EXTRA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT.mission_name,
|
|
"West Command Center",
|
|
SC2WOL_LOC_ID_OFFSET + 1807,
|
|
LocationType.EXTRA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 1900,
|
|
LocationType.VICTORY,
|
|
logic.terran_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION.mission_name,
|
|
"Odin",
|
|
SC2WOL_LOC_ID_OFFSET + 1901,
|
|
LocationType.EXTRA,
|
|
logic.marine_medic_upgrade,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION.mission_name,
|
|
"Loki",
|
|
SC2WOL_LOC_ID_OFFSET + 1902,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION.mission_name,
|
|
"Lab Devourer",
|
|
SC2WOL_LOC_ID_OFFSET + 1903,
|
|
LocationType.VANILLA,
|
|
logic.marine_medic_upgrade,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION.mission_name,
|
|
"North Devourer",
|
|
SC2WOL_LOC_ID_OFFSET + 1904,
|
|
LocationType.VANILLA,
|
|
logic.terran_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION.mission_name,
|
|
"Southeast Devourer",
|
|
SC2WOL_LOC_ID_OFFSET + 1905,
|
|
LocationType.VANILLA,
|
|
logic.terran_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION.mission_name,
|
|
"West Base",
|
|
SC2WOL_LOC_ID_OFFSET + 1906,
|
|
LocationType.EXTRA,
|
|
logic.terran_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION.mission_name,
|
|
"Northwest Base",
|
|
SC2WOL_LOC_ID_OFFSET + 1907,
|
|
LocationType.EXTRA,
|
|
logic.terran_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION.mission_name,
|
|
"Northeast Base",
|
|
SC2WOL_LOC_ID_OFFSET + 1908,
|
|
LocationType.EXTRA,
|
|
logic.terran_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION.mission_name,
|
|
"Southeast Base",
|
|
SC2WOL_LOC_ID_OFFSET + 1909,
|
|
LocationType.EXTRA,
|
|
logic.terran_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 2000,
|
|
LocationType.VICTORY,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ.mission_name,
|
|
"Tower 1",
|
|
SC2WOL_LOC_ID_OFFSET + 2001,
|
|
LocationType.VANILLA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ.mission_name,
|
|
"Tower 2",
|
|
SC2WOL_LOC_ID_OFFSET + 2002,
|
|
LocationType.VANILLA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ.mission_name,
|
|
"Tower 3",
|
|
SC2WOL_LOC_ID_OFFSET + 2003,
|
|
LocationType.VANILLA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ.mission_name,
|
|
"Science Facility",
|
|
SC2WOL_LOC_ID_OFFSET + 2004,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.terran_competent_comp(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ.mission_name,
|
|
"All Barracks",
|
|
SC2WOL_LOC_ID_OFFSET + 2005,
|
|
LocationType.EXTRA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ.mission_name,
|
|
"All Factories",
|
|
SC2WOL_LOC_ID_OFFSET + 2006,
|
|
LocationType.EXTRA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ.mission_name,
|
|
"All Starports",
|
|
SC2WOL_LOC_ID_OFFSET + 2007,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or logic.terran_competent_comp(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ.mission_name,
|
|
"Odin Not Trashed",
|
|
SC2WOL_LOC_ID_OFFSET + 2008,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ.mission_name,
|
|
"Surprise Attack Ends",
|
|
SC2WOL_LOC_ID_OFFSET + 2009,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PIERCING_OF_THE_SHROUD.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 2100,
|
|
LocationType.VICTORY,
|
|
logic.marine_medic_upgrade,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PIERCING_OF_THE_SHROUD.mission_name,
|
|
"Holding Cell Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 2101,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PIERCING_OF_THE_SHROUD.mission_name,
|
|
"Brutalisk Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 2102,
|
|
LocationType.VANILLA,
|
|
logic.marine_medic_upgrade,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PIERCING_OF_THE_SHROUD.mission_name,
|
|
"First Escape Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 2103,
|
|
LocationType.VANILLA,
|
|
logic.marine_medic_upgrade,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PIERCING_OF_THE_SHROUD.mission_name,
|
|
"Second Escape Relic",
|
|
SC2WOL_LOC_ID_OFFSET + 2104,
|
|
LocationType.VANILLA,
|
|
logic.marine_medic_upgrade,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PIERCING_OF_THE_SHROUD.mission_name,
|
|
"Brutalisk",
|
|
SC2WOL_LOC_ID_OFFSET + 2105,
|
|
LocationType.VANILLA,
|
|
logic.marine_medic_upgrade,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PIERCING_OF_THE_SHROUD.mission_name,
|
|
"Fusion Reactor",
|
|
SC2WOL_LOC_ID_OFFSET + 2106,
|
|
LocationType.EXTRA,
|
|
logic.marine_medic_upgrade,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PIERCING_OF_THE_SHROUD.mission_name,
|
|
"Entrance Holding Pen",
|
|
SC2WOL_LOC_ID_OFFSET + 2107,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PIERCING_OF_THE_SHROUD.mission_name,
|
|
"Cargo Bay Warbot",
|
|
SC2WOL_LOC_ID_OFFSET + 2108,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PIERCING_OF_THE_SHROUD.mission_name,
|
|
"Escape Warbot",
|
|
SC2WOL_LOC_ID_OFFSET + 2109,
|
|
LocationType.EXTRA,
|
|
logic.marine_medic_upgrade,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WHISPERS_OF_DOOM.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 2200,
|
|
LocationType.VICTORY,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WHISPERS_OF_DOOM.mission_name,
|
|
"First Hatchery",
|
|
SC2WOL_LOC_ID_OFFSET + 2201,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WHISPERS_OF_DOOM.mission_name,
|
|
"Second Hatchery",
|
|
SC2WOL_LOC_ID_OFFSET + 2202,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WHISPERS_OF_DOOM.mission_name,
|
|
"Third Hatchery",
|
|
SC2WOL_LOC_ID_OFFSET + 2203,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WHISPERS_OF_DOOM.mission_name,
|
|
"First Prophecy Fragment",
|
|
SC2WOL_LOC_ID_OFFSET + 2204,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WHISPERS_OF_DOOM.mission_name,
|
|
"Second Prophecy Fragment",
|
|
SC2WOL_LOC_ID_OFFSET + 2205,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WHISPERS_OF_DOOM.mission_name,
|
|
"Third Prophecy Fragment",
|
|
SC2WOL_LOC_ID_OFFSET + 2206,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 2300,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and logic.protoss_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN.mission_name,
|
|
"Robotics Facility",
|
|
SC2WOL_LOC_ID_OFFSET + 2301,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.protoss_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN.mission_name,
|
|
"Dark Shrine",
|
|
SC2WOL_LOC_ID_OFFSET + 2302,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.protoss_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN.mission_name,
|
|
"Templar Archives",
|
|
SC2WOL_LOC_ID_OFFSET + 2303,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and logic.protoss_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN.mission_name,
|
|
"Northeast Base",
|
|
SC2WOL_LOC_ID_OFFSET + 2304,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and logic.protoss_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN.mission_name,
|
|
"Southwest Base",
|
|
SC2WOL_LOC_ID_OFFSET + 2305,
|
|
LocationType.CHALLENGE,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and logic.protoss_competent_anti_air(state),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN.mission_name,
|
|
"Maar",
|
|
SC2WOL_LOC_ID_OFFSET + 2306,
|
|
LocationType.EXTRA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN.mission_name,
|
|
"Northwest Preserver",
|
|
SC2WOL_LOC_ID_OFFSET + 2307,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and logic.protoss_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN.mission_name,
|
|
"Southwest Preserver",
|
|
SC2WOL_LOC_ID_OFFSET + 2308,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and logic.protoss_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN.mission_name,
|
|
"East Preserver",
|
|
SC2WOL_LOC_ID_OFFSET + 2309,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and logic.protoss_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 2400,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
(adv_tactics and logic.protoss_static_defense(state))
|
|
or (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE.mission_name,
|
|
"Close Obelisk",
|
|
SC2WOL_LOC_ID_OFFSET + 2401,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE.mission_name,
|
|
"West Obelisk",
|
|
SC2WOL_LOC_ID_OFFSET + 2402,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.protoss_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE.mission_name,
|
|
"Base",
|
|
SC2WOL_LOC_ID_OFFSET + 2403,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE.mission_name,
|
|
"Southwest Tendril",
|
|
SC2WOL_LOC_ID_OFFSET + 2404,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE.mission_name,
|
|
"Southeast Tendril",
|
|
SC2WOL_LOC_ID_OFFSET + 2405,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics
|
|
and logic.protoss_static_defense(state)
|
|
or logic.protoss_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE.mission_name,
|
|
"Northeast Tendril",
|
|
SC2WOL_LOC_ID_OFFSET + 2406,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics
|
|
and logic.protoss_static_defense(state)
|
|
or logic.protoss_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE.mission_name,
|
|
"Northwest Tendril",
|
|
SC2WOL_LOC_ID_OFFSET + 2407,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics
|
|
and logic.protoss_static_defense(state)
|
|
or logic.protoss_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS.mission_name,
|
|
"Defeat",
|
|
SC2WOL_LOC_ID_OFFSET + 2500,
|
|
LocationType.VICTORY,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS.mission_name,
|
|
"Protoss Archive",
|
|
SC2WOL_LOC_ID_OFFSET + 2501,
|
|
LocationType.VANILLA,
|
|
logic.protoss_in_utter_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS.mission_name,
|
|
"Kills",
|
|
SC2WOL_LOC_ID_OFFSET + 2502,
|
|
LocationType.VANILLA,
|
|
logic.protoss_in_utter_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS.mission_name,
|
|
"Urun",
|
|
SC2WOL_LOC_ID_OFFSET + 2503,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS.mission_name,
|
|
"Mohandar",
|
|
SC2WOL_LOC_ID_OFFSET + 2504,
|
|
LocationType.EXTRA,
|
|
logic.protoss_in_utter_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS.mission_name,
|
|
"Selendis",
|
|
SC2WOL_LOC_ID_OFFSET + 2505,
|
|
LocationType.EXTRA,
|
|
logic.protoss_in_utter_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS.mission_name,
|
|
"Artanis",
|
|
SC2WOL_LOC_ID_OFFSET + 2506,
|
|
LocationType.EXTRA,
|
|
logic.protoss_in_utter_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 2600,
|
|
LocationType.VICTORY,
|
|
logic.terran_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL.mission_name,
|
|
"Large Army",
|
|
SC2WOL_LOC_ID_OFFSET + 2601,
|
|
LocationType.VANILLA,
|
|
logic.terran_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL.mission_name,
|
|
"2 Drop Pods",
|
|
SC2WOL_LOC_ID_OFFSET + 2602,
|
|
LocationType.VANILLA,
|
|
logic.terran_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL.mission_name,
|
|
"4 Drop Pods",
|
|
SC2WOL_LOC_ID_OFFSET + 2603,
|
|
LocationType.VANILLA,
|
|
logic.terran_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL.mission_name,
|
|
"6 Drop Pods",
|
|
SC2WOL_LOC_ID_OFFSET + 2604,
|
|
LocationType.EXTRA,
|
|
logic.terran_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL.mission_name,
|
|
"8 Drop Pods",
|
|
SC2WOL_LOC_ID_OFFSET + 2605,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL.mission_name,
|
|
"Southwest Spore Cannon",
|
|
SC2WOL_LOC_ID_OFFSET + 2606,
|
|
LocationType.EXTRA,
|
|
logic.terran_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL.mission_name,
|
|
"Northwest Spore Cannon",
|
|
SC2WOL_LOC_ID_OFFSET + 2607,
|
|
LocationType.EXTRA,
|
|
logic.terran_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL.mission_name,
|
|
"Northeast Spore Cannon",
|
|
SC2WOL_LOC_ID_OFFSET + 2608,
|
|
LocationType.EXTRA,
|
|
logic.terran_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL.mission_name,
|
|
"East Spore Cannon",
|
|
SC2WOL_LOC_ID_OFFSET + 2609,
|
|
LocationType.EXTRA,
|
|
logic.terran_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL.mission_name,
|
|
"Southeast Spore Cannon",
|
|
SC2WOL_LOC_ID_OFFSET + 2610,
|
|
LocationType.EXTRA,
|
|
logic.terran_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL.mission_name,
|
|
"Expansion Spore Cannon",
|
|
SC2WOL_LOC_ID_OFFSET + 2611,
|
|
LocationType.EXTRA,
|
|
logic.terran_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BELLY_OF_THE_BEAST.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 2700,
|
|
LocationType.VICTORY,
|
|
lambda state: adv_tactics or logic.marine_medic_firebat_upgrade(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BELLY_OF_THE_BEAST.mission_name,
|
|
"First Charge",
|
|
SC2WOL_LOC_ID_OFFSET + 2701,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BELLY_OF_THE_BEAST.mission_name,
|
|
"Second Charge",
|
|
SC2WOL_LOC_ID_OFFSET + 2702,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or logic.marine_medic_firebat_upgrade(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BELLY_OF_THE_BEAST.mission_name,
|
|
"Third Charge",
|
|
SC2WOL_LOC_ID_OFFSET + 2703,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or logic.marine_medic_firebat_upgrade(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BELLY_OF_THE_BEAST.mission_name,
|
|
"First Group Rescued",
|
|
SC2WOL_LOC_ID_OFFSET + 2704,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BELLY_OF_THE_BEAST.mission_name,
|
|
"Second Group Rescued",
|
|
SC2WOL_LOC_ID_OFFSET + 2705,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BELLY_OF_THE_BEAST.mission_name,
|
|
"Third Group Rescued",
|
|
SC2WOL_LOC_ID_OFFSET + 2706,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.marine_medic_firebat_upgrade(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 2800,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.terran_competent_comp(state, 2),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY.mission_name,
|
|
"Close Coolant Tower",
|
|
SC2WOL_LOC_ID_OFFSET + 2801,
|
|
LocationType.VANILLA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY.mission_name,
|
|
"Northwest Coolant Tower",
|
|
SC2WOL_LOC_ID_OFFSET + 2802,
|
|
LocationType.VANILLA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY.mission_name,
|
|
"Southeast Coolant Tower",
|
|
SC2WOL_LOC_ID_OFFSET + 2803,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.terran_competent_comp(state, 2),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY.mission_name,
|
|
"Southwest Coolant Tower",
|
|
SC2WOL_LOC_ID_OFFSET + 2804,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.terran_competent_comp(state, 2),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY.mission_name,
|
|
"Leviathan",
|
|
SC2WOL_LOC_ID_OFFSET + 2805,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.terran_competent_comp(state, 2),
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY.mission_name,
|
|
"East Hatchery",
|
|
SC2WOL_LOC_ID_OFFSET + 2806,
|
|
LocationType.EXTRA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY.mission_name,
|
|
"North Hatchery",
|
|
SC2WOL_LOC_ID_OFFSET + 2807,
|
|
LocationType.EXTRA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY.mission_name,
|
|
"Mid Hatchery",
|
|
SC2WOL_LOC_ID_OFFSET + 2808,
|
|
LocationType.EXTRA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN.mission_name,
|
|
"Victory",
|
|
SC2WOL_LOC_ID_OFFSET + 2900,
|
|
LocationType.VICTORY,
|
|
logic.terran_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN.mission_name,
|
|
"First Kerrigan Attack",
|
|
SC2WOL_LOC_ID_OFFSET + 2901,
|
|
LocationType.EXTRA,
|
|
logic.terran_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN.mission_name,
|
|
"Second Kerrigan Attack",
|
|
SC2WOL_LOC_ID_OFFSET + 2902,
|
|
LocationType.EXTRA,
|
|
logic.terran_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN.mission_name,
|
|
"Third Kerrigan Attack",
|
|
SC2WOL_LOC_ID_OFFSET + 2903,
|
|
LocationType.EXTRA,
|
|
logic.terran_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN.mission_name,
|
|
"Fourth Kerrigan Attack",
|
|
SC2WOL_LOC_ID_OFFSET + 2904,
|
|
LocationType.EXTRA,
|
|
logic.terran_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN.mission_name,
|
|
"Fifth Kerrigan Attack",
|
|
SC2WOL_LOC_ID_OFFSET + 2905,
|
|
LocationType.EXTRA,
|
|
logic.terran_all_in_requirement,
|
|
),
|
|
# HotS
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 100,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
or state.has_any((item_names.ZERGLING, item_names.PYGALISK), player)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT.mission_name,
|
|
"Gather Minerals",
|
|
SC2HOTS_LOC_ID_OFFSET + 101,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT.mission_name,
|
|
"South Zergling Group",
|
|
SC2HOTS_LOC_ID_OFFSET + 102,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics
|
|
or (
|
|
logic.zerg_common_unit(state)
|
|
or state.has_any((item_names.ZERGLING, item_names.PYGALISK), player)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT.mission_name,
|
|
"East Zergling Group",
|
|
SC2HOTS_LOC_ID_OFFSET + 103,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics
|
|
or (
|
|
logic.zerg_common_unit(state)
|
|
or state.has_any((item_names.ZERGLING, item_names.PYGALISK), player)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT.mission_name,
|
|
"West Zergling Group",
|
|
SC2HOTS_LOC_ID_OFFSET + 104,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics
|
|
or (
|
|
logic.zerg_common_unit(state)
|
|
or state.has_any((item_names.ZERGLING, item_names.PYGALISK), player)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT.mission_name,
|
|
"Hatchery",
|
|
SC2HOTS_LOC_ID_OFFSET + 105,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT.mission_name,
|
|
"Overlord",
|
|
SC2HOTS_LOC_ID_OFFSET + 106,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT.mission_name,
|
|
"Gas Turrets",
|
|
SC2HOTS_LOC_ID_OFFSET + 107,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics
|
|
or (
|
|
logic.zerg_common_unit(state)
|
|
or state.has_any((item_names.ZERGLING, item_names.PYGALISK), player)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT.mission_name,
|
|
"Win In Under 10 Minutes",
|
|
SC2HOTS_LOC_ID_OFFSET + 108,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
or state.has_any((item_names.ZERGLING, item_names.PYGALISK), player)
|
|
),
|
|
flags=LocationFlag.SPEEDRUN,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BACK_IN_THE_SADDLE.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 200,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.basic_kerrigan(state)
|
|
or kerriganless,
|
|
hard_rule=logic.zerg_any_units_back_in_the_saddle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BACK_IN_THE_SADDLE.mission_name,
|
|
"Defend the Tram",
|
|
SC2HOTS_LOC_ID_OFFSET + 201,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.basic_kerrigan(state)
|
|
or kerriganless,
|
|
hard_rule=logic.zerg_any_units_back_in_the_saddle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BACK_IN_THE_SADDLE.mission_name,
|
|
"Kinetic Blast",
|
|
SC2HOTS_LOC_ID_OFFSET + 202,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BACK_IN_THE_SADDLE.mission_name,
|
|
"Crushing Grip",
|
|
SC2HOTS_LOC_ID_OFFSET + 203,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BACK_IN_THE_SADDLE.mission_name,
|
|
"Reach the Sublevel",
|
|
SC2HOTS_LOC_ID_OFFSET + 204,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BACK_IN_THE_SADDLE.mission_name,
|
|
"Door Section Cleared",
|
|
SC2HOTS_LOC_ID_OFFSET + 205,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.basic_kerrigan(state)
|
|
or kerriganless,
|
|
hard_rule=logic.zerg_any_units_back_in_the_saddle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 300,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_basic_anti_air(state)
|
|
and logic.zerg_defense_rating(state, False, False) >= 3
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS.mission_name,
|
|
"Right Queen",
|
|
SC2HOTS_LOC_ID_OFFSET + 301,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_basic_anti_air(state)
|
|
and logic.zerg_defense_rating(state, False, False) >= 3
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS.mission_name,
|
|
"Center Queen",
|
|
SC2HOTS_LOC_ID_OFFSET + 302,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_basic_anti_air(state)
|
|
and logic.zerg_defense_rating(state, False, False) >= 3
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS.mission_name,
|
|
"Left Queen",
|
|
SC2HOTS_LOC_ID_OFFSET + 303,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_basic_anti_air(state)
|
|
and logic.zerg_defense_rating(state, False, False) >= 3
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS.mission_name,
|
|
"Hold Out Finished",
|
|
SC2HOTS_LOC_ID_OFFSET + 304,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_basic_anti_air(state)
|
|
and logic.zerg_defense_rating(state, False, False) >= 3
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS.mission_name,
|
|
"Kill All Buildings Before Reinforcements",
|
|
SC2HOTS_LOC_ID_OFFSET + 305,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_competent_anti_air(state)
|
|
and (logic.basic_kerrigan(state, False) or kerriganless)
|
|
and logic.zerg_defense_rating(state, False, False) >= 3
|
|
and logic.zerg_power_rating(state) >= 5
|
|
),
|
|
flags=LocationFlag.SPEEDRUN,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 400,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state) and logic.zerg_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS.mission_name,
|
|
"First Ursadon Matriarch",
|
|
SC2HOTS_LOC_ID_OFFSET + 401,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS.mission_name,
|
|
"North Ursadon Matriarch",
|
|
SC2HOTS_LOC_ID_OFFSET + 402,
|
|
LocationType.VANILLA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS.mission_name,
|
|
"West Ursadon Matriarch",
|
|
SC2HOTS_LOC_ID_OFFSET + 403,
|
|
LocationType.VANILLA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS.mission_name,
|
|
"Lost Brood",
|
|
SC2HOTS_LOC_ID_OFFSET + 404,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS.mission_name,
|
|
"Northeast Psi-link Spire",
|
|
SC2HOTS_LOC_ID_OFFSET + 405,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS.mission_name,
|
|
"Northwest Psi-link Spire",
|
|
SC2HOTS_LOC_ID_OFFSET + 406,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state) and logic.zerg_moderate_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS.mission_name,
|
|
"Southwest Psi-link Spire",
|
|
SC2HOTS_LOC_ID_OFFSET + 407,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state) and logic.zerg_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS.mission_name,
|
|
"Nafash",
|
|
SC2HOTS_LOC_ID_OFFSET + 408,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state) and logic.zerg_moderate_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS.mission_name,
|
|
"20 Unfrozen Structures",
|
|
SC2HOTS_LOC_ID_OFFSET + 409,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state) and logic.zerg_moderate_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 500,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state) and logic.zerg_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER.mission_name,
|
|
"East Stasis Chamber",
|
|
SC2HOTS_LOC_ID_OFFSET + 501,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state) and logic.zerg_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER.mission_name,
|
|
"Center Stasis Chamber",
|
|
SC2HOTS_LOC_ID_OFFSET + 502,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.zerg_common_unit(state) or adv_tactics,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER.mission_name,
|
|
"West Stasis Chamber",
|
|
SC2HOTS_LOC_ID_OFFSET + 503,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state) and logic.zerg_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER.mission_name,
|
|
"Destroy 4 Shuttles",
|
|
SC2HOTS_LOC_ID_OFFSET + 504,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state) and logic.zerg_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER.mission_name,
|
|
"Frozen Expansion",
|
|
SC2HOTS_LOC_ID_OFFSET + 505,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER.mission_name,
|
|
"Southwest Frozen Zerg",
|
|
SC2HOTS_LOC_ID_OFFSET + 506,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER.mission_name,
|
|
"Southeast Frozen Zerg",
|
|
SC2HOTS_LOC_ID_OFFSET + 507,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.zerg_common_unit(state) or adv_tactics,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER.mission_name,
|
|
"West Frozen Zerg",
|
|
SC2HOTS_LOC_ID_OFFSET + 508,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER.mission_name,
|
|
"East Frozen Zerg",
|
|
SC2HOTS_LOC_ID_OFFSET + 509,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER.mission_name,
|
|
"West Launch Bay",
|
|
SC2HOTS_LOC_ID_OFFSET + 510,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER.mission_name,
|
|
"Center Launch Bay",
|
|
SC2HOTS_LOC_ID_OFFSET + 511,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER.mission_name,
|
|
"East Launch Bay",
|
|
SC2HOTS_LOC_ID_OFFSET + 512,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_WITHIN.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 600,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_pass_vents(state)
|
|
and (
|
|
logic.grant_story_tech == GrantStoryTech.option_grant
|
|
or state.has_any(
|
|
{
|
|
item_names.ZERGLING_RAPTOR_STRAIN,
|
|
item_names.ROACH,
|
|
item_names.HYDRALISK,
|
|
item_names.INFESTOR,
|
|
},
|
|
player,
|
|
)
|
|
)
|
|
),
|
|
hard_rule=logic.zerg_pass_vents,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_WITHIN.mission_name,
|
|
"Infest Giant Ursadon",
|
|
SC2HOTS_LOC_ID_OFFSET + 601,
|
|
LocationType.VANILLA,
|
|
logic.zerg_pass_vents,
|
|
hard_rule=logic.zerg_pass_vents,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_WITHIN.mission_name,
|
|
"First Niadra Evolution",
|
|
SC2HOTS_LOC_ID_OFFSET + 602,
|
|
LocationType.VANILLA,
|
|
logic.zerg_pass_vents,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_WITHIN.mission_name,
|
|
"Second Niadra Evolution",
|
|
SC2HOTS_LOC_ID_OFFSET + 603,
|
|
LocationType.VANILLA,
|
|
logic.zerg_pass_vents,
|
|
hard_rule=logic.zerg_pass_vents,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_WITHIN.mission_name,
|
|
"Third Niadra Evolution",
|
|
SC2HOTS_LOC_ID_OFFSET + 604,
|
|
LocationType.VANILLA,
|
|
logic.zerg_pass_vents,
|
|
hard_rule=logic.zerg_pass_vents,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_WITHIN.mission_name,
|
|
"Warp Drive",
|
|
SC2HOTS_LOC_ID_OFFSET + 605,
|
|
LocationType.EXTRA,
|
|
logic.zerg_pass_vents,
|
|
hard_rule=logic.zerg_pass_vents,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_WITHIN.mission_name,
|
|
"Stasis Quadrant",
|
|
SC2HOTS_LOC_ID_OFFSET + 606,
|
|
LocationType.EXTRA,
|
|
logic.zerg_pass_vents,
|
|
hard_rule=logic.zerg_pass_vents,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 700,
|
|
LocationType.VICTORY,
|
|
logic.zerg_common_unit_basic_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION.mission_name,
|
|
"Center Infested Command Center",
|
|
SC2HOTS_LOC_ID_OFFSET + 701,
|
|
LocationType.VANILLA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION.mission_name,
|
|
"North Infested Command Center",
|
|
SC2HOTS_LOC_ID_OFFSET + 702,
|
|
LocationType.VANILLA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION.mission_name,
|
|
"Repel Zagara",
|
|
SC2HOTS_LOC_ID_OFFSET + 703,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION.mission_name,
|
|
"Close Baneling Nest",
|
|
SC2HOTS_LOC_ID_OFFSET + 704,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION.mission_name,
|
|
"South Baneling Nest",
|
|
SC2HOTS_LOC_ID_OFFSET + 705,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or logic.zerg_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION.mission_name,
|
|
"Southwest Baneling Nest",
|
|
SC2HOTS_LOC_ID_OFFSET + 706,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION.mission_name,
|
|
"Southeast Baneling Nest",
|
|
SC2HOTS_LOC_ID_OFFSET + 707,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit_basic_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION.mission_name,
|
|
"North Baneling Nest",
|
|
SC2HOTS_LOC_ID_OFFSET + 708,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION.mission_name,
|
|
"Northeast Baneling Nest",
|
|
SC2HOTS_LOC_ID_OFFSET + 709,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit_basic_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION.mission_name,
|
|
"Win Without 100 Eggs",
|
|
SC2HOTS_LOC_ID_OFFSET + 710,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 800,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and logic.spread_creep(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY.mission_name,
|
|
"West Biomass",
|
|
SC2HOTS_LOC_ID_OFFSET + 801,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY.mission_name,
|
|
"North Biomass",
|
|
SC2HOTS_LOC_ID_OFFSET + 802,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and logic.spread_creep(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY.mission_name,
|
|
"South Biomass",
|
|
SC2HOTS_LOC_ID_OFFSET + 803,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and logic.spread_creep(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY.mission_name,
|
|
"Destroy 3 Gorgons",
|
|
SC2HOTS_LOC_ID_OFFSET + 804,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and logic.spread_creep(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY.mission_name,
|
|
"Close Zerg Rescue",
|
|
SC2HOTS_LOC_ID_OFFSET + 805,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY.mission_name,
|
|
"South Zerg Rescue",
|
|
SC2HOTS_LOC_ID_OFFSET + 806,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY.mission_name,
|
|
"North Zerg Rescue",
|
|
SC2HOTS_LOC_ID_OFFSET + 807,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and logic.spread_creep(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY.mission_name,
|
|
"West Queen Rescue",
|
|
SC2HOTS_LOC_ID_OFFSET + 808,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and logic.spread_creep(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY.mission_name,
|
|
"East Queen Rescue",
|
|
SC2HOTS_LOC_ID_OFFSET + 809,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and logic.spread_creep(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY.mission_name,
|
|
"South Orbital Command Center",
|
|
SC2HOTS_LOC_ID_OFFSET + 810,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state) and logic.zerg_moderate_anti_air(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY.mission_name,
|
|
"Northwest Orbital Command Center",
|
|
SC2HOTS_LOC_ID_OFFSET + 811,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state) and logic.zerg_moderate_anti_air(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY.mission_name,
|
|
"Southeast Orbital Command Center",
|
|
SC2HOTS_LOC_ID_OFFSET + 812,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state) and logic.zerg_moderate_anti_air(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 900,
|
|
LocationType.VICTORY,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS.mission_name,
|
|
"East Science Lab",
|
|
SC2HOTS_LOC_ID_OFFSET + 901,
|
|
LocationType.VANILLA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS.mission_name,
|
|
"North Science Lab",
|
|
SC2HOTS_LOC_ID_OFFSET + 902,
|
|
LocationType.VANILLA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS.mission_name,
|
|
"Get Nuked",
|
|
SC2HOTS_LOC_ID_OFFSET + 903,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS.mission_name,
|
|
"Entrance Gate",
|
|
SC2HOTS_LOC_ID_OFFSET + 904,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS.mission_name,
|
|
"Citadel Gate",
|
|
SC2HOTS_LOC_ID_OFFSET + 905,
|
|
LocationType.EXTRA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS.mission_name,
|
|
"South Expansion",
|
|
SC2HOTS_LOC_ID_OFFSET + 906,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS.mission_name,
|
|
"Rich Mineral Expansion",
|
|
SC2HOTS_LOC_ID_OFFSET + 907,
|
|
LocationType.EXTRA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 1000,
|
|
LocationType.VICTORY,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
hard_rule=logic.zerg_kerrigan_or_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT.mission_name,
|
|
"Center Essence Pool",
|
|
SC2HOTS_LOC_ID_OFFSET + 1001,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT.mission_name,
|
|
"East Essence Pool",
|
|
SC2HOTS_LOC_ID_OFFSET + 1002,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and (
|
|
adv_tactics
|
|
and logic.zerg_basic_anti_air(state)
|
|
or logic.zerg_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT.mission_name,
|
|
"South Essence Pool",
|
|
SC2HOTS_LOC_ID_OFFSET + 1003,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and (
|
|
adv_tactics
|
|
and logic.zerg_basic_anti_air(state)
|
|
or logic.zerg_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT.mission_name,
|
|
"Finish Feeding",
|
|
SC2HOTS_LOC_ID_OFFSET + 1004,
|
|
LocationType.EXTRA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
hard_rule=logic.zerg_kerrigan_or_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT.mission_name,
|
|
"South Proxy Primal Hive",
|
|
SC2HOTS_LOC_ID_OFFSET + 1005,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT.mission_name,
|
|
"East Proxy Primal Hive",
|
|
SC2HOTS_LOC_ID_OFFSET + 1006,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT.mission_name,
|
|
"South Main Primal Hive",
|
|
SC2HOTS_LOC_ID_OFFSET + 1007,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
flags=LocationFlag.BASEBUST,
|
|
hard_rule=logic.zerg_kerrigan_or_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT.mission_name,
|
|
"East Main Primal Hive",
|
|
SC2HOTS_LOC_ID_OFFSET + 1008,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
flags=LocationFlag.BASEBUST,
|
|
hard_rule=logic.zerg_kerrigan_or_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT.mission_name,
|
|
"Flawless",
|
|
SC2HOTS_LOC_ID_OFFSET + 1009,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
hard_rule=logic.zerg_kerrigan_or_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 1100,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_defense_rating(state, True, True) >= 7
|
|
and logic.zerg_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE.mission_name,
|
|
"Tyrannozor",
|
|
SC2HOTS_LOC_ID_OFFSET + 1101,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_defense_rating(state, True, True) >= 7
|
|
and logic.zerg_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE.mission_name,
|
|
"Reach the Pool",
|
|
SC2HOTS_LOC_ID_OFFSET + 1102,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE.mission_name,
|
|
"15 Minutes Remaining",
|
|
SC2HOTS_LOC_ID_OFFSET + 1103,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_defense_rating(state, True, True) >= 7
|
|
and logic.zerg_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE.mission_name,
|
|
"5 Minutes Remaining",
|
|
SC2HOTS_LOC_ID_OFFSET + 1104,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_defense_rating(state, True, True) >= 7
|
|
and logic.zerg_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE.mission_name,
|
|
"Pincer Attack",
|
|
SC2HOTS_LOC_ID_OFFSET + 1105,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_defense_rating(state, True, True) >= 7
|
|
and logic.zerg_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE.mission_name,
|
|
"Yagdra Claims Brakk's Pack",
|
|
SC2HOTS_LOC_ID_OFFSET + 1106,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_defense_rating(state, True, True) >= 7
|
|
and logic.zerg_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPREME.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 1200,
|
|
LocationType.VICTORY,
|
|
logic.supreme_requirement,
|
|
hard_rule=logic.supreme_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPREME.mission_name,
|
|
"First Relic",
|
|
SC2HOTS_LOC_ID_OFFSET + 1201,
|
|
LocationType.VANILLA,
|
|
logic.supreme_requirement,
|
|
hard_rule=logic.supreme_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPREME.mission_name,
|
|
"Second Relic",
|
|
SC2HOTS_LOC_ID_OFFSET + 1202,
|
|
LocationType.VANILLA,
|
|
logic.supreme_requirement,
|
|
hard_rule=logic.supreme_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPREME.mission_name,
|
|
"Third Relic",
|
|
SC2HOTS_LOC_ID_OFFSET + 1203,
|
|
LocationType.VANILLA,
|
|
logic.supreme_requirement,
|
|
hard_rule=logic.supreme_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPREME.mission_name,
|
|
"Fourth Relic",
|
|
SC2HOTS_LOC_ID_OFFSET + 1204,
|
|
LocationType.VANILLA,
|
|
logic.supreme_requirement,
|
|
hard_rule=logic.supreme_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPREME.mission_name,
|
|
"Yagdra",
|
|
SC2HOTS_LOC_ID_OFFSET + 1205,
|
|
LocationType.EXTRA,
|
|
logic.supreme_requirement,
|
|
hard_rule=logic.supreme_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPREME.mission_name,
|
|
"Kraith",
|
|
SC2HOTS_LOC_ID_OFFSET + 1206,
|
|
LocationType.EXTRA,
|
|
logic.supreme_requirement,
|
|
hard_rule=logic.supreme_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPREME.mission_name,
|
|
"Slivan",
|
|
SC2HOTS_LOC_ID_OFFSET + 1207,
|
|
LocationType.EXTRA,
|
|
logic.supreme_requirement,
|
|
hard_rule=logic.supreme_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 1300,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and (
|
|
(
|
|
logic.zerg_competent_anti_air(state)
|
|
and state.has(item_names.INFESTOR, player)
|
|
)
|
|
or (adv_tactics and logic.zerg_moderate_anti_air(state))
|
|
)
|
|
),
|
|
hard_rule=logic.zerg_kerrigan_or_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED.mission_name,
|
|
"East Science Facility",
|
|
SC2HOTS_LOC_ID_OFFSET + 1301,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and logic.spread_creep(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED.mission_name,
|
|
"Center Science Facility",
|
|
SC2HOTS_LOC_ID_OFFSET + 1302,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and logic.spread_creep(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED.mission_name,
|
|
"West Science Facility",
|
|
SC2HOTS_LOC_ID_OFFSET + 1303,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and logic.spread_creep(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED.mission_name,
|
|
"First Intro Garrison",
|
|
SC2HOTS_LOC_ID_OFFSET + 1304,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED.mission_name,
|
|
"Second Intro Garrison",
|
|
SC2HOTS_LOC_ID_OFFSET + 1305,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED.mission_name,
|
|
"Base Garrison",
|
|
SC2HOTS_LOC_ID_OFFSET + 1306,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED.mission_name,
|
|
"East Garrison",
|
|
SC2HOTS_LOC_ID_OFFSET + 1307,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and (adv_tactics or state.has(item_names.INFESTOR, player))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED.mission_name,
|
|
"Mid Garrison",
|
|
SC2HOTS_LOC_ID_OFFSET + 1308,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and (adv_tactics or state.has(item_names.INFESTOR, player))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED.mission_name,
|
|
"North Garrison",
|
|
SC2HOTS_LOC_ID_OFFSET + 1309,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and (adv_tactics or state.has(item_names.INFESTOR, player))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED.mission_name,
|
|
"Close Southwest Garrison",
|
|
SC2HOTS_LOC_ID_OFFSET + 1310,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and (adv_tactics or state.has(item_names.INFESTOR, player))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED.mission_name,
|
|
"Far Southwest Garrison",
|
|
SC2HOTS_LOC_ID_OFFSET + 1311,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and (adv_tactics or state.has(item_names.INFESTOR, player))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 1400,
|
|
LocationType.VICTORY,
|
|
logic.zerg_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS.mission_name,
|
|
"North Brutalisk",
|
|
SC2HOTS_LOC_ID_OFFSET + 1401,
|
|
LocationType.VANILLA,
|
|
logic.zerg_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS.mission_name,
|
|
"South Brutalisk",
|
|
SC2HOTS_LOC_ID_OFFSET + 1402,
|
|
LocationType.VANILLA,
|
|
logic.zerg_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS.mission_name,
|
|
"Kill 1 Hybrid",
|
|
SC2HOTS_LOC_ID_OFFSET + 1403,
|
|
LocationType.EXTRA,
|
|
logic.zerg_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS.mission_name,
|
|
"Kill 2 Hybrid",
|
|
SC2HOTS_LOC_ID_OFFSET + 1404,
|
|
LocationType.EXTRA,
|
|
logic.zerg_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS.mission_name,
|
|
"Kill 3 Hybrid",
|
|
SC2HOTS_LOC_ID_OFFSET + 1405,
|
|
LocationType.EXTRA,
|
|
logic.zerg_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS.mission_name,
|
|
"Kill 4 Hybrid",
|
|
SC2HOTS_LOC_ID_OFFSET + 1406,
|
|
LocationType.EXTRA,
|
|
logic.zerg_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS.mission_name,
|
|
"Kill 5 Hybrid",
|
|
SC2HOTS_LOC_ID_OFFSET + 1407,
|
|
LocationType.EXTRA,
|
|
logic.zerg_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS.mission_name,
|
|
"Kill 6 Hybrid",
|
|
SC2HOTS_LOC_ID_OFFSET + 1408,
|
|
LocationType.EXTRA,
|
|
logic.zerg_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS.mission_name,
|
|
"Kill 7 Hybrid",
|
|
SC2HOTS_LOC_ID_OFFSET + 1409,
|
|
LocationType.EXTRA,
|
|
logic.zerg_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 1500,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and (
|
|
logic.zerg_competent_anti_air(state)
|
|
or (adv_tactics and logic.zerg_moderate_anti_air(state))
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID.mission_name,
|
|
"Northwest Crystal",
|
|
SC2HOTS_LOC_ID_OFFSET + 1501,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and (
|
|
logic.zerg_competent_anti_air(state)
|
|
or (adv_tactics and logic.zerg_moderate_anti_air(state))
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID.mission_name,
|
|
"Northeast Crystal",
|
|
SC2HOTS_LOC_ID_OFFSET + 1502,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and (
|
|
logic.zerg_competent_anti_air(state)
|
|
or (adv_tactics and logic.zerg_moderate_anti_air(state))
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID.mission_name,
|
|
"South Crystal",
|
|
SC2HOTS_LOC_ID_OFFSET + 1503,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID.mission_name,
|
|
"Base Established",
|
|
SC2HOTS_LOC_ID_OFFSET + 1504,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID.mission_name,
|
|
"Close Temple",
|
|
SC2HOTS_LOC_ID_OFFSET + 1505,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and (
|
|
logic.zerg_competent_anti_air(state)
|
|
or (adv_tactics and logic.zerg_moderate_anti_air(state))
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID.mission_name,
|
|
"Mid Temple",
|
|
SC2HOTS_LOC_ID_OFFSET + 1506,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and (
|
|
logic.zerg_competent_anti_air(state)
|
|
or (adv_tactics and logic.zerg_moderate_anti_air(state))
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID.mission_name,
|
|
"Southeast Temple",
|
|
SC2HOTS_LOC_ID_OFFSET + 1507,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and (
|
|
logic.zerg_competent_anti_air(state)
|
|
or (adv_tactics and logic.zerg_moderate_anti_air(state))
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID.mission_name,
|
|
"Northeast Temple",
|
|
SC2HOTS_LOC_ID_OFFSET + 1508,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and (
|
|
logic.zerg_competent_anti_air(state)
|
|
or (adv_tactics and logic.zerg_moderate_anti_air(state))
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID.mission_name,
|
|
"Northwest Temple",
|
|
SC2HOTS_LOC_ID_OFFSET + 1509,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and (
|
|
logic.zerg_competent_anti_air(state)
|
|
or (adv_tactics and logic.zerg_moderate_anti_air(state))
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WITH_FRIENDS_LIKE_THESE.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 1600,
|
|
LocationType.VICTORY,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WITH_FRIENDS_LIKE_THESE.mission_name,
|
|
"Pirate Capital Ship",
|
|
SC2HOTS_LOC_ID_OFFSET + 1601,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WITH_FRIENDS_LIKE_THESE.mission_name,
|
|
"First Mineral Patch",
|
|
SC2HOTS_LOC_ID_OFFSET + 1602,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WITH_FRIENDS_LIKE_THESE.mission_name,
|
|
"Second Mineral Patch",
|
|
SC2HOTS_LOC_ID_OFFSET + 1603,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WITH_FRIENDS_LIKE_THESE.mission_name,
|
|
"Third Mineral Patch",
|
|
SC2HOTS_LOC_ID_OFFSET + 1604,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CONVICTION.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 1700,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
kerriganless
|
|
or (
|
|
logic.two_kerrigan_actives(state)
|
|
and logic.basic_kerrigan(state)
|
|
and logic.kerrigan_levels(state, 25)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CONVICTION.mission_name,
|
|
"First Secret Documents",
|
|
SC2HOTS_LOC_ID_OFFSET + 1701,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.two_kerrigan_actives(state) and logic.kerrigan_levels(state, 25)
|
|
)
|
|
or kerriganless,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CONVICTION.mission_name,
|
|
"Second Secret Documents",
|
|
SC2HOTS_LOC_ID_OFFSET + 1702,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
kerriganless
|
|
or (
|
|
logic.two_kerrigan_actives(state)
|
|
and logic.basic_kerrigan(state)
|
|
and logic.kerrigan_levels(state, 25)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CONVICTION.mission_name,
|
|
"Power Coupling",
|
|
SC2HOTS_LOC_ID_OFFSET + 1703,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.two_kerrigan_actives(state) and logic.kerrigan_levels(state, 25)
|
|
)
|
|
or kerriganless,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CONVICTION.mission_name,
|
|
"Door Blasted",
|
|
SC2HOTS_LOC_ID_OFFSET + 1704,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.two_kerrigan_actives(state) and logic.kerrigan_levels(state, 25)
|
|
)
|
|
or kerriganless,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 1800,
|
|
LocationType.VICTORY,
|
|
logic.zerg_planetfall_requirement,
|
|
hard_rule=logic.zerg_kerrigan_or_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL.mission_name,
|
|
"East Gate",
|
|
SC2HOTS_LOC_ID_OFFSET + 1801,
|
|
LocationType.VANILLA,
|
|
logic.zerg_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL.mission_name,
|
|
"Northwest Gate",
|
|
SC2HOTS_LOC_ID_OFFSET + 1802,
|
|
LocationType.VANILLA,
|
|
logic.zerg_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL.mission_name,
|
|
"North Gate",
|
|
SC2HOTS_LOC_ID_OFFSET + 1803,
|
|
LocationType.VANILLA,
|
|
logic.zerg_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL.mission_name,
|
|
"1 Bile Launcher Deployed",
|
|
SC2HOTS_LOC_ID_OFFSET + 1804,
|
|
LocationType.EXTRA,
|
|
logic.zerg_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL.mission_name,
|
|
"2 Bile Launchers Deployed",
|
|
SC2HOTS_LOC_ID_OFFSET + 1805,
|
|
LocationType.EXTRA,
|
|
logic.zerg_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL.mission_name,
|
|
"3 Bile Launchers Deployed",
|
|
SC2HOTS_LOC_ID_OFFSET + 1806,
|
|
LocationType.EXTRA,
|
|
logic.zerg_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL.mission_name,
|
|
"4 Bile Launchers Deployed",
|
|
SC2HOTS_LOC_ID_OFFSET + 1807,
|
|
LocationType.EXTRA,
|
|
logic.zerg_planetfall_requirement,
|
|
hard_rule=logic.zerg_kerrigan_or_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL.mission_name,
|
|
"5 Bile Launchers Deployed",
|
|
SC2HOTS_LOC_ID_OFFSET + 1808,
|
|
LocationType.EXTRA,
|
|
logic.zerg_planetfall_requirement,
|
|
hard_rule=logic.zerg_kerrigan_or_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL.mission_name,
|
|
"Sons of Korhal",
|
|
SC2HOTS_LOC_ID_OFFSET + 1809,
|
|
LocationType.EXTRA,
|
|
logic.zerg_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL.mission_name,
|
|
"Night Wolves",
|
|
SC2HOTS_LOC_ID_OFFSET + 1810,
|
|
LocationType.EXTRA,
|
|
logic.zerg_planetfall_requirement,
|
|
hard_rule=logic.zerg_kerrigan_or_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL.mission_name,
|
|
"West Expansion",
|
|
SC2HOTS_LOC_ID_OFFSET + 1811,
|
|
LocationType.EXTRA,
|
|
logic.zerg_planetfall_requirement,
|
|
hard_rule=logic.zerg_kerrigan_or_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL.mission_name,
|
|
"Mid Expansion",
|
|
SC2HOTS_LOC_ID_OFFSET + 1812,
|
|
LocationType.EXTRA,
|
|
logic.zerg_planetfall_requirement,
|
|
hard_rule=logic.zerg_kerrigan_or_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 1900,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.zerg_competent_comp_competent_aa(state)
|
|
and (adv_tactics or logic.zerg_base_buster(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE.mission_name,
|
|
"First Power Link",
|
|
SC2HOTS_LOC_ID_OFFSET + 1901,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE.mission_name,
|
|
"Second Power Link",
|
|
SC2HOTS_LOC_ID_OFFSET + 1902,
|
|
LocationType.VANILLA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE.mission_name,
|
|
"Third Power Link",
|
|
SC2HOTS_LOC_ID_OFFSET + 1903,
|
|
LocationType.VANILLA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE.mission_name,
|
|
"Expansion Command Center",
|
|
SC2HOTS_LOC_ID_OFFSET + 1904,
|
|
LocationType.EXTRA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE.mission_name,
|
|
"Main Path Command Center",
|
|
SC2HOTS_LOC_ID_OFFSET + 1905,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.zerg_competent_comp_competent_aa(state)
|
|
and (adv_tactics or logic.zerg_base_buster(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING.mission_name,
|
|
"Victory",
|
|
SC2HOTS_LOC_ID_OFFSET + 2000,
|
|
LocationType.VICTORY,
|
|
logic.zerg_the_reckoning_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING.mission_name,
|
|
"South Lane",
|
|
SC2HOTS_LOC_ID_OFFSET + 2001,
|
|
LocationType.VANILLA,
|
|
logic.zerg_the_reckoning_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING.mission_name,
|
|
"North Lane",
|
|
SC2HOTS_LOC_ID_OFFSET + 2002,
|
|
LocationType.VANILLA,
|
|
logic.zerg_the_reckoning_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING.mission_name,
|
|
"East Lane",
|
|
SC2HOTS_LOC_ID_OFFSET + 2003,
|
|
LocationType.VANILLA,
|
|
logic.zerg_the_reckoning_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING.mission_name,
|
|
"Odin",
|
|
SC2HOTS_LOC_ID_OFFSET + 2004,
|
|
LocationType.EXTRA,
|
|
logic.zerg_the_reckoning_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING.mission_name,
|
|
"Trash the Odin Early",
|
|
SC2HOTS_LOC_ID_OFFSET + 2005,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.zerg_the_reckoning_requirement(state)
|
|
and (
|
|
kerriganless
|
|
or (
|
|
logic.kerrigan_levels(state, 50, False)
|
|
and state.has_any(kerrigan_logic_ultimates, player)
|
|
)
|
|
)
|
|
and logic.zerg_power_rating(state) >= 10
|
|
),
|
|
flags=LocationFlag.SPEEDRUN,
|
|
),
|
|
# LotV Prologue
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 100,
|
|
LocationType.VICTORY,
|
|
logic.protoss_common_unit_basic_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS.mission_name,
|
|
"First Prisoner Group",
|
|
SC2LOTV_LOC_ID_OFFSET + 101,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit_basic_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS.mission_name,
|
|
"Second Prisoner Group",
|
|
SC2LOTV_LOC_ID_OFFSET + 102,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit_basic_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS.mission_name,
|
|
"First Pylon",
|
|
SC2LOTV_LOC_ID_OFFSET + 103,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit_basic_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS.mission_name,
|
|
"Second Pylon",
|
|
SC2LOTV_LOC_ID_OFFSET + 104,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit_basic_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS.mission_name,
|
|
"Zerg Base",
|
|
SC2LOTV_LOC_ID_OFFSET + 105,
|
|
LocationType.MASTERY,
|
|
lambda state: logic.protoss_deathball(state)
|
|
and logic.protoss_power_rating(state) >= 6,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOSTS_IN_THE_FOG.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 200,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.protoss_competent_comp(state)
|
|
and logic.protoss_mineral_dump(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOSTS_IN_THE_FOG.mission_name,
|
|
"South Rock Formation",
|
|
SC2LOTV_LOC_ID_OFFSET + 201,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.protoss_competent_comp(state)
|
|
and logic.protoss_mineral_dump(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOSTS_IN_THE_FOG.mission_name,
|
|
"West Rock Formation",
|
|
SC2LOTV_LOC_ID_OFFSET + 202,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.protoss_competent_comp(state)
|
|
and logic.protoss_mineral_dump(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOSTS_IN_THE_FOG.mission_name,
|
|
"East Rock Formation",
|
|
SC2LOTV_LOC_ID_OFFSET + 203,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_competent_comp(state)
|
|
and logic.protoss_mineral_dump(state)
|
|
and logic.protoss_can_attack_behind_chasm(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVIL_AWOKEN.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 300,
|
|
LocationType.VICTORY,
|
|
lambda state: adv_tactics
|
|
or state.has_any((
|
|
item_names.STALKER_PHASE_REACTOR,
|
|
item_names.STALKER_INSTIGATOR_SLAYER_DISINTEGRATING_PARTICLES,
|
|
item_names.STALKER_INSTIGATOR_SLAYER_PARTICLE_REFLECTION,
|
|
), player),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVIL_AWOKEN.mission_name,
|
|
"Temple Investigated",
|
|
SC2LOTV_LOC_ID_OFFSET + 301,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVIL_AWOKEN.mission_name,
|
|
"Void Catalyst",
|
|
SC2LOTV_LOC_ID_OFFSET + 302,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVIL_AWOKEN.mission_name,
|
|
"First Particle Cannon",
|
|
SC2LOTV_LOC_ID_OFFSET + 303,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVIL_AWOKEN.mission_name,
|
|
"Second Particle Cannon",
|
|
SC2LOTV_LOC_ID_OFFSET + 304,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVIL_AWOKEN.mission_name,
|
|
"Third Particle Cannon",
|
|
SC2LOTV_LOC_ID_OFFSET + 305,
|
|
LocationType.VANILLA,
|
|
),
|
|
# LotV
|
|
make_location_data(
|
|
SC2Mission.FOR_AIUR.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 400,
|
|
LocationType.VICTORY,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FOR_AIUR.mission_name,
|
|
"Southwest Hive",
|
|
SC2LOTV_LOC_ID_OFFSET + 401,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FOR_AIUR.mission_name,
|
|
"Northwest Hive",
|
|
SC2LOTV_LOC_ID_OFFSET + 402,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FOR_AIUR.mission_name,
|
|
"Northeast Hive",
|
|
SC2LOTV_LOC_ID_OFFSET + 403,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FOR_AIUR.mission_name,
|
|
"East Hive",
|
|
SC2LOTV_LOC_ID_OFFSET + 404,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FOR_AIUR.mission_name,
|
|
"West Conduit",
|
|
SC2LOTV_LOC_ID_OFFSET + 405,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FOR_AIUR.mission_name,
|
|
"Middle Conduit",
|
|
SC2LOTV_LOC_ID_OFFSET + 406,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FOR_AIUR.mission_name,
|
|
"Northeast Conduit",
|
|
SC2LOTV_LOC_ID_OFFSET + 407,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 500,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and (adv_tactics or logic.protoss_moderate_anti_air(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW.mission_name,
|
|
"Close Pylon",
|
|
SC2LOTV_LOC_ID_OFFSET + 501,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW.mission_name,
|
|
"East Pylon",
|
|
SC2LOTV_LOC_ID_OFFSET + 502,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and (adv_tactics or logic.protoss_moderate_anti_air(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW.mission_name,
|
|
"West Pylon",
|
|
SC2LOTV_LOC_ID_OFFSET + 503,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and (adv_tactics or logic.protoss_moderate_anti_air(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW.mission_name,
|
|
"Nexus",
|
|
SC2LOTV_LOC_ID_OFFSET + 504,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW.mission_name,
|
|
"Templar Base",
|
|
SC2LOTV_LOC_ID_OFFSET + 505,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and (adv_tactics or logic.protoss_moderate_anti_air(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 600,
|
|
LocationType.VICTORY,
|
|
logic.protoss_spear_of_adun_requirement,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN.mission_name,
|
|
"Close Warp Gate",
|
|
SC2LOTV_LOC_ID_OFFSET + 601,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN.mission_name,
|
|
"West Warp Gate",
|
|
SC2LOTV_LOC_ID_OFFSET + 602,
|
|
LocationType.VANILLA,
|
|
logic.protoss_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN.mission_name,
|
|
"North Warp Gate",
|
|
SC2LOTV_LOC_ID_OFFSET + 603,
|
|
LocationType.VANILLA,
|
|
logic.protoss_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN.mission_name,
|
|
"North Power Cell",
|
|
SC2LOTV_LOC_ID_OFFSET + 604,
|
|
LocationType.EXTRA,
|
|
logic.protoss_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN.mission_name,
|
|
"East Power Cell",
|
|
SC2LOTV_LOC_ID_OFFSET + 605,
|
|
LocationType.EXTRA,
|
|
logic.protoss_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN.mission_name,
|
|
"South Power Cell",
|
|
SC2LOTV_LOC_ID_OFFSET + 606,
|
|
LocationType.EXTRA,
|
|
logic.protoss_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN.mission_name,
|
|
"Southeast Power Cell",
|
|
SC2LOTV_LOC_ID_OFFSET + 607,
|
|
LocationType.EXTRA,
|
|
logic.protoss_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 700,
|
|
LocationType.VICTORY,
|
|
logic.protoss_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD.mission_name,
|
|
"Mid EMP Scrambler",
|
|
SC2LOTV_LOC_ID_OFFSET + 701,
|
|
LocationType.VANILLA,
|
|
logic.protoss_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD.mission_name,
|
|
"Southeast EMP Scrambler",
|
|
SC2LOTV_LOC_ID_OFFSET + 702,
|
|
LocationType.VANILLA,
|
|
logic.protoss_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD.mission_name,
|
|
"North EMP Scrambler",
|
|
SC2LOTV_LOC_ID_OFFSET + 703,
|
|
LocationType.VANILLA,
|
|
logic.protoss_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD.mission_name,
|
|
"Mid Stabilizer",
|
|
SC2LOTV_LOC_ID_OFFSET + 704,
|
|
LocationType.EXTRA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD.mission_name,
|
|
"Southwest Stabilizer",
|
|
SC2LOTV_LOC_ID_OFFSET + 705,
|
|
LocationType.EXTRA,
|
|
logic.protoss_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD.mission_name,
|
|
"Northwest Stabilizer",
|
|
SC2LOTV_LOC_ID_OFFSET + 706,
|
|
LocationType.EXTRA,
|
|
logic.protoss_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD.mission_name,
|
|
"Northeast Stabilizer",
|
|
SC2LOTV_LOC_ID_OFFSET + 707,
|
|
LocationType.EXTRA,
|
|
logic.protoss_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD.mission_name,
|
|
"Southeast Stabilizer",
|
|
SC2LOTV_LOC_ID_OFFSET + 708,
|
|
LocationType.EXTRA,
|
|
logic.protoss_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD.mission_name,
|
|
"West Raynor Base",
|
|
SC2LOTV_LOC_ID_OFFSET + 709,
|
|
LocationType.EXTRA,
|
|
logic.protoss_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD.mission_name,
|
|
"East Raynor Base",
|
|
SC2LOTV_LOC_ID_OFFSET + 710,
|
|
LocationType.EXTRA,
|
|
logic.protoss_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 800,
|
|
LocationType.VICTORY,
|
|
logic.protoss_brothers_in_arms_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS.mission_name,
|
|
"Mid Science Facility",
|
|
SC2LOTV_LOC_ID_OFFSET + 801,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS.mission_name,
|
|
"North Science Facility",
|
|
SC2LOTV_LOC_ID_OFFSET + 802,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_brothers_in_arms_requirement(state)
|
|
or (
|
|
logic.take_over_ai_allies
|
|
and logic.advanced_tactics
|
|
and (
|
|
logic.terran_common_unit(state)
|
|
or logic.protoss_common_unit(state)
|
|
)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS.mission_name,
|
|
"South Science Facility",
|
|
SC2LOTV_LOC_ID_OFFSET + 803,
|
|
LocationType.VANILLA,
|
|
logic.protoss_brothers_in_arms_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS.mission_name,
|
|
"Raynor Forward Positions",
|
|
SC2LOTV_LOC_ID_OFFSET + 804,
|
|
LocationType.EXTRA,
|
|
logic.protoss_brothers_in_arms_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS.mission_name,
|
|
"Valerian Forward Positions",
|
|
SC2LOTV_LOC_ID_OFFSET + 805,
|
|
LocationType.EXTRA,
|
|
logic.protoss_brothers_in_arms_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS.mission_name,
|
|
"Win in under 15 minutes",
|
|
SC2LOTV_LOC_ID_OFFSET + 806,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.protoss_brothers_in_arms_requirement(state)
|
|
and logic.protoss_deathball(state)
|
|
and logic.protoss_power_rating(state) >= 8
|
|
),
|
|
flags=LocationFlag.SPEEDRUN,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 900,
|
|
LocationType.VICTORY,
|
|
logic.protoss_common_unit_anti_light_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH.mission_name,
|
|
"Close Solarite Reserve",
|
|
SC2LOTV_LOC_ID_OFFSET + 901,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH.mission_name,
|
|
"North Solarite Reserve",
|
|
SC2LOTV_LOC_ID_OFFSET + 902,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit_anti_light_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH.mission_name,
|
|
"East Solarite Reserve",
|
|
SC2LOTV_LOC_ID_OFFSET + 903,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit_anti_light_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH.mission_name,
|
|
"West Launch Bay",
|
|
SC2LOTV_LOC_ID_OFFSET + 904,
|
|
LocationType.EXTRA,
|
|
logic.protoss_common_unit_anti_light_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH.mission_name,
|
|
"South Launch Bay",
|
|
SC2LOTV_LOC_ID_OFFSET + 905,
|
|
LocationType.EXTRA,
|
|
logic.protoss_common_unit_anti_light_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH.mission_name,
|
|
"Northwest Launch Bay",
|
|
SC2LOTV_LOC_ID_OFFSET + 906,
|
|
LocationType.EXTRA,
|
|
logic.protoss_common_unit_anti_light_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH.mission_name,
|
|
"East Launch Bay",
|
|
SC2LOTV_LOC_ID_OFFSET + 907,
|
|
LocationType.EXTRA,
|
|
logic.protoss_common_unit_anti_light_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 1000,
|
|
LocationType.VICTORY,
|
|
logic.protoss_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND.mission_name,
|
|
"West Zenith Stone",
|
|
SC2LOTV_LOC_ID_OFFSET + 1001,
|
|
LocationType.VANILLA,
|
|
logic.protoss_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND.mission_name,
|
|
"North Zenith Stone",
|
|
SC2LOTV_LOC_ID_OFFSET + 1002,
|
|
LocationType.VANILLA,
|
|
logic.protoss_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND.mission_name,
|
|
"East Zenith Stone",
|
|
SC2LOTV_LOC_ID_OFFSET + 1003,
|
|
LocationType.VANILLA,
|
|
logic.protoss_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND.mission_name,
|
|
"1 Billion Zerg",
|
|
SC2LOTV_LOC_ID_OFFSET + 1004,
|
|
LocationType.EXTRA,
|
|
logic.protoss_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND.mission_name,
|
|
"1.5 Billion Zerg",
|
|
SC2LOTV_LOC_ID_OFFSET + 1005,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_last_stand_requirement(state)
|
|
and (
|
|
state.has_all(
|
|
{
|
|
item_names.KHAYDARIN_MONOLITH,
|
|
item_names.PHOTON_CANNON,
|
|
item_names.SHIELD_BATTERY,
|
|
},
|
|
player,
|
|
)
|
|
or state.has_any(
|
|
{item_names.SOA_SOLAR_LANCE, item_names.SOA_DEPLOY_FENIX},
|
|
player,
|
|
)
|
|
)
|
|
and logic.protoss_defense_rating(state, False) >= 13
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 1100,
|
|
LocationType.VICTORY,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON.mission_name,
|
|
"South Solarite",
|
|
SC2LOTV_LOC_ID_OFFSET + 1101,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON.mission_name,
|
|
"North Solarite",
|
|
SC2LOTV_LOC_ID_OFFSET + 1102,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON.mission_name,
|
|
"Northwest Solarite",
|
|
SC2LOTV_LOC_ID_OFFSET + 1103,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON.mission_name,
|
|
"Rescue Sentries",
|
|
SC2LOTV_LOC_ID_OFFSET + 1104,
|
|
LocationType.EXTRA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON.mission_name,
|
|
"Destroy Gateways",
|
|
SC2LOTV_LOC_ID_OFFSET + 1105,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 1200,
|
|
LocationType.VICTORY,
|
|
logic.protoss_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION.mission_name,
|
|
"Mid Celestial Lock",
|
|
SC2LOTV_LOC_ID_OFFSET + 1201,
|
|
LocationType.EXTRA,
|
|
logic.protoss_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION.mission_name,
|
|
"West Celestial Lock",
|
|
SC2LOTV_LOC_ID_OFFSET + 1202,
|
|
LocationType.EXTRA,
|
|
logic.protoss_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION.mission_name,
|
|
"South Celestial Lock",
|
|
SC2LOTV_LOC_ID_OFFSET + 1203,
|
|
LocationType.EXTRA,
|
|
logic.protoss_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION.mission_name,
|
|
"East Celestial Lock",
|
|
SC2LOTV_LOC_ID_OFFSET + 1204,
|
|
LocationType.EXTRA,
|
|
logic.protoss_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION.mission_name,
|
|
"North Celestial Lock",
|
|
SC2LOTV_LOC_ID_OFFSET + 1205,
|
|
LocationType.EXTRA,
|
|
logic.protoss_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION.mission_name,
|
|
"Titanic Warp Prism",
|
|
SC2LOTV_LOC_ID_OFFSET + 1206,
|
|
LocationType.VANILLA,
|
|
logic.protoss_temple_of_unification_requirement,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION.mission_name,
|
|
"Terran Main Base",
|
|
SC2LOTV_LOC_ID_OFFSET + 1207,
|
|
LocationType.MASTERY,
|
|
lambda state: logic.protoss_temple_of_unification_requirement(state)
|
|
and logic.protoss_deathball(state),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION.mission_name,
|
|
"Protoss Main Base",
|
|
SC2LOTV_LOC_ID_OFFSET + 1208,
|
|
LocationType.MASTERY,
|
|
lambda state: logic.protoss_temple_of_unification_requirement(state)
|
|
and logic.protoss_deathball(state),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_INFINITE_CYCLE.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 1300,
|
|
LocationType.VICTORY,
|
|
logic.the_infinite_cycle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_INFINITE_CYCLE.mission_name,
|
|
"First Hall of Revelation",
|
|
SC2LOTV_LOC_ID_OFFSET + 1301,
|
|
LocationType.EXTRA,
|
|
logic.the_infinite_cycle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_INFINITE_CYCLE.mission_name,
|
|
"Second Hall of Revelation",
|
|
SC2LOTV_LOC_ID_OFFSET + 1302,
|
|
LocationType.EXTRA,
|
|
logic.the_infinite_cycle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_INFINITE_CYCLE.mission_name,
|
|
"First Xel'Naga Device",
|
|
SC2LOTV_LOC_ID_OFFSET + 1303,
|
|
LocationType.VANILLA,
|
|
logic.the_infinite_cycle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_INFINITE_CYCLE.mission_name,
|
|
"Second Xel'Naga Device",
|
|
SC2LOTV_LOC_ID_OFFSET + 1304,
|
|
LocationType.VANILLA,
|
|
logic.the_infinite_cycle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_INFINITE_CYCLE.mission_name,
|
|
"Third Xel'Naga Device",
|
|
SC2LOTV_LOC_ID_OFFSET + 1305,
|
|
LocationType.VANILLA,
|
|
logic.the_infinite_cycle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 1400,
|
|
LocationType.VICTORY,
|
|
logic.protoss_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION.mission_name,
|
|
"Artanis",
|
|
SC2LOTV_LOC_ID_OFFSET + 1401,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION.mission_name,
|
|
"Northwest Void Crystal",
|
|
SC2LOTV_LOC_ID_OFFSET + 1402,
|
|
LocationType.EXTRA,
|
|
logic.protoss_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION.mission_name,
|
|
"Northeast Void Crystal",
|
|
SC2LOTV_LOC_ID_OFFSET + 1403,
|
|
LocationType.EXTRA,
|
|
logic.protoss_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION.mission_name,
|
|
"Southwest Void Crystal",
|
|
SC2LOTV_LOC_ID_OFFSET + 1404,
|
|
LocationType.EXTRA,
|
|
logic.protoss_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION.mission_name,
|
|
"Southeast Void Crystal",
|
|
SC2LOTV_LOC_ID_OFFSET + 1405,
|
|
LocationType.EXTRA,
|
|
logic.protoss_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION.mission_name,
|
|
"South Xel'Naga Vessel",
|
|
SC2LOTV_LOC_ID_OFFSET + 1406,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION.mission_name,
|
|
"Mid Xel'Naga Vessel",
|
|
SC2LOTV_LOC_ID_OFFSET + 1407,
|
|
LocationType.VANILLA,
|
|
logic.protoss_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION.mission_name,
|
|
"North Xel'Naga Vessel",
|
|
SC2LOTV_LOC_ID_OFFSET + 1408,
|
|
LocationType.VANILLA,
|
|
logic.protoss_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 1500,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.protoss_deathball(state)
|
|
and logic.protoss_power_rating(state) >= 6
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST.mission_name,
|
|
"Zerg Cleared",
|
|
SC2LOTV_LOC_ID_OFFSET + 1501,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST.mission_name,
|
|
"First Stasis Lock",
|
|
SC2LOTV_LOC_ID_OFFSET + 1502,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_deathball(state)
|
|
and logic.protoss_power_rating(state) >= 6
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST.mission_name,
|
|
"Second Stasis Lock",
|
|
SC2LOTV_LOC_ID_OFFSET + 1503,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_deathball(state)
|
|
and logic.protoss_power_rating(state) >= 6
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST.mission_name,
|
|
"Third Stasis Lock",
|
|
SC2LOTV_LOC_ID_OFFSET + 1504,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_deathball(state)
|
|
and logic.protoss_power_rating(state) >= 6
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST.mission_name,
|
|
"Fourth Stasis Lock",
|
|
SC2LOTV_LOC_ID_OFFSET + 1505,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_deathball(state)
|
|
and logic.protoss_power_rating(state) >= 6
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST.mission_name,
|
|
"South Power Core",
|
|
SC2LOTV_LOC_ID_OFFSET + 1506,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_deathball(state)
|
|
and logic.protoss_power_rating(state) >= 6
|
|
and (adv_tactics or logic.protoss_unsealing_the_past_ledge_requirement(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST.mission_name,
|
|
"East Power Core",
|
|
SC2LOTV_LOC_ID_OFFSET + 1507,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_deathball(state)
|
|
and logic.protoss_power_rating(state) >= 6
|
|
and (adv_tactics or logic.protoss_unsealing_the_past_ledge_requirement(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 1600,
|
|
LocationType.VICTORY,
|
|
logic.protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION.mission_name,
|
|
"North Sector: West Null Circuit",
|
|
SC2LOTV_LOC_ID_OFFSET + 1601,
|
|
LocationType.VANILLA,
|
|
logic.protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION.mission_name,
|
|
"North Sector: Northeast Null Circuit",
|
|
SC2LOTV_LOC_ID_OFFSET + 1602,
|
|
LocationType.EXTRA,
|
|
logic.protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION.mission_name,
|
|
"North Sector: Southeast Null Circuit",
|
|
SC2LOTV_LOC_ID_OFFSET + 1603,
|
|
LocationType.EXTRA,
|
|
logic.protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION.mission_name,
|
|
"South Sector: West Null Circuit",
|
|
SC2LOTV_LOC_ID_OFFSET + 1604,
|
|
LocationType.VANILLA,
|
|
logic.protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION.mission_name,
|
|
"South Sector: North Null Circuit",
|
|
SC2LOTV_LOC_ID_OFFSET + 1605,
|
|
LocationType.EXTRA,
|
|
logic.protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION.mission_name,
|
|
"South Sector: East Null Circuit",
|
|
SC2LOTV_LOC_ID_OFFSET + 1606,
|
|
LocationType.EXTRA,
|
|
logic.protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION.mission_name,
|
|
"West Sector: West Null Circuit",
|
|
SC2LOTV_LOC_ID_OFFSET + 1607,
|
|
LocationType.VANILLA,
|
|
logic.protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION.mission_name,
|
|
"West Sector: Mid Null Circuit",
|
|
SC2LOTV_LOC_ID_OFFSET + 1608,
|
|
LocationType.EXTRA,
|
|
logic.protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION.mission_name,
|
|
"West Sector: East Null Circuit",
|
|
SC2LOTV_LOC_ID_OFFSET + 1609,
|
|
LocationType.EXTRA,
|
|
logic.protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION.mission_name,
|
|
"East Sector: North Null Circuit",
|
|
SC2LOTV_LOC_ID_OFFSET + 1610,
|
|
LocationType.VANILLA,
|
|
logic.protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION.mission_name,
|
|
"East Sector: West Null Circuit",
|
|
SC2LOTV_LOC_ID_OFFSET + 1611,
|
|
LocationType.EXTRA,
|
|
logic.protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION.mission_name,
|
|
"East Sector: South Null Circuit",
|
|
SC2LOTV_LOC_ID_OFFSET + 1612,
|
|
LocationType.EXTRA,
|
|
logic.protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION.mission_name,
|
|
"Purifier Warden",
|
|
SC2LOTV_LOC_ID_OFFSET + 1613,
|
|
LocationType.VANILLA,
|
|
logic.protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 1700,
|
|
LocationType.VICTORY,
|
|
logic.protoss_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE.mission_name,
|
|
"First Terrazine Fog",
|
|
SC2LOTV_LOC_ID_OFFSET + 1701,
|
|
LocationType.EXTRA,
|
|
logic.protoss_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE.mission_name,
|
|
"Southwest Guardian",
|
|
SC2LOTV_LOC_ID_OFFSET + 1702,
|
|
LocationType.EXTRA,
|
|
logic.protoss_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE.mission_name,
|
|
"West Guardian",
|
|
SC2LOTV_LOC_ID_OFFSET + 1703,
|
|
LocationType.EXTRA,
|
|
logic.protoss_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE.mission_name,
|
|
"Northwest Guardian",
|
|
SC2LOTV_LOC_ID_OFFSET + 1704,
|
|
LocationType.EXTRA,
|
|
logic.protoss_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE.mission_name,
|
|
"Northeast Guardian",
|
|
SC2LOTV_LOC_ID_OFFSET + 1705,
|
|
LocationType.EXTRA,
|
|
logic.protoss_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE.mission_name,
|
|
"North Mothership",
|
|
SC2LOTV_LOC_ID_OFFSET + 1706,
|
|
LocationType.VANILLA,
|
|
logic.protoss_steps_of_the_rite_requirement,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE.mission_name,
|
|
"South Mothership",
|
|
SC2LOTV_LOC_ID_OFFSET + 1707,
|
|
LocationType.VANILLA,
|
|
logic.protoss_steps_of_the_rite_requirement,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 1800,
|
|
LocationType.VICTORY,
|
|
logic.protoss_rak_shir_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR.mission_name,
|
|
"North Slayn Elemental",
|
|
SC2LOTV_LOC_ID_OFFSET + 1801,
|
|
LocationType.VANILLA,
|
|
logic.protoss_rak_shir_requirement,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR.mission_name,
|
|
"Southwest Slayn Elemental",
|
|
SC2LOTV_LOC_ID_OFFSET + 1802,
|
|
LocationType.VANILLA,
|
|
logic.protoss_rak_shir_requirement,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR.mission_name,
|
|
"East Slayn Elemental",
|
|
SC2LOTV_LOC_ID_OFFSET + 1803,
|
|
LocationType.VANILLA,
|
|
logic.protoss_rak_shir_requirement,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR.mission_name,
|
|
"Resource Pickups",
|
|
SC2LOTV_LOC_ID_OFFSET + 1804,
|
|
LocationType.EXTRA,
|
|
logic.protoss_rak_shir_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR.mission_name,
|
|
"Destroy Nexuses",
|
|
SC2LOTV_LOC_ID_OFFSET + 1805,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_rak_shir_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR.mission_name,
|
|
"Win in under 15 minutes",
|
|
SC2LOTV_LOC_ID_OFFSET + 1806,
|
|
LocationType.MASTERY,
|
|
logic.protoss_rak_shir_requirement,
|
|
flags=LocationFlag.SPEEDRUN,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 1900,
|
|
LocationType.VICTORY,
|
|
logic.protoss_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE.mission_name,
|
|
"Northwest Power Core",
|
|
SC2LOTV_LOC_ID_OFFSET + 1901,
|
|
LocationType.EXTRA,
|
|
logic.protoss_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE.mission_name,
|
|
"Northeast Power Core",
|
|
SC2LOTV_LOC_ID_OFFSET + 1902,
|
|
LocationType.EXTRA,
|
|
logic.protoss_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE.mission_name,
|
|
"Southeast Power Core",
|
|
SC2LOTV_LOC_ID_OFFSET + 1903,
|
|
LocationType.EXTRA,
|
|
logic.protoss_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE.mission_name,
|
|
"West Hybrid Stasis Chamber",
|
|
SC2LOTV_LOC_ID_OFFSET + 1904,
|
|
LocationType.VANILLA,
|
|
logic.protoss_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE.mission_name,
|
|
"Southeast Hybrid Stasis Chamber",
|
|
SC2LOTV_LOC_ID_OFFSET + 1905,
|
|
LocationType.VANILLA,
|
|
logic.protoss_fleet,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_RETURN.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 2000,
|
|
LocationType.VICTORY,
|
|
logic.templars_return_phase_3_reach_dts_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_RETURN.mission_name,
|
|
"Citadel: First Gate",
|
|
SC2LOTV_LOC_ID_OFFSET + 2001,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_RETURN.mission_name,
|
|
"Citadel: Second Gate",
|
|
SC2LOTV_LOC_ID_OFFSET + 2002,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_RETURN.mission_name,
|
|
"Citadel: Power Structure",
|
|
SC2LOTV_LOC_ID_OFFSET + 2003,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_RETURN.mission_name,
|
|
"Temple Grounds: Gather Army",
|
|
SC2LOTV_LOC_ID_OFFSET + 2004,
|
|
LocationType.VANILLA,
|
|
logic.templars_return_phase_2_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_RETURN.mission_name,
|
|
"Temple Grounds: Power Structure",
|
|
SC2LOTV_LOC_ID_OFFSET + 2005,
|
|
LocationType.VANILLA,
|
|
logic.templars_return_phase_2_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_RETURN.mission_name,
|
|
"Caverns: Purifier",
|
|
SC2LOTV_LOC_ID_OFFSET + 2006,
|
|
LocationType.EXTRA,
|
|
logic.templars_return_phase_3_reach_colossus_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_RETURN.mission_name,
|
|
"Caverns: Dark Templar",
|
|
SC2LOTV_LOC_ID_OFFSET + 2007,
|
|
LocationType.EXTRA,
|
|
logic.templars_return_phase_3_reach_dts_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 2100,
|
|
LocationType.VICTORY,
|
|
logic.protoss_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST.mission_name,
|
|
"Southeast Void Shard",
|
|
SC2LOTV_LOC_ID_OFFSET + 2101,
|
|
LocationType.EXTRA,
|
|
logic.protoss_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST.mission_name,
|
|
"South Void Shard",
|
|
SC2LOTV_LOC_ID_OFFSET + 2102,
|
|
LocationType.EXTRA,
|
|
logic.protoss_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST.mission_name,
|
|
"Southwest Void Shard",
|
|
SC2LOTV_LOC_ID_OFFSET + 2103,
|
|
LocationType.EXTRA,
|
|
logic.protoss_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST.mission_name,
|
|
"North Void Shard",
|
|
SC2LOTV_LOC_ID_OFFSET + 2104,
|
|
LocationType.EXTRA,
|
|
logic.protoss_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST.mission_name,
|
|
"Northwest Void Shard",
|
|
SC2LOTV_LOC_ID_OFFSET + 2105,
|
|
LocationType.EXTRA,
|
|
logic.protoss_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST.mission_name,
|
|
"Nerazim Warp in Zone",
|
|
SC2LOTV_LOC_ID_OFFSET + 2106,
|
|
LocationType.VANILLA,
|
|
logic.protoss_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST.mission_name,
|
|
"Tal'darim Warp in Zone",
|
|
SC2LOTV_LOC_ID_OFFSET + 2107,
|
|
LocationType.VANILLA,
|
|
logic.protoss_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST.mission_name,
|
|
"Purifier Warp in Zone",
|
|
SC2LOTV_LOC_ID_OFFSET + 2108,
|
|
LocationType.VANILLA,
|
|
logic.protoss_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 2200,
|
|
LocationType.VICTORY,
|
|
logic.protoss_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION.mission_name,
|
|
"Fabrication Matrix",
|
|
SC2LOTV_LOC_ID_OFFSET + 2201,
|
|
LocationType.EXTRA,
|
|
logic.protoss_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION.mission_name,
|
|
"Assault Cluster",
|
|
SC2LOTV_LOC_ID_OFFSET + 2202,
|
|
LocationType.EXTRA,
|
|
logic.protoss_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION.mission_name,
|
|
"Hull Breach",
|
|
SC2LOTV_LOC_ID_OFFSET + 2203,
|
|
LocationType.EXTRA,
|
|
logic.protoss_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION.mission_name,
|
|
"Core Critical",
|
|
SC2LOTV_LOC_ID_OFFSET + 2204,
|
|
LocationType.EXTRA,
|
|
logic.protoss_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION.mission_name,
|
|
"Kill Brutalisk",
|
|
SC2LOTV_LOC_ID_OFFSET + 2205,
|
|
LocationType.MASTERY,
|
|
logic.protoss_salvation_requirement,
|
|
),
|
|
# Epilogue
|
|
make_location_data(
|
|
SC2Mission.INTO_THE_VOID.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 2300,
|
|
LocationType.VICTORY,
|
|
logic.into_the_void_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INTO_THE_VOID.mission_name,
|
|
"Corruption Source",
|
|
SC2LOTV_LOC_ID_OFFSET + 2301,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INTO_THE_VOID.mission_name,
|
|
"Southwest Forward Position",
|
|
SC2LOTV_LOC_ID_OFFSET + 2302,
|
|
LocationType.VANILLA,
|
|
logic.into_the_void_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INTO_THE_VOID.mission_name,
|
|
"Northwest Forward Position",
|
|
SC2LOTV_LOC_ID_OFFSET + 2303,
|
|
LocationType.VANILLA,
|
|
logic.into_the_void_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INTO_THE_VOID.mission_name,
|
|
"Southeast Forward Position",
|
|
SC2LOTV_LOC_ID_OFFSET + 2304,
|
|
LocationType.VANILLA,
|
|
logic.into_the_void_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INTO_THE_VOID.mission_name,
|
|
"Northeast Forward Position",
|
|
SC2LOTV_LOC_ID_OFFSET + 2305,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_ESSENCE_OF_ETERNITY.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 2400,
|
|
LocationType.VICTORY,
|
|
logic.essence_of_eternity_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_ESSENCE_OF_ETERNITY.mission_name,
|
|
"Initial Void Thrashers",
|
|
SC2LOTV_LOC_ID_OFFSET + 2401,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_ESSENCE_OF_ETERNITY.mission_name,
|
|
"Void Thrasher Wave 1",
|
|
SC2LOTV_LOC_ID_OFFSET + 2402,
|
|
LocationType.EXTRA,
|
|
logic.essence_of_eternity_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_ESSENCE_OF_ETERNITY.mission_name,
|
|
"Void Thrasher Wave 2",
|
|
SC2LOTV_LOC_ID_OFFSET + 2403,
|
|
LocationType.EXTRA,
|
|
logic.essence_of_eternity_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_ESSENCE_OF_ETERNITY.mission_name,
|
|
"Void Thrasher Wave 3",
|
|
SC2LOTV_LOC_ID_OFFSET + 2404,
|
|
LocationType.EXTRA,
|
|
logic.essence_of_eternity_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_ESSENCE_OF_ETERNITY.mission_name,
|
|
"Void Thrasher Wave 4",
|
|
SC2LOTV_LOC_ID_OFFSET + 2405,
|
|
LocationType.EXTRA,
|
|
logic.essence_of_eternity_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_ESSENCE_OF_ETERNITY.mission_name,
|
|
"No more than 15 Kerrigan Kills",
|
|
SC2LOTV_LOC_ID_OFFSET + 2406,
|
|
LocationType.MASTERY,
|
|
logic.essence_of_eternity_requirement,
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_FALL.mission_name,
|
|
"Victory",
|
|
SC2LOTV_LOC_ID_OFFSET + 2500,
|
|
LocationType.VICTORY,
|
|
logic.amons_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_FALL.mission_name,
|
|
"Destroy 1 Crystal",
|
|
SC2LOTV_LOC_ID_OFFSET + 2501,
|
|
LocationType.EXTRA,
|
|
logic.amons_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_FALL.mission_name,
|
|
"Destroy 2 Crystals",
|
|
SC2LOTV_LOC_ID_OFFSET + 2502,
|
|
LocationType.EXTRA,
|
|
logic.amons_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_FALL.mission_name,
|
|
"Destroy 3 Crystals",
|
|
SC2LOTV_LOC_ID_OFFSET + 2503,
|
|
LocationType.EXTRA,
|
|
logic.amons_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_FALL.mission_name,
|
|
"Destroy 4 Crystals",
|
|
SC2LOTV_LOC_ID_OFFSET + 2504,
|
|
LocationType.EXTRA,
|
|
logic.amons_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_FALL.mission_name,
|
|
"Destroy 5 Crystals",
|
|
SC2LOTV_LOC_ID_OFFSET + 2505,
|
|
LocationType.EXTRA,
|
|
logic.amons_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_FALL.mission_name,
|
|
"Destroy 6 Crystals",
|
|
SC2LOTV_LOC_ID_OFFSET + 2506,
|
|
LocationType.EXTRA,
|
|
logic.amons_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_FALL.mission_name,
|
|
"Clear Void Chasms",
|
|
SC2LOTV_LOC_ID_OFFSET + 2507,
|
|
LocationType.MASTERY,
|
|
lambda state: logic.amons_fall_requirement(state)
|
|
and logic.spread_creep(state, False)
|
|
and logic.zerg_big_monsters(state),
|
|
),
|
|
# Nova Covert Ops
|
|
make_location_data(
|
|
SC2Mission.THE_ESCAPE.mission_name,
|
|
"Victory",
|
|
SC2NCO_LOC_ID_OFFSET + 100,
|
|
LocationType.VICTORY,
|
|
logic.the_escape_requirement,
|
|
hard_rule=logic.nova_any_nobuild_damage,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_ESCAPE.mission_name,
|
|
"Rifle",
|
|
SC2NCO_LOC_ID_OFFSET + 101,
|
|
LocationType.VANILLA,
|
|
logic.the_escape_first_stage_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_ESCAPE.mission_name,
|
|
"Grenades",
|
|
SC2NCO_LOC_ID_OFFSET + 102,
|
|
LocationType.VANILLA,
|
|
logic.the_escape_first_stage_requirement,
|
|
hard_rule=logic.nova_any_nobuild_damage,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_ESCAPE.mission_name,
|
|
"Agent Delta",
|
|
SC2NCO_LOC_ID_OFFSET + 103,
|
|
LocationType.VANILLA,
|
|
logic.the_escape_requirement,
|
|
hard_rule=logic.nova_any_nobuild_damage,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_ESCAPE.mission_name,
|
|
"Agent Pierce",
|
|
SC2NCO_LOC_ID_OFFSET + 104,
|
|
LocationType.VANILLA,
|
|
logic.the_escape_requirement,
|
|
hard_rule=logic.nova_any_nobuild_damage,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_ESCAPE.mission_name,
|
|
"Agent Stone",
|
|
SC2NCO_LOC_ID_OFFSET + 105,
|
|
LocationType.VANILLA,
|
|
logic.the_escape_requirement,
|
|
hard_rule=logic.nova_any_nobuild_damage,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUDDEN_STRIKE.mission_name,
|
|
"Victory",
|
|
SC2NCO_LOC_ID_OFFSET + 200,
|
|
LocationType.VICTORY,
|
|
logic.sudden_strike_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUDDEN_STRIKE.mission_name,
|
|
"Research Center",
|
|
SC2NCO_LOC_ID_OFFSET + 201,
|
|
LocationType.VANILLA,
|
|
logic.sudden_strike_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUDDEN_STRIKE.mission_name,
|
|
"Weaponry Labs",
|
|
SC2NCO_LOC_ID_OFFSET + 202,
|
|
LocationType.VANILLA,
|
|
logic.sudden_strike_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUDDEN_STRIKE.mission_name,
|
|
"Brutalisk",
|
|
SC2NCO_LOC_ID_OFFSET + 203,
|
|
LocationType.EXTRA,
|
|
logic.sudden_strike_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUDDEN_STRIKE.mission_name,
|
|
"Gas Pickups",
|
|
SC2NCO_LOC_ID_OFFSET + 204,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.advanced_tactics or logic.sudden_strike_requirement(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUDDEN_STRIKE.mission_name,
|
|
"Protect Buildings",
|
|
SC2NCO_LOC_ID_OFFSET + 205,
|
|
LocationType.CHALLENGE,
|
|
logic.sudden_strike_requirement,
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUDDEN_STRIKE.mission_name,
|
|
"Zerg Base",
|
|
SC2NCO_LOC_ID_OFFSET + 206,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.sudden_strike_requirement(state)
|
|
and logic.terran_competent_comp(state)
|
|
and logic.terran_base_trasher(state)
|
|
and logic.terran_power_rating(state) >= 8
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_INTELLIGENCE.mission_name,
|
|
"Victory",
|
|
SC2NCO_LOC_ID_OFFSET + 300,
|
|
LocationType.VICTORY,
|
|
logic.enemy_intelligence_third_stage_requirement,
|
|
hard_rule=logic.enemy_intelligence_cliff_garrison_and_nova_mobility,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_INTELLIGENCE.mission_name,
|
|
"West Garrison",
|
|
SC2NCO_LOC_ID_OFFSET + 301,
|
|
LocationType.EXTRA,
|
|
logic.enemy_intelligence_first_stage_requirement,
|
|
hard_rule=logic.enemy_intelligence_garrisonable_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_INTELLIGENCE.mission_name,
|
|
"Close Garrison",
|
|
SC2NCO_LOC_ID_OFFSET + 302,
|
|
LocationType.EXTRA,
|
|
logic.enemy_intelligence_first_stage_requirement,
|
|
hard_rule=logic.enemy_intelligence_garrisonable_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_INTELLIGENCE.mission_name,
|
|
"Northeast Garrison",
|
|
SC2NCO_LOC_ID_OFFSET + 303,
|
|
LocationType.EXTRA,
|
|
logic.enemy_intelligence_first_stage_requirement,
|
|
hard_rule=logic.enemy_intelligence_garrisonable_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_INTELLIGENCE.mission_name,
|
|
"Southeast Garrison",
|
|
SC2NCO_LOC_ID_OFFSET + 304,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.enemy_intelligence_first_stage_requirement(state)
|
|
and logic.enemy_intelligence_cliff_garrison(state)
|
|
),
|
|
hard_rule=logic.enemy_intelligence_cliff_garrison,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_INTELLIGENCE.mission_name,
|
|
"South Garrison",
|
|
SC2NCO_LOC_ID_OFFSET + 305,
|
|
LocationType.EXTRA,
|
|
logic.enemy_intelligence_first_stage_requirement,
|
|
hard_rule=logic.enemy_intelligence_garrisonable_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_INTELLIGENCE.mission_name,
|
|
"All Garrisons",
|
|
SC2NCO_LOC_ID_OFFSET + 306,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.enemy_intelligence_first_stage_requirement(state)
|
|
and logic.enemy_intelligence_cliff_garrison(state)
|
|
),
|
|
hard_rule=logic.enemy_intelligence_cliff_garrison,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_INTELLIGENCE.mission_name,
|
|
"Forces Rescued",
|
|
SC2NCO_LOC_ID_OFFSET + 307,
|
|
LocationType.VANILLA,
|
|
logic.enemy_intelligence_first_stage_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENEMY_INTELLIGENCE.mission_name,
|
|
"Communications Hub",
|
|
SC2NCO_LOC_ID_OFFSET + 308,
|
|
LocationType.VANILLA,
|
|
logic.enemy_intelligence_second_stage_requirement,
|
|
hard_rule=logic.enemy_intelligence_cliff_garrison_and_nova_mobility,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TROUBLE_IN_PARADISE.mission_name,
|
|
"Victory",
|
|
SC2NCO_LOC_ID_OFFSET + 400,
|
|
LocationType.VICTORY,
|
|
logic.trouble_in_paradise_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TROUBLE_IN_PARADISE.mission_name,
|
|
"North Base: West Hatchery",
|
|
SC2NCO_LOC_ID_OFFSET + 401,
|
|
LocationType.VANILLA,
|
|
logic.trouble_in_paradise_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TROUBLE_IN_PARADISE.mission_name,
|
|
"North Base: North Hatchery",
|
|
SC2NCO_LOC_ID_OFFSET + 402,
|
|
LocationType.VANILLA,
|
|
logic.trouble_in_paradise_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TROUBLE_IN_PARADISE.mission_name,
|
|
"North Base: East Hatchery",
|
|
SC2NCO_LOC_ID_OFFSET + 403,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TROUBLE_IN_PARADISE.mission_name,
|
|
"South Base: Northwest Hatchery",
|
|
SC2NCO_LOC_ID_OFFSET + 404,
|
|
LocationType.VANILLA,
|
|
logic.trouble_in_paradise_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TROUBLE_IN_PARADISE.mission_name,
|
|
"South Base: Southwest Hatchery",
|
|
SC2NCO_LOC_ID_OFFSET + 405,
|
|
LocationType.VANILLA,
|
|
logic.trouble_in_paradise_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TROUBLE_IN_PARADISE.mission_name,
|
|
"South Base: East Hatchery",
|
|
SC2NCO_LOC_ID_OFFSET + 406,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TROUBLE_IN_PARADISE.mission_name,
|
|
"North Shield Projector",
|
|
SC2NCO_LOC_ID_OFFSET + 407,
|
|
LocationType.EXTRA,
|
|
logic.trouble_in_paradise_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TROUBLE_IN_PARADISE.mission_name,
|
|
"East Shield Projector",
|
|
SC2NCO_LOC_ID_OFFSET + 408,
|
|
LocationType.EXTRA,
|
|
logic.trouble_in_paradise_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TROUBLE_IN_PARADISE.mission_name,
|
|
"South Shield Projector",
|
|
SC2NCO_LOC_ID_OFFSET + 409,
|
|
LocationType.EXTRA,
|
|
logic.trouble_in_paradise_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TROUBLE_IN_PARADISE.mission_name,
|
|
"West Shield Projector",
|
|
SC2NCO_LOC_ID_OFFSET + 410,
|
|
LocationType.EXTRA,
|
|
logic.trouble_in_paradise_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TROUBLE_IN_PARADISE.mission_name,
|
|
"Fleet Beacon",
|
|
SC2NCO_LOC_ID_OFFSET + 411,
|
|
LocationType.VANILLA,
|
|
logic.trouble_in_paradise_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.NIGHT_TERRORS.mission_name,
|
|
"Victory",
|
|
SC2NCO_LOC_ID_OFFSET + 500,
|
|
LocationType.VICTORY,
|
|
logic.night_terrors_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.NIGHT_TERRORS.mission_name,
|
|
"1 Terrazine Node Collected",
|
|
SC2NCO_LOC_ID_OFFSET + 501,
|
|
LocationType.EXTRA,
|
|
logic.night_terrors_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.NIGHT_TERRORS.mission_name,
|
|
"2 Terrazine Nodes Collected",
|
|
SC2NCO_LOC_ID_OFFSET + 502,
|
|
LocationType.EXTRA,
|
|
logic.night_terrors_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.NIGHT_TERRORS.mission_name,
|
|
"3 Terrazine Nodes Collected",
|
|
SC2NCO_LOC_ID_OFFSET + 503,
|
|
LocationType.EXTRA,
|
|
logic.night_terrors_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.NIGHT_TERRORS.mission_name,
|
|
"4 Terrazine Nodes Collected",
|
|
SC2NCO_LOC_ID_OFFSET + 504,
|
|
LocationType.EXTRA,
|
|
logic.night_terrors_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.NIGHT_TERRORS.mission_name,
|
|
"5 Terrazine Nodes Collected",
|
|
SC2NCO_LOC_ID_OFFSET + 505,
|
|
LocationType.EXTRA,
|
|
logic.night_terrors_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.NIGHT_TERRORS.mission_name,
|
|
"HERC Outpost",
|
|
SC2NCO_LOC_ID_OFFSET + 506,
|
|
LocationType.VANILLA,
|
|
logic.night_terrors_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.NIGHT_TERRORS.mission_name,
|
|
"Umojan Mine",
|
|
SC2NCO_LOC_ID_OFFSET + 507,
|
|
LocationType.EXTRA,
|
|
logic.night_terrors_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.NIGHT_TERRORS.mission_name,
|
|
"Blightbringer",
|
|
SC2NCO_LOC_ID_OFFSET + 508,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.night_terrors_requirement(state)
|
|
and logic.nova_ranged_weapon(state)
|
|
and state.has_any(
|
|
{
|
|
item_names.NOVA_HELLFIRE_SHOTGUN,
|
|
item_names.NOVA_PULSE_GRENADES,
|
|
item_names.NOVA_STIM_INFUSION,
|
|
item_names.NOVA_HOLO_DECOY,
|
|
},
|
|
player,
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.NIGHT_TERRORS.mission_name,
|
|
"Science Facility",
|
|
SC2NCO_LOC_ID_OFFSET + 509,
|
|
LocationType.EXTRA,
|
|
logic.night_terrors_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.NIGHT_TERRORS.mission_name,
|
|
"Eradicators",
|
|
SC2NCO_LOC_ID_OFFSET + 510,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.night_terrors_requirement(state) and logic.nova_any_weapon(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Victory",
|
|
SC2NCO_LOC_ID_OFFSET + 600,
|
|
LocationType.VICTORY,
|
|
logic.flashpoint_far_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Close North Evidence Coordinates",
|
|
SC2NCO_LOC_ID_OFFSET + 601,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
state.has_any(
|
|
{
|
|
item_names.LIBERATOR_RAID_ARTILLERY,
|
|
item_names.RAVEN_HUNTER_SEEKER_WEAPON,
|
|
},
|
|
player,
|
|
)
|
|
or logic.terran_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Close East Evidence Coordinates",
|
|
SC2NCO_LOC_ID_OFFSET + 602,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
state.has_any(
|
|
{
|
|
item_names.LIBERATOR_RAID_ARTILLERY,
|
|
item_names.RAVEN_HUNTER_SEEKER_WEAPON,
|
|
},
|
|
player,
|
|
)
|
|
or logic.terran_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Far North Evidence Coordinates",
|
|
SC2NCO_LOC_ID_OFFSET + 603,
|
|
LocationType.EXTRA,
|
|
logic.flashpoint_far_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Far East Evidence Coordinates",
|
|
SC2NCO_LOC_ID_OFFSET + 604,
|
|
LocationType.EXTRA,
|
|
logic.flashpoint_far_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Experimental Weapon",
|
|
SC2NCO_LOC_ID_OFFSET + 605,
|
|
LocationType.VANILLA,
|
|
logic.flashpoint_far_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Northwest Subway Entrance",
|
|
SC2NCO_LOC_ID_OFFSET + 606,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
state.has_any(
|
|
{
|
|
item_names.LIBERATOR_RAID_ARTILLERY,
|
|
item_names.RAVEN_HUNTER_SEEKER_WEAPON,
|
|
},
|
|
player,
|
|
)
|
|
and logic.terran_common_unit(state)
|
|
or logic.flashpoint_far_requirement(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Southeast Subway Entrance",
|
|
SC2NCO_LOC_ID_OFFSET + 607,
|
|
LocationType.VANILLA,
|
|
lambda state: state.has_any(
|
|
{
|
|
item_names.LIBERATOR_RAID_ARTILLERY,
|
|
item_names.RAVEN_HUNTER_SEEKER_WEAPON,
|
|
},
|
|
player,
|
|
)
|
|
and logic.terran_common_unit(state)
|
|
or logic.flashpoint_far_requirement(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Northeast Subway Entrance",
|
|
SC2NCO_LOC_ID_OFFSET + 608,
|
|
LocationType.VANILLA,
|
|
logic.flashpoint_far_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Expansion Hatchery",
|
|
SC2NCO_LOC_ID_OFFSET + 609,
|
|
LocationType.EXTRA,
|
|
lambda state: state.has(item_names.LIBERATOR_RAID_ARTILLERY, player)
|
|
and logic.terran_common_unit(state)
|
|
or logic.flashpoint_far_requirement(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Baneling Spawns",
|
|
SC2NCO_LOC_ID_OFFSET + 610,
|
|
LocationType.EXTRA,
|
|
logic.flashpoint_far_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Mutalisk Spawns",
|
|
SC2NCO_LOC_ID_OFFSET + 611,
|
|
LocationType.EXTRA,
|
|
logic.flashpoint_far_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Nydus Worm Spawns",
|
|
SC2NCO_LOC_ID_OFFSET + 612,
|
|
LocationType.EXTRA,
|
|
logic.flashpoint_far_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Lurker Spawns",
|
|
SC2NCO_LOC_ID_OFFSET + 613,
|
|
LocationType.EXTRA,
|
|
logic.flashpoint_far_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Brood Lord Spawns",
|
|
SC2NCO_LOC_ID_OFFSET + 614,
|
|
LocationType.EXTRA,
|
|
logic.flashpoint_far_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FLASHPOINT.mission_name,
|
|
"Ultralisk Spawns",
|
|
SC2NCO_LOC_ID_OFFSET + 615,
|
|
LocationType.EXTRA,
|
|
logic.flashpoint_far_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_THE_ENEMY_S_SHADOW.mission_name,
|
|
"Victory",
|
|
SC2NCO_LOC_ID_OFFSET + 700,
|
|
LocationType.VICTORY,
|
|
logic.enemy_shadow_victory,
|
|
hard_rule=lambda state: logic.nova_beat_stone(state)
|
|
and logic.enemy_shadow_door_unlocks_tool(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_THE_ENEMY_S_SHADOW.mission_name,
|
|
"Sewers: Domination Visor",
|
|
SC2NCO_LOC_ID_OFFSET + 701,
|
|
LocationType.VANILLA,
|
|
logic.enemy_shadow_domination,
|
|
hard_rule=logic.nova_any_nobuild_damage,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_THE_ENEMY_S_SHADOW.mission_name,
|
|
"Sewers: Resupply Crate",
|
|
SC2NCO_LOC_ID_OFFSET + 702,
|
|
LocationType.EXTRA,
|
|
logic.enemy_shadow_first_stage,
|
|
hard_rule=logic.nova_any_nobuild_damage,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_THE_ENEMY_S_SHADOW.mission_name,
|
|
"Sewers: Facility Access",
|
|
SC2NCO_LOC_ID_OFFSET + 703,
|
|
LocationType.VANILLA,
|
|
logic.enemy_shadow_first_stage,
|
|
hard_rule=logic.nova_any_nobuild_damage,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_THE_ENEMY_S_SHADOW.mission_name,
|
|
"Facility: Northwest Door Lock",
|
|
SC2NCO_LOC_ID_OFFSET + 704,
|
|
LocationType.VANILLA,
|
|
logic.enemy_shadow_door_controls,
|
|
hard_rule=lambda state: logic.nova_any_nobuild_damage(state)
|
|
and logic.enemy_shadow_door_unlocks_tool(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_THE_ENEMY_S_SHADOW.mission_name,
|
|
"Facility: Southeast Door Lock",
|
|
SC2NCO_LOC_ID_OFFSET + 705,
|
|
LocationType.VANILLA,
|
|
logic.enemy_shadow_door_controls,
|
|
hard_rule=lambda state: logic.nova_any_nobuild_damage(state)
|
|
and logic.enemy_shadow_door_unlocks_tool(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_THE_ENEMY_S_SHADOW.mission_name,
|
|
"Facility: Blazefire Gunblade",
|
|
SC2NCO_LOC_ID_OFFSET + 706,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.enemy_shadow_second_stage(state)
|
|
and (
|
|
logic.grant_story_tech == GrantStoryTech.option_grant
|
|
or state.has(item_names.NOVA_BLINK, player)
|
|
or (
|
|
adv_tactics
|
|
and state.has_all(
|
|
{
|
|
item_names.NOVA_DOMINATION,
|
|
item_names.NOVA_HOLO_DECOY,
|
|
item_names.NOVA_JUMP_SUIT_MODULE,
|
|
},
|
|
player,
|
|
)
|
|
)
|
|
)
|
|
),
|
|
hard_rule=logic.enemy_shadow_nova_damage_and_blazefire_unlock,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_THE_ENEMY_S_SHADOW.mission_name,
|
|
"Facility: Blink Suit",
|
|
SC2NCO_LOC_ID_OFFSET + 707,
|
|
LocationType.VANILLA,
|
|
logic.enemy_shadow_second_stage,
|
|
hard_rule=logic.nova_any_nobuild_damage,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_THE_ENEMY_S_SHADOW.mission_name,
|
|
"Facility: Advanced Weaponry",
|
|
SC2NCO_LOC_ID_OFFSET + 708,
|
|
LocationType.VANILLA,
|
|
logic.enemy_shadow_second_stage,
|
|
hard_rule=logic.nova_any_nobuild_damage,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_THE_ENEMY_S_SHADOW.mission_name,
|
|
"Facility: Entrance Resupply Crate",
|
|
SC2NCO_LOC_ID_OFFSET + 709,
|
|
LocationType.EXTRA,
|
|
logic.enemy_shadow_first_stage,
|
|
hard_rule=logic.nova_any_nobuild_damage,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_THE_ENEMY_S_SHADOW.mission_name,
|
|
"Facility: West Resupply Crate",
|
|
SC2NCO_LOC_ID_OFFSET + 710,
|
|
LocationType.EXTRA,
|
|
logic.enemy_shadow_second_stage,
|
|
hard_rule=logic.nova_any_nobuild_damage,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_THE_ENEMY_S_SHADOW.mission_name,
|
|
"Facility: North Resupply Crate",
|
|
SC2NCO_LOC_ID_OFFSET + 711,
|
|
LocationType.EXTRA,
|
|
logic.enemy_shadow_second_stage,
|
|
hard_rule=logic.nova_any_nobuild_damage,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_THE_ENEMY_S_SHADOW.mission_name,
|
|
"Facility: East Resupply Crate",
|
|
SC2NCO_LOC_ID_OFFSET + 712,
|
|
LocationType.EXTRA,
|
|
logic.enemy_shadow_second_stage,
|
|
hard_rule=logic.nova_any_nobuild_damage,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_THE_ENEMY_S_SHADOW.mission_name,
|
|
"Facility: South Resupply Crate",
|
|
SC2NCO_LOC_ID_OFFSET + 713,
|
|
LocationType.EXTRA,
|
|
logic.enemy_shadow_second_stage,
|
|
hard_rule=logic.nova_any_nobuild_damage,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_SKIES.mission_name,
|
|
"Victory",
|
|
SC2NCO_LOC_ID_OFFSET + 800,
|
|
LocationType.VICTORY,
|
|
logic.dark_skies_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_SKIES.mission_name,
|
|
"First Squadron of Dominion Fleet",
|
|
SC2NCO_LOC_ID_OFFSET + 801,
|
|
LocationType.EXTRA,
|
|
logic.dark_skies_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_SKIES.mission_name,
|
|
"Remainder of Dominion Fleet",
|
|
SC2NCO_LOC_ID_OFFSET + 802,
|
|
LocationType.EXTRA,
|
|
logic.dark_skies_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_SKIES.mission_name,
|
|
"Ji'nara",
|
|
SC2NCO_LOC_ID_OFFSET + 803,
|
|
LocationType.EXTRA,
|
|
logic.dark_skies_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_SKIES.mission_name,
|
|
"Science Facility",
|
|
SC2NCO_LOC_ID_OFFSET + 804,
|
|
LocationType.VANILLA,
|
|
logic.dark_skies_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.END_GAME.mission_name,
|
|
"Victory",
|
|
SC2NCO_LOC_ID_OFFSET + 900,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.end_game_requirement(state)
|
|
and logic.nova_any_weapon(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.END_GAME.mission_name,
|
|
"Destroy the Xanthos",
|
|
SC2NCO_LOC_ID_OFFSET + 901,
|
|
LocationType.VANILLA,
|
|
logic.end_game_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.END_GAME.mission_name,
|
|
"Disable Xanthos Railgun",
|
|
SC2NCO_LOC_ID_OFFSET + 902,
|
|
LocationType.EXTRA,
|
|
logic.end_game_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.END_GAME.mission_name,
|
|
"Disable Xanthos Flamethrower",
|
|
SC2NCO_LOC_ID_OFFSET + 903,
|
|
LocationType.EXTRA,
|
|
logic.end_game_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.END_GAME.mission_name,
|
|
"Disable Xanthos Fighter Bay",
|
|
SC2NCO_LOC_ID_OFFSET + 904,
|
|
LocationType.EXTRA,
|
|
logic.end_game_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.END_GAME.mission_name,
|
|
"Disable Xanthos Missile Pods",
|
|
SC2NCO_LOC_ID_OFFSET + 905,
|
|
LocationType.EXTRA,
|
|
logic.end_game_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.END_GAME.mission_name,
|
|
"Protect Hyperion",
|
|
SC2NCO_LOC_ID_OFFSET + 906,
|
|
LocationType.CHALLENGE,
|
|
logic.end_game_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.END_GAME.mission_name,
|
|
"Destroy Orbital Commands",
|
|
SC2NCO_LOC_ID_OFFSET + 907,
|
|
LocationType.CHALLENGE,
|
|
logic.end_game_requirement,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
# Mission Variants
|
|
# 10X/20X - Liberation Day
|
|
make_location_data(
|
|
SC2Mission.THE_OUTLAWS_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 300,
|
|
LocationType.VICTORY,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_OUTLAWS_Z.mission_name,
|
|
"Rebel Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 301,
|
|
LocationType.VANILLA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_OUTLAWS_Z.mission_name,
|
|
"North Resource Pickups",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 302,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_OUTLAWS_Z.mission_name,
|
|
"Bunker",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 303,
|
|
LocationType.VANILLA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_OUTLAWS_Z.mission_name,
|
|
"Close Resource Pickups",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 304,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_OUTLAWS_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 400,
|
|
LocationType.VICTORY,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_OUTLAWS_P.mission_name,
|
|
"Rebel Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 401,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_OUTLAWS_P.mission_name,
|
|
"North Resource Pickups",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 402,
|
|
LocationType.EXTRA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_OUTLAWS_P.mission_name,
|
|
"Bunker",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 403,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_OUTLAWS_P.mission_name,
|
|
"Close Resource Pickups",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 404,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 500,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_defense_rating(state, True, True) >= 5
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_Z.mission_name,
|
|
"First Group Rescued",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 501,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_Z.mission_name,
|
|
"Second Group Rescued",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 502,
|
|
LocationType.VANILLA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_Z.mission_name,
|
|
"Third Group Rescued",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 503,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_defense_rating(state, True, True) >= 5
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_Z.mission_name,
|
|
"First Hatchery",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 504,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_Z.mission_name,
|
|
"Second Hatchery",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 505,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_Z.mission_name,
|
|
"Third Hatchery",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 506,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_Z.mission_name,
|
|
"Fourth Hatchery",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 507,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_Z.mission_name,
|
|
"Ride's on its Way",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 508,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_defense_rating(state, True, True) >= 5
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_Z.mission_name,
|
|
"Hold Just a Little Longer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 509,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_defense_rating(state, True, True) >= 5
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_Z.mission_name,
|
|
"Cavalry's on the Way",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 510,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_defense_rating(state, True, True) >= 5
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 600,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_light_anti_air(state)
|
|
and (
|
|
state.has(item_names.PHOTON_CANNON, player)
|
|
or logic.protoss_basic_splash(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_P.mission_name,
|
|
"First Group Rescued",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 601,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_P.mission_name,
|
|
"Second Group Rescued",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 602,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_P.mission_name,
|
|
"Third Group Rescued",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 603,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_light_anti_air(state)
|
|
and (
|
|
state.has(item_names.PHOTON_CANNON, player)
|
|
or logic.protoss_basic_splash(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_P.mission_name,
|
|
"First Hatchery",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 604,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_P.mission_name,
|
|
"Second Hatchery",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 605,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_P.mission_name,
|
|
"Third Hatchery",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 606,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_P.mission_name,
|
|
"Fourth Hatchery",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 607,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_P.mission_name,
|
|
"Ride's on its Way",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 608,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_light_anti_air(state)
|
|
and (
|
|
state.has(item_names.PHOTON_CANNON, player)
|
|
or logic.protoss_basic_splash(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_P.mission_name,
|
|
"Hold Just a Little Longer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 609,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_light_anti_air(state)
|
|
and (
|
|
state.has(item_names.PHOTON_CANNON, player)
|
|
or logic.protoss_basic_splash(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ZERO_HOUR_P.mission_name,
|
|
"Cavalry's on the Way",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 610,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_light_anti_air(state)
|
|
and (
|
|
state.has(item_names.PHOTON_CANNON, player)
|
|
or logic.protoss_basic_splash(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 700,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and (
|
|
logic.zerg_competent_anti_air(state)
|
|
or (adv_tactics and logic.zerg_basic_kerriganless_anti_air(state))
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_Z.mission_name,
|
|
"North Chrysalis",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 701,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_Z.mission_name,
|
|
"West Chrysalis",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 702,
|
|
LocationType.VANILLA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_Z.mission_name,
|
|
"East Chrysalis",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 703,
|
|
LocationType.VANILLA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_Z.mission_name,
|
|
"Reach Hanson",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 704,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_Z.mission_name,
|
|
"Secret Resource Stash",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 705,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_Z.mission_name,
|
|
"Flawless",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 706,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_defense_rating(state, True, False) >= 5
|
|
and (
|
|
(adv_tactics and logic.zerg_basic_kerriganless_anti_air(state))
|
|
or logic.zerg_competent_anti_air(state)
|
|
)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_Z.mission_name,
|
|
"Western Zerg Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 707,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.zerg_common_unit_competent_aa(state)
|
|
and logic.zerg_base_buster(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_Z.mission_name,
|
|
"Eastern Zerg Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 708,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.zerg_common_unit_competent_aa(state)
|
|
and logic.zerg_base_buster(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 800,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and (
|
|
(adv_tactics and logic.protoss_basic_anti_air(state))
|
|
or logic.protoss_anti_light_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_P.mission_name,
|
|
"North Chrysalis",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 801,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_P.mission_name,
|
|
"West Chrysalis",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 802,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_P.mission_name,
|
|
"East Chrysalis",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 803,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_P.mission_name,
|
|
"Reach Hanson",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 804,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_P.mission_name,
|
|
"Secret Resource Stash",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 805,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_P.mission_name,
|
|
"Flawless",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 806,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.protoss_defense_rating(state, True) >= 2
|
|
and logic.protoss_common_unit(state)
|
|
and (
|
|
(adv_tactics and logic.protoss_basic_anti_air(state))
|
|
or logic.protoss_anti_light_anti_air(state)
|
|
)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_P.mission_name,
|
|
"Western Zerg Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 807,
|
|
LocationType.MASTERY,
|
|
logic.protoss_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.EVACUATION_P.mission_name,
|
|
"Eastern Zerg Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 808,
|
|
LocationType.MASTERY,
|
|
logic.protoss_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 900,
|
|
LocationType.VICTORY,
|
|
logic.zerg_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_Z.mission_name,
|
|
"Left Infestor",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 901,
|
|
LocationType.VANILLA,
|
|
logic.zerg_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_Z.mission_name,
|
|
"Right Infestor",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 902,
|
|
LocationType.VANILLA,
|
|
logic.zerg_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_Z.mission_name,
|
|
"North Infested Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 903,
|
|
LocationType.EXTRA,
|
|
logic.zerg_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_Z.mission_name,
|
|
"South Infested Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 904,
|
|
LocationType.EXTRA,
|
|
logic.zerg_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_Z.mission_name,
|
|
"Northwest Bar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 905,
|
|
LocationType.EXTRA,
|
|
logic.zerg_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_Z.mission_name,
|
|
"North Bar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 906,
|
|
LocationType.EXTRA,
|
|
logic.zerg_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_Z.mission_name,
|
|
"South Bar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 907,
|
|
LocationType.EXTRA,
|
|
logic.zerg_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1000,
|
|
LocationType.VICTORY,
|
|
logic.protoss_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_P.mission_name,
|
|
"Left Infestor",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1001,
|
|
LocationType.VANILLA,
|
|
logic.protoss_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_P.mission_name,
|
|
"Right Infestor",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1002,
|
|
LocationType.VANILLA,
|
|
logic.protoss_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_P.mission_name,
|
|
"North Infested Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1003,
|
|
LocationType.EXTRA,
|
|
logic.protoss_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_P.mission_name,
|
|
"South Infested Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1004,
|
|
LocationType.EXTRA,
|
|
logic.protoss_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_P.mission_name,
|
|
"Northwest Bar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1005,
|
|
LocationType.EXTRA,
|
|
logic.protoss_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_P.mission_name,
|
|
"North Bar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1006,
|
|
LocationType.EXTRA,
|
|
logic.protoss_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OUTBREAK_P.mission_name,
|
|
"South Bar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1007,
|
|
LocationType.EXTRA,
|
|
logic.protoss_outbreak_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1100,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.zerg_common_unit(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN_Z.mission_name,
|
|
"North Nexus",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1101,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.zerg_common_unit(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN_Z.mission_name,
|
|
"East Nexus",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1102,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.zerg_common_unit(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN_Z.mission_name,
|
|
"South Nexus",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1103,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.zerg_common_unit(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN_Z.mission_name,
|
|
"First Terror Fleet",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1104,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.zerg_common_unit(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN_Z.mission_name,
|
|
"Second Terror Fleet",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1105,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.zerg_common_unit(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN_Z.mission_name,
|
|
"Third Terror Fleet",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1106,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.zerg_common_unit(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1200,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_armor_anti_air(state),
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN_P.mission_name,
|
|
"North Nexus",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1201,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_armor_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN_P.mission_name,
|
|
"East Nexus",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1202,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_armor_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN_P.mission_name,
|
|
"South Nexus",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1203,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_armor_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN_P.mission_name,
|
|
"First Terror Fleet",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1204,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_armor_anti_air(state),
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN_P.mission_name,
|
|
"Second Terror Fleet",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1205,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_armor_anti_air(state),
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SAFE_HAVEN_P.mission_name,
|
|
"Third Terror Fleet",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1206,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_armor_anti_air(state),
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1300,
|
|
LocationType.VICTORY,
|
|
logic.zerg_havens_fall_requirement,
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_Z.mission_name,
|
|
"North Hive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1301,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state) and logic.zerg_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_Z.mission_name,
|
|
"East Hive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1302,
|
|
LocationType.VANILLA,
|
|
logic.zerg_havens_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_Z.mission_name,
|
|
"South Hive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1303,
|
|
LocationType.VANILLA,
|
|
logic.zerg_havens_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_Z.mission_name,
|
|
"Northeast Colony Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1304,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_havens_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_Z.mission_name,
|
|
"East Colony Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1305,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_respond_to_colony_infestations,
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_Z.mission_name,
|
|
"Middle Colony Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1306,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_respond_to_colony_infestations,
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_Z.mission_name,
|
|
"Southeast Colony Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1307,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_respond_to_colony_infestations,
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_Z.mission_name,
|
|
"Southwest Colony Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1308,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_respond_to_colony_infestations,
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_Z.mission_name,
|
|
"Southwest Gas Pickups",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1309,
|
|
LocationType.EXTRA,
|
|
lambda state: state.has_any(
|
|
(item_names.OVERLORD_VENTRAL_SACS, item_names.YGGDRASIL), player
|
|
)
|
|
or adv_tactics
|
|
and state.has_all(
|
|
(
|
|
item_names.INFESTED_BANSHEE,
|
|
item_names.INFESTED_BANSHEE_RAPID_HIBERNATION,
|
|
),
|
|
player,
|
|
),
|
|
hard_rule=logic.zerg_can_collect_pickup_across_gap,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_Z.mission_name,
|
|
"East Gas Pickups",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1310,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_havens_fall_requirement(state)
|
|
and (
|
|
state.has(item_names.OVERLORD_VENTRAL_SACS, player)
|
|
or adv_tactics
|
|
and (
|
|
state.has_all(
|
|
(
|
|
item_names.INFESTED_BANSHEE,
|
|
item_names.INFESTED_BANSHEE_RAPID_HIBERNATION,
|
|
),
|
|
player,
|
|
)
|
|
or state.has(item_names.YGGDRASIL, player)
|
|
or logic.morph_viper(state)
|
|
)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_Z.mission_name,
|
|
"Southeast Gas Pickups",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1311,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_havens_fall_requirement(state)
|
|
and (
|
|
state.has(item_names.OVERLORD_VENTRAL_SACS, player)
|
|
or adv_tactics
|
|
and (
|
|
state.has_all(
|
|
(
|
|
item_names.INFESTED_BANSHEE,
|
|
item_names.INFESTED_BANSHEE_RAPID_HIBERNATION,
|
|
),
|
|
player,
|
|
)
|
|
or state.has(item_names.YGGDRASIL, player)
|
|
)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1400,
|
|
LocationType.VICTORY,
|
|
logic.protoss_havens_fall_requirement,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_P.mission_name,
|
|
"North Hive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1401,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_P.mission_name,
|
|
"East Hive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1402,
|
|
LocationType.VANILLA,
|
|
logic.protoss_havens_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_P.mission_name,
|
|
"South Hive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1403,
|
|
LocationType.VANILLA,
|
|
logic.protoss_havens_fall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_P.mission_name,
|
|
"Northeast Colony Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1404,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_respond_to_colony_infestations,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_P.mission_name,
|
|
"East Colony Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1405,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_respond_to_colony_infestations,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_P.mission_name,
|
|
"Middle Colony Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1406,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_respond_to_colony_infestations,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_P.mission_name,
|
|
"Southeast Colony Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1407,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_respond_to_colony_infestations,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_P.mission_name,
|
|
"Southwest Colony Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1408,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_respond_to_colony_infestations,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_P.mission_name,
|
|
"Southwest Gas Pickups",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1409,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
state.has(item_names.WARP_PRISM, player)
|
|
or adv_tactics
|
|
and (
|
|
state.has_all(
|
|
(item_names.MISTWING, item_names.MISTWING_PILOT), player
|
|
)
|
|
or state.has(item_names.ARBITER, player)
|
|
)
|
|
),
|
|
hard_rule=logic.protoss_any_gap_transport,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_P.mission_name,
|
|
"East Gas Pickups",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1410,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_havens_fall_requirement(state)
|
|
and (
|
|
state.has(item_names.WARP_PRISM, player)
|
|
or adv_tactics
|
|
and (
|
|
state.has_all(
|
|
(item_names.MISTWING, item_names.MISTWING_PILOT), player
|
|
)
|
|
or state.has(item_names.ARBITER, player)
|
|
)
|
|
)
|
|
),
|
|
hard_rule=logic.protoss_any_gap_transport,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAVENS_FALL_P.mission_name,
|
|
"Southeast Gas Pickups",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1411,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_havens_fall_requirement(state)
|
|
and (
|
|
state.has(item_names.WARP_PRISM, player)
|
|
or adv_tactics
|
|
and (
|
|
state.has_all(
|
|
(item_names.MISTWING, item_names.MISTWING_PILOT), player
|
|
)
|
|
or state.has(item_names.ARBITER, player)
|
|
)
|
|
)
|
|
),
|
|
hard_rule=logic.protoss_any_gap_transport,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1500,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and (
|
|
(adv_tactics and logic.zerg_moderate_anti_air(state))
|
|
or logic.zerg_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_Z.mission_name,
|
|
"First Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1501,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_Z.mission_name,
|
|
"Second Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1502,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.zerg_common_unit(state)
|
|
or state.has(item_names.OVERLORD_VENTRAL_SACS, player),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_Z.mission_name,
|
|
"Third Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1503,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and (
|
|
(adv_tactics and logic.zerg_moderate_anti_air(state))
|
|
or logic.zerg_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_Z.mission_name,
|
|
"Fourth Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1504,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and (
|
|
(adv_tactics and logic.zerg_moderate_anti_air(state))
|
|
or logic.zerg_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_Z.mission_name,
|
|
"First Forcefield Area Busted",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1505,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and (
|
|
(adv_tactics and logic.zerg_moderate_anti_air(state))
|
|
or logic.zerg_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_Z.mission_name,
|
|
"Second Forcefield Area Busted",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1506,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and (
|
|
(adv_tactics and logic.zerg_moderate_anti_air(state))
|
|
or logic.zerg_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_Z.mission_name,
|
|
"Defeat Kerrigan",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1507,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.zerg_common_unit_competent_aa(state)
|
|
and logic.zerg_base_buster(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1600,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and (
|
|
(adv_tactics and logic.protoss_basic_anti_air(state))
|
|
or logic.protoss_anti_light_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_P.mission_name,
|
|
"First Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1601,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_P.mission_name,
|
|
"Second Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1602,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.protoss_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_P.mission_name,
|
|
"Third Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1603,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and (
|
|
(adv_tactics and logic.protoss_basic_anti_air(state))
|
|
or logic.protoss_anti_light_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_P.mission_name,
|
|
"Fourth Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1604,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and (
|
|
(adv_tactics and logic.protoss_basic_anti_air(state))
|
|
or logic.protoss_anti_light_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_P.mission_name,
|
|
"First Forcefield Area Busted",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1605,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and (
|
|
(adv_tactics and logic.protoss_basic_anti_air(state))
|
|
or logic.protoss_anti_light_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_P.mission_name,
|
|
"Second Forcefield Area Busted",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1606,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and (
|
|
(adv_tactics and logic.protoss_basic_anti_air(state))
|
|
or logic.protoss_anti_light_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SMASH_AND_GRAB_P.mission_name,
|
|
"Defeat Kerrigan",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1607,
|
|
LocationType.MASTERY,
|
|
logic.protoss_deathball,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1700,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
(
|
|
logic.zerg_competent_anti_air(state)
|
|
or adv_tactics
|
|
and logic.zerg_moderate_anti_air(state)
|
|
)
|
|
and logic.zerg_defense_rating(state, False, True) >= 8
|
|
and logic.zerg_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_Z.mission_name,
|
|
"Left Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1701,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_defense_rating(state, False, False) >= 6
|
|
and logic.zerg_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_Z.mission_name,
|
|
"Right Ground Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1702,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_defense_rating(state, False, False) >= 6
|
|
and logic.zerg_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_Z.mission_name,
|
|
"Right Cliff Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1703,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_defense_rating(state, False, False) >= 6
|
|
and logic.zerg_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_Z.mission_name,
|
|
"Moebius Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1704,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_Z.mission_name,
|
|
"Door Outer Layer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1705,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_defense_rating(state, False, False) >= 6
|
|
and logic.zerg_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_Z.mission_name,
|
|
"Door Thermal Barrier",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1706,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
(
|
|
logic.zerg_competent_anti_air(state)
|
|
or adv_tactics
|
|
and logic.zerg_moderate_anti_air(state)
|
|
)
|
|
and logic.zerg_defense_rating(state, False, True) >= 8
|
|
and logic.zerg_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_Z.mission_name,
|
|
"Cutting Through the Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1707,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
(
|
|
logic.zerg_competent_anti_air(state)
|
|
or adv_tactics
|
|
and logic.zerg_moderate_anti_air(state)
|
|
)
|
|
and logic.zerg_defense_rating(state, False, True) >= 8
|
|
and logic.zerg_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_Z.mission_name,
|
|
"Structure Access Imminent",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1708,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
(
|
|
logic.zerg_competent_anti_air(state)
|
|
or adv_tactics
|
|
and logic.zerg_moderate_anti_air(state)
|
|
)
|
|
and logic.zerg_defense_rating(state, False, True) >= 8
|
|
and logic.zerg_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_Z.mission_name,
|
|
"Northwestern Protoss Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1709,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.zerg_competent_anti_air(state)
|
|
and logic.zerg_defense_rating(state, False, True) >= 8
|
|
and logic.zerg_common_unit(state)
|
|
and logic.zerg_base_buster(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_Z.mission_name,
|
|
"Northeastern Protoss Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1710,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.zerg_competent_anti_air(state)
|
|
and logic.zerg_defense_rating(state, False, True) >= 8
|
|
and logic.zerg_common_unit(state)
|
|
and logic.zerg_base_buster(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_Z.mission_name,
|
|
"Eastern Protoss Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1711,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.zerg_competent_anti_air(state)
|
|
and logic.zerg_defense_rating(state, False, True) >= 8
|
|
and logic.zerg_common_unit(state)
|
|
and logic.zerg_base_buster(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1800,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
(
|
|
logic.protoss_anti_armor_anti_air(state)
|
|
or adv_tactics
|
|
and logic.protoss_moderate_anti_air(state)
|
|
)
|
|
and logic.protoss_defense_rating(state, False) >= 6
|
|
and logic.protoss_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_P.mission_name,
|
|
"Left Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1801,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_defense_rating(state, False) >= 6
|
|
and logic.protoss_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_P.mission_name,
|
|
"Right Ground Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1802,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_defense_rating(state, False) >= 6
|
|
and logic.protoss_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_P.mission_name,
|
|
"Right Cliff Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1803,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_defense_rating(state, False) >= 6
|
|
and logic.protoss_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_P.mission_name,
|
|
"Moebius Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1804,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_P.mission_name,
|
|
"Door Outer Layer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1805,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_defense_rating(state, False) >= 6
|
|
and logic.protoss_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_P.mission_name,
|
|
"Door Thermal Barrier",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1806,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
(
|
|
logic.protoss_anti_armor_anti_air(state)
|
|
or adv_tactics
|
|
and logic.protoss_moderate_anti_air(state)
|
|
)
|
|
and logic.protoss_defense_rating(state, False) >= 6
|
|
and logic.protoss_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_P.mission_name,
|
|
"Cutting Through the Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1807,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
(
|
|
logic.protoss_anti_armor_anti_air(state)
|
|
or adv_tactics
|
|
and logic.protoss_moderate_anti_air(state)
|
|
)
|
|
and logic.protoss_defense_rating(state, False) >= 6
|
|
and logic.protoss_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_P.mission_name,
|
|
"Structure Access Imminent",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1808,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
(
|
|
logic.protoss_anti_armor_anti_air(state)
|
|
or adv_tactics
|
|
and logic.protoss_moderate_anti_air(state)
|
|
)
|
|
and logic.protoss_defense_rating(state, False) >= 6
|
|
and logic.protoss_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_P.mission_name,
|
|
"Northwestern Protoss Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1809,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.protoss_anti_armor_anti_air(state)
|
|
and logic.protoss_defense_rating(state, False) >= 6
|
|
and logic.protoss_common_unit(state)
|
|
and logic.protoss_deathball(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_P.mission_name,
|
|
"Northeastern Protoss Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1810,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.protoss_anti_armor_anti_air(state)
|
|
and logic.protoss_defense_rating(state, False) >= 6
|
|
and logic.protoss_common_unit(state)
|
|
and logic.protoss_deathball(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_DIG_P.mission_name,
|
|
"Eastern Protoss Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1811,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.protoss_anti_armor_anti_air(state)
|
|
and logic.protoss_defense_rating(state, False) >= 6
|
|
and logic.protoss_common_unit(state)
|
|
and logic.protoss_deathball(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1900,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_moderate_anti_air(state)
|
|
and (
|
|
logic.zerg_versatile_air(state)
|
|
or state.has_any(
|
|
{
|
|
item_names.YGGDRASIL,
|
|
item_names.OVERLORD_VENTRAL_SACS,
|
|
item_names.NYDUS_WORM,
|
|
item_names.BULLFROG,
|
|
},
|
|
player,
|
|
)
|
|
and logic.zerg_common_unit(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_Z.mission_name,
|
|
"1st Data Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1901,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_Z.mission_name,
|
|
"2nd Data Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1902,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_versatile_air(state)
|
|
or state.has_any(
|
|
{
|
|
item_names.YGGDRASIL,
|
|
item_names.OVERLORD_VENTRAL_SACS,
|
|
item_names.NYDUS_WORM,
|
|
item_names.BULLFROG,
|
|
},
|
|
player,
|
|
)
|
|
and logic.zerg_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_Z.mission_name,
|
|
"South Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1903,
|
|
LocationType.EXTRA,
|
|
lambda state: state.has_any(
|
|
{
|
|
item_names.YGGDRASIL,
|
|
item_names.OVERLORD_VENTRAL_SACS,
|
|
item_names.NYDUS_WORM,
|
|
item_names.BULLFROG,
|
|
},
|
|
player,
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_Z.mission_name,
|
|
"Wall Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1904,
|
|
LocationType.EXTRA,
|
|
lambda state: state.has_any(
|
|
{
|
|
item_names.YGGDRASIL,
|
|
item_names.OVERLORD_VENTRAL_SACS,
|
|
item_names.NYDUS_WORM,
|
|
item_names.BULLFROG,
|
|
},
|
|
player,
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_Z.mission_name,
|
|
"Mid Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1905,
|
|
LocationType.EXTRA,
|
|
lambda state: state.has_any(
|
|
{
|
|
item_names.YGGDRASIL,
|
|
item_names.OVERLORD_VENTRAL_SACS,
|
|
item_names.NYDUS_WORM,
|
|
item_names.BULLFROG,
|
|
},
|
|
player,
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_Z.mission_name,
|
|
"Nydus Roof Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1906,
|
|
LocationType.EXTRA,
|
|
lambda state: state.has_any(
|
|
{
|
|
item_names.YGGDRASIL,
|
|
item_names.OVERLORD_VENTRAL_SACS,
|
|
item_names.NYDUS_WORM,
|
|
item_names.BULLFROG,
|
|
},
|
|
player,
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_Z.mission_name,
|
|
"Alive Inside Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1907,
|
|
LocationType.EXTRA,
|
|
lambda state: state.has_any(
|
|
{
|
|
item_names.YGGDRASIL,
|
|
item_names.OVERLORD_VENTRAL_SACS,
|
|
item_names.NYDUS_WORM,
|
|
item_names.BULLFROG,
|
|
},
|
|
player,
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_Z.mission_name,
|
|
"Brutalisk",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1908,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_moderate_anti_air(state)
|
|
and (
|
|
logic.zerg_versatile_air(state)
|
|
or state.has_any(
|
|
{
|
|
item_names.YGGDRASIL,
|
|
item_names.OVERLORD_VENTRAL_SACS,
|
|
item_names.NYDUS_WORM,
|
|
item_names.BULLFROG,
|
|
},
|
|
player,
|
|
)
|
|
and logic.zerg_common_unit(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_Z.mission_name,
|
|
"3rd Data Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 1909,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_moderate_anti_air(state)
|
|
and (
|
|
logic.zerg_versatile_air(state)
|
|
or state.has_any(
|
|
{
|
|
item_names.YGGDRASIL,
|
|
item_names.OVERLORD_VENTRAL_SACS,
|
|
item_names.NYDUS_WORM,
|
|
item_names.BULLFROG,
|
|
},
|
|
player,
|
|
)
|
|
and logic.zerg_common_unit(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2000,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.protoss_moderate_anti_air(state)
|
|
and (
|
|
logic.protoss_fleet(state)
|
|
or state.has(item_names.WARP_PRISM, player)
|
|
and logic.protoss_common_unit(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_P.mission_name,
|
|
"1st Data Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2001,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_P.mission_name,
|
|
"2nd Data Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2002,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_fleet(state)
|
|
or (
|
|
state.has(item_names.WARP_PRISM, player)
|
|
and logic.protoss_common_unit(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_P.mission_name,
|
|
"South Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2003,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or state.has(item_names.WARP_PRISM, player),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_P.mission_name,
|
|
"Wall Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2004,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or state.has(item_names.WARP_PRISM, player),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_P.mission_name,
|
|
"Mid Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2005,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or state.has(item_names.WARP_PRISM, player),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_P.mission_name,
|
|
"Nydus Roof Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2006,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or state.has(item_names.WARP_PRISM, player),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_P.mission_name,
|
|
"Alive Inside Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2007,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or state.has(item_names.WARP_PRISM, player),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_P.mission_name,
|
|
"Brutalisk",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2008,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_moderate_anti_air(state)
|
|
and (
|
|
logic.protoss_fleet(state)
|
|
or state.has(item_names.WARP_PRISM, player)
|
|
and logic.protoss_common_unit(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_MOEBIUS_FACTOR_P.mission_name,
|
|
"3rd Data Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2009,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_moderate_anti_air(state)
|
|
and (
|
|
logic.protoss_fleet(state)
|
|
or state.has(item_names.WARP_PRISM, player)
|
|
and logic.protoss_common_unit(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2100,
|
|
LocationType.VICTORY,
|
|
logic.zerg_supernova_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_Z.mission_name,
|
|
"West Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2101,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_Z.mission_name,
|
|
"North Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2102,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_Z.mission_name,
|
|
"South Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2103,
|
|
LocationType.VANILLA,
|
|
logic.zerg_supernova_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_Z.mission_name,
|
|
"East Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2104,
|
|
LocationType.VANILLA,
|
|
logic.zerg_supernova_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_Z.mission_name,
|
|
"Landing Zone Cleared",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2105,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_Z.mission_name,
|
|
"Middle Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2106,
|
|
LocationType.EXTRA,
|
|
logic.zerg_supernova_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_Z.mission_name,
|
|
"Southeast Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2107,
|
|
LocationType.EXTRA,
|
|
logic.zerg_supernova_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2200,
|
|
LocationType.VICTORY,
|
|
logic.protoss_supernova_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_P.mission_name,
|
|
"West Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2201,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_P.mission_name,
|
|
"North Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2202,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_P.mission_name,
|
|
"South Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2203,
|
|
LocationType.VANILLA,
|
|
logic.protoss_supernova_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_P.mission_name,
|
|
"East Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2204,
|
|
LocationType.VANILLA,
|
|
logic.protoss_supernova_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_P.mission_name,
|
|
"Landing Zone Cleared",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2205,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_P.mission_name,
|
|
"Middle Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2206,
|
|
LocationType.EXTRA,
|
|
logic.protoss_supernova_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SUPERNOVA_P.mission_name,
|
|
"Southeast Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2207,
|
|
LocationType.EXTRA,
|
|
logic.protoss_supernova_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2300,
|
|
LocationType.VICTORY,
|
|
logic.zerg_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_Z.mission_name,
|
|
"Landing Zone Cleared",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2301,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_Z.mission_name,
|
|
"Expansion Prisoners",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2302,
|
|
LocationType.VANILLA,
|
|
logic.zerg_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_Z.mission_name,
|
|
"South Close Prisoners",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2303,
|
|
LocationType.VANILLA,
|
|
logic.zerg_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_Z.mission_name,
|
|
"South Far Prisoners",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2304,
|
|
LocationType.VANILLA,
|
|
logic.zerg_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_Z.mission_name,
|
|
"North Prisoners",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2305,
|
|
LocationType.VANILLA,
|
|
logic.zerg_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_Z.mission_name,
|
|
"Mothership",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2306,
|
|
LocationType.EXTRA,
|
|
logic.zerg_maw_requirement,
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_Z.mission_name,
|
|
"Expansion Rip Field Generator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2307,
|
|
LocationType.EXTRA,
|
|
logic.zerg_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_Z.mission_name,
|
|
"Middle Rip Field Generator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2308,
|
|
LocationType.EXTRA,
|
|
logic.zerg_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_Z.mission_name,
|
|
"Southeast Rip Field Generator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2309,
|
|
LocationType.EXTRA,
|
|
logic.zerg_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_Z.mission_name,
|
|
"Stargate Rip Field Generator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2310,
|
|
LocationType.EXTRA,
|
|
logic.zerg_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_Z.mission_name,
|
|
"Northwest Rip Field Generator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2311,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_Z.mission_name,
|
|
"West Rip Field Generator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2312,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_Z.mission_name,
|
|
"Southwest Rip Field Generator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2313,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2400,
|
|
LocationType.VICTORY,
|
|
logic.protoss_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_P.mission_name,
|
|
"Landing Zone Cleared",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2401,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_P.mission_name,
|
|
"Expansion Prisoners",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2402,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.protoss_maw_requirement(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_P.mission_name,
|
|
"South Close Prisoners",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2403,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.protoss_maw_requirement(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_P.mission_name,
|
|
"South Far Prisoners",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2404,
|
|
LocationType.VANILLA,
|
|
logic.protoss_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_P.mission_name,
|
|
"North Prisoners",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2405,
|
|
LocationType.VANILLA,
|
|
logic.protoss_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_P.mission_name,
|
|
"Mothership",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2406,
|
|
LocationType.EXTRA,
|
|
logic.protoss_maw_requirement,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_P.mission_name,
|
|
"Expansion Rip Field Generator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2407,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or logic.protoss_maw_requirement(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_P.mission_name,
|
|
"Middle Rip Field Generator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2408,
|
|
LocationType.EXTRA,
|
|
logic.protoss_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_P.mission_name,
|
|
"Southeast Rip Field Generator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2409,
|
|
LocationType.EXTRA,
|
|
logic.protoss_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_P.mission_name,
|
|
"Stargate Rip Field Generator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2410,
|
|
LocationType.EXTRA,
|
|
logic.protoss_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_P.mission_name,
|
|
"Northwest Rip Field Generator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2411,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_P.mission_name,
|
|
"West Rip Field Generator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2412,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MAW_OF_THE_VOID_P.mission_name,
|
|
"Southwest Rip Field Generator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2413,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_maw_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2500,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_moderate_anti_air(state)
|
|
and logic.zerg_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_Z.mission_name,
|
|
"Tosh's Miners",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2501,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_Z.mission_name,
|
|
"Brutalisk",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2502,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.zerg_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_Z.mission_name,
|
|
"North Reinforcements",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2503,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_Z.mission_name,
|
|
"Middle Reinforcements",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2504,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_Z.mission_name,
|
|
"Southwest Reinforcements",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2505,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.zerg_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_Z.mission_name,
|
|
"Southeast Reinforcements",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2506,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_moderate_anti_air(state)
|
|
and logic.zerg_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_Z.mission_name,
|
|
"East Reinforcements",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2507,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_moderate_anti_air(state)
|
|
and logic.zerg_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_Z.mission_name,
|
|
"Zerg Cleared",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2508,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.zerg_competent_anti_air(state)
|
|
and logic.zerg_common_unit(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2600,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
adv_tactics
|
|
or logic.protoss_basic_anti_air(state)
|
|
and logic.protoss_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_P.mission_name,
|
|
"Tosh's Miners",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2601,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_P.mission_name,
|
|
"Brutalisk",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2602,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.protoss_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_P.mission_name,
|
|
"North Reinforcements",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2603,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_P.mission_name,
|
|
"Middle Reinforcements",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2604,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_P.mission_name,
|
|
"Southwest Reinforcements",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2605,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or logic.protoss_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_P.mission_name,
|
|
"Southeast Reinforcements",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2606,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
adv_tactics
|
|
or logic.protoss_basic_anti_air(state)
|
|
and logic.protoss_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_P.mission_name,
|
|
"East Reinforcements",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2607,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
adv_tactics
|
|
or logic.protoss_basic_anti_air(state)
|
|
and logic.protoss_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEVILS_PLAYGROUND_P.mission_name,
|
|
"Zerg Cleared",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2608,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.protoss_competent_anti_air(state)
|
|
and (logic.protoss_common_unit(state))
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2700,
|
|
LocationType.VICTORY,
|
|
logic.zerg_welcome_to_the_jungle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_Z.mission_name,
|
|
"Close Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2701,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_Z.mission_name,
|
|
"West Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2702,
|
|
LocationType.VANILLA,
|
|
logic.zerg_welcome_to_the_jungle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_Z.mission_name,
|
|
"North-East Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2703,
|
|
LocationType.VANILLA,
|
|
logic.zerg_welcome_to_the_jungle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_Z.mission_name,
|
|
"Middle Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2704,
|
|
LocationType.EXTRA,
|
|
logic.zerg_welcome_to_the_jungle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_Z.mission_name,
|
|
"Protoss Cleared",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2705,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.zerg_welcome_to_the_jungle_requirement(state)
|
|
and logic.zerg_competent_anti_air(state)
|
|
and logic.zerg_base_buster(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_Z.mission_name,
|
|
"No Terrazine Nodes Sealed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2706,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.zerg_welcome_to_the_jungle_requirement(state)
|
|
and logic.zerg_competent_anti_air(state)
|
|
and logic.zerg_big_monsters(state)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_Z.mission_name,
|
|
"Up to 1 Terrazine Node Sealed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2707,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.zerg_welcome_to_the_jungle_requirement(state)
|
|
and logic.zerg_competent_anti_air(state)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_Z.mission_name,
|
|
"Up to 2 Terrazine Nodes Sealed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2708,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.zerg_welcome_to_the_jungle_requirement(state)
|
|
and logic.zerg_competent_anti_air(state)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_Z.mission_name,
|
|
"Up to 3 Terrazine Nodes Sealed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2709,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.zerg_welcome_to_the_jungle_requirement(state)
|
|
and logic.zerg_competent_anti_air(state)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_Z.mission_name,
|
|
"Up to 4 Terrazine Nodes Sealed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2710,
|
|
LocationType.EXTRA,
|
|
logic.zerg_welcome_to_the_jungle_requirement,
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_Z.mission_name,
|
|
"Up to 5 Terrazine Nodes Sealed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2711,
|
|
LocationType.EXTRA,
|
|
logic.zerg_welcome_to_the_jungle_requirement,
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2800,
|
|
LocationType.VICTORY,
|
|
logic.protoss_welcome_to_the_jungle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_P.mission_name,
|
|
"Close Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2801,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_P.mission_name,
|
|
"West Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2802,
|
|
LocationType.VANILLA,
|
|
logic.protoss_welcome_to_the_jungle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_P.mission_name,
|
|
"North-East Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2803,
|
|
LocationType.VANILLA,
|
|
logic.protoss_welcome_to_the_jungle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_P.mission_name,
|
|
"Middle Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2804,
|
|
LocationType.EXTRA,
|
|
logic.protoss_welcome_to_the_jungle_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_P.mission_name,
|
|
"Protoss Cleared",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2805,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.protoss_welcome_to_the_jungle_requirement(state)
|
|
and logic.protoss_competent_comp(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_P.mission_name,
|
|
"No Terrazine Nodes Sealed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2806,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.protoss_welcome_to_the_jungle_requirement(state)
|
|
and logic.protoss_competent_comp(state)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_P.mission_name,
|
|
"Up to 1 Terrazine Node Sealed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2807,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.protoss_welcome_to_the_jungle_requirement(state)
|
|
and logic.protoss_competent_comp(state)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_P.mission_name,
|
|
"Up to 2 Terrazine Nodes Sealed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2808,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.protoss_welcome_to_the_jungle_requirement(state)
|
|
and logic.protoss_basic_splash(state)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_P.mission_name,
|
|
"Up to 3 Terrazine Nodes Sealed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2809,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.protoss_welcome_to_the_jungle_requirement(state)
|
|
and logic.protoss_basic_splash(state)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_P.mission_name,
|
|
"Up to 4 Terrazine Nodes Sealed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2810,
|
|
LocationType.EXTRA,
|
|
logic.protoss_welcome_to_the_jungle_requirement,
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WELCOME_TO_THE_JUNGLE_P.mission_name,
|
|
"Up to 5 Terrazine Nodes Sealed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 2811,
|
|
LocationType.EXTRA,
|
|
logic.protoss_welcome_to_the_jungle_requirement,
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3300,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_great_train_robbery_train_stopper(state)
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_Z.mission_name,
|
|
"North Defiler",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3301,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_Z.mission_name,
|
|
"Mid Defiler",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3302,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_Z.mission_name,
|
|
"South Defiler",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3303,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_Z.mission_name,
|
|
"Close Infested Diamondback",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3304,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_Z.mission_name,
|
|
"Northwest Infested Diamondback",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3305,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_Z.mission_name,
|
|
"North Infested Diamondback",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3306,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_Z.mission_name,
|
|
"Northeast Infested Diamondback",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3307,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_Z.mission_name,
|
|
"Southwest Infested Diamondback",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3308,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_Z.mission_name,
|
|
"Southeast Infested Diamondback",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3309,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_Z.mission_name,
|
|
"Kill Team",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3310,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
(adv_tactics or logic.zerg_common_unit(state))
|
|
and logic.zerg_great_train_robbery_train_stopper(state)
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_Z.mission_name,
|
|
"Flawless",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3311,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.zerg_great_train_robbery_train_stopper(state)
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_Z.mission_name,
|
|
"2 Trains Destroyed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3312,
|
|
LocationType.EXTRA,
|
|
logic.zerg_great_train_robbery_train_stopper,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_Z.mission_name,
|
|
"4 Trains Destroyed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3313,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_great_train_robbery_train_stopper(state)
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_Z.mission_name,
|
|
"6 Trains Destroyed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3314,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_great_train_robbery_train_stopper(state)
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3400,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.protoss_great_train_robbery_train_stopper(state)
|
|
and logic.protoss_basic_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_P.mission_name,
|
|
"North Defiler",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3401,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_P.mission_name,
|
|
"Mid Defiler",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3402,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_P.mission_name,
|
|
"South Defiler",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3403,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_P.mission_name,
|
|
"Close Immortal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3404,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_P.mission_name,
|
|
"Northwest Immortal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3405,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_P.mission_name,
|
|
"North Instigator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3406,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_P.mission_name,
|
|
"Northeast Instigator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3407,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_P.mission_name,
|
|
"Southwest Instigator",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3408,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_P.mission_name,
|
|
"Southeast Immortal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3409,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_P.mission_name,
|
|
"Kill Team",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3410,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
(adv_tactics or logic.protoss_common_unit(state))
|
|
and logic.protoss_great_train_robbery_train_stopper(state)
|
|
and logic.protoss_basic_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_P.mission_name,
|
|
"Flawless",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3411,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.protoss_great_train_robbery_train_stopper(state)
|
|
and logic.protoss_basic_anti_air(state)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_P.mission_name,
|
|
"2 Trains Destroyed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3412,
|
|
LocationType.EXTRA,
|
|
logic.protoss_great_train_robbery_train_stopper,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_P.mission_name,
|
|
"4 Trains Destroyed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3413,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_great_train_robbery_train_stopper(state)
|
|
and logic.protoss_basic_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GREAT_TRAIN_ROBBERY_P.mission_name,
|
|
"6 Trains Destroyed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3414,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_great_train_robbery_train_stopper(state)
|
|
and logic.protoss_basic_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3500,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state)
|
|
and (adv_tactics or logic.zerg_moderate_anti_air(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_Z.mission_name,
|
|
"Mira Han",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3501,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_Z.mission_name,
|
|
"North Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3502,
|
|
LocationType.VANILLA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_Z.mission_name,
|
|
"Mid Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3503,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_Z.mission_name,
|
|
"Southwest Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3504,
|
|
LocationType.VANILLA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_Z.mission_name,
|
|
"North Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3505,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_Z.mission_name,
|
|
"South Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3506,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_Z.mission_name,
|
|
"West Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3507,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3600,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and (adv_tactics or logic.protoss_basic_anti_air(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_P.mission_name,
|
|
"Mira Han",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3601,
|
|
LocationType.EXTRA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_P.mission_name,
|
|
"North Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3602,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_P.mission_name,
|
|
"Mid Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3603,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_P.mission_name,
|
|
"Southwest Relic",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3604,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_P.mission_name,
|
|
"North Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3605,
|
|
LocationType.EXTRA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_P.mission_name,
|
|
"South Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3606,
|
|
LocationType.EXTRA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.CUTTHROAT_P.mission_name,
|
|
"West Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3607,
|
|
LocationType.EXTRA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3700,
|
|
LocationType.VICTORY,
|
|
logic.zerg_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_Z.mission_name,
|
|
"Odin",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3701,
|
|
LocationType.EXTRA,
|
|
logic.zergling_hydra_roach_start,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_Z.mission_name,
|
|
"Loki",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3702,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_Z.mission_name,
|
|
"Lab Devourer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3703,
|
|
LocationType.VANILLA,
|
|
logic.zergling_hydra_roach_start,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_Z.mission_name,
|
|
"North Devourer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3704,
|
|
LocationType.VANILLA,
|
|
logic.zerg_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_Z.mission_name,
|
|
"Southeast Devourer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3705,
|
|
LocationType.VANILLA,
|
|
logic.zerg_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_Z.mission_name,
|
|
"West Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3706,
|
|
LocationType.EXTRA,
|
|
logic.zerg_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_Z.mission_name,
|
|
"Northwest Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3707,
|
|
LocationType.EXTRA,
|
|
logic.zerg_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_Z.mission_name,
|
|
"Northeast Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3708,
|
|
LocationType.EXTRA,
|
|
logic.zerg_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_Z.mission_name,
|
|
"Southeast Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3709,
|
|
LocationType.EXTRA,
|
|
logic.zerg_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3800,
|
|
LocationType.VICTORY,
|
|
logic.protoss_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_P.mission_name,
|
|
"Odin",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3801,
|
|
LocationType.EXTRA,
|
|
logic.zealot_sentry_slayer_start,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_P.mission_name,
|
|
"Loki",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3802,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_P.mission_name,
|
|
"Lab Devourer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3803,
|
|
LocationType.VANILLA,
|
|
logic.zealot_sentry_slayer_start,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_P.mission_name,
|
|
"North Devourer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3804,
|
|
LocationType.VANILLA,
|
|
logic.protoss_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_P.mission_name,
|
|
"Southeast Devourer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3805,
|
|
LocationType.VANILLA,
|
|
logic.protoss_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_P.mission_name,
|
|
"West Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3806,
|
|
LocationType.EXTRA,
|
|
logic.protoss_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_P.mission_name,
|
|
"Northwest Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3807,
|
|
LocationType.EXTRA,
|
|
logic.protoss_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_P.mission_name,
|
|
"Northeast Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3808,
|
|
LocationType.EXTRA,
|
|
logic.protoss_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ENGINE_OF_DESTRUCTION_P.mission_name,
|
|
"Southeast Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3809,
|
|
LocationType.EXTRA,
|
|
logic.protoss_engine_of_destruction_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3900,
|
|
LocationType.VICTORY,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_Z.mission_name,
|
|
"Tower 1",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3901,
|
|
LocationType.VANILLA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_Z.mission_name,
|
|
"Tower 2",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3902,
|
|
LocationType.VANILLA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_Z.mission_name,
|
|
"Tower 3",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3903,
|
|
LocationType.VANILLA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_Z.mission_name,
|
|
"Science Facility",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3904,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.advanced_tactics or logic.zerg_competent_comp_competent_aa(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_Z.mission_name,
|
|
"All Barracks",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3905,
|
|
LocationType.EXTRA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_Z.mission_name,
|
|
"All Factories",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3906,
|
|
LocationType.EXTRA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_Z.mission_name,
|
|
"All Starports",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3907,
|
|
LocationType.EXTRA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_Z.mission_name,
|
|
"Odin Not Trashed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3908,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.zerg_competent_comp_competent_aa(state)
|
|
and logic.zerg_repair_odin(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_Z.mission_name,
|
|
"Surprise Attack Ends",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 3909,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4000,
|
|
LocationType.VICTORY,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_P.mission_name,
|
|
"Tower 1",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4001,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_P.mission_name,
|
|
"Tower 2",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4002,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_P.mission_name,
|
|
"Tower 3",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4003,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_P.mission_name,
|
|
"Science Facility",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4004,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.protoss_competent_comp(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_P.mission_name,
|
|
"All Barracks",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4005,
|
|
LocationType.EXTRA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_P.mission_name,
|
|
"All Factories",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4006,
|
|
LocationType.EXTRA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_P.mission_name,
|
|
"All Starports",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4007,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or logic.protoss_competent_comp(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_P.mission_name,
|
|
"Odin Not Trashed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4008,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.protoss_competent_comp(state) and logic.protoss_repair_odin(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.MEDIA_BLITZ_P.mission_name,
|
|
"Surprise Attack Ends",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4009,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4500,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_competent_comp(state)
|
|
and logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_T.mission_name,
|
|
"Factory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4501,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.terran_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_T.mission_name,
|
|
"Armory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4502,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.terran_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_T.mission_name,
|
|
"Shadow Ops",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4503,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_T.mission_name,
|
|
"Northeast Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4504,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_T.mission_name,
|
|
"Southwest Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4505,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_competent_comp(state)
|
|
and logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_T.mission_name,
|
|
"Maar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4506,
|
|
LocationType.EXTRA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_T.mission_name,
|
|
"Northwest Preserver",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4507,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_competent_comp(state)
|
|
and logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_T.mission_name,
|
|
"Southwest Preserver",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4508,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_competent_comp(state)
|
|
and logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_T.mission_name,
|
|
"East Preserver",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4509,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_competent_comp(state)
|
|
and logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4600,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.zerg_competent_comp(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_Z.mission_name,
|
|
"Ultralisk Cavern",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4601,
|
|
LocationType.VANILLA,
|
|
lambda state: (adv_tactics or logic.zerg_common_unit(state))
|
|
and logic.spread_creep(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_Z.mission_name,
|
|
"Hydralisk Den",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4602,
|
|
LocationType.VANILLA,
|
|
lambda state: (adv_tactics or logic.zerg_common_unit(state))
|
|
and logic.spread_creep(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_Z.mission_name,
|
|
"Infestation Pit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4603,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.zerg_common_unit(state)
|
|
and logic.zerg_competent_anti_air(state)
|
|
and logic.spread_creep(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_Z.mission_name,
|
|
"Northeast Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4604,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.zerg_common_unit(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_Z.mission_name,
|
|
"Southwest Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4605,
|
|
LocationType.CHALLENGE,
|
|
lambda state: logic.zerg_common_unit(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_Z.mission_name,
|
|
"Maar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4606,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_Z.mission_name,
|
|
"Northwest Preserver",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4607,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.zerg_competent_comp(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_Z.mission_name,
|
|
"Southwest Preserver",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4608,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.zerg_competent_comp(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.A_SINISTER_TURN_Z.mission_name,
|
|
"East Preserver",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4609,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.zerg_competent_comp(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4700,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_T.mission_name,
|
|
"Close Obelisk",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4701,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.terran_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_T.mission_name,
|
|
"West Obelisk",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4702,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics
|
|
or (logic.terran_common_unit(state) and logic.terran_basic_anti_air(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_T.mission_name,
|
|
"Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4703,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_T.mission_name,
|
|
"Southwest Tendril",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4704,
|
|
LocationType.EXTRA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_T.mission_name,
|
|
"Southeast Tendril",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4705,
|
|
LocationType.EXTRA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_T.mission_name,
|
|
"Northeast Tendril",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4706,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_T.mission_name,
|
|
"Northwest Tendril",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4707,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4800,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.zerg_common_unit(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_Z.mission_name,
|
|
"Close Obelisk",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4801,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.zerg_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_Z.mission_name,
|
|
"West Obelisk",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4802,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
adv_tactics
|
|
or (
|
|
logic.zerg_common_unit(state)
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
and logic.spread_creep(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_Z.mission_name,
|
|
"Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4803,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_Z.mission_name,
|
|
"Southwest Tendril",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4804,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_Z.mission_name,
|
|
"Southeast Tendril",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4805,
|
|
LocationType.EXTRA,
|
|
logic.zerg_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_Z.mission_name,
|
|
"Northeast Tendril",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4806,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.zerg_common_unit(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ECHOES_OF_THE_FUTURE_Z.mission_name,
|
|
"Northwest Tendril",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4807,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.zerg_common_unit(state)
|
|
and logic.zerg_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS_T.mission_name,
|
|
"Defeat",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4900,
|
|
LocationType.VICTORY,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS_T.mission_name,
|
|
"Protoss Archive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4901,
|
|
LocationType.VANILLA,
|
|
logic.terran_in_utter_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS_T.mission_name,
|
|
"Kills",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4902,
|
|
LocationType.VANILLA,
|
|
logic.terran_in_utter_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS_T.mission_name,
|
|
"Urun",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4903,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS_T.mission_name,
|
|
"Mohandar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4904,
|
|
LocationType.EXTRA,
|
|
logic.terran_in_utter_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS_T.mission_name,
|
|
"Selendis",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4905,
|
|
LocationType.EXTRA,
|
|
logic.terran_in_utter_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS_T.mission_name,
|
|
"Artanis",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 4906,
|
|
LocationType.EXTRA,
|
|
logic.terran_in_utter_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS_Z.mission_name,
|
|
"Defeat",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5000,
|
|
LocationType.VICTORY,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS_Z.mission_name,
|
|
"Protoss Archive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5001,
|
|
LocationType.VANILLA,
|
|
logic.zerg_in_utter_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS_Z.mission_name,
|
|
"Kills",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5002,
|
|
LocationType.VANILLA,
|
|
logic.zerg_in_utter_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS_Z.mission_name,
|
|
"Urun",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5003,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS_Z.mission_name,
|
|
"Mohandar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5004,
|
|
LocationType.EXTRA,
|
|
logic.zerg_in_utter_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS_Z.mission_name,
|
|
"Selendis",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5005,
|
|
LocationType.EXTRA,
|
|
logic.zerg_in_utter_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.IN_UTTER_DARKNESS_Z.mission_name,
|
|
"Artanis",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5006,
|
|
LocationType.EXTRA,
|
|
logic.zerg_in_utter_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5100,
|
|
LocationType.VICTORY,
|
|
logic.zerg_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_Z.mission_name,
|
|
"Large Army",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5101,
|
|
LocationType.VANILLA,
|
|
logic.zerg_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_Z.mission_name,
|
|
"2 Drop Pods",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5102,
|
|
LocationType.VANILLA,
|
|
logic.zerg_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_Z.mission_name,
|
|
"4 Drop Pods",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5103,
|
|
LocationType.VANILLA,
|
|
logic.zerg_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_Z.mission_name,
|
|
"6 Drop Pods",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5104,
|
|
LocationType.EXTRA,
|
|
logic.zerg_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_Z.mission_name,
|
|
"8 Drop Pods",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5105,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_Z.mission_name,
|
|
"Southwest Spore Cannon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5106,
|
|
LocationType.EXTRA,
|
|
logic.zerg_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_Z.mission_name,
|
|
"Northwest Spore Cannon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5107,
|
|
LocationType.EXTRA,
|
|
logic.zerg_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_Z.mission_name,
|
|
"Northeast Spore Cannon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5108,
|
|
LocationType.EXTRA,
|
|
logic.zerg_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_Z.mission_name,
|
|
"East Spore Cannon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5109,
|
|
LocationType.EXTRA,
|
|
logic.zerg_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_Z.mission_name,
|
|
"Southeast Spore Cannon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5110,
|
|
LocationType.EXTRA,
|
|
logic.zerg_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_Z.mission_name,
|
|
"Expansion Spore Cannon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5111,
|
|
LocationType.EXTRA,
|
|
logic.zerg_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5200,
|
|
LocationType.VICTORY,
|
|
logic.protoss_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_P.mission_name,
|
|
"Large Army",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5201,
|
|
LocationType.VANILLA,
|
|
logic.protoss_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_P.mission_name,
|
|
"2 Drop Pods",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5202,
|
|
LocationType.VANILLA,
|
|
logic.protoss_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_P.mission_name,
|
|
"4 Drop Pods",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5203,
|
|
LocationType.VANILLA,
|
|
logic.protoss_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_P.mission_name,
|
|
"6 Drop Pods",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5204,
|
|
LocationType.EXTRA,
|
|
logic.protoss_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_P.mission_name,
|
|
"8 Drop Pods",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5205,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_P.mission_name,
|
|
"Southwest Spore Cannon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5206,
|
|
LocationType.EXTRA,
|
|
logic.protoss_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_P.mission_name,
|
|
"Northwest Spore Cannon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5207,
|
|
LocationType.EXTRA,
|
|
logic.protoss_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_P.mission_name,
|
|
"Northeast Spore Cannon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5208,
|
|
LocationType.EXTRA,
|
|
logic.protoss_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_P.mission_name,
|
|
"East Spore Cannon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5209,
|
|
LocationType.EXTRA,
|
|
logic.protoss_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_P.mission_name,
|
|
"Southeast Spore Cannon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5210,
|
|
LocationType.EXTRA,
|
|
logic.protoss_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GATES_OF_HELL_P.mission_name,
|
|
"Expansion Spore Cannon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5211,
|
|
LocationType.EXTRA,
|
|
logic.protoss_gates_of_hell_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5500,
|
|
LocationType.VICTORY,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_Z.mission_name,
|
|
"Close Coolant Tower",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5501,
|
|
LocationType.VANILLA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_Z.mission_name,
|
|
"Northwest Coolant Tower",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5502,
|
|
LocationType.VANILLA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_Z.mission_name,
|
|
"Southeast Coolant Tower",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5503,
|
|
LocationType.VANILLA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_Z.mission_name,
|
|
"Southwest Coolant Tower",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5504,
|
|
LocationType.VANILLA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_Z.mission_name,
|
|
"Leviathan",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5505,
|
|
LocationType.VANILLA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_Z.mission_name,
|
|
"East Hatchery",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5506,
|
|
LocationType.EXTRA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_Z.mission_name,
|
|
"North Hatchery",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5507,
|
|
LocationType.EXTRA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_Z.mission_name,
|
|
"Mid Hatchery",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5508,
|
|
LocationType.EXTRA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5600,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.protoss_competent_comp(state)
|
|
and logic.protoss_army_weapon_armor_upgrade_min_level(state) >= 2,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_P.mission_name,
|
|
"Close Coolant Tower",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5601,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_P.mission_name,
|
|
"Northwest Coolant Tower",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5602,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_P.mission_name,
|
|
"Southeast Coolant Tower",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5603,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.protoss_competent_comp(state)
|
|
and logic.protoss_army_weapon_armor_upgrade_min_level(state) >= 2,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_P.mission_name,
|
|
"Southwest Coolant Tower",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5604,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.protoss_competent_comp(state)
|
|
and logic.protoss_army_weapon_armor_upgrade_min_level(state) >= 2,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_P.mission_name,
|
|
"Leviathan",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5605,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.protoss_competent_comp(state)
|
|
and logic.protoss_army_weapon_armor_upgrade_min_level(state) >= 2,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_P.mission_name,
|
|
"East Hatchery",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5606,
|
|
LocationType.EXTRA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_P.mission_name,
|
|
"North Hatchery",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5607,
|
|
LocationType.EXTRA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHATTER_THE_SKY_P.mission_name,
|
|
"Mid Hatchery",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5608,
|
|
LocationType.EXTRA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5700,
|
|
LocationType.VICTORY,
|
|
logic.zerg_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN_Z.mission_name,
|
|
"First Kerrigan Attack",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5701,
|
|
LocationType.EXTRA,
|
|
logic.zerg_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN_Z.mission_name,
|
|
"Second Kerrigan Attack",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5702,
|
|
LocationType.EXTRA,
|
|
logic.zerg_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN_Z.mission_name,
|
|
"Third Kerrigan Attack",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5703,
|
|
LocationType.EXTRA,
|
|
logic.zerg_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN_Z.mission_name,
|
|
"Fourth Kerrigan Attack",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5704,
|
|
LocationType.EXTRA,
|
|
logic.zerg_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN_Z.mission_name,
|
|
"Fifth Kerrigan Attack",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5705,
|
|
LocationType.EXTRA,
|
|
logic.zerg_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5800,
|
|
LocationType.VICTORY,
|
|
logic.protoss_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN_P.mission_name,
|
|
"First Kerrigan Attack",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5801,
|
|
LocationType.EXTRA,
|
|
logic.protoss_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN_P.mission_name,
|
|
"Second Kerrigan Attack",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5802,
|
|
LocationType.EXTRA,
|
|
logic.protoss_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN_P.mission_name,
|
|
"Third Kerrigan Attack",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5803,
|
|
LocationType.EXTRA,
|
|
logic.protoss_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN_P.mission_name,
|
|
"Fourth Kerrigan Attack",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5804,
|
|
LocationType.EXTRA,
|
|
logic.protoss_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.ALL_IN_P.mission_name,
|
|
"Fifth Kerrigan Attack",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5805,
|
|
LocationType.EXTRA,
|
|
logic.protoss_all_in_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5900,
|
|
LocationType.VICTORY,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_T.mission_name,
|
|
"Gather Minerals",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5901,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_T.mission_name,
|
|
"South Marine Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5902,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.terran_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_T.mission_name,
|
|
"East Marine Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5903,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.terran_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_T.mission_name,
|
|
"West Marine Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5904,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.terran_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_T.mission_name,
|
|
"Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5905,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_T.mission_name,
|
|
"Supply Depot",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5906,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_T.mission_name,
|
|
"Gas Turrets",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5907,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or logic.terran_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_T.mission_name,
|
|
"Win In Under 10 Minutes",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 5908,
|
|
LocationType.CHALLENGE,
|
|
lambda state: logic.terran_common_unit(state)
|
|
and logic.terran_early_tech(state),
|
|
flags=LocationFlag.SPEEDRUN,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6000,
|
|
LocationType.VICTORY,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_P.mission_name,
|
|
"Gather Minerals",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6001,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_P.mission_name,
|
|
"South Zealot Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6002,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.protoss_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_P.mission_name,
|
|
"East Zealot Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6003,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.protoss_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_P.mission_name,
|
|
"West Zealot Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6004,
|
|
LocationType.VANILLA,
|
|
lambda state: adv_tactics or logic.protoss_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_P.mission_name,
|
|
"Nexus",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6005,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_P.mission_name,
|
|
"Pylon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6006,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_P.mission_name,
|
|
"Gas Turrets",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6007,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or logic.protoss_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAB_RAT_P.mission_name,
|
|
"Win In Under 10 Minutes",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6008,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_common_unit,
|
|
flags=LocationFlag.SPEEDRUN,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6300,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_basic_anti_air(state)
|
|
and logic.terran_defense_rating(state, False, False) >= 3
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS_T.mission_name,
|
|
"Right Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6301,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_basic_anti_air(state)
|
|
and logic.terran_defense_rating(state, False, False) >= 3
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS_T.mission_name,
|
|
"Center Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6302,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_basic_anti_air(state)
|
|
and logic.terran_defense_rating(state, False, False) >= 3
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS_T.mission_name,
|
|
"Left Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6303,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_basic_anti_air(state)
|
|
and logic.terran_defense_rating(state, False, False) >= 3
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS_T.mission_name,
|
|
"Hold Out Finished",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6304,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_basic_anti_air(state)
|
|
and logic.terran_defense_rating(state, False, False) >= 3
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS_T.mission_name,
|
|
"Kill All Buildings Before Reinforcements",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6305,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_competent_comp(state)
|
|
and logic.terran_defense_rating(state, False, False) >= 3
|
|
and logic.terran_power_rating(state) >= 5
|
|
),
|
|
flags=LocationFlag.SPEEDRUN,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6400,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_basic_anti_air(state)
|
|
and logic.protoss_defense_rating(state, False) >= 3
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS_P.mission_name,
|
|
"Right Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6401,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_basic_anti_air(state)
|
|
and logic.protoss_defense_rating(state, False) >= 3
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS_P.mission_name,
|
|
"Center Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6402,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_basic_anti_air(state)
|
|
and logic.protoss_defense_rating(state, False) >= 3
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS_P.mission_name,
|
|
"Left Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6403,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_basic_anti_air(state)
|
|
and logic.protoss_defense_rating(state, False) >= 3
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS_P.mission_name,
|
|
"Hold Out Finished",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6404,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_basic_anti_air(state)
|
|
and logic.protoss_defense_rating(state, False) >= 3
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RENDEZVOUS_P.mission_name,
|
|
"Kill All Buildings Before Reinforcements",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6405,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.protoss_competent_comp(state)
|
|
and logic.protoss_defense_rating(state, False) >= 3
|
|
and logic.protoss_power_rating(state) >= 5
|
|
),
|
|
flags=LocationFlag.SPEEDRUN,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6500,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_T.mission_name,
|
|
"First Ursadon Matriarch",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6501,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_T.mission_name,
|
|
"North Ursadon Matriarch",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6502,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_moderate_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_T.mission_name,
|
|
"West Ursadon Matriarch",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6503,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_moderate_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_T.mission_name,
|
|
"Lost Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6504,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_T.mission_name,
|
|
"Northeast Psi-link Spire",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6505,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.terran_common_unit(state) or adv_tactics,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_T.mission_name,
|
|
"Northwest Psi-link Spire",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6506,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_moderate_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_T.mission_name,
|
|
"Southwest Psi-link Spire",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6507,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_T.mission_name,
|
|
"Nafash",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6508,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_moderate_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_T.mission_name,
|
|
"20 Unfrozen Structures",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6509,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6600,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_armor_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_P.mission_name,
|
|
"First Ursadon Matriarch",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6601,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_P.mission_name,
|
|
"North Ursadon Matriarch",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6602,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit_basic_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_P.mission_name,
|
|
"West Ursadon Matriarch",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6603,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit_basic_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_P.mission_name,
|
|
"Lost Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6604,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_P.mission_name,
|
|
"Northeast Psi-link Spire",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6605,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.protoss_common_unit(state) or adv_tactics,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_P.mission_name,
|
|
"Northwest Psi-link Spire",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6606,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state) and logic.protoss_basic_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_P.mission_name,
|
|
"Southwest Psi-link Spire",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6607,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_armor_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_P.mission_name,
|
|
"Nafash",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6608,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state) and logic.protoss_basic_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARVEST_OF_SCREAMS_P.mission_name,
|
|
"20 Unfrozen Structures",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6609,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state) and logic.protoss_basic_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6700,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_T.mission_name,
|
|
"East Stasis Chamber",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6701,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_T.mission_name,
|
|
"Center Stasis Chamber",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6702,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.terran_common_unit(state) or adv_tactics,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_T.mission_name,
|
|
"West Stasis Chamber",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6703,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_T.mission_name,
|
|
"Destroy 4 Shuttles",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6704,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_T.mission_name,
|
|
"Frozen Expansion",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6705,
|
|
LocationType.EXTRA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_T.mission_name,
|
|
"Southwest Frozen Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6706,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_T.mission_name,
|
|
"Southeast Frozen Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6707,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.terran_common_unit(state) or adv_tactics,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_T.mission_name,
|
|
"West Frozen Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6708,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_T.mission_name,
|
|
"East Frozen Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6709,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.terran_common_unit(state)
|
|
and logic.terran_competent_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_T.mission_name,
|
|
"West Launch Bay",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6710,
|
|
LocationType.CHALLENGE,
|
|
lambda state: logic.terran_beats_protoss_deathball(state)
|
|
and logic.terran_common_unit(state),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_T.mission_name,
|
|
"Center Launch Bay",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6711,
|
|
LocationType.CHALLENGE,
|
|
lambda state: logic.terran_beats_protoss_deathball(state)
|
|
and logic.terran_competent_ground_to_air(state)
|
|
and logic.terran_common_unit(state),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_T.mission_name,
|
|
"East Launch Bay",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6712,
|
|
LocationType.CHALLENGE,
|
|
lambda state: logic.terran_beats_protoss_deathball(state)
|
|
and logic.terran_competent_ground_to_air(state)
|
|
and logic.terran_common_unit(state),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6800,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_armor_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_P.mission_name,
|
|
"East Stasis Chamber",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6801,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_armor_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_P.mission_name,
|
|
"Center Stasis Chamber",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6802,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.protoss_common_unit(state) or adv_tactics,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_P.mission_name,
|
|
"West Stasis Chamber",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6803,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_armor_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_P.mission_name,
|
|
"Destroy 4 Shuttles",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6804,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_armor_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_P.mission_name,
|
|
"Frozen Expansion",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6805,
|
|
LocationType.EXTRA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_P.mission_name,
|
|
"Southwest Frozen Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6806,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_P.mission_name,
|
|
"Southeast Frozen Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6807,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.protoss_common_unit(state) or adv_tactics,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_P.mission_name,
|
|
"West Frozen Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6808,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_armor_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_P.mission_name,
|
|
"East Frozen Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6809,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_armor_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_P.mission_name,
|
|
"West Launch Bay",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6810,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_P.mission_name,
|
|
"Center Launch Bay",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6811,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SHOOT_THE_MESSENGER_P.mission_name,
|
|
"East Launch Bay",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 6812,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7100,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.terran_common_unit(state)
|
|
and (logic.terran_basic_anti_air(state) or adv_tactics),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_T.mission_name,
|
|
"Center Infested Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7101,
|
|
LocationType.VANILLA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_T.mission_name,
|
|
"North Infested Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7102,
|
|
LocationType.VANILLA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_T.mission_name,
|
|
"Repel Zagara",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7103,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_T.mission_name,
|
|
"Close Bunker",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7104,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_T.mission_name,
|
|
"South Bunker",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7105,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or logic.terran_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_T.mission_name,
|
|
"Southwest Bunker",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7106,
|
|
LocationType.EXTRA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_T.mission_name,
|
|
"Southeast Bunker",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7107,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.terran_common_unit(state)
|
|
and (logic.terran_basic_anti_air(state) or adv_tactics),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_T.mission_name,
|
|
"North Bunker",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7108,
|
|
LocationType.EXTRA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_T.mission_name,
|
|
"Northeast Bunker",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7109,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.terran_common_unit(state)
|
|
and (logic.terran_basic_anti_air(state) or adv_tactics),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_T.mission_name,
|
|
"Win Without 100 Eggs",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7110,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7200,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and (adv_tactics or logic.protoss_basic_anti_air(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_P.mission_name,
|
|
"Center Infested Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7201,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_P.mission_name,
|
|
"North Infested Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7202,
|
|
LocationType.VANILLA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_P.mission_name,
|
|
"Repel Zagara",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7203,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_P.mission_name,
|
|
"Close Templar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7204,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_P.mission_name,
|
|
"South Templar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7205,
|
|
LocationType.EXTRA,
|
|
lambda state: adv_tactics or logic.protoss_common_unit(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_P.mission_name,
|
|
"Southwest Templar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7206,
|
|
LocationType.EXTRA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_P.mission_name,
|
|
"Southeast Templar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7207,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and (adv_tactics or logic.protoss_basic_anti_air(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_P.mission_name,
|
|
"North Templar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7208,
|
|
LocationType.EXTRA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_P.mission_name,
|
|
"Northeast Templar",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7209,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.protoss_common_unit(state)
|
|
and (adv_tactics or logic.protoss_basic_anti_air(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DOMINATION_P.mission_name,
|
|
"Win Without 100 Eggs",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7210,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7300,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_T.mission_name,
|
|
"West Biomass",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7301,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_T.mission_name,
|
|
"North Biomass",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7302,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_T.mission_name,
|
|
"South Biomass",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7303,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_T.mission_name,
|
|
"Destroy 3 Gorgons",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7304,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_T.mission_name,
|
|
"Close Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7305,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_T.mission_name,
|
|
"South Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7306,
|
|
LocationType.EXTRA,
|
|
logic.terran_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_T.mission_name,
|
|
"North Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7307,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_T.mission_name,
|
|
"West Medic Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7308,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_T.mission_name,
|
|
"East Medic Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7309,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_T.mission_name,
|
|
"South Orbital Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7310,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_T.mission_name,
|
|
"Northwest Orbital Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7311,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_T.mission_name,
|
|
"Southeast Orbital Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7312,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7400,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state) and logic.protoss_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_P.mission_name,
|
|
"West Biomass",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7401,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_P.mission_name,
|
|
"North Biomass",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7402,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state) and logic.protoss_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_P.mission_name,
|
|
"South Biomass",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7403,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state) and logic.protoss_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_P.mission_name,
|
|
"Destroy 3 Gorgons",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7404,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state) and logic.protoss_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_P.mission_name,
|
|
"Close Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7405,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_P.mission_name,
|
|
"South Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7406,
|
|
LocationType.EXTRA,
|
|
logic.protoss_common_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_P.mission_name,
|
|
"North Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7407,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state) and logic.protoss_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_P.mission_name,
|
|
"West Energizer Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7408,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state) and logic.protoss_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_P.mission_name,
|
|
"East Energizer Rescue",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7409,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state) and logic.protoss_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_P.mission_name,
|
|
"South Orbital Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7410,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state) and logic.protoss_competent_comp(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_P.mission_name,
|
|
"Northwest Orbital Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7411,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state) and logic.protoss_competent_comp(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FIRE_IN_THE_SKY_P.mission_name,
|
|
"Southeast Orbital Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7412,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state) and logic.protoss_competent_comp(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7500,
|
|
LocationType.VICTORY,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_T.mission_name,
|
|
"East Science Lab",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7501,
|
|
LocationType.VANILLA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_T.mission_name,
|
|
"North Science Lab",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7502,
|
|
LocationType.VANILLA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_T.mission_name,
|
|
"Get Nuked",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7503,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_T.mission_name,
|
|
"Entrance Gate",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7504,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_T.mission_name,
|
|
"Citadel Gate",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7505,
|
|
LocationType.EXTRA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_T.mission_name,
|
|
"South Expansion",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7506,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_T.mission_name,
|
|
"Rich Mineral Expansion",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7507,
|
|
LocationType.EXTRA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7600,
|
|
LocationType.VICTORY,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_P.mission_name,
|
|
"East Science Lab",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7601,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_P.mission_name,
|
|
"North Science Lab",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7602,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_P.mission_name,
|
|
"Get Nuked",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7603,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_P.mission_name,
|
|
"Entrance Gate",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7604,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_P.mission_name,
|
|
"Citadel Gate",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7605,
|
|
LocationType.EXTRA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_P.mission_name,
|
|
"South Expansion",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7606,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.OLD_SOLDIERS_P.mission_name,
|
|
"Rich Mineral Expansion",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7607,
|
|
LocationType.EXTRA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7700,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_competent_comp(state) and logic.terran_common_unit(state)
|
|
),
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_T.mission_name,
|
|
"Center Essence Pool",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7701,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_T.mission_name,
|
|
"East Essence Pool",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7702,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and (
|
|
adv_tactics
|
|
and logic.terran_basic_anti_air(state)
|
|
or logic.terran_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_T.mission_name,
|
|
"South Essence Pool",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7703,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and (
|
|
adv_tactics
|
|
and logic.terran_basic_anti_air(state)
|
|
or logic.terran_competent_anti_air(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_T.mission_name,
|
|
"Finish Feeding",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7704,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_competent_comp(state) and logic.terran_common_unit(state)
|
|
),
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_T.mission_name,
|
|
"South Proxy Primal Hive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7705,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_competent_comp(state) and logic.terran_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_T.mission_name,
|
|
"East Proxy Primal Hive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7706,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_competent_comp(state) and logic.terran_common_unit(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_T.mission_name,
|
|
"South Main Primal Hive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7707,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_competent_comp(state) and logic.terran_common_unit(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_T.mission_name,
|
|
"East Main Primal Hive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7708,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_competent_comp(state) and logic.terran_common_unit(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_T.mission_name,
|
|
"Flawless",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7709,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_competent_comp(state)
|
|
and logic.terran_common_unit(state)
|
|
and (
|
|
# Fast unit
|
|
state.has_any(
|
|
(
|
|
item_names.BANSHEE,
|
|
item_names.VULTURE,
|
|
item_names.DIAMONDBACK,
|
|
item_names.WARHOUND,
|
|
item_names.CYCLONE,
|
|
),
|
|
player,
|
|
)
|
|
or state.has_all(
|
|
(item_names.VALKYRIE, item_names.VALKYRIE_FLECHETTE_MISSILES),
|
|
player,
|
|
)
|
|
or state.has_all(
|
|
(
|
|
item_names.WRAITH,
|
|
item_names.WRAITH_ADVANCED_LASER_TECHNOLOGY,
|
|
),
|
|
player,
|
|
)
|
|
)
|
|
),
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7800,
|
|
LocationType.VICTORY,
|
|
logic.protoss_competent_comp,
|
|
hard_rule=logic.protoss_any_anti_air_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_P.mission_name,
|
|
"Center Essence Pool",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7801,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_P.mission_name,
|
|
"East Essence Pool",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7802,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_light_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_P.mission_name,
|
|
"South Essence Pool",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7803,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_anti_light_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_P.mission_name,
|
|
"Finish Feeding",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7804,
|
|
LocationType.EXTRA,
|
|
logic.protoss_competent_comp,
|
|
hard_rule=logic.protoss_any_anti_air_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_P.mission_name,
|
|
"South Proxy Primal Hive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7805,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_P.mission_name,
|
|
"East Proxy Primal Hive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7806,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_P.mission_name,
|
|
"South Main Primal Hive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7807,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
hard_rule=logic.protoss_any_anti_air_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_P.mission_name,
|
|
"East Main Primal Hive",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7808,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_competent_comp,
|
|
flags=LocationFlag.BASEBUST,
|
|
hard_rule=logic.protoss_any_anti_air_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.WAKING_THE_ANCIENT_P.mission_name,
|
|
"Flawless",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7809,
|
|
LocationType.CHALLENGE,
|
|
logic.protoss_competent_comp,
|
|
flags=LocationFlag.PREVENTATIVE,
|
|
hard_rule=logic.protoss_any_anti_air_unit,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7900,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_defense_rating(state, True, True) >= 7
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE_T.mission_name,
|
|
"Tyrannozor",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7901,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_defense_rating(state, True, True) >= 7
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE_T.mission_name,
|
|
"Reach the Pool",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7902,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE_T.mission_name,
|
|
"15 Minutes Remaining",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7903,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_defense_rating(state, True, True) >= 7
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE_T.mission_name,
|
|
"5 Minutes Remaining",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7904,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_defense_rating(state, True, True) >= 7
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE_T.mission_name,
|
|
"Pincer Attack",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7905,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_defense_rating(state, True, True) >= 7
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE_T.mission_name,
|
|
"Yagdra Claims Brakk's Pack",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 7906,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_defense_rating(state, True, True) >= 7
|
|
and logic.terran_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8000,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_defense_rating(state, True) >= 7
|
|
and logic.protoss_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE_P.mission_name,
|
|
"Tyrannozor",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8001,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_defense_rating(state, True) >= 7
|
|
and logic.protoss_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE_P.mission_name,
|
|
"Reach the Pool",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8002,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE_P.mission_name,
|
|
"15 Minutes Remaining",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8003,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_defense_rating(state, True) >= 7
|
|
and logic.protoss_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE_P.mission_name,
|
|
"5 Minutes Remaining",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8004,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_defense_rating(state, True) >= 7
|
|
and logic.protoss_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE_P.mission_name,
|
|
"Pincer Attack",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8005,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_defense_rating(state, True) >= 7
|
|
and logic.protoss_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_CRUCIBLE_P.mission_name,
|
|
"Yagdra Claims Brakk's Pack",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8006,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_defense_rating(state, True) >= 7
|
|
and logic.protoss_competent_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8300,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_T.mission_name,
|
|
"East Science Facility",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8301,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_moderate_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_T.mission_name,
|
|
"Center Science Facility",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8302,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_T.mission_name,
|
|
"West Science Facility",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8303,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_T.mission_name,
|
|
"First Intro Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8304,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_T.mission_name,
|
|
"Second Intro Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8305,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_T.mission_name,
|
|
"Base Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8306,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_T.mission_name,
|
|
"East Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8307,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_moderate_anti_air(state)
|
|
and (adv_tactics or logic.terran_infested_garrison_claimer(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_T.mission_name,
|
|
"Mid Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8308,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_moderate_anti_air(state)
|
|
and (adv_tactics or logic.terran_infested_garrison_claimer(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_T.mission_name,
|
|
"North Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8309,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_competent_comp(state)
|
|
and (adv_tactics or logic.terran_infested_garrison_claimer(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_T.mission_name,
|
|
"Close Southwest Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8310,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_competent_comp(state)
|
|
and (adv_tactics or logic.terran_infested_garrison_claimer(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_T.mission_name,
|
|
"Far Southwest Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8311,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_competent_comp(state)
|
|
and (adv_tactics or logic.terran_infested_garrison_claimer(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8400,
|
|
LocationType.VICTORY,
|
|
logic.protoss_competent_comp,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_P.mission_name,
|
|
"East Science Facility",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8401,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state) and logic.protoss_basic_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_P.mission_name,
|
|
"Center Science Facility",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8402,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_P.mission_name,
|
|
"West Science Facility",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8403,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_P.mission_name,
|
|
"First Intro Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8404,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_P.mission_name,
|
|
"Second Intro Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8405,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_P.mission_name,
|
|
"Base Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8406,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_P.mission_name,
|
|
"East Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8407,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_basic_anti_air(state)
|
|
and (adv_tactics or logic.protoss_infested_garrison_claimer(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_P.mission_name,
|
|
"Mid Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8408,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_basic_anti_air(state)
|
|
and (adv_tactics or logic.protoss_infested_garrison_claimer(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_P.mission_name,
|
|
"North Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8409,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_common_unit(state)
|
|
and logic.protoss_competent_anti_air(state)
|
|
and (adv_tactics or logic.protoss_infested_garrison_claimer(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_P.mission_name,
|
|
"Close Southwest Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8410,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_competent_comp(state)
|
|
and (adv_tactics or logic.protoss_infested_garrison_claimer(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.INFESTED_P.mission_name,
|
|
"Far Southwest Garrison",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8411,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.protoss_competent_comp(state)
|
|
and (adv_tactics or logic.protoss_infested_garrison_claimer(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8500,
|
|
LocationType.VICTORY,
|
|
logic.terran_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_T.mission_name,
|
|
"North War Bot",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8501,
|
|
LocationType.VANILLA,
|
|
logic.terran_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_T.mission_name,
|
|
"South War Bot",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8502,
|
|
LocationType.VANILLA,
|
|
logic.terran_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_T.mission_name,
|
|
"Kill 1 Hybrid",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8503,
|
|
LocationType.EXTRA,
|
|
logic.terran_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_T.mission_name,
|
|
"Kill 2 Hybrid",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8504,
|
|
LocationType.EXTRA,
|
|
logic.terran_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_T.mission_name,
|
|
"Kill 3 Hybrid",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8505,
|
|
LocationType.EXTRA,
|
|
logic.terran_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_T.mission_name,
|
|
"Kill 4 Hybrid",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8506,
|
|
LocationType.EXTRA,
|
|
logic.terran_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_T.mission_name,
|
|
"Kill 5 Hybrid",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8507,
|
|
LocationType.EXTRA,
|
|
logic.terran_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_T.mission_name,
|
|
"Kill 6 Hybrid",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8508,
|
|
LocationType.EXTRA,
|
|
logic.terran_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_T.mission_name,
|
|
"Kill 7 Hybrid",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8509,
|
|
LocationType.EXTRA,
|
|
logic.terran_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8600,
|
|
LocationType.VICTORY,
|
|
logic.protoss_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_P.mission_name,
|
|
"North Stone Zealot",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8601,
|
|
LocationType.VANILLA,
|
|
logic.protoss_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_P.mission_name,
|
|
"South Stone Zealot",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8602,
|
|
LocationType.VANILLA,
|
|
logic.protoss_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_P.mission_name,
|
|
"Kill 1 Hybrid",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8603,
|
|
LocationType.EXTRA,
|
|
logic.protoss_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_P.mission_name,
|
|
"Kill 2 Hybrid",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8604,
|
|
LocationType.EXTRA,
|
|
logic.protoss_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_P.mission_name,
|
|
"Kill 3 Hybrid",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8605,
|
|
LocationType.EXTRA,
|
|
logic.protoss_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_P.mission_name,
|
|
"Kill 4 Hybrid",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8606,
|
|
LocationType.EXTRA,
|
|
logic.protoss_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_P.mission_name,
|
|
"Kill 5 Hybrid",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8607,
|
|
LocationType.EXTRA,
|
|
logic.protoss_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_P.mission_name,
|
|
"Kill 6 Hybrid",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8608,
|
|
LocationType.EXTRA,
|
|
logic.protoss_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HAND_OF_DARKNESS_P.mission_name,
|
|
"Kill 7 Hybrid",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8609,
|
|
LocationType.EXTRA,
|
|
logic.protoss_hand_of_darkness_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8700,
|
|
LocationType.VICTORY,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_T.mission_name,
|
|
"Northwest Crystal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8701,
|
|
LocationType.VANILLA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_T.mission_name,
|
|
"Northeast Crystal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8702,
|
|
LocationType.VANILLA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_T.mission_name,
|
|
"South Crystal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8703,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_T.mission_name,
|
|
"Base Established",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8704,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_T.mission_name,
|
|
"Close Temple",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8705,
|
|
LocationType.EXTRA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_T.mission_name,
|
|
"Mid Temple",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8706,
|
|
LocationType.EXTRA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_T.mission_name,
|
|
"Southeast Temple",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8707,
|
|
LocationType.EXTRA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_T.mission_name,
|
|
"Northeast Temple",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8708,
|
|
LocationType.EXTRA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_T.mission_name,
|
|
"Northwest Temple",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8709,
|
|
LocationType.EXTRA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8800,
|
|
LocationType.VICTORY,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_P.mission_name,
|
|
"Northwest Crystal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8801,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_P.mission_name,
|
|
"Northeast Crystal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8802,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_P.mission_name,
|
|
"South Crystal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8803,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_P.mission_name,
|
|
"Base Established",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8804,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_P.mission_name,
|
|
"Close Temple",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8805,
|
|
LocationType.EXTRA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_P.mission_name,
|
|
"Mid Temple",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8806,
|
|
LocationType.EXTRA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_P.mission_name,
|
|
"Southeast Temple",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8807,
|
|
LocationType.EXTRA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_P.mission_name,
|
|
"Northeast Temple",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8808,
|
|
LocationType.EXTRA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PHANTOMS_OF_THE_VOID_P.mission_name,
|
|
"Northwest Temple",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 8809,
|
|
LocationType.EXTRA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9300,
|
|
LocationType.VICTORY,
|
|
logic.terran_planetfall_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_T.mission_name,
|
|
"East Gate",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9301,
|
|
LocationType.VANILLA,
|
|
logic.terran_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_T.mission_name,
|
|
"Northwest Gate",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9302,
|
|
LocationType.VANILLA,
|
|
logic.terran_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_T.mission_name,
|
|
"North Gate",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9303,
|
|
LocationType.VANILLA,
|
|
logic.terran_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_T.mission_name,
|
|
"1 Laser Drill Deployed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9304,
|
|
LocationType.EXTRA,
|
|
logic.terran_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_T.mission_name,
|
|
"2 Laser Drills Deployed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9305,
|
|
LocationType.EXTRA,
|
|
logic.terran_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_T.mission_name,
|
|
"3 Laser Drills Deployed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9306,
|
|
LocationType.EXTRA,
|
|
logic.terran_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_T.mission_name,
|
|
"4 Laser Drills Deployed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9307,
|
|
LocationType.EXTRA,
|
|
logic.terran_planetfall_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_T.mission_name,
|
|
"5 Laser Drills Deployed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9308,
|
|
LocationType.EXTRA,
|
|
logic.terran_planetfall_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_T.mission_name,
|
|
"Sons of Korhal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9309,
|
|
LocationType.EXTRA,
|
|
logic.terran_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_T.mission_name,
|
|
"Night Wolves",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9310,
|
|
LocationType.EXTRA,
|
|
logic.terran_planetfall_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_T.mission_name,
|
|
"West Expansion",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9311,
|
|
LocationType.EXTRA,
|
|
logic.terran_planetfall_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_T.mission_name,
|
|
"Mid Expansion",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9312,
|
|
LocationType.EXTRA,
|
|
logic.terran_planetfall_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9400,
|
|
LocationType.VICTORY,
|
|
logic.protoss_planetfall_requirement,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_P.mission_name,
|
|
"East Gate",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9401,
|
|
LocationType.VANILLA,
|
|
logic.protoss_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_P.mission_name,
|
|
"Northwest Gate",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9402,
|
|
LocationType.VANILLA,
|
|
logic.protoss_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_P.mission_name,
|
|
"North Gate",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9403,
|
|
LocationType.VANILLA,
|
|
logic.protoss_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_P.mission_name,
|
|
"1 Particle Cannon Deployed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9404,
|
|
LocationType.EXTRA,
|
|
logic.protoss_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_P.mission_name,
|
|
"2 Particle Cannons Deployed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9405,
|
|
LocationType.EXTRA,
|
|
logic.protoss_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_P.mission_name,
|
|
"3 Particle Cannons Deployed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9406,
|
|
LocationType.EXTRA,
|
|
logic.protoss_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_P.mission_name,
|
|
"4 Particle Cannons Deployed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9407,
|
|
LocationType.EXTRA,
|
|
logic.protoss_planetfall_requirement,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_P.mission_name,
|
|
"5 Particle Cannons Deployed",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9408,
|
|
LocationType.EXTRA,
|
|
logic.protoss_planetfall_requirement,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_P.mission_name,
|
|
"Sons of Korhal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9409,
|
|
LocationType.EXTRA,
|
|
logic.protoss_planetfall_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_P.mission_name,
|
|
"Night Wolves",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9410,
|
|
LocationType.EXTRA,
|
|
logic.protoss_planetfall_requirement,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_P.mission_name,
|
|
"West Expansion",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9411,
|
|
LocationType.EXTRA,
|
|
logic.protoss_planetfall_requirement,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PLANETFALL_P.mission_name,
|
|
"Mid Expansion",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9412,
|
|
LocationType.EXTRA,
|
|
logic.protoss_planetfall_requirement,
|
|
hard_rule=logic.protoss_any_anti_air_unit_or_soa_any_protoss,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9500,
|
|
LocationType.VICTORY,
|
|
logic.terran_base_trasher,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE_T.mission_name,
|
|
"First Power Link",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9501,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE_T.mission_name,
|
|
"Second Power Link",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9502,
|
|
LocationType.VANILLA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE_T.mission_name,
|
|
"Third Power Link",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9503,
|
|
LocationType.VANILLA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE_T.mission_name,
|
|
"Expansion Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9504,
|
|
LocationType.EXTRA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE_T.mission_name,
|
|
"Main Path Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9505,
|
|
LocationType.EXTRA,
|
|
logic.terran_base_trasher,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9600,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.protoss_deathball(state)
|
|
or (adv_tactics and logic.protoss_competent_comp(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE_P.mission_name,
|
|
"First Power Link",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9601,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE_P.mission_name,
|
|
"Second Power Link",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9602,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE_P.mission_name,
|
|
"Third Power Link",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9603,
|
|
LocationType.VANILLA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE_P.mission_name,
|
|
"Expansion Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9604,
|
|
LocationType.EXTRA,
|
|
logic.protoss_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DEATH_FROM_ABOVE_P.mission_name,
|
|
"Main Path Command Center",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9605,
|
|
LocationType.EXTRA,
|
|
lambda state: logic.protoss_deathball(state)
|
|
or (adv_tactics and logic.protoss_competent_comp(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9700,
|
|
LocationType.VICTORY,
|
|
logic.terran_the_reckoning_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING_T.mission_name,
|
|
"South Lane",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9701,
|
|
LocationType.VANILLA,
|
|
logic.terran_the_reckoning_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING_T.mission_name,
|
|
"North Lane",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9702,
|
|
LocationType.VANILLA,
|
|
logic.terran_the_reckoning_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING_T.mission_name,
|
|
"East Lane",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9703,
|
|
LocationType.VANILLA,
|
|
logic.terran_the_reckoning_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING_T.mission_name,
|
|
"Odin",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9704,
|
|
LocationType.EXTRA,
|
|
logic.terran_the_reckoning_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING_T.mission_name,
|
|
"Trash the Odin Early",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9705,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.terran_the_reckoning_requirement(state)
|
|
and logic.terran_power_rating(state) >= 10
|
|
),
|
|
flags=LocationFlag.SPEEDRUN,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING_P.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9800,
|
|
LocationType.VICTORY,
|
|
logic.protoss_the_reckoning_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING_P.mission_name,
|
|
"South Lane",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9801,
|
|
LocationType.VANILLA,
|
|
logic.protoss_the_reckoning_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING_P.mission_name,
|
|
"North Lane",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9802,
|
|
LocationType.VANILLA,
|
|
logic.protoss_the_reckoning_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING_P.mission_name,
|
|
"East Lane",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9803,
|
|
LocationType.VANILLA,
|
|
logic.protoss_the_reckoning_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING_P.mission_name,
|
|
"Odin",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9804,
|
|
LocationType.EXTRA,
|
|
logic.protoss_the_reckoning_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_RECKONING_P.mission_name,
|
|
"Trash the Odin Early",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9805,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.protoss_the_reckoning_requirement(state)
|
|
and (
|
|
logic.protoss_fleet(state)
|
|
or logic.protoss_power_rating(state) >= 10
|
|
)
|
|
),
|
|
flags=LocationFlag.SPEEDRUN,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9900,
|
|
LocationType.VICTORY,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS_T.mission_name,
|
|
"First Prisoner Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9901,
|
|
LocationType.VANILLA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS_T.mission_name,
|
|
"Second Prisoner Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9902,
|
|
LocationType.VANILLA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS_T.mission_name,
|
|
"First Pylon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9903,
|
|
LocationType.VANILLA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS_T.mission_name,
|
|
"Second Pylon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9904,
|
|
LocationType.VANILLA,
|
|
logic.terran_competent_comp,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS_T.mission_name,
|
|
"Zerg Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 9905,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.terran_competent_comp(state)
|
|
and logic.terran_base_trasher(state)
|
|
and logic.terran_power_rating(state) >= 6
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10000,
|
|
LocationType.VICTORY,
|
|
lambda state: logic.zerg_competent_comp(state)
|
|
and logic.zerg_moderate_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS_Z.mission_name,
|
|
"First Prisoner Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10001,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.zerg_competent_comp(state)
|
|
and logic.zerg_moderate_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS_Z.mission_name,
|
|
"Second Prisoner Group",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10002,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.zerg_competent_comp(state)
|
|
and logic.zerg_moderate_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS_Z.mission_name,
|
|
"First Pylon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10003,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.zerg_competent_comp(state)
|
|
and logic.zerg_moderate_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS_Z.mission_name,
|
|
"Second Pylon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10004,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.zerg_competent_comp(state)
|
|
and logic.zerg_moderate_anti_air(state),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.DARK_WHISPERS_Z.mission_name,
|
|
"Zerg Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10005,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_moderate_anti_air(state)
|
|
and logic.zerg_base_buster(state)
|
|
and logic.zerg_power_rating(state) >= 6
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOSTS_IN_THE_FOG_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10100,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_beats_protoss_deathball(state)
|
|
and logic.terran_mineral_dump(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOSTS_IN_THE_FOG_T.mission_name,
|
|
"South Rock Formation",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10101,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_beats_protoss_deathball(state)
|
|
and logic.terran_mineral_dump(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOSTS_IN_THE_FOG_T.mission_name,
|
|
"West Rock Formation",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10102,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_beats_protoss_deathball(state)
|
|
and logic.terran_mineral_dump(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOSTS_IN_THE_FOG_T.mission_name,
|
|
"East Rock Formation",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10103,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_beats_protoss_deathball(state)
|
|
and logic.terran_mineral_dump(state)
|
|
and logic.terran_can_grab_ghosts_in_the_fog_east_rock_formation(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOSTS_IN_THE_FOG_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10200,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_competent_anti_air(state)
|
|
and logic.zerg_mineral_dump(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOSTS_IN_THE_FOG_Z.mission_name,
|
|
"South Rock Formation",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10201,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_competent_anti_air(state)
|
|
and logic.zerg_mineral_dump(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOSTS_IN_THE_FOG_Z.mission_name,
|
|
"West Rock Formation",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10202,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_competent_anti_air(state)
|
|
and logic.zerg_mineral_dump(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.GHOSTS_IN_THE_FOG_Z.mission_name,
|
|
"East Rock Formation",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10203,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_competent_anti_air(state)
|
|
and logic.zerg_mineral_dump(state)
|
|
and logic.zerg_can_grab_ghosts_in_the_fog_east_rock_formation(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10700,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and (adv_tactics or logic.terran_moderate_anti_air(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW_T.mission_name,
|
|
"Close Pylon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10701,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW_T.mission_name,
|
|
"East Pylon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10702,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and (
|
|
adv_tactics
|
|
or (
|
|
logic.terran_moderate_anti_air(state)
|
|
and logic.terran_any_air_unit(state)
|
|
)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW_T.mission_name,
|
|
"West Pylon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10703,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and (adv_tactics or logic.terran_moderate_anti_air(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW_T.mission_name,
|
|
"Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10704,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW_T.mission_name,
|
|
"Templar Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10705,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and (adv_tactics or logic.terran_moderate_anti_air(state))
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10800,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state) and logic.zerg_moderate_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW_Z.mission_name,
|
|
"Close Pylon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10801,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW_Z.mission_name,
|
|
"East Pylon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10802,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state) and logic.zerg_moderate_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW_Z.mission_name,
|
|
"West Pylon",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10803,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state) and logic.zerg_moderate_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW_Z.mission_name,
|
|
"Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10804,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_GROWING_SHADOW_Z.mission_name,
|
|
"Templar Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10805,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_common_unit(state) and logic.zerg_moderate_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10900,
|
|
LocationType.VICTORY,
|
|
logic.terran_spear_of_adun_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_T.mission_name,
|
|
"Factory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10901,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_T.mission_name,
|
|
"Armory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10902,
|
|
LocationType.VANILLA,
|
|
logic.terran_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_T.mission_name,
|
|
"Starport",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10903,
|
|
LocationType.VANILLA,
|
|
logic.terran_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_T.mission_name,
|
|
"North Power Cell",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10904,
|
|
LocationType.EXTRA,
|
|
logic.terran_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_T.mission_name,
|
|
"East Power Cell",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10905,
|
|
LocationType.EXTRA,
|
|
logic.terran_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_T.mission_name,
|
|
"South Power Cell",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10906,
|
|
LocationType.EXTRA,
|
|
logic.terran_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_T.mission_name,
|
|
"Southeast Power Cell",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 10907,
|
|
LocationType.EXTRA,
|
|
logic.terran_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11000,
|
|
LocationType.VICTORY,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_Z.mission_name,
|
|
"Baneling Nest",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11001,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_Z.mission_name,
|
|
"Roach Warren",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11002,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_spear_of_adun_requirement(state)
|
|
and logic.spread_creep(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_Z.mission_name,
|
|
"Infestation Pit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11003,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_spear_of_adun_requirement(state)
|
|
and logic.spread_creep(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_Z.mission_name,
|
|
"North Power Cell",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11004,
|
|
LocationType.EXTRA,
|
|
logic.zerg_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_Z.mission_name,
|
|
"East Power Cell",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11005,
|
|
LocationType.EXTRA,
|
|
logic.zerg_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_Z.mission_name,
|
|
"South Power Cell",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11006,
|
|
LocationType.EXTRA,
|
|
logic.zerg_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_SPEAR_OF_ADUN_Z.mission_name,
|
|
"Southeast Power Cell",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11007,
|
|
LocationType.EXTRA,
|
|
logic.zerg_spear_of_adun_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11100,
|
|
LocationType.VICTORY,
|
|
logic.terran_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_T.mission_name,
|
|
"Mid EMP Scrambler",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11101,
|
|
LocationType.VANILLA,
|
|
logic.terran_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_T.mission_name,
|
|
"Southeast EMP Scrambler",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11102,
|
|
LocationType.VANILLA,
|
|
logic.terran_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_T.mission_name,
|
|
"North EMP Scrambler",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11103,
|
|
LocationType.VANILLA,
|
|
logic.terran_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_T.mission_name,
|
|
"Mid Stabilizer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11104,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_T.mission_name,
|
|
"Southwest Stabilizer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11105,
|
|
LocationType.EXTRA,
|
|
logic.terran_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_T.mission_name,
|
|
"Northwest Stabilizer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11106,
|
|
LocationType.EXTRA,
|
|
logic.terran_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_T.mission_name,
|
|
"Northeast Stabilizer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11107,
|
|
LocationType.EXTRA,
|
|
logic.terran_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_T.mission_name,
|
|
"Southeast Stabilizer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11108,
|
|
LocationType.EXTRA,
|
|
logic.terran_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_T.mission_name,
|
|
"West Raynor Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11109,
|
|
LocationType.EXTRA,
|
|
logic.terran_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_T.mission_name,
|
|
"East Raynor Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11110,
|
|
LocationType.EXTRA,
|
|
logic.terran_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11200,
|
|
LocationType.VICTORY,
|
|
logic.zerg_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_Z.mission_name,
|
|
"Mid EMP Scrambler",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11201,
|
|
LocationType.VANILLA,
|
|
logic.zerg_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_Z.mission_name,
|
|
"Southeast EMP Scrambler",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11202,
|
|
LocationType.VANILLA,
|
|
logic.zerg_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_Z.mission_name,
|
|
"North EMP Scrambler",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11203,
|
|
LocationType.VANILLA,
|
|
logic.zerg_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_Z.mission_name,
|
|
"Mid Stabilizer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11204,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_Z.mission_name,
|
|
"Southwest Stabilizer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11205,
|
|
LocationType.EXTRA,
|
|
logic.zerg_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_Z.mission_name,
|
|
"Northwest Stabilizer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11206,
|
|
LocationType.EXTRA,
|
|
logic.zerg_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_Z.mission_name,
|
|
"Northeast Stabilizer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11207,
|
|
LocationType.EXTRA,
|
|
logic.zerg_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_Z.mission_name,
|
|
"Southeast Stabilizer",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11208,
|
|
LocationType.EXTRA,
|
|
logic.zerg_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_Z.mission_name,
|
|
"West Raynor Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11209,
|
|
LocationType.EXTRA,
|
|
logic.zerg_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SKY_SHIELD_Z.mission_name,
|
|
"East Raynor Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11210,
|
|
LocationType.EXTRA,
|
|
logic.zerg_sky_shield_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11300,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS_T.mission_name,
|
|
"Mid Science Facility",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11301,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS_T.mission_name,
|
|
"North Science Facility",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11302,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_competent_comp(state)
|
|
or (
|
|
logic.take_over_ai_allies
|
|
and logic.advanced_tactics
|
|
and logic.terran_common_unit(state)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS_T.mission_name,
|
|
"South Science Facility",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11303,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS_T.mission_name,
|
|
"Raynor Forward Positions",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11304,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS_T.mission_name,
|
|
"Valerian Forward Positions",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11305,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.terran_common_unit(state) and logic.terran_competent_comp(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS_T.mission_name,
|
|
"Win in under 15 Minutes",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11306,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.terran_common_unit(state)
|
|
and logic.terran_base_trasher(state)
|
|
and logic.terran_power_rating(state) >= 8
|
|
),
|
|
flags=LocationFlag.SPEEDRUN,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11400,
|
|
LocationType.VICTORY,
|
|
logic.zerg_brothers_in_arms_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS_Z.mission_name,
|
|
"Mid Science Facility",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11401,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS_Z.mission_name,
|
|
"North Science Facility",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11402,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_brothers_in_arms_requirement(state)
|
|
or (
|
|
logic.take_over_ai_allies
|
|
and logic.advanced_tactics
|
|
and (
|
|
logic.zerg_common_unit(state) or logic.terran_common_unit(state)
|
|
)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS_Z.mission_name,
|
|
"South Science Facility",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11403,
|
|
LocationType.VANILLA,
|
|
logic.zerg_brothers_in_arms_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS_Z.mission_name,
|
|
"Raynor Forward Positions",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11404,
|
|
LocationType.EXTRA,
|
|
logic.zerg_brothers_in_arms_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS_Z.mission_name,
|
|
"Valerian Forward Positions",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11405,
|
|
LocationType.EXTRA,
|
|
logic.zerg_brothers_in_arms_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.BROTHERS_IN_ARMS_Z.mission_name,
|
|
"Win in under 15 Minutes",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11406,
|
|
LocationType.CHALLENGE,
|
|
lambda state: (
|
|
logic.zerg_brothers_in_arms_requirement(state)
|
|
and logic.zerg_base_buster(state)
|
|
and logic.zerg_power_rating(state) >= 8
|
|
),
|
|
flags=LocationFlag.SPEEDRUN,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11500,
|
|
LocationType.VICTORY,
|
|
lambda state: (logic.terran_competent_comp(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_T.mission_name,
|
|
"Close Solarite Reserve",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11501,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_T.mission_name,
|
|
"North Solarite Reserve",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11502,
|
|
LocationType.VANILLA,
|
|
lambda state: (logic.terran_competent_comp(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_T.mission_name,
|
|
"East Solarite Reserve",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11503,
|
|
LocationType.VANILLA,
|
|
lambda state: (logic.terran_competent_comp(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_T.mission_name,
|
|
"West Launch Bay",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11504,
|
|
LocationType.EXTRA,
|
|
lambda state: (logic.terran_competent_comp(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_T.mission_name,
|
|
"South Launch Bay",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11505,
|
|
LocationType.EXTRA,
|
|
lambda state: (logic.terran_competent_comp(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_T.mission_name,
|
|
"Northwest Launch Bay",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11506,
|
|
LocationType.EXTRA,
|
|
lambda state: (logic.terran_competent_comp(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_T.mission_name,
|
|
"East Launch Bay",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11507,
|
|
LocationType.EXTRA,
|
|
lambda state: (logic.terran_competent_comp(state)),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11600,
|
|
LocationType.VICTORY,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_Z.mission_name,
|
|
"Close Solarite Reserve",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11601,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_Z.mission_name,
|
|
"North Solarite Reserve",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11602,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_Z.mission_name,
|
|
"East Solarite Reserve",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11603,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_Z.mission_name,
|
|
"West Launch Bay",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11604,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_Z.mission_name,
|
|
"South Launch Bay",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11605,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_Z.mission_name,
|
|
"Northwest Launch Bay",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11606,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.AMON_S_REACH_Z.mission_name,
|
|
"East Launch Bay",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11607,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.zerg_competent_comp(state)
|
|
and logic.zerg_basic_kerriganless_anti_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11700,
|
|
LocationType.VICTORY,
|
|
logic.terran_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND_T.mission_name,
|
|
"West Zenith Stone",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11701,
|
|
LocationType.VANILLA,
|
|
logic.terran_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND_T.mission_name,
|
|
"North Zenith Stone",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11702,
|
|
LocationType.VANILLA,
|
|
logic.terran_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND_T.mission_name,
|
|
"East Zenith Stone",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11703,
|
|
LocationType.VANILLA,
|
|
logic.terran_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND_T.mission_name,
|
|
"1 Billion Zerg",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11704,
|
|
LocationType.EXTRA,
|
|
logic.terran_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND_T.mission_name,
|
|
"1.5 Billion Zerg",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11705,
|
|
LocationType.VANILLA,
|
|
lambda state: logic.terran_last_stand_requirement(state)
|
|
and logic.terran_defense_rating(state, True, True) >= 13,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11800,
|
|
LocationType.VICTORY,
|
|
logic.zerg_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND_Z.mission_name,
|
|
"West Zenith Stone",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11801,
|
|
LocationType.VANILLA,
|
|
logic.zerg_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND_Z.mission_name,
|
|
"North Zenith Stone",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11802,
|
|
LocationType.VANILLA,
|
|
logic.zerg_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND_Z.mission_name,
|
|
"East Zenith Stone",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11803,
|
|
LocationType.VANILLA,
|
|
logic.zerg_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND_Z.mission_name,
|
|
"1 Billion Zerg",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11804,
|
|
LocationType.EXTRA,
|
|
logic.zerg_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.LAST_STAND_Z.mission_name,
|
|
"1.5 Billion Zerg",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11805,
|
|
LocationType.VANILLA,
|
|
logic.zerg_last_stand_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11900,
|
|
LocationType.VICTORY,
|
|
logic.terran_beats_protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON_T.mission_name,
|
|
"South Solarite",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11901,
|
|
LocationType.VANILLA,
|
|
logic.terran_beats_protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON_T.mission_name,
|
|
"North Solarite",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11902,
|
|
LocationType.VANILLA,
|
|
logic.terran_beats_protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON_T.mission_name,
|
|
"Northwest Solarite",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11903,
|
|
LocationType.VANILLA,
|
|
logic.terran_beats_protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON_T.mission_name,
|
|
"Rescue Medics",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11904,
|
|
LocationType.EXTRA,
|
|
logic.terran_beats_protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON_T.mission_name,
|
|
"Destroy Gateways",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 11905,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_beats_protoss_deathball,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12000,
|
|
LocationType.VICTORY,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON_Z.mission_name,
|
|
"South Solarite",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12001,
|
|
LocationType.VANILLA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON_Z.mission_name,
|
|
"North Solarite",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12002,
|
|
LocationType.VANILLA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON_Z.mission_name,
|
|
"Northwest Solarite",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12003,
|
|
LocationType.VANILLA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON_Z.mission_name,
|
|
"Rescue Infested Medics",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12004,
|
|
LocationType.EXTRA,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.FORBIDDEN_WEAPON_Z.mission_name,
|
|
"Destroy Gateways",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12005,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_competent_comp_competent_aa,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12100,
|
|
LocationType.VICTORY,
|
|
logic.terran_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_T.mission_name,
|
|
"Mid Celestial Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12101,
|
|
LocationType.EXTRA,
|
|
logic.terran_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_T.mission_name,
|
|
"West Celestial Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12102,
|
|
LocationType.EXTRA,
|
|
logic.terran_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_T.mission_name,
|
|
"South Celestial Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12103,
|
|
LocationType.EXTRA,
|
|
logic.terran_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_T.mission_name,
|
|
"East Celestial Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12104,
|
|
LocationType.EXTRA,
|
|
logic.terran_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_T.mission_name,
|
|
"North Celestial Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12105,
|
|
LocationType.EXTRA,
|
|
logic.terran_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_T.mission_name,
|
|
"Titanic Warp Prism",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12106,
|
|
LocationType.VANILLA,
|
|
logic.terran_temple_of_unification_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_T.mission_name,
|
|
"Terran Main Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12107,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.terran_temple_of_unification_requirement(state)
|
|
and logic.terran_base_trasher(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_T.mission_name,
|
|
"Protoss Main Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12108,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.terran_temple_of_unification_requirement(state)
|
|
and logic.terran_base_trasher(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12200,
|
|
LocationType.VICTORY,
|
|
logic.zerg_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_Z.mission_name,
|
|
"Mid Celestial Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12201,
|
|
LocationType.EXTRA,
|
|
logic.zerg_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_Z.mission_name,
|
|
"West Celestial Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12202,
|
|
LocationType.EXTRA,
|
|
logic.zerg_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_Z.mission_name,
|
|
"South Celestial Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12203,
|
|
LocationType.EXTRA,
|
|
logic.zerg_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_Z.mission_name,
|
|
"East Celestial Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12204,
|
|
LocationType.EXTRA,
|
|
logic.zerg_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_Z.mission_name,
|
|
"North Celestial Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12205,
|
|
LocationType.EXTRA,
|
|
logic.zerg_temple_of_unification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_Z.mission_name,
|
|
"Titanic Warp Prism",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12206,
|
|
LocationType.VANILLA,
|
|
logic.zerg_temple_of_unification_requirement,
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_Z.mission_name,
|
|
"Terran Main Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12207,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.zerg_temple_of_unification_requirement(state)
|
|
and logic.zerg_base_buster(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLE_OF_UNIFICATION_Z.mission_name,
|
|
"Protoss Main Base",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12208,
|
|
LocationType.MASTERY,
|
|
lambda state: (
|
|
logic.zerg_temple_of_unification_requirement(state)
|
|
and logic.zerg_base_buster(state)
|
|
),
|
|
flags=LocationFlag.BASEBUST,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12500,
|
|
LocationType.VICTORY,
|
|
logic.terran_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_T.mission_name,
|
|
"Artanis",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12501,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_T.mission_name,
|
|
"Northwest Void Crystal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12502,
|
|
LocationType.EXTRA,
|
|
logic.terran_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_T.mission_name,
|
|
"Northeast Void Crystal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12503,
|
|
LocationType.EXTRA,
|
|
logic.terran_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_T.mission_name,
|
|
"Southwest Void Crystal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12504,
|
|
LocationType.EXTRA,
|
|
logic.terran_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_T.mission_name,
|
|
"Southeast Void Crystal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12505,
|
|
LocationType.EXTRA,
|
|
logic.terran_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_T.mission_name,
|
|
"South Xel'Naga Vessel",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12506,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_T.mission_name,
|
|
"Mid Xel'Naga Vessel",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12507,
|
|
LocationType.VANILLA,
|
|
logic.terran_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_T.mission_name,
|
|
"North Xel'Naga Vessel",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12508,
|
|
LocationType.VANILLA,
|
|
logic.terran_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12600,
|
|
LocationType.VICTORY,
|
|
logic.zerg_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_Z.mission_name,
|
|
"Artanis",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12601,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_Z.mission_name,
|
|
"Northwest Void Crystal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12602,
|
|
LocationType.EXTRA,
|
|
logic.zerg_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_Z.mission_name,
|
|
"Northeast Void Crystal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12603,
|
|
LocationType.EXTRA,
|
|
logic.zerg_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_Z.mission_name,
|
|
"Southwest Void Crystal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12604,
|
|
LocationType.EXTRA,
|
|
logic.zerg_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_Z.mission_name,
|
|
"Southeast Void Crystal",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12605,
|
|
LocationType.EXTRA,
|
|
logic.zerg_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_Z.mission_name,
|
|
"South Xel'Naga Vessel",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12606,
|
|
LocationType.VANILLA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_Z.mission_name,
|
|
"Mid Xel'Naga Vessel",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12607,
|
|
LocationType.VANILLA,
|
|
logic.zerg_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.HARBINGER_OF_OBLIVION_Z.mission_name,
|
|
"North Xel'Naga Vessel",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12608,
|
|
LocationType.VANILLA,
|
|
logic.zerg_harbinger_of_oblivion_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12700,
|
|
LocationType.VICTORY,
|
|
logic.terran_unsealing_the_past_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_T.mission_name,
|
|
"Zerg Cleared",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12701,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_T.mission_name,
|
|
"First Stasis Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12702,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.advanced_tactics
|
|
or logic.terran_unsealing_the_past_requirement(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_T.mission_name,
|
|
"Second Stasis Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12703,
|
|
LocationType.EXTRA,
|
|
logic.terran_unsealing_the_past_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_T.mission_name,
|
|
"Third Stasis Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12704,
|
|
LocationType.EXTRA,
|
|
logic.terran_unsealing_the_past_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_T.mission_name,
|
|
"Fourth Stasis Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12705,
|
|
LocationType.EXTRA,
|
|
logic.terran_unsealing_the_past_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_T.mission_name,
|
|
"South Power Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12706,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_unsealing_the_past_requirement(state)
|
|
and (
|
|
adv_tactics
|
|
or logic.terran_air(state)
|
|
or state.has_all(
|
|
{item_names.GOLIATH, item_names.GOLIATH_JUMP_JETS}, player
|
|
)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_T.mission_name,
|
|
"East Power Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12707,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_unsealing_the_past_requirement(state)
|
|
and (
|
|
adv_tactics
|
|
or logic.terran_air(state)
|
|
or state.has_all(
|
|
{item_names.GOLIATH, item_names.GOLIATH_JUMP_JETS}, player
|
|
)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12800,
|
|
LocationType.VICTORY,
|
|
logic.zerg_unsealing_the_past_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_Z.mission_name,
|
|
"Zerg Cleared",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12801,
|
|
LocationType.EXTRA,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_Z.mission_name,
|
|
"First Stasis Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12802,
|
|
LocationType.EXTRA,
|
|
lambda state: (
|
|
logic.advanced_tactics
|
|
or logic.zerg_unsealing_the_past_requirement(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_Z.mission_name,
|
|
"Second Stasis Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12803,
|
|
LocationType.EXTRA,
|
|
logic.zerg_unsealing_the_past_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_Z.mission_name,
|
|
"Third Stasis Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12804,
|
|
LocationType.EXTRA,
|
|
logic.zerg_unsealing_the_past_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_Z.mission_name,
|
|
"Fourth Stasis Lock",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12805,
|
|
LocationType.EXTRA,
|
|
logic.zerg_unsealing_the_past_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_Z.mission_name,
|
|
"South Power Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12806,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_unsealing_the_past_requirement(state)
|
|
and (
|
|
adv_tactics
|
|
or (
|
|
state.has(item_names.MUTALISK, player)
|
|
or logic.morph_brood_lord(state)
|
|
or logic.morph_guardian(state)
|
|
)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.UNSEALING_THE_PAST_Z.mission_name,
|
|
"East Power Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12807,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.zerg_unsealing_the_past_requirement(state)
|
|
and (
|
|
adv_tactics
|
|
or (
|
|
state.has(item_names.MUTALISK, player)
|
|
or logic.morph_brood_lord(state)
|
|
or logic.morph_guardian(state)
|
|
)
|
|
)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12900,
|
|
LocationType.VICTORY,
|
|
logic.terran_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_T.mission_name,
|
|
"North Sector: West Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12901,
|
|
LocationType.VANILLA,
|
|
logic.terran_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_T.mission_name,
|
|
"North Sector: Northeast Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12902,
|
|
LocationType.EXTRA,
|
|
logic.terran_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_T.mission_name,
|
|
"North Sector: Southeast Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12903,
|
|
LocationType.EXTRA,
|
|
logic.terran_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_T.mission_name,
|
|
"South Sector: West Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12904,
|
|
LocationType.VANILLA,
|
|
logic.terran_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_T.mission_name,
|
|
"South Sector: North Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12905,
|
|
LocationType.EXTRA,
|
|
logic.terran_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_T.mission_name,
|
|
"South Sector: East Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12906,
|
|
LocationType.EXTRA,
|
|
logic.terran_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_T.mission_name,
|
|
"West Sector: West Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12907,
|
|
LocationType.VANILLA,
|
|
logic.terran_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_T.mission_name,
|
|
"West Sector: Mid Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12908,
|
|
LocationType.EXTRA,
|
|
logic.terran_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_T.mission_name,
|
|
"West Sector: East Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12909,
|
|
LocationType.EXTRA,
|
|
logic.terran_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_T.mission_name,
|
|
"East Sector: North Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12910,
|
|
LocationType.VANILLA,
|
|
logic.terran_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_T.mission_name,
|
|
"East Sector: West Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12911,
|
|
LocationType.EXTRA,
|
|
logic.terran_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_T.mission_name,
|
|
"East Sector: South Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12912,
|
|
LocationType.EXTRA,
|
|
logic.terran_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_T.mission_name,
|
|
"Purifier Warden",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 12913,
|
|
LocationType.VANILLA,
|
|
logic.terran_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13000,
|
|
LocationType.VICTORY,
|
|
logic.zerg_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_Z.mission_name,
|
|
"North Sector: West Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13001,
|
|
LocationType.VANILLA,
|
|
logic.zerg_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_Z.mission_name,
|
|
"North Sector: Northeast Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13002,
|
|
LocationType.EXTRA,
|
|
logic.zerg_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_Z.mission_name,
|
|
"North Sector: Southeast Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13003,
|
|
LocationType.EXTRA,
|
|
logic.zerg_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_Z.mission_name,
|
|
"South Sector: West Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13004,
|
|
LocationType.VANILLA,
|
|
logic.zerg_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_Z.mission_name,
|
|
"South Sector: North Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13005,
|
|
LocationType.EXTRA,
|
|
logic.zerg_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_Z.mission_name,
|
|
"South Sector: East Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13006,
|
|
LocationType.EXTRA,
|
|
logic.zerg_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_Z.mission_name,
|
|
"West Sector: West Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13007,
|
|
LocationType.VANILLA,
|
|
logic.zerg_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_Z.mission_name,
|
|
"West Sector: Mid Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13008,
|
|
LocationType.EXTRA,
|
|
logic.zerg_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_Z.mission_name,
|
|
"West Sector: East Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13009,
|
|
LocationType.EXTRA,
|
|
logic.zerg_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_Z.mission_name,
|
|
"East Sector: North Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13010,
|
|
LocationType.VANILLA,
|
|
logic.zerg_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_Z.mission_name,
|
|
"East Sector: West Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13011,
|
|
LocationType.EXTRA,
|
|
logic.zerg_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_Z.mission_name,
|
|
"East Sector: South Null Circuit",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13012,
|
|
LocationType.EXTRA,
|
|
logic.zerg_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.PURIFICATION_Z.mission_name,
|
|
"Purifier Warden",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13013,
|
|
LocationType.VANILLA,
|
|
logic.zerg_purification_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13100,
|
|
LocationType.VICTORY,
|
|
logic.terran_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_T.mission_name,
|
|
"First Terrazine Fog",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13101,
|
|
LocationType.EXTRA,
|
|
logic.terran_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_T.mission_name,
|
|
"Southwest Guardian",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13102,
|
|
LocationType.EXTRA,
|
|
logic.terran_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_T.mission_name,
|
|
"West Guardian",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13103,
|
|
LocationType.EXTRA,
|
|
logic.terran_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_T.mission_name,
|
|
"Northwest Guardian",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13104,
|
|
LocationType.EXTRA,
|
|
logic.terran_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_T.mission_name,
|
|
"Northeast Guardian",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13105,
|
|
LocationType.EXTRA,
|
|
logic.terran_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_T.mission_name,
|
|
"North Mothership",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13106,
|
|
LocationType.VANILLA,
|
|
logic.terran_steps_of_the_rite_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_T.mission_name,
|
|
"South Mothership",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13107,
|
|
LocationType.VANILLA,
|
|
logic.terran_steps_of_the_rite_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13200,
|
|
LocationType.VICTORY,
|
|
logic.zerg_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_Z.mission_name,
|
|
"First Terrazine Fog",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13201,
|
|
LocationType.EXTRA,
|
|
logic.zerg_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_Z.mission_name,
|
|
"Southwest Guardian",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13202,
|
|
LocationType.EXTRA,
|
|
logic.zerg_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_Z.mission_name,
|
|
"West Guardian",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13203,
|
|
LocationType.EXTRA,
|
|
logic.zerg_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_Z.mission_name,
|
|
"Northwest Guardian",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13204,
|
|
LocationType.EXTRA,
|
|
logic.zerg_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_Z.mission_name,
|
|
"Northeast Guardian",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13205,
|
|
LocationType.EXTRA,
|
|
logic.zerg_steps_of_the_rite_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_Z.mission_name,
|
|
"North Mothership",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13206,
|
|
LocationType.VANILLA,
|
|
logic.zerg_steps_of_the_rite_requirement,
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.STEPS_OF_THE_RITE_Z.mission_name,
|
|
"South Mothership",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13207,
|
|
LocationType.VANILLA,
|
|
logic.zerg_steps_of_the_rite_requirement,
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13300,
|
|
LocationType.VICTORY,
|
|
logic.terran_rak_shir_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR_T.mission_name,
|
|
"North Slayn Elemental",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13301,
|
|
LocationType.VANILLA,
|
|
logic.terran_rak_shir_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR_T.mission_name,
|
|
"Southwest Slayn Elemental",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13302,
|
|
LocationType.VANILLA,
|
|
logic.terran_rak_shir_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR_T.mission_name,
|
|
"East Slayn Elemental",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13303,
|
|
LocationType.VANILLA,
|
|
logic.terran_rak_shir_requirement,
|
|
hard_rule=logic.terran_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR_T.mission_name,
|
|
"Resource Pickups",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13304,
|
|
LocationType.EXTRA,
|
|
logic.terran_rak_shir_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR_T.mission_name,
|
|
"Destroy Nexuses",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13305,
|
|
LocationType.CHALLENGE,
|
|
logic.terran_rak_shir_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR_T.mission_name,
|
|
"Win in under 15 minutes",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13306,
|
|
LocationType.MASTERY,
|
|
logic.terran_rak_shir_requirement,
|
|
flags=LocationFlag.SPEEDRUN,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13400,
|
|
LocationType.VICTORY,
|
|
logic.zerg_rak_shir_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR_Z.mission_name,
|
|
"North Slayn Elemental",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13401,
|
|
LocationType.VANILLA,
|
|
logic.zerg_rak_shir_requirement,
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR_Z.mission_name,
|
|
"Southwest Slayn Elemental",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13402,
|
|
LocationType.VANILLA,
|
|
logic.zerg_rak_shir_requirement,
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR_Z.mission_name,
|
|
"East Slayn Elemental",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13403,
|
|
LocationType.VANILLA,
|
|
logic.zerg_rak_shir_requirement,
|
|
hard_rule=logic.zerg_any_anti_air,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR_Z.mission_name,
|
|
"Resource Pickups",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13404,
|
|
LocationType.EXTRA,
|
|
logic.zerg_rak_shir_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR_Z.mission_name,
|
|
"Destroy Nexuses",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13405,
|
|
LocationType.CHALLENGE,
|
|
logic.zerg_rak_shir_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.RAK_SHIR_Z.mission_name,
|
|
"Win in under 15 minutes",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13406,
|
|
LocationType.MASTERY,
|
|
logic.zerg_rak_shir_requirement,
|
|
flags=LocationFlag.SPEEDRUN,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13500,
|
|
LocationType.VICTORY,
|
|
logic.terran_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE_T.mission_name,
|
|
"Northwest Power Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13501,
|
|
LocationType.EXTRA,
|
|
logic.terran_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE_T.mission_name,
|
|
"Northeast Power Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13502,
|
|
LocationType.EXTRA,
|
|
logic.terran_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE_T.mission_name,
|
|
"Southeast Power Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13503,
|
|
LocationType.EXTRA,
|
|
logic.terran_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE_T.mission_name,
|
|
"West Hybrid Stasis Chamber",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13504,
|
|
LocationType.VANILLA,
|
|
logic.terran_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE_T.mission_name,
|
|
"Southeast Hybrid Stasis Chamber",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13505,
|
|
LocationType.VANILLA,
|
|
lambda state: (
|
|
logic.terran_templars_charge_requirement(state)
|
|
and logic.terran_air(state)
|
|
),
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13600,
|
|
LocationType.VICTORY,
|
|
logic.zerg_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE_Z.mission_name,
|
|
"Northwest Power Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13601,
|
|
LocationType.EXTRA,
|
|
logic.zerg_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE_Z.mission_name,
|
|
"Northeast Power Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13602,
|
|
LocationType.EXTRA,
|
|
logic.zerg_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE_Z.mission_name,
|
|
"Southeast Power Core",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13603,
|
|
LocationType.EXTRA,
|
|
logic.zerg_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE_Z.mission_name,
|
|
"West Hybrid Stasis Chamber",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13604,
|
|
LocationType.VANILLA,
|
|
logic.zerg_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.TEMPLAR_S_CHARGE_Z.mission_name,
|
|
"Southeast Hybrid Stasis Chamber",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13605,
|
|
LocationType.VANILLA,
|
|
logic.zerg_templars_charge_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13900,
|
|
LocationType.VICTORY,
|
|
logic.terran_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_T.mission_name,
|
|
"Southeast Void Shard",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13901,
|
|
LocationType.EXTRA,
|
|
logic.terran_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_T.mission_name,
|
|
"South Void Shard",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13902,
|
|
LocationType.EXTRA,
|
|
logic.terran_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_T.mission_name,
|
|
"Southwest Void Shard",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13903,
|
|
LocationType.EXTRA,
|
|
logic.terran_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_T.mission_name,
|
|
"North Void Shard",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13904,
|
|
LocationType.EXTRA,
|
|
logic.terran_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_T.mission_name,
|
|
"Northwest Void Shard",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13905,
|
|
LocationType.EXTRA,
|
|
logic.terran_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_T.mission_name,
|
|
"Nerazim Warp in Zone",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13906,
|
|
LocationType.VANILLA,
|
|
logic.terran_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_T.mission_name,
|
|
"Tal'darim Warp in Zone",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13907,
|
|
LocationType.VANILLA,
|
|
logic.terran_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_T.mission_name,
|
|
"Purifier Warp in Zone",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 13908,
|
|
LocationType.VANILLA,
|
|
logic.terran_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14000,
|
|
LocationType.VICTORY,
|
|
logic.zerg_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_Z.mission_name,
|
|
"Southeast Void Shard",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14001,
|
|
LocationType.EXTRA,
|
|
logic.zerg_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_Z.mission_name,
|
|
"South Void Shard",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14002,
|
|
LocationType.EXTRA,
|
|
logic.zerg_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_Z.mission_name,
|
|
"Southwest Void Shard",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14003,
|
|
LocationType.EXTRA,
|
|
logic.zerg_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_Z.mission_name,
|
|
"North Void Shard",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14004,
|
|
LocationType.EXTRA,
|
|
logic.zerg_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_Z.mission_name,
|
|
"Northwest Void Shard",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14005,
|
|
LocationType.EXTRA,
|
|
logic.zerg_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_Z.mission_name,
|
|
"Nerazim Warp in Zone",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14006,
|
|
LocationType.VANILLA,
|
|
logic.zerg_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_Z.mission_name,
|
|
"Tal'darim Warp in Zone",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14007,
|
|
LocationType.VANILLA,
|
|
logic.zerg_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.THE_HOST_Z.mission_name,
|
|
"Purifier Warp in Zone",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14008,
|
|
LocationType.VANILLA,
|
|
logic.zerg_the_host_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION_T.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14100,
|
|
LocationType.VICTORY,
|
|
logic.terran_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION_T.mission_name,
|
|
"Fabrication Matrix",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14101,
|
|
LocationType.EXTRA,
|
|
logic.terran_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION_T.mission_name,
|
|
"Assault Cluster",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14102,
|
|
LocationType.EXTRA,
|
|
logic.terran_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION_T.mission_name,
|
|
"Hull Breach",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14103,
|
|
LocationType.EXTRA,
|
|
logic.terran_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION_T.mission_name,
|
|
"Core Critical",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14104,
|
|
LocationType.EXTRA,
|
|
logic.terran_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION_T.mission_name,
|
|
"Kill Brutalisk",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14105,
|
|
LocationType.MASTERY,
|
|
logic.terran_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION_Z.mission_name,
|
|
"Victory",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14200,
|
|
LocationType.VICTORY,
|
|
logic.zerg_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION_Z.mission_name,
|
|
"Fabrication Matrix",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14201,
|
|
LocationType.EXTRA,
|
|
logic.zerg_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION_Z.mission_name,
|
|
"Assault Cluster",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14202,
|
|
LocationType.EXTRA,
|
|
logic.zerg_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION_Z.mission_name,
|
|
"Hull Breach",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14203,
|
|
LocationType.EXTRA,
|
|
logic.zerg_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION_Z.mission_name,
|
|
"Core Critical",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14204,
|
|
LocationType.EXTRA,
|
|
logic.zerg_salvation_requirement,
|
|
),
|
|
make_location_data(
|
|
SC2Mission.SALVATION_Z.mission_name,
|
|
"Kill Brutalisk",
|
|
SC2_RACESWAP_LOC_ID_OFFSET + 14205,
|
|
LocationType.MASTERY,
|
|
logic.zerg_salvation_requirement,
|
|
),
|
|
]
|
|
|
|
# Filtering out excluded locations
|
|
if world is not None:
|
|
excluded_location_types = get_location_types(
|
|
world, LocationInclusion.option_disabled
|
|
)
|
|
excluded_location_flags = get_location_flags(
|
|
world, LocationInclusion.option_disabled
|
|
)
|
|
chance_location_types = get_location_types(
|
|
world, LocationInclusion.option_half_chance
|
|
)
|
|
chance_location_flags = get_location_flags(
|
|
world, LocationInclusion.option_half_chance
|
|
)
|
|
plando_locations = get_plando_locations(world)
|
|
exclude_locations = world.options.exclude_locations.value
|
|
|
|
def include_location(location: LocationData) -> bool:
|
|
if location.type is LocationType.VICTORY:
|
|
return True
|
|
if location.name in plando_locations:
|
|
return True
|
|
if location.name in exclude_locations:
|
|
return False
|
|
if location.flags & excluded_location_flags:
|
|
return False
|
|
if location.type in excluded_location_types:
|
|
return False
|
|
if location.flags & chance_location_flags:
|
|
if world.random.random() < 0.5:
|
|
return False
|
|
if location.type in chance_location_types:
|
|
if world.random.random() < 0.5:
|
|
return False
|
|
return True
|
|
|
|
location_table = [
|
|
location for location in location_table if include_location(location)
|
|
]
|
|
beat_events: List[LocationData] = []
|
|
victory_caches: List[LocationData] = []
|
|
VICTORY_CACHE_SIZE = 10
|
|
for location_data in location_table:
|
|
# Generating Beat event and Victory Cache locations
|
|
if location_data.type == LocationType.VICTORY:
|
|
beat_events.append(
|
|
location_data._replace(name="Beat " + location_data.region, code=None) # type: ignore
|
|
)
|
|
for v in range(VICTORY_CACHE_SIZE):
|
|
victory_caches.append(
|
|
location_data._replace(
|
|
name=location_data.name + f" Cache ({v + 1})",
|
|
code=location_data.code + VICTORY_CACHE_OFFSET + v,
|
|
type=LocationType.VICTORY_CACHE,
|
|
)
|
|
)
|
|
|
|
return tuple(location_table + beat_events + victory_caches)
|
|
|
|
|
|
DEFAULT_LOCATION_LIST = get_locations(None)
|
|
"""A location table with `None` as the input world; does not contain logic rules"""
|
|
|
|
lookup_location_id_to_type = {
|
|
loc.code: loc.type for loc in DEFAULT_LOCATION_LIST if loc.code is not None
|
|
}
|
|
lookup_location_id_to_flags = {
|
|
loc.code: loc.flags for loc in DEFAULT_LOCATION_LIST if loc.code is not None
|
|
}
|