44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
from typing import Dict, TYPE_CHECKING
|
|
from BaseClasses import Item, ItemClassification, Location, Region
|
|
from . import items, locations
|
|
|
|
if TYPE_CHECKING:
|
|
from . import NoitaWorld
|
|
|
|
|
|
def create_event(player: int, name: str) -> Item:
|
|
return items.NoitaItem(name, ItemClassification.progression, None, player)
|
|
|
|
|
|
def create_location(player: int, name: str, region: Region) -> Location:
|
|
return locations.NoitaLocation(player, name, None, region)
|
|
|
|
|
|
def create_locked_location_event(player: int, region: Region, item: str) -> Location:
|
|
new_location = create_location(player, item, region)
|
|
new_location.place_locked_item(create_event(player, item))
|
|
|
|
region.locations.append(new_location)
|
|
return new_location
|
|
|
|
|
|
def create_all_events(world: "NoitaWorld", created_regions: Dict[str, Region]) -> None:
|
|
for region_name, event in event_locks.items():
|
|
region = created_regions[region_name]
|
|
create_locked_location_event(world.player, region, event)
|
|
|
|
world.multiworld.completion_condition[world.player] = lambda state: state.has("Victory", world.player)
|
|
|
|
|
|
# Maps region names to event names
|
|
event_locks: Dict[str, str] = {
|
|
"The Work": "Victory",
|
|
"Mines": "Portal to Holy Mountain 1",
|
|
"Coal Pits": "Portal to Holy Mountain 2",
|
|
"Snowy Depths": "Portal to Holy Mountain 3",
|
|
"Hiisi Base": "Portal to Holy Mountain 4",
|
|
"Underground Jungle": "Portal to Holy Mountain 5",
|
|
"The Vault": "Portal to Holy Mountain 6",
|
|
"Temple of the Art": "Portal to Holy Mountain 7",
|
|
}
|