mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-03-21 15:03:18 -07:00
* 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 759efd3e2b.
* 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)
|