Skip to content

Commit

Permalink
Merge branch 'main' into patch-1
Browse files Browse the repository at this point in the history
  • Loading branch information
eudaimonistic authored Oct 17, 2023
2 parents 9a79dbc + 13b68ec commit 55a75fb
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 18 deletions.
12 changes: 6 additions & 6 deletions worlds/hk/docs/setup_en.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
# Hollow Knight for Archipelago Setup Guide

## Required Software
* Download and unzip the Scarab+ Mod Manager from the [Scarab+ website](https://themulhima.github.io/Scarab/).
* Download and unzip the Lumafly Mod Manager from the [Lumafly website](https://themulhima.github.io/Lumafly/).
* A legal copy of Hollow Knight.

## Installing the Archipelago Mod using Scarab+
1. Launch Scarab+ and ensure it locates your Hollow Knight installation directory.
## Installing the Archipelago Mod using Lumafly
1. Launch Lumafly and ensure it locates your Hollow Knight installation directory.
2. Click the "Install" button near the "Archipelago" mod entry.
* If desired, also install "Archipelago Map Mod" to use as an in-game tracker.
3. Launch the game, you're all set!

### What to do if Scarab+ fails to find your XBox Game Pass installation directory
### What to do if Lumafly fails to find your XBox Game Pass installation directory
1. Enter the XBox app and move your mouse over "Hollow Knight" on the left sidebar.
2. Click the three points then click "Manage".
3. Go to the "Files" tab and select "Browse...".
4. Click "Hollow Knight", then "Content", then click the path bar and copy it.
5. Run Scarab+ as an administrator and, when it asks you for the path, paste what you copied in step 4.
5. Run Lumafly as an administrator and, when it asks you for the path, paste what you copied in step 4.

#### Alternative Method:
1. Click on your profile then "Settings".
2. Go to the "General" tab and select "CHANGE FOLDER".
3. Look for a folder where you want to install the game (preferably inside a folder on your desktop) and copy the path.
4. Run Scarab+ as an administrator and, when it asks you for the path, paste what you copied in step 3.
4. Run Lumafly as an administrator and, when it asks you for the path, paste what you copied in step 3.

Note: The path folder needs to have the "Hollow Knight_Data" folder inside.

Expand Down
2 changes: 1 addition & 1 deletion worlds/pokemon_rb/locations.py
Original file line number Diff line number Diff line change
Expand Up @@ -795,7 +795,7 @@ def __init__(self, flag):
LocationData("Pewter Gym", "Defeat Brock", "Defeat Brock", event=True),
LocationData("Cerulean Gym", "Defeat Misty", "Defeat Misty", event=True),
LocationData("Vermilion Gym", "Defeat Lt. Surge", "Defeat Lt. Surge", event=True),
LocationData("Celadon Gym", "Defeat Erika", "Defeat Erika", event=True),
LocationData("Celadon Gym-C", "Defeat Erika", "Defeat Erika", event=True),
LocationData("Fuchsia Gym", "Defeat Koga", "Defeat Koga", event=True),
LocationData("Cinnabar Gym", "Defeat Blaine", "Defeat Blaine", event=True),
LocationData("Saffron Gym-C", "Defeat Sabrina", "Defeat Sabrina", event=True),
Expand Down
27 changes: 16 additions & 11 deletions worlds/pokemon_rb/regions.py
Original file line number Diff line number Diff line change
Expand Up @@ -1456,7 +1456,9 @@ def pair(a, b):
unreachable_outdoor_entrances = [
"Route 4-C to Mt Moon B1F-NE",
"Fuchsia City-Good Rod House Backyard to Fuchsia Good Rod House",
"Cerulean City-Badge House Backyard to Cerulean Badge House"
"Cerulean City-Badge House Backyard to Cerulean Badge House",
# TODO: This doesn't need to be forced if fly location is Pokemon League?
"Route 23-N to Victory Road 2F-E"
]


Expand Down Expand Up @@ -2220,7 +2222,7 @@ def cerulean_city_problem():
"Cinnabar Gym - Blaine Prize", "Viridian Gym - Giovanni Prize"]:
badge_locs.append(multiworld.get_location(loc, player))
multiworld.random.shuffle(badges)
while badges[3].name == "Cascade Badge" and multiworld.badges_needed_for_hm_moves[player] == "on":
while badges[3].name == "Cascade Badge" and multiworld.badges_needed_for_hm_moves[player]:
multiworld.random.shuffle(badges)
for badge, loc in zip(badges, badge_locs):
loc.place_locked_item(badge)
Expand Down Expand Up @@ -2266,10 +2268,10 @@ def cerulean_city_problem():
]

def adds_reachable_entrances(entrances_copy, item):
state.collect(item, False)
state_copy = state.copy()
state_copy.collect(item, False)
ret = len([entrance for entrance in entrances_copy if entrance in reachable_entrances or
entrance.parent_region.can_reach(state)]) > len(reachable_entrances)
state.remove(item)
entrance.parent_region.can_reach(state_copy)]) > len(reachable_entrances)
return ret

def dead_end(entrances_copy, e):
Expand Down Expand Up @@ -2304,9 +2306,16 @@ def dead_end(entrances_copy, e):
starting_entrances = len(entrances)
dc_connected = []
event_locations = self.multiworld.get_filled_locations(player)
rock_tunnel_entrances = [entrance for entrance in entrances if "Rock Tunnel" in entrance.name]
entrances = [entrance for entrance in entrances if entrance not in rock_tunnel_entrances]
while entrances:
state.update_reachable_regions(player)
state.sweep_for_events(locations=event_locations)

if rock_tunnel_entrances and logic.rock_tunnel(state, player):
entrances += rock_tunnel_entrances
rock_tunnel_entrances = None

reachable_entrances = [entrance for entrance in entrances if entrance in reachable_entrances or
entrance.parent_region.can_reach(state)]
assert reachable_entrances, \
Expand All @@ -2328,12 +2337,8 @@ def dead_end(entrances_copy, e):
# entrances list is empty while it's being sorted, must pass a copy to iterate through
entrances_copy = entrances.copy()
if multiworld.door_shuffle[player] == "decoupled":
if len(reachable_entrances) <= 8 and not logic.rock_tunnel(state, player):
entrances.sort(key=lambda e: 1 if "Rock Tunnel" in e.name else 2 if e.connected_region is not
None else 3 if e not in reachable_entrances else 0)
else:
entrances.sort(key=lambda e: 1 if e.connected_region is not None else 2 if e not in
reachable_entrances else 0)
entrances.sort(key=lambda e: 1 if e.connected_region is not None else 2 if e not in
reachable_entrances else 0)
assert entrances[0].connected_region is None,\
"Ran out of valid reachable entrances in Pokemon Red and Blue door shuffle"
elif len(reachable_entrances) > (1 if multiworld.door_shuffle[player] == "insanity" else 8) and len(
Expand Down

0 comments on commit 55a75fb

Please sign in to comment.