110 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			110 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | from BaseClasses import Entrance, Item, ItemClassification, Location, MultiWorld, Region, Tutorial | ||
|  | from worlds.AutoWorld import WebWorld, World | ||
|  | from worlds.generic.Rules import set_rule | ||
|  | from .Options import clique_options | ||
|  | 
 | ||
|  | item_table = { | ||
|  |     "The feeling of satisfaction.": 69696969, | ||
|  |     "Button Key": 69696968, | ||
|  | } | ||
|  | 
 | ||
|  | location_table = { | ||
|  |     "The Button": 69696969, | ||
|  |     "The Desk": 69696968, | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | class CliqueWebWorld(WebWorld): | ||
|  |     theme = "partyTime" | ||
|  |     tutorials = [ | ||
|  |         Tutorial( | ||
|  |             tutorial_name="Start Guide", | ||
|  |             description="A guide to playing Clique.", | ||
|  |             language="English", | ||
|  |             file_name="guide_en.md", | ||
|  |             link="guide/en", | ||
|  |             authors=["Phar"] | ||
|  |         ) | ||
|  |     ] | ||
|  | 
 | ||
|  | 
 | ||
|  | class CliqueWorld(World): | ||
|  |     """The greatest game ever designed. Full of exciting gameplay!""" | ||
|  | 
 | ||
|  |     game = "Clique" | ||
|  |     topology_present = False | ||
|  |     data_version = 1 | ||
|  |     web = CliqueWebWorld() | ||
|  |     option_definitions = clique_options | ||
|  | 
 | ||
|  |     location_name_to_id = location_table | ||
|  |     item_name_to_id = item_table | ||
|  | 
 | ||
|  |     def create_item(self, name: str) -> "Item": | ||
|  |         return Item(name, ItemClassification.progression, self.item_name_to_id[name], self.player) | ||
|  | 
 | ||
|  |     def get_setting(self, name: str): | ||
|  |         return getattr(self.multiworld, name)[self.player] | ||
|  | 
 | ||
|  |     def fill_slot_data(self) -> dict: | ||
|  |         return {option_name: self.get_setting(option_name).value for option_name in self.option_definitions} | ||
|  | 
 | ||
|  |     def generate_basic(self) -> None: | ||
|  |         self.multiworld.itempool.append(self.create_item("The feeling of satisfaction.")) | ||
|  | 
 | ||
|  |         if self.multiworld.hard_mode[self.player]: | ||
|  |             self.multiworld.itempool.append(self.create_item("Button Key")) | ||
|  | 
 | ||
|  |     def create_regions(self) -> None: | ||
|  |         if self.multiworld.hard_mode[self.player]: | ||
|  |             self.multiworld.regions += [ | ||
|  |                 create_region(self.multiworld, self.player, "Menu", None, ["Entrance to THE BUTTON"]), | ||
|  |                 create_region(self.multiworld, self.player, "THE BUTTON", self.location_name_to_id) | ||
|  |             ] | ||
|  |         else: | ||
|  |             self.multiworld.regions += [ | ||
|  |                 create_region(self.multiworld, self.player, "Menu", None, ["Entrance to THE BUTTON"]), | ||
|  |                 create_region(self.multiworld, self.player, "THE BUTTON", {"The Button": 69696969}) | ||
|  |             ] | ||
|  | 
 | ||
|  |         self.multiworld.get_entrance("Entrance to THE BUTTON", self.player)\ | ||
|  |             .connect(self.multiworld.get_region("THE BUTTON", self.player)) | ||
|  | 
 | ||
|  |     def get_filler_item_name(self) -> str: | ||
|  |         return self.multiworld.random.choice(item_table) | ||
|  | 
 | ||
|  |     def set_rules(self) -> None: | ||
|  |         if self.multiworld.hard_mode[self.player]: | ||
|  |             set_rule( | ||
|  |                 self.multiworld.get_location("The Button", self.player), | ||
|  |                 lambda state: state.has("Button Key", self.player) | ||
|  |             ) | ||
|  | 
 | ||
|  |             self.multiworld.completion_condition[self.player] = lambda state: \ | ||
|  |                 state.has("Button Key", 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): | ||
|  |     region = Region(name, player, world) | ||
|  |     if locations: | ||
|  |         for location_name in locations.keys(): | ||
|  |             location = CliqueLocation(player, location_name, locations[location_name], region) | ||
|  |             region.locations.append(location) | ||
|  | 
 | ||
|  |     if exits: | ||
|  |         for _exit in exits: | ||
|  |             region.exits.append(Entrance(player, _exit, region)) | ||
|  | 
 | ||
|  |     return region | ||
|  | 
 | ||
|  | 
 | ||
|  | class CliqueItem(Item): | ||
|  |     game = "Clique" | ||
|  | 
 | ||
|  | 
 | ||
|  | class CliqueLocation(Location): | ||
|  |     game: str = "Clique" |