Skip to content

Subnautica: avoid cache recreation in create_regions call and clean up function. #2365

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Oct 25, 2023
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 31 additions & 13 deletions worlds/subnautica/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,22 +65,40 @@ def generate_early(self) -> None:
creature_pool, self.options.creature_scans.value)

def create_regions(self):
self.multiworld.regions += [
self.create_region("Menu", None, ["Lifepod 5"]),
self.create_region("Planet 4546B",
locations.events +
[location["name"] for location in locations.location_table.values()] +
[creature + creatures.suffix for creature in self.creatures_to_scan])
]

# Link regions
self.multiworld.get_entrance("Lifepod 5", self.player).connect(self.multiworld.get_region("Planet 4546B", self.player))
# Create Regions
menu_region = Region("Menu", self.player, self.multiworld)
planet_region = Region("Planet 4546B", self.player, self.multiworld)

# Link regions together
lifepod_5_connection = Entrance(self.player, "Lifepod 5", menu_region)
menu_region.exits.append(lifepod_5_connection)
lifepod_5_connection.connect(planet_region)

# Create regular locations
location_names = itertools.chain((location["name"] for location in locations.location_table.values()),
(creature + creatures.suffix for creature in self.creatures_to_scan))
for location_name in location_names:
loc_id = self.location_name_to_id[location_name]
location = SubnauticaLocation(self.player, location_name, loc_id, planet_region)
planet_region.locations.append(location)

# Create events
goal_event_name = self.options.goal.get_event_name()

for event in locations.events:
self.multiworld.get_location(event, self.player).place_locked_item(
location = SubnauticaLocation(self.player, event, None, planet_region)
planet_region.locations.append(location)
location.place_locked_item(
SubnauticaItem(event, ItemClassification.progression, None, player=self.player))
# make the goal event the victory "item"
self.multiworld.get_location(self.options.goal.get_event_name(), self.player).item.name = "Victory"
if event == goal_event_name:
# make the goal event the victory "item"
location.item.name = "Victory"

# Register regions to multiworld
self.multiworld.regions += [
menu_region,
planet_region
]

# refer to Rules.py
set_rules = set_rules
Expand Down