63 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from BaseClasses import Item, Tutorial
 | |
| from worlds.AutoWorld import WebWorld, World
 | |
| from typing import Dict, Any
 | |
| from . import events, items, locations, regions, rules
 | |
| from .options import NoitaOptions
 | |
| 
 | |
| 
 | |
| class NoitaWeb(WebWorld):
 | |
|     tutorials = [Tutorial(
 | |
|         "Multiworld Setup Guide",
 | |
|         "A guide to setting up the Noita integration for Archipelago multiworld games.",
 | |
|         "English",
 | |
|         "setup_en.md",
 | |
|         "setup/en",
 | |
|         ["Heinermann", "ScipioWright", "DaftBrit"]
 | |
|     )]
 | |
|     theme = "partyTime"
 | |
|     bug_report_page = "https://github.com/DaftBrit/NoitaArchipelago/issues"
 | |
| 
 | |
| 
 | |
| # Keeping World slim so that it's easier to comprehend
 | |
| class NoitaWorld(World):
 | |
|     """
 | |
|     Noita is a magical action roguelite set in a world where every pixel is physically simulated. Fight, explore, melt,
 | |
|     burn, freeze, and evaporate your way through the procedurally generated world using wands you've created yourself.
 | |
|     """
 | |
| 
 | |
|     game = "Noita"
 | |
|     options: NoitaOptions
 | |
|     options_dataclass = NoitaOptions
 | |
| 
 | |
|     item_name_to_id = items.item_name_to_id
 | |
|     location_name_to_id = locations.location_name_to_id
 | |
| 
 | |
|     item_name_groups = items.item_name_groups
 | |
|     location_name_groups = locations.location_name_groups
 | |
| 
 | |
|     web = NoitaWeb()
 | |
| 
 | |
|     def generate_early(self) -> None:
 | |
|         if not self.multiworld.get_player_name(self.player).isascii():
 | |
|             raise Exception("Noita yaml's slot name has invalid character(s).")
 | |
| 
 | |
|     # Returned items will be sent over to the client
 | |
|     def fill_slot_data(self) -> Dict[str, Any]:
 | |
|         return self.options.as_dict("death_link", "victory_condition", "path_option", "hidden_chests",
 | |
|                                     "pedestal_checks", "orbs_as_checks", "bosses_as_checks", "extra_orbs", "shop_price")
 | |
| 
 | |
|     def create_regions(self) -> None:
 | |
|         regions.create_all_regions_and_connections(self)
 | |
| 
 | |
|     def create_item(self, name: str) -> Item:
 | |
|         return items.create_item(self.player, name)
 | |
| 
 | |
|     def create_items(self) -> None:
 | |
|         items.create_all_items(self)
 | |
| 
 | |
|     def set_rules(self) -> None:
 | |
|         rules.create_all_rules(self)
 | |
| 
 | |
|     def get_filler_item_name(self) -> str:
 | |
|         return self.random.choice(items.filler_items)
 | 
