From 4ad6bc856bed3a59505816e74f10db649b906570 Mon Sep 17 00:00:00 2001 From: Nicholas Brochu Date: Tue, 14 Jan 2025 12:32:40 -0500 Subject: [PATCH] add oldtv --- worlds/keymasters_keep/games/oldtv_game.py | 153 +++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 worlds/keymasters_keep/games/oldtv_game.py diff --git a/worlds/keymasters_keep/games/oldtv_game.py b/worlds/keymasters_keep/games/oldtv_game.py new file mode 100644 index 000000000000..b5e152d79061 --- /dev/null +++ b/worlds/keymasters_keep/games/oldtv_game.py @@ -0,0 +1,153 @@ +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 OldTVArchipelagoOptions: + pass + + +class OldTVGame(Game): + name = "OldTV" + platform = KeymastersKeepGamePlatforms.PC + + platforms_other = None + + is_adult_only_or_unrated = False + + options_cls = OldTVArchipelagoOptions + + def optional_game_constraint_templates(self) -> List[GameObjectiveTemplate]: + return list() + + def game_objective_templates(self) -> List[GameObjectiveTemplate]: + return [ + GameObjectiveTemplate( + label="Lose to a COLOR colored word in CONTINENT", + data={ + "COLOR": (self.colors, 1), + "CONTINENT": (self.continents, 1), + }, + is_time_consuming=False, + is_difficult=False, + weight=3, + ), + GameObjectiveTemplate( + label="Reach FREQUENCY", + data={ + "FREQUENCY": (self.frequencies, 1), + }, + is_time_consuming=False, + is_difficult=False, + weight=2, + ), + GameObjectiveTemplate( + label="Finish CONTINENT", + data={ + "CONTINENT": (self.continents, 1), + }, + is_time_consuming=False, + is_difficult=False, + weight=3, + ), + GameObjectiveTemplate( + label="Lose to MECHANIC D10 time(s)", + data={ + "MECHANIC": (self.mechanics, 1), + "D10": (self.d10_range, 1), + }, + is_time_consuming=False, + is_difficult=False, + weight=3, + ), + GameObjectiveTemplate( + label="Encounter a COLOR colored OTHER", + data={ + "COLOR": (self.colors, 1), + "OTHER": (self.colors, 1), + }, + is_time_consuming=False, + is_difficult=False, + weight=3, + ), + GameObjectiveTemplate( + label="Acquire D200 CP", + data={ + "D200": (self.d200_range, 1), + }, + is_time_consuming=False, + is_difficult=False, + weight=1, + ), + GameObjectiveTemplate( + label="Reach Channel D100 on Saturn", + data={ + "D100": (self.d100_range, 1), + }, + is_time_consuming=False, + is_difficult=True, + weight=1, + ), + ] + + @staticmethod + def colors() -> List[str]: + return [ + "Cyan", + "Blue", + "Green", + "Red", + "Yellow", + "Purple", + ] + + @staticmethod + def mechanics() -> List[str]: + return [ + "Colored Background", + "Don't Switch", + "Reversed Controls", + "Lost Connection", + "Upside Down", + ] + + @staticmethod + def continents() -> List[str]: + return [ + "Oceania", + "Asia", + "Europe", + "Americas", + "Africa", + ] + + @staticmethod + def frequencies() -> List[str]: + return [ + "20 or better", + "30 or better", + "40 or better", + ] + + @staticmethod + def d10_range() -> range: + return range(1, 11) + + @staticmethod + def d100_range() -> range: + return range(1, 101) + + @staticmethod + def d200_range() -> range: + return range(1, 201) + +# Archipelago Options +# ...