Clique: Force priority location for "final location" and other minor tweaks. (#1583)

* Clique: The greatest game of all time

* Fix failing test

* Increment data_version for backwards compat

* Clique: Tweaked names and forced progression for "The Button"

* Clique: Just location/item definitions to class

* Clique: More tweaks.

* Clique: Fix derp moment.

* Clique: Fix derp moment, part dos.

* Clique: Suggested changes.

* Clique: Update domain

* Clique: Create derived classes for Item and Location

* Clique: simplify line
This commit is contained in:
Zach Parks 2023-04-07 19:05:16 -05:00 committed by GitHub
parent 8e6ec85532
commit 67a22b8b43
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 39 additions and 52 deletions

View File

@ -4,7 +4,7 @@ from Options import Option, Toggle
class HardMode(Toggle): class HardMode(Toggle):
"""Only for masochists: requires 2 presses!""" """Only for the most masochistically inclined... Requires button activation!"""
display_name = "Hard Mode" display_name = "Hard Mode"

View File

@ -3,15 +3,13 @@ from worlds.AutoWorld import WebWorld, World
from worlds.generic.Rules import set_rule from worlds.generic.Rules import set_rule
from .Options import clique_options from .Options import clique_options
item_table = {
"The feeling of satisfaction.": 69696969,
"Button Key": 69696968,
}
location_table = { class CliqueItem(Item):
"The Button": 69696969, game = "Clique"
"The Desk": 69696968,
}
class CliqueLocation(Location):
game = "Clique"
class CliqueWebWorld(WebWorld): class CliqueWebWorld(WebWorld):
@ -32,78 +30,68 @@ class CliqueWorld(World):
"""The greatest game ever designed. Full of exciting gameplay!""" """The greatest game ever designed. Full of exciting gameplay!"""
game = "Clique" game = "Clique"
topology_present = False data_version = 2
data_version = 1
web = CliqueWebWorld() web = CliqueWebWorld()
option_definitions = clique_options option_definitions = clique_options
location_name_to_id = location_table # Yes, I'm like 12 for this.
item_name_to_id = item_table location_name_to_id = {
"The Big Red Button": 69696969,
"The Item on the Desk": 69696968,
}
def create_item(self, name: str) -> "Item": item_name_to_id = {
return Item(name, ItemClassification.progression, self.item_name_to_id[name], self.player) "Feeling of Satisfaction": 69696969,
"Button Activation": 69696968,
}
def get_setting(self, name: str): def create_item(self, name: str) -> CliqueItem:
return getattr(self.multiworld, name)[self.player] return CliqueItem(name, ItemClassification.progression, self.item_name_to_id[name], self.player)
def fill_slot_data(self) -> dict: def create_items(self) -> None:
return {option_name: self.get_setting(option_name).value for option_name in self.option_definitions} self.multiworld.itempool.append(self.create_item("Feeling of Satisfaction"))
self.multiworld.priority_locations[self.player].value.add("The Big Red Button")
def generate_basic(self) -> None:
self.multiworld.itempool.append(self.create_item("The feeling of satisfaction."))
if self.multiworld.hard_mode[self.player]: if self.multiworld.hard_mode[self.player]:
self.multiworld.itempool.append(self.create_item("Button Key")) self.multiworld.itempool.append(self.create_item("Button Activation"))
def create_regions(self) -> None: def create_regions(self) -> None:
if self.multiworld.hard_mode[self.player]: if self.multiworld.hard_mode[self.player]:
self.multiworld.regions += [ self.multiworld.regions += [
create_region(self.multiworld, self.player, "Menu", None, ["Entrance to THE BUTTON"]), create_region(self.multiworld, self.player, "Menu", None, ["The entrance to the button."]),
create_region(self.multiworld, self.player, "THE BUTTON", self.location_name_to_id) create_region(self.multiworld, self.player, "The realm of the button.", self.location_name_to_id)
] ]
else: else:
self.multiworld.regions += [ self.multiworld.regions += [
create_region(self.multiworld, self.player, "Menu", None, ["Entrance to THE BUTTON"]), create_region(self.multiworld, self.player, "Menu", None, ["The entrance to the button."]),
create_region(self.multiworld, self.player, "THE BUTTON", {"The Button": 69696969}) create_region(self.multiworld, self.player, "The realm of the button.", {
] "The Big Red Button": 69696969
})]
self.multiworld.get_entrance("Entrance to THE BUTTON", self.player)\ self.multiworld.get_entrance("The entrance to the button.", self.player) \
.connect(self.multiworld.get_region("THE BUTTON", self.player)) .connect(self.multiworld.get_region("The realm of the button.", self.player))
def get_filler_item_name(self) -> str: def get_filler_item_name(self) -> str:
return self.multiworld.random.choice(item_table) return self.multiworld.random.choice(self.item_name_to_id)
def set_rules(self) -> None: def set_rules(self) -> None:
if self.multiworld.hard_mode[self.player]: if self.multiworld.hard_mode[self.player]:
set_rule( set_rule(
self.multiworld.get_location("The Button", self.player), self.multiworld.get_location("The Big Red Button", self.player),
lambda state: state.has("Button Key", self.player) lambda state: state.has("Button Activation", self.player))
)
self.multiworld.completion_condition[self.player] = lambda state: \ self.multiworld.completion_condition[self.player] = lambda state: \
state.has("Button Key", self.player) state.has("Feeling of Satisfaction", self.player)
else:
self.multiworld.completion_condition[self.player] = lambda state: \
state.has("The feeling of satisfaction.", self.player)
def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None): def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
region = Region(name, player, world) region = Region(name, player, world)
if locations: if locations:
for location_name in locations.keys(): for location_name in locations.keys():
location = CliqueLocation(player, location_name, locations[location_name], region) region.locations.append(CliqueLocation(player, location_name, locations[location_name], region))
region.locations.append(location)
if exits: if exits:
for _exit in exits: for _exit in exits:
region.exits.append(Entrance(player, _exit, region)) region.exits.append(Entrance(player, _exit, region))
return region return region
class CliqueItem(Item):
game = "Clique"
class CliqueLocation(Location):
game: str = "Clique"

View File

@ -2,10 +2,9 @@
## What is this game? ## What is this game?
Even I don't know. Yes.
## Where is the settings page? ## Where is the settings page?
The [player settings page for this game](../player-settings) contains all the options you need to configure The [player settings page for this game](../player-settings) contains all the options you need to configure
and export a config file. and export a config file.

View File

@ -1,6 +1,6 @@
# Clique Start Guide # Clique Start Guide
Go to the [Clique Game](http://clique.darkshare.site.nfoservers.com/) and enter the hostname:ip address, Go to the [Clique Game](http://clique.pharware.com/) and enter the hostname:ip address,
then your slot name. then your slot name.
Enjoy. Enjoy.