Skip to content

Commit

Permalink
add hollow knight
Browse files Browse the repository at this point in the history
  • Loading branch information
nbrochu committed Jan 7, 2025
1 parent 4077689 commit a170bed
Showing 1 changed file with 210 additions and 0 deletions.
210 changes: 210 additions & 0 deletions worlds/keymasters_keep/games/hollow_knight_game.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
from __future__ import annotations

from typing import List

from dataclasses import dataclass

from ..game import Game
from ..game_objective_template import GameObjectiveTemplate

from ..enums import KeymastersKeepGamePlatforms


@dataclass
class HollowKnightArchipelagoOptions:
pass


class HollowKnightGame(Game):
name = "Hollow Knight"
platform = KeymastersKeepGamePlatforms.PC

platforms_other = [
KeymastersKeepGamePlatforms.PS4,
KeymastersKeepGamePlatforms.SW,
KeymastersKeepGamePlatforms.XONE,
]

is_adult_only_or_unrated = False

options_cls = HollowKnightArchipelagoOptions

def optional_game_constraint_templates(self) -> List[GameObjectiveTemplate]:
return [
GameObjectiveTemplate(
label="Defeat the Boss on Radiant difficulty",
data=dict(),
),
GameObjectiveTemplate(
label="Activate BINDING before entering the Pantheon",
data={
"BINDING": (self.bindings, 1),
},
),
]

def game_objective_templates(self) -> List[GameObjectiveTemplate]:
return [
GameObjectiveTemplate(
label="Defeat BOSS",
data={
"BOSS": (self.bosses, 1)
},
is_time_consuming=False,
is_difficult=False,
weight=15,
),
GameObjectiveTemplate(
label="Defeat BOSS",
data={
"BOSS": (self.bosses_difficult, 1)
},
is_time_consuming=False,
is_difficult=True,
weight=5,
),
GameObjectiveTemplate(
label="Complete the PANTHEON",
data={
"PANTHEON": (self.pantheons, 1)
},
is_time_consuming=False,
is_difficult=False,
weight=1,
),
GameObjectiveTemplate(
label="Complete the PANTHEON",
data={
"PANTHEON": (self.pantheons_difficult, 1)
},
is_time_consuming=False,
is_difficult=True,
weight=1,
),
]

@staticmethod
def bindings() -> List[str]:
return [
"NAIL BINDING",
"SHELL BINDING",
"CHARMS BINDING",
"SOUL BINDING",
]

@staticmethod
def bosses() -> List[str]:
return [
"Gruz Mother, Attuned",
"Vengefly King, Attuned",
"Brooding Mawlek, Attuned",
"False Knight, Attuned",
"Failed Champion, Attuned",
"Hornet Protector, Attuned",
"Hornet Sentinel, Attuned",
"Massive Moss Charger, Attuned",
"Flukemarm, Attuned",
"Mantis Lords, Attuned",
"Sisters of Battle, Attuned",
"Oblobble, Attuned",
"Hive Knight, Attuned",
"Broken Vessel, Attuned",
"Lost Kin, Attuned",
"Nosk, Attuned",
"Winged Nosk, Attuned",
"The Collector, Attuned",
"God Tamer, Attuned",
"Crystal Guardian, Attuned",
"Enraged Guardian, Attuned",
"Uumuu, Attuned",
"Traitor Lord, Attuned",
"Grey Prince Zote, Attuned",
"Soul Warrior, Attuned",
"Soul Master, Attuned",
"Soul Tyrant, Attuned",
"Dung Defender, Attuned",
"White Defender, Attuned",
"Watcher Knight, Attuned",
"No Eyes, Attuned",
"Xero, Attuned",
"Marmu, Attuned",
"Markoth, Attuned",
"Galien, Attuned",
"Gorb, Attuned",
"Elder Hu, Attuned",
"Oro & Markoth, Attuned",
"Paintmaster Sheo, Attuned",
"Nailsage Sly, Attuned",
"Grimm, Attuned",
"Gruz Mother, Ascended",
"Vengefly King, Ascended",
"Brooding Mawlek, Ascended",
"False Knight, Ascended",
"Hornet Protector, Ascended",
"Massive Moss Charger, Ascended",
"Flukemarm, Ascended",
"Mantis Lords, Ascended",
"Hive Knight, Ascended",
"Broken Vessel, Ascended",
"The Collector, Ascended",
"Crystal Guardian, Ascended",
"Enraged Guardian, Ascended",
"Uumuu, Ascended",
"Soul Warrior, Ascended",
"Soul Master, Ascended",
"Dung Defender, Ascended",
"No Eyes, Ascended",
"Xero, Ascended",
"Marmu, Ascended",
"Galien, Ascended",
"Gorb, Ascended",
"Elder Hu, Ascended",
]

@staticmethod
def bosses_difficult() -> List[str]:
return [
"Pure Vessel, Attuned",
"Nightmare King, Attuned",
"Radiance, Attuned",
"Failed Champion, Ascended",
"Hornet Sentinel, Ascended",
"Sisters of Battle, Ascended",
"Oblobble, Ascended",
"Lost Kin, Ascended",
"Nosk, Ascended",
"Winged Nosk, Ascended",
"God Tamer, Ascended",
"Traitor Lord, Ascended",
"Grey Prince Zote, Ascended",
"Soul Tyrant, Ascended",
"White Defender, Ascended",
"Watcher Knight, Ascended",
"Markoth, Ascended",
"Oro & Markoth, Ascended",
"Paintmaster Sheo, Ascended",
"Nailsage Sly, Ascended",
"Pure Vessel, Ascended",
"Grimm, Ascended, Ascended",
"Nightmare King, Ascended",
"Radiance, Ascended",
]

@staticmethod
def pantheons() -> List[str]:
return [
"Pantheon of the Master",
"Pantheon of the Artist",
"Pantheon of the Sage",
]

@staticmethod
def pantheons_difficult() -> List[str]:
return [
"Pantheon of the Knight",
"Pantheon of Hallownest",
]


# Archipelago Options
# ...

0 comments on commit a170bed

Please sign in to comment.