* Webhost: rename all references to forfeit and deprecate it
* needed some renames in multiserver for all the commands to function
* remove forfeit commands
* support forfeit_mode for clients
* rename `forfeit_player` to `release_player`
* fix case sensitivity in server commands
* improve ambiguous match breakout
* worried about accidentally swapping team and slot
* Remove now unused import
* First Pass removal of game-specific code
* SMW, DKC3, and SM hooked into AutoClient
* All SNES autoclients functional
* Fix ALttP Deathlink
* Don't default to being ALttP, and properly error check ctx.game
* Adjust variable naming
* In response to:
> we should probably document usage somewhere. I'm open to suggestions of where this should be documented.
I think the most valuable documentation for APIs is docstrings and full typing.
about websockets change in imports - from websockets documentation:
> For convenience, many public APIs can be imported from the websockets package. However, this feature is incompatible with static code analysis. It breaks autocompletion in an IDE or type checking with mypy. If you’re using such tools, use the real import paths.
* todo note for python 3.11
typing.NotRequired
* missed staging in previous commit
* added missing death Game States for DeathLink
Co-authored-by: beauxq <beauxq@users.noreply.github.com>
Co-authored-by: lordlou <87331798+lordlou@users.noreply.github.com>
* [Core] Added Countdown type to print json to distinct the count down message from other types
* Added backward compatibility check
* Fixed review comments
* Updated header category
* Apply suggestions from code review
Co-authored-by: Hussein Farran <hmfarran@gmail.com>
* Completely phased out Print in favor of PrintJson
* Updated docs to warn about phasing out of Print
* Removed faulty import
Co-authored-by: Hussein Farran <hmfarran@gmail.com>
* multiserver: allow `!release` as an alias for `!forfeit`
* create `/release` command. Add some periods to messages that print in console and point users to release
* Add a missing space on line 1135
Co-authored-by: Chris Wilson <chris@legendserver.info>
This updates notify_hints() as follows:
- Sort hints by their 'found' attribute in reverse during the first
iteration, so items not found will show at the bottom.
- Store a tuple of (hint, hint.as_network_message()) in concerns rather
than just the hint so the raw hint data remains available for later
sorting.
- Do the logging.info call as part of this iteration instead of doing
a second iteration pass that does nothing but logging.
- Iterate over concerns (and look up connected clients) rather than
iterating over all clients (and checking for concerns)
* WebHost: Make custom server prefer ipv4 for display
* WebHost: Make server retry saving in case of connection issues
* WebHost: fix autolaunch guardians getting stuck waiting for the oldest two rooms.
Probably not related to the issues of the system itself getting stuck, but should be fixed anyway.
* WebHost: logfile is meant to be guarded by access cookie
* WebHost: set patch target to null if port is not valid, disabling auto-connect
* Tests: add test to check for typo'd item name group definitions
Factorio: item *name* group was pointing to IDs instead.
Server: prevent crash when using Event-filled item name group
* Server: prevent crash when /hint'ing for an item name group with events
GPL -> BSD2Clause and should be faster though I haven't tested it myself and just trusted people on the internet.
Jellyfish also allows us access to many more algorithms should they be any better. Trying out Jaro distance now instead of Levenshtein.
* Add Item cheat permission to generate page.
* Indicate that both remaining_mode and item cheat are disabled in race mode.
* Add server_password
* refine tooltips and help for server_password and !admin command.
* Add Plando options to generation page.
* Remove debugging code
* Style adjustments and HTML formatting and tag fixes with the goal of making the page nicer looking and not as vertical.
Co-authored-by: Chris Wilson <chris@legendserver.info>
`AutoWorld.World`s can set required_server_version and required_client_version properties. Drop `get_required_client_version()`.
`MultiServer` will set an absolute minimum client version based on its capability (protocol level).
`IgnoreVersion` tag is replaced by using `Tracker` or `TextOnly` with empty or null `game`.
Ignoring game will also ignore game's required_client_version (and fall back to server capability).
* MultiServer: try to import tkinter, then provide some feedback
TK may not be installed alongside python on some systems, like minimal linux installations.
* specify tkinter package
Co-authored-by: Hussein Farran <hmfarran@gmail.com>
Co-authored-by: Hussein Farran <hmfarran@gmail.com>
* Tracker tag will receive all items via server (including local)
* TextOnly tag will receive no items
* TextClient sends TextOnly tag
* precollected items / start_inventory does not get an "Order received" number anymore
* local items do always get an "Order received" number now
* multisave changed, includes version number now, upgrade works for games (not trackers)
CommonClient.py UI: add Commands button that points out /help and !help
CommonClient.py: track permissions
CommonClient.py: track missing locations and checked locations in lib
Allows clients to only download relevant parts of the datapackage, or to keep ID lookups per-game, and for Bounce to tell if there will be a receiving end.