* init
* Revert "init"
This reverts commit bba6b7a306b512dc77bc04acb166f83134827f98.
* put it back but clean
* pass args
* windows stuff
* delete old exe
this seems like it?
* use marin icon in launcher
* use LauncherComponents.launch
Without `gc.freeze()` and `gc.unfreeze()` afterward, the `gc.collect()`
call within each benchmark often takes much longer than all 100_000
iterations of the location access rule, making it difficult to benchmark
all but the slowest of access rules.
This change enables using `gc.freeze()` by default.
* core: Add host.yaml setting to make !countdown configurable
* Store /option changes to countdown_mode in save file
* Wording changes in host.yaml
* Use .get
* Fix validation for /option command
* Improve user friendliness of generation failure webpage.
* Add details to other render for seedError.html.
* Refactor css to avoid !important tags.
* Update WebHostLib/static/styles/themes/ocean-island.css
Co-authored-by: qwint <qwint.42@gmail.com>
* Update WebHostLib/generate.py
Co-authored-by: qwint <qwint.42@gmail.com>
* use f words
* small refactor
* Update WebHostLib/generate.py
Co-authored-by: qwint <qwint.42@gmail.com>
* Fix whitespace.
* Update one new use of seedError template for pickling errors.
---------
Co-authored-by: qwint <qwint.42@gmail.com>
There is a limit to the number of times an item can be swapped to
prevent swapping going on potentially forever. Swapping an item with a
copy of itself is assumed to be a pointless swap, and was wasting
possible swaps in cases where there were multiple copies of an item
being placed.
This swapping behaviour was noticed from debugging solo LADX generations
that was wasting swaps by swapping copies of the same item.
This patch adds a check that if the placed_item and item_to_place are
equal, then the location is skipped and no attempt to swap is made.
If worlds do intend to have seemingly equal items to actually have
different logical behaviour, those worlds should override __eq__ on
their Item subclasses so that the item instances are not considered
equal.
Generally, fill_restrictive should only be used with progression items,
so it is assumed that swapping won't have to deal with multiple copies
of an item where some copies are progression and some are not. This is
relevant because Item.__eq__ only compares .name and .player.
* SNIClient: new SnesReader interface
* fix Python 3.8 compatibility
`bisect_right`
* move to worlds
because we don't have good separation importable modules and entry points
* `read` gives object that contains data
* remove python 3.10 implementation and update typing
* remove obsolete comment
* freeze _MemRead and assert type of get parameter
* some optimization in `SnesData.get`
* pass context to `read` so that we can have a static instance of `SnesReader`
* add docstring to `SnesReader`
* remove unused import
* break big reads into chunks
* some minor improvements
- `dataclass` instead of `NamedTuple` for `Read`
- comprehension in `SnesData.__init__`
- `slots` for dataclasses
* Change descriptions
* Fix sni client?
---------
Co-authored-by: beauxq <beauxq@yahoo.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* SMZ3: Make GT fill behave like upstream SMZ3 multiworld GT fill
This means: All items local, 50% guaranteed filler, followed by possible
useful items, never progression.
* Fix item links
* SMZ3: Ensure in all cases, we remove the right item from the pool
Previously front fill would cause erratic errors on frozen, with the
cause immediately revealed by, on source, tripping the assert that was
added in #5109
* SMZ3: Truly, *properly* fix GT junk fill
After hours of diving deep into the upstream SMZ3 randomizer, it finally
behaves identically to how it does there
* filter world types at top of webhost so worlds that aren't loadable in webhost are "uninstalled"
* mark invalid worlds, show error if any, then filter to exclude them
* support version on new manifest
* apply world version from manifest
* Update Generate.py
* docs
* reduce mm2 version again
* wrong version
* validate game in world_types
* Update Generate.py
* let unknown game fall through to later exception
* hide real world version behind property
* named tuple is immutable
* write minimum world version to template yaml, fix gen edge cases
* punctuation
* check for world version in autoworldregister
* missed one
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>