* 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>
Feature highlights:
- Adds many content to the SC2 game
- Allows custom mission order
- Adds race-swapped missions for build missions (except Epilogue and NCO)
- Allows War Council Nerfs (Protoss units can get pre - War Council State, alternative units get another custom nerf to match the power level of base units)
- Revamps Predator's upgrade tree (never was considered strategically important)
- Adds some units and upgrades
- Locked and excluded items can specify quantity
- Key mode (if opt-in, missions require keys to be unlocked on top of their regular regular requirements
- Victory caches - Victory locations can grant multiple items to the multiworld instead of one
- The generator is more resilient for generator failures as it validates logic for item excludes
- Fixes the following issues:
- https://github.com/ArchipelagoMW/Archipelago/issues/3531
- https://github.com/ArchipelagoMW/Archipelago/issues/3548
* Ensure that OptionSets and OptionLists get exported to yaml, even if nothing is selected
* forgot ItemSet and LocationSet
* Make it even less likely for there to be overlap
Gives WebHost the ability to verify that a patch file is an APPlayerContainer (defined by #4331 as a APContainer containing the "player" field), and allowed it to display any patch file that it can verify is an APPlayerContainer.
* 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
* Timespinner: Add "no hell spiders" enemy rando option that is present in upstream settings
* Timespinner: Prism Break support tweaks (including tracker support)
* Timespinner: Add support for upstream Lock Key Amadeus flag
* Timespinner: Add support for upstream Risky Warps flag
* Timespinner: Add support for upstream Pyramid Start flag
* Timespinner: fix error in lab connectivity logic
* Timespinner: use has_all to simplify one check
Per PR suggestion.
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Timespinner: fix apparent logic error inherited from in-rando logic
* Timespinner: adjust "Origins" location logic slightly further to account for a Risky Warps case
* Timespinner: remove the backward compat options for the recent flag additions
* Timespinner: add newly added Gate Keep option from rando
* Timespinner: adjust the laser access colours in the tracker
* Timespinner: fix an item description in the tracker
* Timespinner: based on testing feedback, put Laser Access items in their own category
* Timespinner: add support for new upstream flag Royal Roadblock
* Timespinner: also ensure the new flag gets put in slot data
* Timespinner: fix bug in universal tracker support indicating castle basement is accessible at the lower Rising Tides flooding level
* Timespinner: exclude Talaria Attachment and Timespinner Wheel from pyramid start starter progression items
* Timespinner: fix region logic for the left pyramid warp
* Timespinner: fix main Gyre access logic when Risky Warps warps you behind the lasers
* Timespinner: apply suggested spacing fix
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
---------
Co-authored-by: sgrunt <sgrunt1987@gmail.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Also makes adjustments to the style for these slots by italicizing its names (including multi-tracker).
* Player-specific trackers do not link to ItemLink player trackers (they do not exist).
* Fixes a bug on Factorio multi-tracker when item links exist.
* WebHost: use new safe yaml template filename
this mirrors the change in ArchipelagoMW/#4106 in WebHost
* WebHost: install docs into safe filename and require docs to be named safe
* Test: update doc test for safe name
* WebHost: fix import order to not break ModuleUpdate
Previously, because `default(..., true)` only checks if the
left-hand-side is falsey, not just `None`, this always forced options
to render in non-rich mode if they were explicitly set to
`rich_text_doc = None`. Now it matches the intended and documented
behavior, where `None` falls back to the world's
`rich_text_options_doc` setting.
* WebHost: add spinner to room command
and show error message if fetch fails due to NetworkError
* WebHost: don't update room log while tab is inactive
* WebHost: don't include log for automated requests
* WebHost: refresh room also for re-spinups
and do that from javascript
* Test, WebHost: send fake user-agent where required
* WebHost: remove wrong comment in host room
* Core: have webhost slot name links go through the launcher so that components can use them
* fix query handling, remove debug prints, and change mousover text for new behavior
* remove a missed debug and unused function
* filter room id to suuid since that's what everything else uses
* pass args to common client correctly
* add GUI to select which client to open
* remove args parsing and "require" components to parse it themselves
* support for messenger since it was basically already done
* use "proper" args argparsing and clean up uri handling
* use a timer and auto launch text client if no component is found
* change the timer to be a bit more appealing. also found a bug lmao
* don't hold 5 hostage and capitalize URI ig
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
If a NamedRange has a `special_range_names` entry outside the
`range_start` and `range_end`, the HTML5 range input will clamp the
submitted value to the closest value in the range.
These means that, for example, Pokemon RB's "HM Compatibility" option's
"Vanilla (-1)" option would instead get posted as "0" rather than "-1".
This change updates NamedRange to behave like TextChoice, where the
select element has a `name` attribute matching the option, and there is
an additional element to be able to provide an option other than the
select element's choices.
This uses a different suffix of `-range` rather than `-custom` that
TextChoice uses. The reason is we need some way to decide whether to use
the custom value or the select value, and that method needs to work
without JavaScript. For TextChoice this is easy, if the custom field is
empty use the select element. For NamedRange this is more difficult as
the browser will always submit *something*. My choice was to only use
the value from the range if the select box is set to "custom". Since
this only happens with JS as "custom' is hidden, I made the range hidden
under no-JS. If it's preferred, I could make the select box hidden
instead. Let me know.
This PR also makes the `js-required` class set `display: none` with
`!important` as otherwise the class wouldn't work on any rule that
had `display: flex` with more specificity than a single class.
* add Range= to log, making responses a lot smaller for massive rooms
* switch xhr to fetch
* post the form using fetch if possible
* also refresh log faster while waiting for command echo / response
* do not follow redirect, saving a request
* do not post empty body
* smooth-scroll the log view
* paste the log into the div when loading the HTML (up to 1MB, rest will be `fetch`ed)
* fix duplicate charset in display_log response
* 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
* WebHost: Fix "Add" button for Progression Balancing causing a weird redirect
This "add" button is part of a form, which causes it to submit the form, because the default type for a button is "submit".
This PR changes the type of the button to "button", which causes it to not submit the form and just execute its normal effect.
(An alternative would be `event.preventDefault()` but that seems less clean to me, but also I'm not a HTML/JS dev)
* There's also multiple.
* Fix improper css for word-break on player-options page
* Add default handling to weighted-options types
* Remove random-low/mid/high from Toggle, Choice, and TextChoice,
* Port key sorting for OptionList and OptionSet from player-options to weighted-options
* Ensure Choice and TextChoice values are set properly
* Remove debug line 🤦♂️
* 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