Skip to content

Commit

Permalink
HK: Fix bugs and update setup guide for Scarab+ and XBox Game Pass su…
Browse files Browse the repository at this point in the history
…pport (ArchipelagoMW#1955)

Fixing three bugs:
1. Made Salubra Charm Shop Slots use the actual options value and not the Iselda Shop Slots value.
2. Made Mask Shards no longer considered Filler but instead Progression so they can actually be used for access requirements that require damage boosts.
3. Fixed goal requirements to account for Focus being required for The Hollow Knight and Sealed Siblings endings and adjusted the Radiance and Any goal requirements accordingly.

Updated Setup Guide:
Changed to mention Scarab+ instead of Scarab (it is better maintained and has several quality of life improvements and fixes a bug for XBox Game Pass).
Added info about how to use Scarab+ with XBox Game Pass.
  • Loading branch information
Exempt-Medic authored and Jouramie committed Feb 28, 2024
1 parent 6c80266 commit 02b67ea
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 16 deletions.
2 changes: 1 addition & 1 deletion worlds/hk/Options.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@
"Iselda": "IseldaShopSlots",
"Salubra": "SalubraShopSlots",
"Leg_Eater": "LegEaterShopSlots",
"Salubra_(Requires_Charms)": "IseldaShopSlots",
"Salubra_(Requires_Charms)": "SalubraCharmShopSlots",
"Egg_Shop": "EggShopSlots",
}

Expand Down
22 changes: 12 additions & 10 deletions worlds/hk/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -422,13 +422,15 @@ def set_rules(self):
player = self.player
if world.logic[player] != 'nologic':
goal = world.Goal[player]
if goal == Goal.option_siblings:
if goal == Goal.option_hollowknight:
world.completion_condition[player] = lambda state: state._hk_can_beat_thk(player)
elif goal == Goal.option_siblings:
world.completion_condition[player] = lambda state: state._hk_siblings_ending(player)
elif goal == Goal.option_radiance:
world.completion_condition[player] = lambda state: state._hk_can_beat_radiance(player)
else:
# Hollow Knight or Any goal.
world.completion_condition[player] = lambda state: state._hk_can_beat_thk(player)
# Any goal
world.completion_condition[player] = lambda state: state._hk_can_beat_thk(player) or state._hk_can_beat_radiance(player)

set_rules(self)

Expand Down Expand Up @@ -640,7 +642,7 @@ def __init__(self, name, advancement, code, type: str, player: int = None):
classification = ItemClassification.progression_skip_balancing
elif type in ("Map", "Journal"):
classification = ItemClassification.filler
elif type in ("Mask", "Ore", "Vessel"):
elif type in ("Ore", "Vessel"):
classification = ItemClassification.useful
elif advancement:
classification = ItemClassification.progression
Expand Down Expand Up @@ -674,23 +676,23 @@ def _hk_can_beat_thk(self, player: int) -> bool:
self.has_any({'LEFTDASH', 'RIGHTDASH'}, player)
or self._hk_option(player, 'ProficientCombat')
)
and self.has('FOCUS', player)
)

def _hk_siblings_ending(self, player: int) -> bool:
return self._hk_can_beat_thk(player) and self.has('WHITEFRAGMENT', player, 3)

def _hk_can_beat_radiance(self, player: int) -> bool:
return (
self._hk_siblings_ending(player)
and self.has('DREAMNAIL', player, 1)
self.has('Opened_Black_Egg_Temple', player)
and self._hk_nail_combat(player)
and self.has('WHITEFRAGMENT', player, 3)
and self.has('DREAMNAIL', player)
and (
(self.has('LEFTCLAW', player) and self.has('RIGHTCLAW', player))
or self.has('WINGS', player)
)
and (
self.count('FIREBALL', player) + self.count('SCREAM', player)
+ self.count('QUAKE', player)
) > 1
and (self.count('FIREBALL', player) + self.count('SCREAM', player) + self.count('QUAKE', player)) > 1
and (
(self.has('LEFTDASH', player, 2) and self.has('RIGHTDASH', player, 2)) # Both Shade Cloaks
or (self._hk_option(player, 'ProficientCombat') and self.has('QUAKE', player)) # or Dive
Expand Down
28 changes: 23 additions & 5 deletions worlds/hk/docs/setup_en.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,33 @@
# Hollow Knight for Archipelago Setup Guide

## Required Software
* Download and unzip the Scarab Mod Manager from the [Scarab GitHub Releases page](https://github.com/fifty-six/Scarab/releases).
* A legal copy of Hollow Knight, not purchased or played through XBox Game Pass.
* Unfortunately, the Game Pass version is not currently compatible with mods.
* Download and unzip the Scarab+ Mod Manager from the [Scarab+ website](https://themulhima.github.io/Scarab/).
* A legal copy of Hollow Knight.

## Optional Software
* Archipelago Map Mod from Scarab+
* Ensure that both RandoMapMod and MapChanger are uninstalled or disabled as they are incompatible with Archipelago Map Mod.

## Installing the Archipelago Mod using Scarab
1. Launch Scarab and ensure it locates your Hollow Knight installation directory.
2. Click the "Install" checkbox near the "Archipelago" mod entry.
1. Launch Scarab+ and ensure it locates your Hollow Knight installation directory.
2. Click the "Install" button near the "Archipelago" mod entry.
3. Launch the game, you're all set!

### What to do if Scarab+ 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.

#### 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.

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

## Configuring your YAML File
### What is a YAML and why do I need one?
You can see the [basic multiworld setup guide](/tutorial/Archipelago/setup/en) here on the Archipelago website to learn
Expand Down

0 comments on commit 02b67ea

Please sign in to comment.