 920cffda2d
			
		
	
	920cffda2d
	
	
	
		
			
			* initial work on procedure patch * more flexibility load default procedure for version 5 patches add args for procedure add default extension for tokens and bsdiff allow specifying additional required extensions for generation * pushing current changes to go fix tloz bug * move tokens into a separate inheritable class * forgot the commit to remove token from ProcedurePatch * further cleaning from bad commit * start on docstrings * further work on docstrings and typing * improve docstrings * fix incorrect docstring * cleanup * clean defaults and docstring * define interface that has only the bare minimum required for `Patch.create_rom_file` * change to dictionary.get * remove unnecessary if statement * update to explicitly check for procedure, restore compatible version and manual override * Update Files.py * remove struct uses * Update Rom.py * convert KDL3 to APPP * change class variables to instance variables * Update worlds/Files.py Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com> * Update worlds/Files.py Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com> * move required_extensions to tuple * fix missing tuple ellipsis * fix classvar mixup * rename tokens to _tokens. use hasattr * type hint cleanup * Update Files.py * initial base for local items, need to finish * coo not clean * handle local items for real, appp cleanup * actually make bosses send their locations * fix cloudy park 4 rule, zero deathlink message * remove redundant door_shuffle bool when generic ER gets in, this whole function gets rewritten. So just clean it a little now. * properly fix deathlink messages, fix fill error * update docs * add prefill items * fix kine fill error * Update Rom.py * Update Files.py * mypy and softlock fix * Update Gifting.py * mypy phase 1 * fix rare async client bug * Update __init__.py * typing cleanup * fix stone softlock because of the way Kine's Stone works, you can't clear the stone blocks before clearing the burning blocks, so we have to bring Burning from outside * Update Rom.py * Add option groups * Rename to lowercase * finish rename * whoops broke the world * fix animal duplication bug * overhaul filler generation * add Miku flavor * Update gifting.py * fix issues related to max_hs increase * Update test_locations.py * fix boss shuffle not working if level shuffle is disabled * fix bleeding default levels * Update options.py * thought this would print seed * yay bad merges * forgot options too * yeah lets just break generation while at it * this is probably a problem * cap required heart stars * Revert "cap required heart stars" This reverts commit 759efd3e2b14ec2855082de041ac989cb9c5d500. * fix duplication removal placement, deprecated test option * forgot that we need to account for what we place * move location ids * rewrite trap handling * further stage renumber fixes * forgot one more * basic UT support * fix local heart star checks * fix pattern --------- Co-authored-by: beauxq <beauxq@yahoo.com> Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com> Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
		
			
				
	
	
		
			39 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import typing
 | |
| from argparse import Namespace
 | |
| 
 | |
| from BaseClasses import MultiWorld, PlandoOptions, CollectionState
 | |
| from test.bases import WorldTestBase
 | |
| from test.general import gen_steps
 | |
| from worlds import AutoWorld
 | |
| from worlds.AutoWorld import call_all
 | |
| # mypy: ignore-errors
 | |
| # This is a copy of core code, and I'm not smart enough to solve the errors in here
 | |
| 
 | |
| 
 | |
| class KDL3TestBase(WorldTestBase):
 | |
|     game = "Kirby's Dream Land 3"
 | |
| 
 | |
|     def world_setup(self, seed: typing.Optional[int] = None) -> None:
 | |
|         if type(self) is WorldTestBase or \
 | |
|                 (hasattr(WorldTestBase, self._testMethodName)
 | |
|                  and not self.run_default_tests and
 | |
|                  getattr(self, self._testMethodName).__code__ is
 | |
|                  getattr(WorldTestBase, self._testMethodName, None).__code__):
 | |
|             return  # setUp gets called for tests defined in the base class. We skip world_setup here.
 | |
|         if not hasattr(self, "game"):
 | |
|             raise NotImplementedError("didn't define game name")
 | |
|         self.multiworld = MultiWorld(1)
 | |
|         self.multiworld.game[1] = self.game
 | |
|         self.multiworld.player_name = {1: "Tester"}
 | |
|         self.multiworld.set_seed(seed)
 | |
|         self.multiworld.state = CollectionState(self.multiworld)
 | |
|         args = Namespace()
 | |
|         for name, option in AutoWorld.AutoWorldRegister.world_types[self.game].options_dataclass.type_hints.items():
 | |
|             setattr(args, name, {
 | |
|                 1: option.from_any(self.options.get(name, getattr(option, "default")))
 | |
|             })
 | |
|         self.multiworld.set_options(args)
 | |
|         self.multiworld.plando_options = PlandoOptions.connections
 | |
|         for step in gen_steps:
 | |
|             call_all(self.multiworld, step)
 |