* fix str default on text choice
* fix range with default random
* forgot module update
* handle namedrange default special
* handle option group of options we should not render
* Update OptionsCreator.py
* Update OptionsCreator.py
* grammar
* 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>
* 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>
* Options: forbid worlds just dumping every single option they don't need
* make the equal proper
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Calling the dunder method has to:
1. Look up the dunder method for that object/class
2. Bind a new method instance to the object instance
3. Call the method with its arguments
4. Run the appropriate operation on the object
Whereas running the appropriate operation on the object from the start
skips straight to step 4.
Region.Register.__getitem__ is called a lot without #4583. In that case,
generation of 10 template Blasphemous yamls with
`--skip_output --seed 1` and progression balancing disabled went from
19.0s to 18.8s (1.3% reduction in generation duration).
From profiling with `timeit`
```py
def __getitem__(self, index: int) -> Location:
return self._list[index]
```
appears to be about twice as fast as the old code:
```py
def __getitem__(self, index: int) -> Location:
return self._list.__getitem__(index)
```
Besides this, there is not expected to be any noticeable difference in
performance, and there is not expected to be any difference in semantics
with these changes.
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* CounterOption
* bring back the negative exception for ItemDict
* Backwards compatibility
* ruff on witness
* fix in calls
* move the contains
* comment
* comment
* Add option min and max values for CounterOption
* Use min 0 for TrapWeights
* This is safe now
* ruff
* This fits on one line again now
* OptionCounter
* Update Options.py
* Couple more typing things
* Update Options.py
* Make StartInventory work again, also make LocationCounter theoretically work
* Docs
* more forceful wording
* forced line break
* Fix unit test (that wasn't breaking?)
* Add trapweights to witness option presets to 'prove' that the unit test passes
* Make it so you can order stuff
* Update macros.html
* Also indents plando_connections properly
* Adding apostrophe quotes around item, location, entrance/exit and boss names to make errors more readable
* Update plando_en.md
* Fixing test in Lufia II
* Core: Allow option groups to specify option order
* words hard
* Actually use the earlier built dictionary for faster in checking
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
---------
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* add quotes around strings containing {{ game }}
* do the actually correct thing instead of a hack
thanks berserker66 for pointing out to me that I was doing this the
completly wrong way, so I fixed it up
* Clean up filenames to prevent illegal chars
* Use %s substitution instead of concatenation
* whoops
somehow i removed a space from the comment for the regex, so this adds
it back
* Use pre-existing function in Utils.py
* Test: add test for option yaml with colon
---------
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* make yaml_output arg a bool instead of number
* make yaml_output dump all player options as csv
* it sorts by game so swap those columns
* capitalize game and name headers
* use a list and just add an if before adding instead of sorting
* skip options that the world doesn't want displayed
* check if the class is a subclass of Removed specifically instead of the none flag
* don't create empty rows
* add a header for every game option that isn't from the common ones even if they have the same name
* add to webhost gen args so it can still gen
* Options: Always verify keys for VerifyKeys options
* fix PlandoTexts
* use OptionError and give a slightly better error message for which option it is
* add the player name to the error
* don't create an unnecessary list
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* rename locations accessibility to "full" and make old locations accessibility debug only
* fix a bug in oot
* reorder lttp tests to not override its overrides
* changed the wrong word in the dict
* :forehead:
* update the manual lttp yaml
* use __debug__
* update pokemon and messenger
* fix conflicts from 993
* fix stardew presets
* add that locations may be inaccessible to description
* use reST format and make the items description one line so that it renders correctly on webhost
* forgot i renamed that
* add aliases for back compat
* some cleanup
* fix imports
* fix test failure
* only check "items" players when the item is progression
* Revert "only check "items" players when the item is progression"
This reverts commit ecbf986145.
* remove some unnecessary diffs
* CV64: Add ItemsAccessibility
* put items description at the bottom of the docstring since that's it's visual order
* :
* rename accessibility reference in pokemon rb dexsanity
* make the rendered tooltips look nicer
* Render option documentation as reStructuredText in the WebView
This means that options can use the standard Python documentation
format, while producing much nicer-looking documentation in the
WebView with things like emphasis, lists, and so on.
* Opt existing worlds out of rich option docs
This avoids breaking the rendering of existing option docs which were
written with the old plain text rendering in mind, while also allowing
new options to default to the rich text rendering instead.
* Use reStructuredText formatting for Lingo Options docstrings
* Disable raw and file insertion RST directives
* Update doc comments per code review
* Make rich text docs opt-in
* Put rich_text_options_doc on WebWorld
* Document rich text API
* Code review
* Update docs/options api.md
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* Update Options.py
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
---------
Co-authored-by: Chris Wilson <chris@legendserver.info>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* Player Options: Fix Named Range displays
* Also add validation to the NamedRange class itself
* Don't break Stardew
* Comment
* Do replace first so title works correctly
* Bring change to Weighted Options as well
* allow option groups to specify whether they should be hidden or not
* allow worlds to override whether game options starts collapsed
* remove Game Options assert so the visibility of that group can be changed
* if "Game Options" or "Item & Location Options" groups are specified, fix casing
* don't allow item & location options to have duplicates of the auto added options
* use a generator instead of a comprehension
* use consistent naming
* move item_and_loc_options out of the meta class and into the Options module
* don't allow empty world specified option groups
* reuse option_group generation code instead of rewriting it
* delete the default group if it's empty
* indent