summary refs log tree commit diff stats
path: root/apworld/regions.py
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-08-27 17:14:57 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2025-08-27 17:14:57 -0400
commit4ae885f392261b939e6f21b47d545f609c6e1965 (patch)
tree7c6c4266db9a1aff3718f21d097974d0e4625a2e /apworld/regions.py
parentb548329f740e7f548864e62e4998b59b2d76f86a (diff)
downloadlingo2-archipelago-4ae885f392261b939e6f21b47d545f609c6e1965.tar.gz
lingo2-archipelago-4ae885f392261b939e6f21b47d545f609c6e1965.tar.bz2
lingo2-archipelago-4ae885f392261b939e6f21b47d545f609c6e1965.zip
Set apworld victory condition
Diffstat (limited to 'apworld/regions.py')
-rw-r--r--apworld/regions.py18
1 files changed, 16 insertions, 2 deletions
diff --git a/apworld/regions.py b/apworld/regions.py index 1c8e672..fe2c99b 100644 --- a/apworld/regions.py +++ b/apworld/regions.py
@@ -1,6 +1,7 @@
1from typing import TYPE_CHECKING 1from typing import TYPE_CHECKING
2 2
3from BaseClasses import Region 3from BaseClasses import Region, ItemClassification, Entrance
4from .items import Lingo2Item
4from .locations import Lingo2Location 5from .locations import Lingo2Location
5from .player_logic import AccessRequirements 6from .player_logic import AccessRequirements
6from .rules import make_location_lambda 7from .rules import make_location_lambda
@@ -18,6 +19,12 @@ def create_region(room, world: "Lingo2World") -> Region:
18 new_location.access_rule = make_location_lambda(location.reqs, world) 19 new_location.access_rule = make_location_lambda(location.reqs, world)
19 new_region.locations.append(new_location) 20 new_region.locations.append(new_location)
20 21
22 for event_name, item_name in world.player_logic.event_loc_item_by_room.get(room.id, {}).items():
23 new_location = Lingo2Location(world.player, event_name, None, new_region)
24 event_item = Lingo2Item(item_name, ItemClassification.progression, None, world.player)
25 new_location.place_locked_item(event_item)
26 new_region.locations.append(new_location)
27
21 return new_region 28 return new_region
22 29
23 30
@@ -73,6 +80,13 @@ def create_regions(world: "Lingo2World"):
73 connection_name = f"{connection_name} (via panel {panel.name})" 80 connection_name = f"{connection_name} (via panel {panel.name})"
74 81
75 if from_region in regions and to_region in regions: 82 if from_region in regions and to_region in regions:
76 regions[from_region].connect(regions[to_region], connection_name, make_location_lambda(reqs, world)) 83 connection = Entrance(world.player, connection_name, regions[from_region])
84 connection.access_rule = make_location_lambda(reqs, world)
85
86 regions[from_region].exits.append(connection)
87 connection.connect(regions[to_region])
88
89 for region in reqs.rooms:
90 world.multiworld.register_indirect_condition(regions[region], connection)
77 91
78 world.multiworld.regions += regions.values() 92 world.multiworld.regions += regions.values()