Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add to the ArchipIDLE items list #807

Merged
merged 3 commits into from
Jul 21, 2022
Merged

Add to the ArchipIDLE items list #807

merged 3 commits into from
Jul 21, 2022

Conversation

jmabry0163
Copy link
Contributor

No description provided.

Copy link
Member

@LegendaryLinux LegendaryLinux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe something more descriptive for those uninitiated. How about The missing moderator, Frostwares

Copy link
Member

@LegendaryLinux LegendaryLinux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lowercase missing moderator and you've got a deal.

@LegendaryLinux LegendaryLinux merged commit a7787d8 into ArchipelagoMW:main Jul 21, 2022
@jmabry0163 jmabry0163 deleted the patch-2 branch July 21, 2022 22:08
alwaysintreble added a commit to alwaysintreble/Archipelago that referenced this pull request Aug 5, 2022
* SC2: Better set-up instructs and a section for those having issues

* Adding in error message for FF1 if player name is empty in the ROM

* Factorio: fix crude-oil related crashes (#552)

* WebHost: fix plando options type error

* Clients: some cleanup

* LttP: fix adjuster partial settings store crash

* Block collection of Sahasrahlah. (#562)

* SC2: Launch game in fullscreen mode.

* Clients: now featuring tooltips and some general cleanup (#564)

* Clients: now featuring tooltips and some general cleanup

* Clients: fade in tooltip over 0.25 seconds

* Clients: reset slot and team when disconnecting

* Clients: allow joining multiworld via link (TextClient only for now)

* add tooltip for Plando Options on Generate page (#563)

* Network: remove "SlotAlreadyTaken" from docs and clients, as it was removed from the server in 0.2

* Sm various fixes (#518)

* v6,sm64ex: Use standard Death Link option name

* MC: Bee Trap is renamed and trap

* Clients: allow "&[]" in tooltips, as kivy-escaped characters and fix similar translate issues in copy-paste clipboard

* OoT: write double-ended shuffled entrances to spoiler log more clearly

* OoT: remove warning message during multidata manipulation

* OoT: trap display rework
Traps from all games now disguise themselves as OoT items
Traps all display "[Player] is a FOOL!" when picked up

* OoT: write data into autotracking context
useful for the client and autotrackers to gather data easily

* OoT: add version check to lua script + client

* OoT: lua script reads MQ dungeon address dynamically from autotracker context
finally I can stop updating this every version

* OoT: big poe count option returns

* OoT Client: deathlink toggle

* SC2: Option for random mission order (#569)

* WebHost: update waitress and bokeh (#575)

* WebHost: undo autoconnect link as not all browsers behave like Vivaldi. (#577)

* WebHost: undo autoconnect link as not all browsers behave like Vivaldi.

* Increase tooltip z-index

Co-authored-by: Chris Wilson <[email protected]>

* SC2: fix copy pasta in client

* Setup: "ParseVersion" gives Deprecated Warning, fixing the warning.

* MC: fix Bee Trap name

* SC2: Updated webhost details page

* [Timespinner] Removed backwarp from refugee camp to library from logic

* SC2: Fixed issue in random mission order with some missions being available too early

* Meritous: Minor logic change (#584)

* LttP: convert vendors hint into separate scams option

* AppImage: fix build (#589)

* CI: build: use ARCH= for AppImage

* WebHost: pin flask-caching

until https://github.com/pallets-eco/flask-caching/pull/352 is merged or fixed otherwise

* WebHost: use non-blocking file lock on unix, just like windows

* SC2: GUI Mission Launcher (#586)

* SC2: Functioning Starcraft 2 Mission Launcher UI

* AutoWorld: add .__file__ attribute to AutoWorlds
This tries to help with a recurring easy to make mistake, where ./worlds/myworld does not exist in frozen form and is instead ./lib/worlds/myworld

* SC2: get .kv file path correctly when frozen too

Co-authored-by: TheCondor07 <[email protected]>
Co-authored-by: Fabian Dill <[email protected]>

* Sm remote item fix (#592)

* Doc: deprecate datapackage_version

* Server: remove compat to ~0.2 unversioned save data
If the savegame was loaded in the last few months, it will have already been upgraded.

* Tests: add test to check for typo'd item name group definitions (#594)

* 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

* WebHost: update flask-caching

* Tracker: fix ItemLinks items not being attributed to inventory

* LttP: split Retro into Retro Bows and Retro Caves (#588)

* SNIClient: run adjuster for new aplttp file type

* config: Use valid default enemizer_path on Linux (and Windows)

* TS: Add region names to location names, and other location name clarifications (#570)

* Add region names to location names, and other location name clarification changes

* kvui: fix warning about "X missing in __all__" when importing from kivy.base instead of correct module

* SC2: UI update, Relegate No Build Option, and Filler Item Update (#606)

* update minecraft_en.md wording slightly and minecraft version

* AppImage: better compatibility

* old startup script did not work with dash
* add missing libcrypt in cx_freeze

* UI: add Utils.messagebox

automatically uses either new kvui.MessageBox or tkinter.messagebox

* Core: move is_linux, _macos, _windows to Utils.py

* Ui: add open_filename helper

* native look & feel on Linux (Gnome and KDE)
* falls back to tkinter

* requirements: update cx-Freeze, fix compatibility

this conflicts with and replaces commit #f9b12b51080c7bbbf3d52c79453ac6c8222a03c5

* Appimage: include libssl (#613)

* Clients: UX improvements (#615)

* Clients: some improvements (#602)

* Clients: some improvements
SNIClient is the only client that uses slow_mode, so its definition should be moved there.
type info for CommandProcessor was int for some reason.
Moved a lot of type info from init to class body, making it easier for type checkers to find.
getLogger("") and getLogger(None) is technically different, just happens that our root logger is "", fixed it in case of future confusion though.

* Logging: log that init_logging was run and what the current AP version is.

* WebHost: some updates (#603)

* 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

* Generate: sort input files, preventing arbitrary order from OS layer.

* Update LICENSE files for WebHost assets (#616)

* Document multi-game YAMLs (#619)

* SC2: send ItemLink messages to ingame as well

* HK: allow shuffling charm costs, instead of randomizing. (#441)

* SNIClient: sort devices for consistent key
SNIClient: get rid of * import

* WebHost: request maximum amount of file handles from the system for autolauncher. (#625)

* WebHost: request maximum amount of file handles from the system for autolauncher.

* WebHostLib: wrap resource import into try to restore windows compatibility

* ALTTP: Updates to setup documents (#628)



Co-authored-by: alwaysintreble <[email protected]>

* OOT: Add note about common issue with lua option in the configuration step (#629)

* OOT: Add note about common issue with lua option in the configuration step

More and more people have issues with connecting with OoT because fresh installs of newer versions of Bizhawk show having "Lua+LuaInterface" selected when it actually loads "Nlua+KopiLua" instead until you toggle between the two options. Hopefully adding this bolded note will help new users avoid this problem in the future.

* [Timespinner] Add Boss Randomization Settings (#598)

* [Timespinner] Add Boss Randomization Settings

* Fix Room log

* Fix LTTP filler items (#621)

* Tutorials: hide ArchipIDLE (#622)

* Don't copy files of hidden worlds

* tutorials: hardcode not generating ArchipIDLE tutorial files outside april

* tutorials: ignore hidden worlds unless it's 'Archipelago'

* add parenthesis to prevent ambiguity

* Fix the possibility of manually assigning 'random' via alias_random

* Minecraft 1.19 (#623)

* WebHost: Allow "random" to be default option for toggles and choices. (#640)

* Itemlink tutorial improvement (#611)

* Update Items.py

* Update advanced_settings_en.md

* Update Items.py

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* improve consistency

Co-authored-by: alwaysintreble <[email protected]>

* fix formating on game setting in example

Co-authored-by: alwaysintreble <[email protected]>

* change version

Co-authored-by: alwaysintreble <[email protected]>

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* tutorials: add description for game weight and properly document item links

* tutorials: add description for null replacement

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: alwaysintreble <[email protected]>

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: Hussein Farran <[email protected]>

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: Hussein Farran <[email protected]>

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: Hussein Farran <[email protected]>

Co-authored-by: alwaysintreble <[email protected]>
Co-authored-by: Hussein Farran <[email protected]>

* Options: introduce SpecialRange (#630)

* Options: introduce SpecialRange

* Include SpecialRange data in player-settings and weighted-settings JSON files

* Add support for SpecialRange to player-settings pages

* Add support for SpecialRange options to weighted-settings. Also fixed a bug which would cause the page to crash if an unknown setting was detected.

Co-authored-by: Chris Wilson <[email protected]>

* SNIClient: prevent hang on exit if waiting on devices from SNI

* WebHost: update Flask-Limiter

* Hollow Knight updates (goals, WP/POP, etc.) (#438)

* Hollow Knight updates:

- Add configurable goals (Any, THK, Siblings, Radiance)
  - Change base logic to require Opened_Black_Egg_Temple instead of
    requiring 3 dreamers.  This is future-proof for transition rando,
    where Black Egg might not have been located yet.
  - Add combat logic for THK and Radiance on par with Rando4's boss logic,
    so itemless HK shouldn't be required.
- Existing completion logic now uses Black_Egg_te

- Add White Palace options
  (Exclude, King Fragment Only, No Path of Pain, Include)
  - Excluded WP may still be required for King Fragment if Charms are
    not randomized
  - Simply don't place WP locations that are excluded
  - Distinguish between POP locations (required for POP), WP checks (
    actual item locations), WP transitions (relevant for future transition
    rando), and WP events (logically required to reach King Fragment)
  - Many transitions were listed twice.  Remove duplicates.
  - Sort transitions by scene

- For randomizable locations that have no logical significance when not
    randomized, simply skip adding them to the pool entirely for
    theoretically faster generation.

* Hollow Knight updates

  - Support random starting geo up to 1000 geo.
  - Always include locations rather than dropping unrandomized "logicless"
    ones, as it is required to best support same-slot coop.

* ChecksFinder Client refactored to import CommonClient components.

* Options: fix all games templates breaking due to invalid progression balancing

* fix spaces in folder names failing to launch forge.

* Tracker: fix order received column being empty

* Generate: ignore files starting with ., something about Macs having a .DS_STORE or something. (#656)

* Generate: ignore files starting with ., something about Macs having a .DS_STORE or something.

* Generate: .name is important

* Meritous get_filler_item_name

* The Witness - 0.3.3 features and fixes (#617)

New option: "Early Secret Area" (Opens a door to the Challenge Area from the start of the game)
New option: Victory Conditions "Mountaintop Box Short" and "Mountaintop Box Long"
New options: Number of Lasers of Mountain, Number of Lasers for Challenge
New option & item: Add some number of "Puzzle Skips", which let you skip one puzzle in the game

Many logic fixes

* MultiServer: introduce LocationScouts create_as_hint -> only_new

* CommonClient: revamp DataPackage handling

* Tests: always display all warnings
WebHost: fix a warning about new cache names

* Core: move multiple Item properties into a single Flag (#638)

* LttP: fix Ganon's Tower trash prefill ignoring item_rules (#648)

* kivy: include in frozen library zip

* HK: extractor now needs to check for BOM

* Network remove roominfo players (#661)

* LttP: update manual yaml

* Core: increment version

* Core: fix ItemLinks setting advancement flag

* Core: downgrade item classification to int before writing to file

* setup.py: fix setuptools>=61 compatibility

Closes ArchipelagoMW/Archipelago#391

* Factorio: fix impossible recipes requiring stacking non-stacking items
Factorio: speedup load time

* Launcher: always use kvui

* Sort hints by found/not found and then other world/own world. (#642)

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)

* MC client: use user_path to fix appimage permissions

* Factorio: load fluids from exported data

* Factorio: manual crude-oil recipe seems no longer needed and actually messed with costs

* lttp: update requirement version for lttp template yaml

* MinecraftClient: Linux fixes (#668)

* MC: open file selector if client is run without apmc

* MC: linux fixes

* we don't use shell anymore
* use user_path for forge_dir. Unless read-only, this is the same as what cwd is set to.

* SoE: change default prog balancing to 30

* api.md update and rename (#676)

* api.md: update for ItemClassification

* world api.md: rename from api.md

* Factorio: use resources data

* Factorio: more condensed raw_recipes creation
(by black-sliver)

* ror2: correctly mark Dio's as progression and mark equipment as useful

* HK: Bugfix shop requirements to be >= rather than >.

This was causing off-by-one errors, which were problematic if e.g. a Grubfather slot wanted all 46 grubs.

* Server: minify cmd json

This saves between 7 and 15% where compression is unavailable.

* SA2B v1.1.0 (#673)



Co-authored-by: RaspberrySpaceJam <[email protected]>

* FF1 - classify some items as useful (#669)

* Clients: fix clients not requesting Archipelago DataPackage updates unless spectator is present.

* Clients: fix /received calling a dict instead of indexing (#688)

* remove limit of 1000 Yotta-Joule in EnergyLink (#689)

* SC2: Updated apsc2 version required (#691)

* core: add a link to FAQ to the repo readme

* Add stone theme to WebHost (#645)

* Add stone theme

* Fix h2 color, change rogue-legacy to stone theme (approved by Phar)

* Add stone theme preview to world api.md

* Different stone theme preview to match other images

* CI: update enemizer and sni (#696)

* UX: More errors (#697)

* SNIClient: adjuster, ignore missing Tk

* UI: add support for gtk/kde messagebox

* SNIClient: show error when patching fails

* Small Witness fixes (#698)

* TS: Fix broken link to german setup guide (#700)

The German tutorial link pointed to the English version

* Alttp: fix broken msu es link (#702)

* SC2: add Linux setup to tutorial (#679)

also fixes some formatting

* Rename author to authors for consistency

* [HK] Further updates for White Palace logic,  (#662)

* SM64: Add common mistake and troubleshooting to setup guide (#708)

* MC: fix broken brewing image on minecraft tracker (#707)

* makes easier to find where to put the launch options for steam version v6 (#712)

* Update setup_en.md

* Update setup_en.md

* Update setup_en.md

* Update setup_en.md

* typo fix spaces clarification

Co-authored-by: Zach Parks <[email protected]>

* Grammar corrections, clarifications, removed redundant explanations

* Markdown syntax fix

Co-authored-by: Zach Parks <[email protected]>
Co-authored-by: Chris Wilson <[email protected]>

* docs: add reference to text client and commands to a few setup guides (#694)

* Updates to ALTTP, SM, and SMZ3 guides (#703)

* Changes: (#639)

* Changes:

* When client loses connection to the server through no fault of your own, it no longer forgets your username.
* It is now possible to do /connect archipelago://username:password@server:port or to paste archipelago://username:password@server:port into the connect bar and hit connect, and have both the username/password filled in that way.

* Switch checksfinder client to getting username from url if suppplied by url.

* Correct the print statement

* SM64: DDD 100 Coins in Entrance Rando should expect sub removal (#711)

I brought this up in #super-mario-64, and the minor consensus is that 100 Coins is "possible", the same way Red Coins is possible.

According to a FAQ online, DDD has 106 coins. That means you are still required to get at least 5 of the red coins in order to get the 100 coin star. If we already have a rule stating the Red Coins require the sub to be removed (by reaching Bowser in the Fire Sea), it should apply to the 100 coins as well.

The consensus on it being "possible" was that it requires a very specific triple jump. There is no "Strict" category for this since it isn't caps/cannons-based, but it is extremely unreasonable to casual play. If you want to sequence break it, go for it, but I don't think it should be expected.

* multiserver: allow `!release` as an alias for `!forfeit` (#693)

* 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 <[email protected]>

* HK: Add options for Deathlink. (#672)

* ror2: update setup guide (#671)

* ror2: remove yaml template from guide and link to player settings page. Add documentation on chat client

* ror2: copy paste the good config description like everyone else.

* docs: add common terms documentation to website (#680)

* docs: add common terms documentation to website

* minor cleanup

* some rewording and reformatting.

* tighten up world definition clarity

Co-authored-by: Rome Reginelli <[email protected]>

* Clarify seed definition a bit better

Co-authored-by: Rome Reginelli <[email protected]>

* add text for "out of logic" and that slot names must be unique

* rename common terms to glossary

Co-authored-by: Rome Reginelli <[email protected]>

* sm64: only apply DDD 100 coin star rule if the location exists (#716)

* MC: add non-windows install to docs (#713)

* MC: add non-windows install to docs

* MC: better link naming for non-windows doc

Co-authored-by: Hussein Farran <[email protected]>

* MC: doc change manual forge link to index

By removing the direct link to the version we avoid having to update it all the time and users will have to check the other version numbers for manual installation anyway.

Co-authored-by: Hussein Farran <[email protected]>

* Revert SC2 item classifications

* fix glossary link on sitemap

* LttP: now that Enemizer allows for AP rom name, rename it. (#730)

* LttP: now that Enemizer allows for AP rom name, rename it.

* LttP: fix missing Enemizer message parenthesis

* CI: update Enemizer to 7.0.1

* Factorio: Fix impossible seeds for rocket-part recipes as well. (#733)

* SNES games: use JPN as abbreviation for Japan/Japanese

* [The Witness] Update data_version as it was forgotten for 0.3.3

# Conflicts:
#	worlds/witness/docs/setup_en.md

* BaseClasses: make ItemClassification properties faster

* Generate: convert plando settings to an IntFlag with error reporting for unknown plando names (#735)

* [Timespinner] Rename flag and add tiered loot settings (#699)

* Hollow Knight June 2022 Updates (#720)

This is a combined PR for assorted Hollow Knight updates for June 2022 that have cleared testing. It supersedes any HK-exclusive PRs open by myself or @Alchav unless stated otherwise.

Summary of changes below:

 * Implement Split Claw, Split Cloak, Split Superdash, Randomize Nail, Randomize Focus, Randomize Swim and Elevator 
 * Pass options (@Alchav)
 * Add support for Deathlink with three different modes (@dewiniaid)
 * Add customizable additional shop slots per-shop (@Alchav) and overall (@dewiniaid)
 * Overhaul shop cost output to be more generic and account for all locations with standard costs (such as Stag Stations, Cornifer, and Divine) (@dewiniaid)
 * Add "CostSanity", allowing random prices using any cost type to be chosen for any location with a cost. (e.g. a Stag station requiring 15 grubs to obtain an item)
 * Item classification fixes (Map and Journal items are fillter, Mask Shards/Pale Ore/Vessel Fragments are useful) (@Alchav)
 * Fix Ijii -> Jiji (@Alchav )
 * General code quality updates

The above changes are only for the HK world.

* Break out of fill loop if locations is empty (#690)

* docs: fix 2 URLs (#738)

* URL of image in Alttp ES tutorial
* Link to RA download in SMZ3 EN tutorial

* Update Raft for Final Chapter (#724)

* RL: Rename Rogue Legacy Folder  (#452)

* rename rogue legacy
"`rogue-legacy` is not a valid python module name"

* revert rename of the documentation file

* Dev Docs: Add SA2B and SC2 to network diagram (#719)

* Add SA2B and SC2 to network diagram

* Remove jpg version of image.

* Fix png of image... Github web editor borked it

* Update network diagram.svg

* We're back to light mode, friends.

Use SVG and JPG that are valid and let you zoom in properly.

* WebHost: fix comment typo

* Subnautica: fix generation crash on valuable item pool (#739)

* WebHost: Advanced guide cleanup (#725)

* advanced yaml cleanup

* Update advanced_settings_en.md

* i hate this game now

* formatting reverting

* LttP: fix shop inventory corruption in upgrade fairy

* Subnautica: display item_pool as Item Pool on the settings page

* Factorio: fix accidental removal of fluids from make_balanced_recipe (#754)

* Allow potentially all rocket-part ingredients to be fluids. (#753)

* Doc: Add english mac guide (running from source) (#744)

* Create RunFromSourceGuideForMac.md

* Update and rename RunFromSourceGuideForMac.md to docs/RunFromSourceGuideForMac.md

* Clarified the source code download.

* Rename docs/RunFromSourceGuideForMac.md to worlds/generic/docs/RunFromSourceGuideForMac.md

* Update __init__.py

* Noted the case where a user might want EnemizerCLI

* Updated document to reflect requested changes

Updated to reflect the requested changes as well as including some information on virtual environments.

* Added Capital Letters to SNIClient.py

* Reworked Document Structure

Numeric order of lists now makes sense and changed the virtual environment section to match Archipelago tradition.

* Update __init__.py

* Minor Changes for clarity's sake

* Renamed file to make webhost happy

* Changed mac guide filename

* Requirements: update some modules

* gitignore general Windows/macOS files (#763)

* Sm comeback too strict (#755)

* lttp: move open pyramid to new options system (#762)

* Core: skip second sanity check when pushing an item into a location (-O) (#745)

* SC2: Windows ".dll missing" fix and fix for finding SC2 install automatically (#721)

* sm64ex: Allow setting Big Star Door requirements (#773)

* sm64ex: Allow setting Big Star Door requirements

* sm64ex: Lower requirements for StarsToFinish

* SNIClient: update default SNI port from 8080 to 23074

* MultiServer: add /status and allow status command to dynamically filter for Tags

* Put common options first (#774)

* this applies to yaml and webhost
* this allows overwriting common options from the world

* Subnautica: updates (#759)

* Subnautica: add more goals

* Subnautica: fix wrongly positioned Databox

* Subnautica: allow techs to remain vanilla

* Subnautica: make zipimport compatible

* Subnautica: force two Seaglide fragments into local sphere 1

* SoE: texts, energy core, fragments, useful (#777)

* fix missing fields in custom prog balancing option
* fix typos and pep8
* update and implement pyevermizer 0.41.3
  * allow randomizing energy core
  * add energy core fragments (turn in at Prof. Ruffleberg)
  * rename some items to avoid confusion
  * differentiate between progression and useful
* remove obsolete 'Bazooka' group
* don't add items to the pool that get removed

* sm64ex: Adapt area_connections slotdata Format (#767)

* Ror2: reduce locations to 250 and mark legendary items as useful (#776)

* reduce total locations to 250

* minor styling cleanup. mark legendary items as useful

* 😡

Co-authored-by: black-sliver <[email protected]>

Co-authored-by: black-sliver <[email protected]>

* RoR2: FinalStageDeath (#766)

Added a YAML option for 'FinalStageDeath', a toggle for 'death on the final boss stage counts as a win'. Defaults to on.

Co-authored-by: Vale <[email protected]>

* Improve Risk of Rain 2 docs (#770)

* Improve Risk of Rain 2 docs

* RoR2: clarify custom item weight settings

* Update worlds/ror2/docs/en_Risk of Rain 2.md

Co-authored-by: Hussein Farran <[email protected]>

* doc: add style guide (#746)

* doc: add style guide

* doc: style guide for python and markdown

* doc: consistent use of periods and explicit double quotes in style guide

Co-authored-by: Hussein Farran <[email protected]>

* doc: better define string style in style guide

* doc: add format string literals to style guide

* doc: add HTML, CSS and JS to style guide

Co-authored-by: Hussein Farran <[email protected]>

* Factorio: specify rcon version

* MultiServer: make !hint prefer non-local

* Rogue Legacy: obliterate any outdated remnants before installer adds new files

* WebHost: cleanup generate and hopefully fix SQL concurrency problems

* SMZ3: Item link support (#756)

* first working (most of the time) progression generation for SM using VariaRandomizer's rules, items, locations and accessPoint (as regions)

* first working single-world randomized SM rom patches

* - SM now displays message when getting an item outside for someone else (fills ROM item table)

This is dependant on modifications done to sm_randomizer_rom project

* First working MultiWorld SM

* some missing things:

- player name inject in ROM and get in client
- end game get from ROM in client
- send self item to server
- add player names table in ROM

* replaced CollectionState inheritance from SMBoolManager with a composition of an array of it (required to generation more than one SM world, which is still fails but is better)

* - reenabled balancing

* post rebase fixes

* updated SmClient.py

* + added VariaRandomizer LICENSE

* + added sm_randomizer_rom project (which builds sm.ips)

* Moved VariaRandomizer and sm_randomizer_rom projects inside worlds/sm and done some cleaning

* properly revert change made to CollectionState and more cleaning

* Fixed multiworld support patch not working with VariaRandomizer's

* missing file commit

* Fixed syntax error in unused code to satisfy Linter

* Revert "Fixed multiworld support patch not working with VariaRandomizer's"

This reverts commit fb3ca18528bb331995e3d3051648c8f84d04c08b.

* many fixes and improovement

- fixed seeded generation
- fixed broken logic when more than one SM world
- added missing rules for inter-area transitions
- added basic patch presence for logic
- added DoorManager init call to reflect present patches for logic
- moved CollectionState addition out of BaseClasses into SM world
- added condition to apply progitempool presorting only if SM world is present
- set Bosses item id to None to prevent them going into multidata
- now use get_game_players

* first working (most of the time) progression generation for SM using VariaRandomizer's rules, items, locations and accessPoint (as regions)

* first working single-world randomized SM rom patches

* - SM now displays message when getting an item outside for someone else (fills ROM item table)

This is dependant on modifications done to sm_randomizer_rom project

* First working MultiWorld SM

* some missing things:

- player name inject in ROM and get in client
- end game get from ROM in client
- send self item to server
- add player names table in ROM

* replaced CollectionState inheritance from SMBoolManager with a composition of an array of it (required to generation more than one SM world, which is still fails but is better)

* - reenabled balancing

* post rebase fixes

* updated SmClient.py

* + added VariaRandomizer LICENSE

* + added sm_randomizer_rom project (which builds sm.ips)

* Moved VariaRandomizer and sm_randomizer_rom projects inside worlds/sm and done some cleaning

* properly revert change made to CollectionState and more cleaning

* Fixed multiworld support patch not working with VariaRandomizer's

* missing file commit

* Fixed syntax error in unused code to satisfy Linter

* Revert "Fixed multiworld support patch not working with VariaRandomizer's"

This reverts commit fb3ca18528bb331995e3d3051648c8f84d04c08b.

* many fixes and improovement

- fixed seeded generation
- fixed broken logic when more than one SM world
- added missing rules for inter-area transitions
- added basic patch presence for logic
- added DoorManager init call to reflect present patches for logic
- moved CollectionState addition out of BaseClasses into SM world
- added condition to apply progitempool presorting only if SM world is present
- set Bosses item id to None to prevent them going into multidata
- now use get_game_players

* Fixed multiworld support patch not working with VariaRandomizer's

Added stage_fill_hook to set morph first in progitempool
Added back VariaRandomizer's standard patches

* + added missing files from variaRandomizer project

* + added missing variaRandomizer files (custom sprites)

+ started integrating VariaRandomizer options (WIP)

* Some fixes for player and server name display

- fixed player name of 16 characters reading too far in SM client
- fixed 12 bytes SM player name limit (now 16)
- fixed server name not being displayed in SM when using server cheat ( now displays RECEIVED FROM ARCHIPELAGO)
- request: temporarly changed default seed names displayed in SM main menu to OWTCH

* Fixed Goal completion not triggering in smClient

* integrated VariaRandomizer's options into AP (WIP)

- startAP is working
- door rando is working
- skillset is working

* - fixed itemsounds.ips crash by always including nofanfare.ips into multiworld.ips (itemsounds is now always applied and "itemsounds" preset must always be "off")

* skillset are now instanced per player instead of being a singleton class

* RomPatches are now instanced per player instead of being a singleton class

* DoorManager is now instanced per player instead of being a singleton class

* - fixed the last bugs that prevented generation of >1 SM world

* fixed crash when no skillset preset is specified in randoPreset (default to "casual")

* maxDifficulty support and itemsounds removal

- added support for maxDifficulty
- removed itemsounds patch as its always applied from multiworld patch for now

* Fixed bad merge

* Post merge adaptation

* fixed player name length fix that got lost with the merge

* fixed generation with other game type than SM

* added default randoPreset json for SM in playerSettings.yaml

* fixed broken SM client following merge

* beautified json skillset presets

* Fixed ArchipelagoSmClient not building

* Fixed conflict between mutliworld patch and beam_doors_plms patch

- doorsColorsRando now working

* SM generation now outputs APBP

- Fixed paths for patches and presets when frozen

* added missing file and fixed multithreading issue

* temporarily set data_version = 0

* more work

- added support for AP starting items
- fixed client crash with gamemode being None
- patch.py "compatible_version" is now 3

* commited missing asm files

fixed start item reserve breaking game (was using bad write offset when patching)

* Nothing item are now handled game-side. the game will now skip displaying a message box for received Nothing item (but the client will still receive it).

fixed crash in SMClient when loosing connection to SNI

* fixed No Energy Item missing its ID

fixed Plando

* merge post fixes

* fixed start item Grapple, XRay and Reserve HUD, as well as graphic beams (except ice palette color)

* fixed freeze in blue brinstar caused by Varia's custom PLM not being filled with proper Multiworld PLM address (altLocsAddresses)

* fixed start item x-ray HUD display

* Fixed start items being sent by the server (is all handled in ROM)

Start items are now not removed from itempool anymore
Nothing Item is now local_items so no player will ever pickup Nothing. Doing so reduces contribution of this world to the Multiworld the more Nothing there is though.
Fixed crash (and possibly passing but broken) at generation where the static list of IPSPatches used by all SM worlds was being modified

* fixed settings that could be applied to any SM players

* fixed auth to server only using player name (now does as ALTTP to authenticate)

* - fixed End Credits broken text

* added non SM item name display

* added all supported SM options in playerSettings.yaml

* fixed locations needing a list of parent regions (now generate a region for each location with one-way exits to each (previously) parent region

did some cleaning (mainly reverts on unnecessary core classes

* minor setting fixes and tweaks

- merged Area and lightArea settings
- made missileQty, superQty and powerBombQty use value from 10 to 90 and divide value by float(10) when generating
- fixed inverted layoutPatch setting

* added option start_inventory_removes_from_pool

fixed option names formatting
fixed lint errors
small code and repo cleanup

* Hopefully fixed ROR2 that could not send any items

* - fixed missing required change to ROR2

* fixed 0 hp when respawning without having ever saved (start items were not updating the save checksum)

* fixed typo with doors_colors_rando

* fixed checksum

* added custom sprites for off-world items (progression or not)

the original AP sprite was made with PierRoulette's SM Item Sprite Utility by ijwu

* - added missing change following upstream merge

- changed patch filename extension from apbp to apm3 so patch can be used with the new client

* added morph placement options: early means local and sphere 1

* fixed failing unit tests

* - fixed broken custom_preset options

* - big cleanup to remove unnecessary or unsupported features

* - more cleanup

* - moved sm_randomizer_rom and all always applied patches into an external project that outputs basepatch.ips

- small cleanup

* - added comment to refer to project for generating basepatch.ips (https://github.com/lordlou/SMBasepatch)

* fixed g4_skip patch that can be not applied if hud is enabled

* - fixed off world sprite that can have broken graphics (restricted to use only first 2 palette)

* - updated basepatch to reflect g4_skip removal

- moved more asm files to SMBasepatch project

* - tourian grey doors at baby metroid are now always flashing (allowing to go back if needed)

* fixed wrong path if using built as exe

* - cleaned exposed maxDifficulty options

- removed always enabled Knows

* Merged LttPClient and SMClient into SNIClient

* added varia_custom Preset Option that fetch a preset (read from a new varia_custom_preset Option) from varia's web service

* small doc precision

* - added death_link support

- fixed broken Goal Completion
- post merge fix

* - removed now useless presets

* - fixed bad internal mapping with maxDiff

- increases maxDiff if only Bosses is preventing beating the game

* - added support for lowercase custom preset sections (knows, settings and controller)

- fixed controller settings not applying to ROM

* - fixed death loop when dying with Door rando, bomb or speed booster as starting items

- varia's backup save should now be usable (automatically enabled when doing door rando)

* -added docstring for generated yaml

* fixed bad merge

* fixed broken infinity max difficulty

* commented debug prints

* adjusted credits to mark progression speed and difficulty as Non Available

* added support for more than 255 players (will print Archipelago for higher player number)

* fixed missing cleanup

* added support for 65535 different player names in ROM

* fixed generations failing when only bosses are unreachable

* - replaced setting maxDiff to infinity with a bool only affecting boss logics if only bosses are left to finish

* fixed failling generations when using 'fun' settings

Accessibility checks are forced to 'items' if restricted locations are used by VARIA following usage of 'fun' settings

* fixed debug logger

* removed unsupported "suits_restriction" option

* fixed generations failing when only bosses are unreachable (using a less intrusive approach for AP)

* - fixed deathlink emptying reserves

- added death_link_survive option that lets player survive when receiving a deathlink if the have non-empty reserves

* - merged death_link and death_link_survive options

* fixed death_link

* added a fallback default starting location instead of failing generation if an invalid one was chosen

* added Nothing and NoEnergy as hint blacklist

added missing NoEnergy as local items and removed it from progression

* - enabled local item dialog boxes for dungeon and keycard items when keysanity is used

* - fixed ItemLink support

* fixed shops sending checks

* Added get_filler_item_name() returning a random junk item

Co-authored-by: Fabian Dill <[email protected]>

* Subnautica: add creature scans

* LTTP: Yaml Update (#765)

removes vendor option from hints, adds scam setting, and adds P option to shop shuffle.

* OoT: Fix gerudo_fortress on normal (#784)

* Final Fantasy: fix outdated advancement flag

* The Witness 0.3.4 features (#780)

New options:

Shuffle Doors: Many doors in the game will open on their own upon receiving an item ("key").
Variant - Shuffle Door/Control Panels: Many panels in the game that open doors or control devices in the world will be off until receiving their respective item ("key").
Shuffle Lasers: Lasers no longer activate by solving the laser panel, instead you will get an item that activates the laser.
Shuffle Symbols: Now that there is something else to shuffle (doors / door panels), you can turn off Symbol Rando.
Shuffle Postgame (replaces "Shuffle Hard"): The randomizer will now determine by your settings which panels are in the "postgame" - Meaning they can only be accessed after you can complete your win condition anyway.

* SMZ3: Pedestal hint (#792)

* - fixed missing pedestal and tablets hint text for foreign items (was "Don't waste yout time!", is now "A small victory!")

- small precision to SMZ3 and SM docs about "What does another world's item look like in Super Metroid"

* WebHost: reduce server uptime (#794)

* WebHost: attempt to improve wording of server resume
* WebHost: reduce default room timeout to 2 hours


Co-authored-by: black-sliver <[email protected]>

* ChecksFinder: Linux support via wine (#795)

* ChecksFinder: Linux support via wine

* ChecksFinder: account for custom $WINEPREFIX

* ChecksFinder: wine detection

* DS3: Add the Dark Souls 3 World into Archipelago (#769)

* Factorio: update rcon lib

* Subnautica: add missed PDA

* Subnautica: Add DeathLink (#803)

* HK - Fix typos in option names

Fixed max charm and max geo cost display names.

* Add to the ArchipIDLE items list (#807)

* Add to the ArchipIDLE items list

* Update Items.py

* Update Items.py

* Donkey Kong Country 3 Implementation (#798)

* Baseline patching and logic for DKC3

* Client can send, but not yet receive

* Alpha Test Baseline

* Bug Fixes and Starting Lives Option

* Finish BBH, add world hints

* Add music shuffle

* Boomer Costs Text

* Stubbed in Collect behaviour

* Adjust Gyrocopter option

* Add Bonus Coin junk replacement and tracker support

* Delete bad logs

* Undo host.yaml change

* Refactored SNIClient

* Make Swanky Free

* Fix Typo

* Undo SNIClient run_game hack

* Fix Typo

* Remove Bosses from Level Shuffle

* Remove duplicate kivy Data

* Add DKC3 Docs and increment Data version

* Remove dead code

* Fix mislabeled region

* Add Dark Souls 3 to README

* Always force Cog on Rocket Rush Flag

* Fix Single Ski lock and too many DK Coins

* Update Retroarch version number

* Don't send DKC3 through LttP Adjuster

* Comment Location ROM Table

* Change ROM Hash prefix to D3

* Remove redundant constructor

* Add ROM Change Safeguards

* Properly mark WRAM accesses

* Remove outdated region connect

* Fix syntax error

* Fix Game description

* Fix SNES Bank Access

* Add isso_setup for DKC3

* Double Quote strings

* Escape single quotes I guess

* LttP: Fix scam options (#806)

* Sm beam door speedkeep fun accessibility (#785)

added speedkeep option
now forces accessibility to "minimal" instead of (to be deprecated) "item" when "fun" settings is used

* The Witness: Small changes in response to beta tests (#801)

* Option order and better tooltip

* Logic fix: Hedge Laser requires access to all Hedges

* Add item groups: Lasers, Symbols, Doors

* Update worlds/witness/items.py

Co-authored-by: black-sliver <[email protected]>

* Comment for clarity

* Logic fix

* Another logic fix

Co-authored-by: metzner <[email protected]>
Co-authored-by: black-sliver <[email protected]>

* OOT updates (#821)

* oot: remove all escape characters in LogicTricks.py

* only attempt to connect to client once

* oot: don't kill player outside ToT or in market entrance
fixed camera makes the game crash outside ToT. added market entrance to be safe, it doesn't matter if you don't die there

* sm64ex: Various Features (#790)

* sm64ex: Course and Secret Randomizer

* sm64ex: Allow higher star door costs, raise minimum amount of stars, deprecate ExtraStars

* sm64ex: Support setting MIPS costs

* sm64ex: Safeguard MIPS Costs

* DKC3 - Logic Softlock Fix (#817)

* Add two locations to Trade Sequence List

* Remove trace sequence locations from ROM data dict

* Subnautica: fix Multipurpose Room not acquirable in valuable item pool

BaseRoomFragment doesn't exist in vanilla, so when valuable item pool marked it as scannable in vanilla location it did not work, as it's technically BaseRoom
BaseRoom is also required to install other modules into, modules that are already marked as useful, so logically if it's required for other useful stuff it should also be marked as useful
By switching from Fragment to non-fragment one now needs 1 out of 2 instead of 2 out of 2 items, which I consider a plus as well.

* HK - focus location (#778)

* Update ds3 locations and items (#819)

* DS3: Add more rules to avoid softlocks, remove Path of the Dragon gesture location/item and remove useless comments

* DS3: Add more Hostile NPCs locations/items

* DS3: Add missing key items to the key items list

* Archipidle: Fix forgotten version increment when a new item was added

* SM: smoother co-op, basepatch internal improvements (#793)

* SM: remote touch instantly, pull ips refactor and symbols

* SM: remove hard-coded ROM address writes

* SM: Full length player table, incl. receive-only player ids

+ apply PR feedback (correct graphic offset, readable data file paths)

* WebHost: flask caching did a rename

* SC2 docs: Extensive reworks and rewordings. (#809)

* LttP: fix deprecated use of isSet() (#831)

* SNIClient: fix program not exiting if SNI does not exist nor is running

* WebHost: fix 30 days cutoff for stats (#826)

* DKC3: fix missing default options in Utils.py

* WebHost: games played per day plot per game on stats page (#827)

* WebHost: generate stats page palette for maximum hue difference between neighbours.

* WebHost: add per game played stats

* CI: update SNI to 0.0.82

* Smz3 no progression gt fix (#818)

* Witness: Fatal logic bug fix (#837)

* Renamed some event items

* Fatal logic bug: Door panels did not check their symbol items

* [Docs] Further explained the mythical `InvalidPacket` (#828)

* [Docs] Further explained the mythical `InvalidPacket`

* Fixed header category

* Update docs/network protocol.md

Co-authored-by: black-sliver <[email protected]>

* Update docs/network protocol.md

Co-authored-by: black-sliver <[email protected]>

* Apply suggestions from code review

Co-authored-by: Hussein Farran <[email protected]>

Co-authored-by: black-sliver <[email protected]>
Co-authored-by: Hussein Farran <[email protected]>

* Prevent Krematoa Crash (#832)

* Prevent Krematoa Crash, add crash robustness

* Remove print statements

* Don't remove ctx.rom if save file dies

* Consolidate logic for readability

* Doc: move Running from source from wiki to docs (#797)

* Doc: move "Running from source" from wiki to docs/

* Doc: update links and reformat running from source

* Doc: implement suggestions in "Running from source"

thanks @alwaysintreble

* Doc: update link to "Running from source"

also link docs/ folder

* Doc: Running from source: Apply suggestions from code review

Co-authored-by: KonoTyran <[email protected]>

Co-authored-by: KonoTyran <[email protected]>

* WebHost: make a deeply buried if tree for games a bit more automatic

* Migrate DKC3 to APDeltaPatch (#838)

* Add DKC3 to APDeltaPatch

* Undo unintended commit

* More undoing

* Remove else clause

* Sm broken start location fix (#841)

* - fixed basepatches application order breaking (at least) starting location

* Sm smz3 create item fix (#844)

* Core: have generation print plando settings as string instead of numbers (#843)

* have generation print plando settings as string instead of numbers

* Change to __str__

* Make to_string not a class method

* Suggested fix

Co-authored-by: black-sliver <[email protected]>

* Fix the fix

* Better quotes

Co-authored-by: black-sliver <[email protected]>

* WebHost: Add links to "Setup Guides" in Supported Games page (#847)

* WebHost: Add links to "Setup Guides" in Supported Games page

* Remove a hanging console.log() I left in

* Fixed a crafting category bug related to fluids. (#848)

* WebHost: update flask (#804)

* The Witness: Logic fix (unbeatable seed) (#850)

* Add an optional path to factorio server-settings.json (#851)

* Add an optional path to factorio server-settings.json

* factorio: changes

* use forward slashs in host.yaml going forward.  (works on all OSes.)
* comment out the host.yaml server_settings option.
* assume that server_settings is NOT provided and explicitly check for its existence in factorio_client.

* HK: Add bug report link (#824)


Co-authored-by: Hussein Farran <[email protected]>

* Core: patch stream_input to ignore non-parsable input (such as EOF encoded as 0xff) (#854)

* Subnautica: update docs with resume info (#853)



Co-authored-by: black-sliver <[email protected]>
Co-authored-by: strotlog <[email protected]>

* SMZ3: FixJunkFillGT making invalid placements

* SMZ3: Fix Swamp Palace Entrace for minimal accessibility

* Core: update version

* Stats: limit to recognized games

* Core: optimize away Item.world (#840)

* Core: optimize away Item.world

* Update test/general/TestFill.py

* Test: undo unnecessary changes

* lttp: remove two more Item.world writes

Co-authored-by: black-sliver <[email protected]>

* WebHost: fix filename rename in flask update

* move some docs out of readme and link with the headers

* PR template

Co-authored-by: TheCondor07 <[email protected]>
Co-authored-by: jtoyoda <[email protected]>
Co-authored-by: Fabian Dill <[email protected]>
Co-authored-by: Fabian Dill <[email protected]>
Co-authored-by: CaitSith2 <[email protected]>
Co-authored-by: Zach Parks <[email protected]>
Co-authored-by: lordlou <[email protected]>
Co-authored-by: N00byKing <[email protected]>
Co-authored-by: espeon65536 <[email protected]>
Co-authored-by: TheCondor07 <[email protected]>
Co-authored-by: Chris Wilson <[email protected]>
Co-authored-by: Jarno Westhof <[email protected]>
Co-authored-by: Felix R <[email protected]>
Co-authored-by: black-sliver <[email protected]>
Co-authored-by: strotlog <[email protected]>
Co-authored-by: t3hf1gm3nt <[email protected]>
Co-authored-by: Kono Tyran <[email protected]>
Co-authored-by: Kippi00 <[email protected]>
Co-authored-by: Colin Lenzen <[email protected]>
Co-authored-by: Alchav <[email protected]>
Co-authored-by: Joethepic <[email protected]>
Co-authored-by: Hussein Farran <[email protected]>
Co-authored-by: Daniel Grace <[email protected]>
Co-authored-by: NewSoupVi <[email protected]>
Co-authored-by: PoryGone <[email protected]>
Co-authored-by: RaspberrySpaceJam <[email protected]>
Co-authored-by: Grrmo <[email protected]>
Co-authored-by: rsyh93 <[email protected]>
Co-authored-by: The T <[email protected]>
Co-authored-by: Rome Reginelli <[email protected]>
Co-authored-by: espeon65536 <[email protected]>
Co-authored-by: Sunny Bat <[email protected]>
Co-authored-by: Doug Hoskisson <[email protected]>
Co-authored-by: Bicoloursnake <[email protected]>
Co-authored-by: SoldierofOrder <[email protected]>
Co-authored-by: jsd1982 <[email protected]>
Co-authored-by: Vale <[email protected]>
Co-authored-by: Vale <[email protected]>
Co-authored-by: Ludovic Marechal <[email protected]>
Co-authored-by: Jolteon0163 <[email protected]>
Co-authored-by: metzner <[email protected]>
Co-authored-by: KonoTyran <[email protected]>
alwaysintreble added a commit to alwaysintreble/Archipelago that referenced this pull request Aug 5, 2022
* Adding in error message for FF1 if player name is empty in the ROM

* Factorio: fix crude-oil related crashes (#552)

* WebHost: fix plando options type error

* Clients: some cleanup

* LttP: fix adjuster partial settings store crash

* Block collection of Sahasrahlah. (#562)

* SC2: Launch game in fullscreen mode.

* Clients: now featuring tooltips and some general cleanup (#564)

* Clients: now featuring tooltips and some general cleanup

* Clients: fade in tooltip over 0.25 seconds

* Clients: reset slot and team when disconnecting

* Clients: allow joining multiworld via link (TextClient only for now)

* add tooltip for Plando Options on Generate page (#563)

* Network: remove "SlotAlreadyTaken" from docs and clients, as it was removed from the server in 0.2

* Sm various fixes (#518)

* v6,sm64ex: Use standard Death Link option name

* MC: Bee Trap is renamed and trap

* Clients: allow "&[]" in tooltips, as kivy-escaped characters and fix similar translate issues in copy-paste clipboard

* OoT: write double-ended shuffled entrances to spoiler log more clearly

* OoT: remove warning message during multidata manipulation

* OoT: trap display rework
Traps from all games now disguise themselves as OoT items
Traps all display "[Player] is a FOOL!" when picked up

* OoT: write data into autotracking context
useful for the client and autotrackers to gather data easily

* OoT: add version check to lua script + client

* OoT: lua script reads MQ dungeon address dynamically from autotracker context
finally I can stop updating this every version

* OoT: big poe count option returns

* OoT Client: deathlink toggle

* SC2: Option for random mission order (#569)

* WebHost: update waitress and bokeh (#575)

* WebHost: undo autoconnect link as not all browsers behave like Vivaldi. (#577)

* WebHost: undo autoconnect link as not all browsers behave like Vivaldi.

* Increase tooltip z-index

Co-authored-by: Chris Wilson <[email protected]>

* SC2: fix copy pasta in client

* Setup: "ParseVersion" gives Deprecated Warning, fixing the warning.

* MC: fix Bee Trap name

* SC2: Updated webhost details page

* [Timespinner] Removed backwarp from refugee camp to library from logic

* SC2: Fixed issue in random mission order with some missions being available too early

* Meritous: Minor logic change (#584)

* LttP: convert vendors hint into separate scams option

* AppImage: fix build (#589)

* CI: build: use ARCH= for AppImage

* WebHost: pin flask-caching

until https://github.com/pallets-eco/flask-caching/pull/352 is merged or fixed otherwise

* WebHost: use non-blocking file lock on unix, just like windows

* SC2: GUI Mission Launcher (#586)

* SC2: Functioning Starcraft 2 Mission Launcher UI

* AutoWorld: add .__file__ attribute to AutoWorlds
This tries to help with a recurring easy to make mistake, where ./worlds/myworld does not exist in frozen form and is instead ./lib/worlds/myworld

* SC2: get .kv file path correctly when frozen too

Co-authored-by: TheCondor07 <[email protected]>
Co-authored-by: Fabian Dill <[email protected]>

* Sm remote item fix (#592)

* Doc: deprecate datapackage_version

* Server: remove compat to ~0.2 unversioned save data
If the savegame was loaded in the last few months, it will have already been upgraded.

* Tests: add test to check for typo'd item name group definitions (#594)

* 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

* WebHost: update flask-caching

* Tracker: fix ItemLinks items not being attributed to inventory

* LttP: split Retro into Retro Bows and Retro Caves (#588)

* SNIClient: run adjuster for new aplttp file type

* config: Use valid default enemizer_path on Linux (and Windows)

* TS: Add region names to location names, and other location name clarifications (#570)

* Add region names to location names, and other location name clarification changes

* kvui: fix warning about "X missing in __all__" when importing from kivy.base instead of correct module

* SC2: UI update, Relegate No Build Option, and Filler Item Update (#606)

* update minecraft_en.md wording slightly and minecraft version

* AppImage: better compatibility

* old startup script did not work with dash
* add missing libcrypt in cx_freeze

* UI: add Utils.messagebox

automatically uses either new kvui.MessageBox or tkinter.messagebox

* Core: move is_linux, _macos, _windows to Utils.py

* Ui: add open_filename helper

* native look & feel on Linux (Gnome and KDE)
* falls back to tkinter

* requirements: update cx-Freeze, fix compatibility

this conflicts with and replaces commit #f9b12b51080c7bbbf3d52c79453ac6c8222a03c5

* Appimage: include libssl (#613)

* Clients: UX improvements (#615)

* Clients: some improvements (#602)

* Clients: some improvements
SNIClient is the only client that uses slow_mode, so its definition should be moved there.
type info for CommandProcessor was int for some reason.
Moved a lot of type info from init to class body, making it easier for type checkers to find.
getLogger("") and getLogger(None) is technically different, just happens that our root logger is "", fixed it in case of future confusion though.

* Logging: log that init_logging was run and what the current AP version is.

* WebHost: some updates (#603)

* 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

* Generate: sort input files, preventing arbitrary order from OS layer.

* Update LICENSE files for WebHost assets (#616)

* Document multi-game YAMLs (#619)

* SC2: send ItemLink messages to ingame as well

* HK: allow shuffling charm costs, instead of randomizing. (#441)

* SNIClient: sort devices for consistent key
SNIClient: get rid of * import

* WebHost: request maximum amount of file handles from the system for autolauncher. (#625)

* WebHost: request maximum amount of file handles from the system for autolauncher.

* WebHostLib: wrap resource import into try to restore windows compatibility

* ALTTP: Updates to setup documents (#628)



Co-authored-by: alwaysintreble <[email protected]>

* OOT: Add note about common issue with lua option in the configuration step (#629)

* OOT: Add note about common issue with lua option in the configuration step

More and more people have issues with connecting with OoT because fresh installs of newer versions of Bizhawk show having "Lua+LuaInterface" selected when it actually loads "Nlua+KopiLua" instead until you toggle between the two options. Hopefully adding this bolded note will help new users avoid this problem in the future.

* [Timespinner] Add Boss Randomization Settings (#598)

* [Timespinner] Add Boss Randomization Settings

* Fix Room log

* Fix LTTP filler items (#621)

* Tutorials: hide ArchipIDLE (#622)

* Don't copy files of hidden worlds

* tutorials: hardcode not generating ArchipIDLE tutorial files outside april

* tutorials: ignore hidden worlds unless it's 'Archipelago'

* add parenthesis to prevent ambiguity

* Fix the possibility of manually assigning 'random' via alias_random

* Minecraft 1.19 (#623)

* WebHost: Allow "random" to be default option for toggles and choices. (#640)

* Itemlink tutorial improvement (#611)

* Update Items.py

* Update advanced_settings_en.md

* Update Items.py

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* improve consistency

Co-authored-by: alwaysintreble <[email protected]>

* fix formating on game setting in example

Co-authored-by: alwaysintreble <[email protected]>

* change version

Co-authored-by: alwaysintreble <[email protected]>

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* tutorials: add description for game weight and properly document item links

* tutorials: add description for null replacement

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: alwaysintreble <[email protected]>

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: Hussein Farran <[email protected]>

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: Hussein Farran <[email protected]>

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: Hussein Farran <[email protected]>

Co-authored-by: alwaysintreble <[email protected]>
Co-authored-by: Hussein Farran <[email protected]>

* Options: introduce SpecialRange (#630)

* Options: introduce SpecialRange

* Include SpecialRange data in player-settings and weighted-settings JSON files

* Add support for SpecialRange to player-settings pages

* Add support for SpecialRange options to weighted-settings. Also fixed a bug which would cause the page to crash if an unknown setting was detected.

Co-authored-by: Chris Wilson <[email protected]>

* SNIClient: prevent hang on exit if waiting on devices from SNI

* WebHost: update Flask-Limiter

* Hollow Knight updates (goals, WP/POP, etc.) (#438)

* Hollow Knight updates:

- Add configurable goals (Any, THK, Siblings, Radiance)
  - Change base logic to require Opened_Black_Egg_Temple instead of
    requiring 3 dreamers.  This is future-proof for transition rando,
    where Black Egg might not have been located yet.
  - Add combat logic for THK and Radiance on par with Rando4's boss logic,
    so itemless HK shouldn't be required.
- Existing completion logic now uses Black_Egg_te

- Add White Palace options
  (Exclude, King Fragment Only, No Path of Pain, Include)
  - Excluded WP may still be required for King Fragment if Charms are
    not randomized
  - Simply don't place WP locations that are excluded
  - Distinguish between POP locations (required for POP), WP checks (
    actual item locations), WP transitions (relevant for future transition
    rando), and WP events (logically required to reach King Fragment)
  - Many transitions were listed twice.  Remove duplicates.
  - Sort transitions by scene

- For randomizable locations that have no logical significance when not
    randomized, simply skip adding them to the pool entirely for
    theoretically faster generation.

* Hollow Knight updates

  - Support random starting geo up to 1000 geo.
  - Always include locations rather than dropping unrandomized "logicless"
    ones, as it is required to best support same-slot coop.

* ChecksFinder Client refactored to import CommonClient components.

* Options: fix all games templates breaking due to invalid progression balancing

* fix spaces in folder names failing to launch forge.

* Tracker: fix order received column being empty

* Generate: ignore files starting with ., something about Macs having a .DS_STORE or something. (#656)

* Generate: ignore files starting with ., something about Macs having a .DS_STORE or something.

* Generate: .name is important

* Meritous get_filler_item_name

* The Witness - 0.3.3 features and fixes (#617)

New option: "Early Secret Area" (Opens a door to the Challenge Area from the start of the game)
New option: Victory Conditions "Mountaintop Box Short" and "Mountaintop Box Long"
New options: Number of Lasers of Mountain, Number of Lasers for Challenge
New option & item: Add some number of "Puzzle Skips", which let you skip one puzzle in the game

Many logic fixes

* MultiServer: introduce LocationScouts create_as_hint -> only_new

* CommonClient: revamp DataPackage handling

* Tests: always display all warnings
WebHost: fix a warning about new cache names

* Core: move multiple Item properties into a single Flag (#638)

* LttP: fix Ganon's Tower trash prefill ignoring item_rules (#648)

* kivy: include in frozen library zip

* HK: extractor now needs to check for BOM

* Network remove roominfo players (#661)

* LttP: update manual yaml

* Core: increment version

* Core: fix ItemLinks setting advancement flag

* Core: downgrade item classification to int before writing to file

* setup.py: fix setuptools>=61 compatibility

Closes ArchipelagoMW/Archipelago#391

* Factorio: fix impossible recipes requiring stacking non-stacking items
Factorio: speedup load time

* Launcher: always use kvui

* Sort hints by found/not found and then other world/own world. (#642)

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)

* MC client: use user_path to fix appimage permissions

* Factorio: load fluids from exported data

* Factorio: manual crude-oil recipe seems no longer needed and actually messed with costs

* lttp: update requirement version for lttp template yaml

* MinecraftClient: Linux fixes (#668)

* MC: open file selector if client is run without apmc

* MC: linux fixes

* we don't use shell anymore
* use user_path for forge_dir. Unless read-only, this is the same as what cwd is set to.

* SoE: change default prog balancing to 30

* api.md update and rename (#676)

* api.md: update for ItemClassification

* world api.md: rename from api.md

* Factorio: use resources data

* Factorio: more condensed raw_recipes creation
(by black-sliver)

* ror2: correctly mark Dio's as progression and mark equipment as useful

* HK: Bugfix shop requirements to be >= rather than >.

This was causing off-by-one errors, which were problematic if e.g. a Grubfather slot wanted all 46 grubs.

* Server: minify cmd json

This saves between 7 and 15% where compression is unavailable.

* SA2B v1.1.0 (#673)



Co-authored-by: RaspberrySpaceJam <[email protected]>

* FF1 - classify some items as useful (#669)

* Clients: fix clients not requesting Archipelago DataPackage updates unless spectator is present.

* Clients: fix /received calling a dict instead of indexing (#688)

* remove limit of 1000 Yotta-Joule in EnergyLink (#689)

* SC2: Updated apsc2 version required (#691)

* core: add a link to FAQ to the repo readme

* Add stone theme to WebHost (#645)

* Add stone theme

* Fix h2 color, change rogue-legacy to stone theme (approved by Phar)

* Add stone theme preview to world api.md

* Different stone theme preview to match other images

* CI: update enemizer and sni (#696)

* UX: More errors (#697)

* SNIClient: adjuster, ignore missing Tk

* UI: add support for gtk/kde messagebox

* SNIClient: show error when patching fails

* Small Witness fixes (#698)

* TS: Fix broken link to german setup guide (#700)

The German tutorial link pointed to the English version

* Alttp: fix broken msu es link (#702)

* SC2: add Linux setup to tutorial (#679)

also fixes some formatting

* Rename author to authors for consistency

* [HK] Further updates for White Palace logic,  (#662)

* SM64: Add common mistake and troubleshooting to setup guide (#708)

* MC: fix broken brewing image on minecraft tracker (#707)

* makes easier to find where to put the launch options for steam version v6 (#712)

* Update setup_en.md

* Update setup_en.md

* Update setup_en.md

* Update setup_en.md

* typo fix spaces clarification

Co-authored-by: Zach Parks <[email protected]>

* Grammar corrections, clarifications, removed redundant explanations

* Markdown syntax fix

Co-authored-by: Zach Parks <[email protected]>
Co-authored-by: Chris Wilson <[email protected]>

* docs: add reference to text client and commands to a few setup guides (#694)

* Updates to ALTTP, SM, and SMZ3 guides (#703)

* Changes: (#639)

* Changes:

* When client loses connection to the server through no fault of your own, it no longer forgets your username.
* It is now possible to do /connect archipelago://username:password@server:port or to paste archipelago://username:password@server:port into the connect bar and hit connect, and have both the username/password filled in that way.

* Switch checksfinder client to getting username from url if suppplied by url.

* Correct the print statement

* SM64: DDD 100 Coins in Entrance Rando should expect sub removal (#711)

I brought this up in #super-mario-64, and the minor consensus is that 100 Coins is "possible", the same way Red Coins is possible.

According to a FAQ online, DDD has 106 coins. That means you are still required to get at least 5 of the red coins in order to get the 100 coin star. If we already have a rule stating the Red Coins require the sub to be removed (by reaching Bowser in the Fire Sea), it should apply to the 100 coins as well.

The consensus on it being "possible" was that it requires a very specific triple jump. There is no "Strict" category for this since it isn't caps/cannons-based, but it is extremely unreasonable to casual play. If you want to sequence break it, go for it, but I don't think it should be expected.

* multiserver: allow `!release` as an alias for `!forfeit` (#693)

* 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 <[email protected]>

* HK: Add options for Deathlink. (#672)

* ror2: update setup guide (#671)

* ror2: remove yaml template from guide and link to player settings page. Add documentation on chat client

* ror2: copy paste the good config description like everyone else.

* docs: add common terms documentation to website (#680)

* docs: add common terms documentation to website

* minor cleanup

* some rewording and reformatting.

* tighten up world definition clarity

Co-authored-by: Rome Reginelli <[email protected]>

* Clarify seed definition a bit better

Co-authored-by: Rome Reginelli <[email protected]>

* add text for "out of logic" and that slot names must be unique

* rename common terms to glossary

Co-authored-by: Rome Reginelli <[email protected]>

* sm64: only apply DDD 100 coin star rule if the location exists (#716)

* MC: add non-windows install to docs (#713)

* MC: add non-windows install to docs

* MC: better link naming for non-windows doc

Co-authored-by: Hussein Farran <[email protected]>

* MC: doc change manual forge link to index

By removing the direct link to the version we avoid having to update it all the time and users will have to check the other version numbers for manual installation anyway.

Co-authored-by: Hussein Farran <[email protected]>

* Revert SC2 item classifications

* fix glossary link on sitemap

* LttP: now that Enemizer allows for AP rom name, rename it. (#730)

* LttP: now that Enemizer allows for AP rom name, rename it.

* LttP: fix missing Enemizer message parenthesis

* CI: update Enemizer to 7.0.1

* Factorio: Fix impossible seeds for rocket-part recipes as well. (#733)

* SNES games: use JPN as abbreviation for Japan/Japanese

* [The Witness] Update data_version as it was forgotten for 0.3.3

# Conflicts:
#	worlds/witness/docs/setup_en.md

* BaseClasses: make ItemClassification properties faster

* Generate: convert plando settings to an IntFlag with error reporting for unknown plando names (#735)

* [Timespinner] Rename flag and add tiered loot settings (#699)

* Hollow Knight June 2022 Updates (#720)

This is a combined PR for assorted Hollow Knight updates for June 2022 that have cleared testing. It supersedes any HK-exclusive PRs open by myself or @Alchav unless stated otherwise.

Summary of changes below:

 * Implement Split Claw, Split Cloak, Split Superdash, Randomize Nail, Randomize Focus, Randomize Swim and Elevator 
 * Pass options (@Alchav)
 * Add support for Deathlink with three different modes (@dewiniaid)
 * Add customizable additional shop slots per-shop (@Alchav) and overall (@dewiniaid)
 * Overhaul shop cost output to be more generic and account for all locations with standard costs (such as Stag Stations, Cornifer, and Divine) (@dewiniaid)
 * Add "CostSanity", allowing random prices using any cost type to be chosen for any location with a cost. (e.g. a Stag station requiring 15 grubs to obtain an item)
 * Item classification fixes (Map and Journal items are fillter, Mask Shards/Pale Ore/Vessel Fragments are useful) (@Alchav)
 * Fix Ijii -> Jiji (@Alchav )
 * General code quality updates

The above changes are only for the HK world.

* Break out of fill loop if locations is empty (#690)

* docs: fix 2 URLs (#738)

* URL of image in Alttp ES tutorial
* Link to RA download in SMZ3 EN tutorial

* Update Raft for Final Chapter (#724)

* RL: Rename Rogue Legacy Folder  (#452)

* rename rogue legacy
"`rogue-legacy` is not a valid python module name"

* revert rename of the documentation file

* Dev Docs: Add SA2B and SC2 to network diagram (#719)

* Add SA2B and SC2 to network diagram

* Remove jpg version of image.

* Fix png of image... Github web editor borked it

* Update network diagram.svg

* We're back to light mode, friends.

Use SVG and JPG that are valid and let you zoom in properly.

* WebHost: fix comment typo

* Subnautica: fix generation crash on valuable item pool (#739)

* WebHost: Advanced guide cleanup (#725)

* advanced yaml cleanup

* Update advanced_settings_en.md

* i hate this game now

* formatting reverting

* LttP: fix shop inventory corruption in upgrade fairy

* Subnautica: display item_pool as Item Pool on the settings page

* Factorio: fix accidental removal of fluids from make_balanced_recipe (#754)

* Allow potentially all rocket-part ingredients to be fluids. (#753)

* Doc: Add english mac guide (running from source) (#744)

* Create RunFromSourceGuideForMac.md

* Update and rename RunFromSourceGuideForMac.md to docs/RunFromSourceGuideForMac.md

* Clarified the source code download.

* Rename docs/RunFromSourceGuideForMac.md to worlds/generic/docs/RunFromSourceGuideForMac.md

* Update __init__.py

* Noted the case where a user might want EnemizerCLI

* Updated document to reflect requested changes

Updated to reflect the requested changes as well as including some information on virtual environments.

* Added Capital Letters to SNIClient.py

* Reworked Document Structure

Numeric order of lists now makes sense and changed the virtual environment section to match Archipelago tradition.

* Update __init__.py

* Minor Changes for clarity's sake

* Renamed file to make webhost happy

* Changed mac guide filename

* Requirements: update some modules

* gitignore general Windows/macOS files (#763)

* Sm comeback too strict (#755)

* lttp: move open pyramid to new options system (#762)

* Core: skip second sanity check when pushing an item into a location (-O) (#745)

* SC2: Windows ".dll missing" fix and fix for finding SC2 install automatically (#721)

* sm64ex: Allow setting Big Star Door requirements (#773)

* sm64ex: Allow setting Big Star Door requirements

* sm64ex: Lower requirements for StarsToFinish

* SNIClient: update default SNI port from 8080 to 23074

* MultiServer: add /status and allow status command to dynamically filter for Tags

* Put common options first (#774)

* this applies to yaml and webhost
* this allows overwriting common options from the world

* Subnautica: updates (#759)

* Subnautica: add more goals

* Subnautica: fix wrongly positioned Databox

* Subnautica: allow techs to remain vanilla

* Subnautica: make zipimport compatible

* Subnautica: force two Seaglide fragments into local sphere 1

* SoE: texts, energy core, fragments, useful (#777)

* fix missing fields in custom prog balancing option
* fix typos and pep8
* update and implement pyevermizer 0.41.3
  * allow randomizing energy core
  * add energy core fragments (turn in at Prof. Ruffleberg)
  * rename some items to avoid confusion
  * differentiate between progression and useful
* remove obsolete 'Bazooka' group
* don't add items to the pool that get removed

* sm64ex: Adapt area_connections slotdata Format (#767)

* Ror2: reduce locations to 250 and mark legendary items as useful (#776)

* reduce total locations to 250

* minor styling cleanup. mark legendary items as useful

* 😡

Co-authored-by: black-sliver <[email protected]>

Co-authored-by: black-sliver <[email protected]>

* RoR2: FinalStageDeath (#766)

Added a YAML option for 'FinalStageDeath', a toggle for 'death on the final boss stage counts as a win'. Defaults to on.

Co-authored-by: Vale <[email protected]>

* Improve Risk of Rain 2 docs (#770)

* Improve Risk of Rain 2 docs

* RoR2: clarify custom item weight settings

* Update worlds/ror2/docs/en_Risk of Rain 2.md

Co-authored-by: Hussein Farran <[email protected]>

* doc: add style guide (#746)

* doc: add style guide

* doc: style guide for python and markdown

* doc: consistent use of periods and explicit double quotes in style guide

Co-authored-by: Hussein Farran <[email protected]>

* doc: better define string style in style guide

* doc: add format string literals to style guide

* doc: add HTML, CSS and JS to style guide

Co-authored-by: Hussein Farran <[email protected]>

* Factorio: specify rcon version

* MultiServer: make !hint prefer non-local

* Rogue Legacy: obliterate any outdated remnants before installer adds new files

* WebHost: cleanup generate and hopefully fix SQL concurrency problems

* SMZ3: Item link support (#756)

* first working (most of the time) progression generation for SM using VariaRandomizer's rules, items, locations and accessPoint (as regions)

* first working single-world randomized SM rom patches

* - SM now displays message when getting an item outside for someone else (fills ROM item table)

This is dependant on modifications done to sm_randomizer_rom project

* First working MultiWorld SM

* some missing things:

- player name inject in ROM and get in client
- end game get from ROM in client
- send self item to server
- add player names table in ROM

* replaced CollectionState inheritance from SMBoolManager with a composition of an array of it (required to generation more than one SM world, which is still fails but is better)

* - reenabled balancing

* post rebase fixes

* updated SmClient.py

* + added VariaRandomizer LICENSE

* + added sm_randomizer_rom project (which builds sm.ips)

* Moved VariaRandomizer and sm_randomizer_rom projects inside worlds/sm and done some cleaning

* properly revert change made to CollectionState and more cleaning

* Fixed multiworld support patch not working with VariaRandomizer's

* missing file commit

* Fixed syntax error in unused code to satisfy Linter

* Revert "Fixed multiworld support patch not working with VariaRandomizer's"

This reverts commit fb3ca18528bb331995e3d3051648c8f84d04c08b.

* many fixes and improovement

- fixed seeded generation
- fixed broken logic when more than one SM world
- added missing rules for inter-area transitions
- added basic patch presence for logic
- added DoorManager init call to reflect present patches for logic
- moved CollectionState addition out of BaseClasses into SM world
- added condition to apply progitempool presorting only if SM world is present
- set Bosses item id to None to prevent them going into multidata
- now use get_game_players

* first working (most of the time) progression generation for SM using VariaRandomizer's rules, items, locations and accessPoint (as regions)

* first working single-world randomized SM rom patches

* - SM now displays message when getting an item outside for someone else (fills ROM item table)

This is dependant on modifications done to sm_randomizer_rom project

* First working MultiWorld SM

* some missing things:

- player name inject in ROM and get in client
- end game get from ROM in client
- send self item to server
- add player names table in ROM

* replaced CollectionState inheritance from SMBoolManager with a composition of an array of it (required to generation more than one SM world, which is still fails but is better)

* - reenabled balancing

* post rebase fixes

* updated SmClient.py

* + added VariaRandomizer LICENSE

* + added sm_randomizer_rom project (which builds sm.ips)

* Moved VariaRandomizer and sm_randomizer_rom projects inside worlds/sm and done some cleaning

* properly revert change made to CollectionState and more cleaning

* Fixed multiworld support patch not working with VariaRandomizer's

* missing file commit

* Fixed syntax error in unused code to satisfy Linter

* Revert "Fixed multiworld support patch not working with VariaRandomizer's"

This reverts commit fb3ca18528bb331995e3d3051648c8f84d04c08b.

* many fixes and improovement

- fixed seeded generation
- fixed broken logic when more than one SM world
- added missing rules for inter-area transitions
- added basic patch presence for logic
- added DoorManager init call to reflect present patches for logic
- moved CollectionState addition out of BaseClasses into SM world
- added condition to apply progitempool presorting only if SM world is present
- set Bosses item id to None to prevent them going into multidata
- now use get_game_players

* Fixed multiworld support patch not working with VariaRandomizer's

Added stage_fill_hook to set morph first in progitempool
Added back VariaRandomizer's standard patches

* + added missing files from variaRandomizer project

* + added missing variaRandomizer files (custom sprites)

+ started integrating VariaRandomizer options (WIP)

* Some fixes for player and server name display

- fixed player name of 16 characters reading too far in SM client
- fixed 12 bytes SM player name limit (now 16)
- fixed server name not being displayed in SM when using server cheat ( now displays RECEIVED FROM ARCHIPELAGO)
- request: temporarly changed default seed names displayed in SM main menu to OWTCH

* Fixed Goal completion not triggering in smClient

* integrated VariaRandomizer's options into AP (WIP)

- startAP is working
- door rando is working
- skillset is working

* - fixed itemsounds.ips crash by always including nofanfare.ips into multiworld.ips (itemsounds is now always applied and "itemsounds" preset must always be "off")

* skillset are now instanced per player instead of being a singleton class

* RomPatches are now instanced per player instead of being a singleton class

* DoorManager is now instanced per player instead of being a singleton class

* - fixed the last bugs that prevented generation of >1 SM world

* fixed crash when no skillset preset is specified in randoPreset (default to "casual")

* maxDifficulty support and itemsounds removal

- added support for maxDifficulty
- removed itemsounds patch as its always applied from multiworld patch for now

* Fixed bad merge

* Post merge adaptation

* fixed player name length fix that got lost with the merge

* fixed generation with other game type than SM

* added default randoPreset json for SM in playerSettings.yaml

* fixed broken SM client following merge

* beautified json skillset presets

* Fixed ArchipelagoSmClient not building

* Fixed conflict between mutliworld patch and beam_doors_plms patch

- doorsColorsRando now working

* SM generation now outputs APBP

- Fixed paths for patches and presets when frozen

* added missing file and fixed multithreading issue

* temporarily set data_version = 0

* more work

- added support for AP starting items
- fixed client crash with gamemode being None
- patch.py "compatible_version" is now 3

* commited missing asm files

fixed start item reserve breaking game (was using bad write offset when patching)

* Nothing item are now handled game-side. the game will now skip displaying a message box for received Nothing item (but the client will still receive it).

fixed crash in SMClient when loosing connection to SNI

* fixed No Energy Item missing its ID

fixed Plando

* merge post fixes

* fixed start item Grapple, XRay and Reserve HUD, as well as graphic beams (except ice palette color)

* fixed freeze in blue brinstar caused by Varia's custom PLM not being filled with proper Multiworld PLM address (altLocsAddresses)

* fixed start item x-ray HUD display

* Fixed start items being sent by the server (is all handled in ROM)

Start items are now not removed from itempool anymore
Nothing Item is now local_items so no player will ever pickup Nothing. Doing so reduces contribution of this world to the Multiworld the more Nothing there is though.
Fixed crash (and possibly passing but broken) at generation where the static list of IPSPatches used by all SM worlds was being modified

* fixed settings that could be applied to any SM players

* fixed auth to server only using player name (now does as ALTTP to authenticate)

* - fixed End Credits broken text

* added non SM item name display

* added all supported SM options in playerSettings.yaml

* fixed locations needing a list of parent regions (now generate a region for each location with one-way exits to each (previously) parent region

did some cleaning (mainly reverts on unnecessary core classes

* minor setting fixes and tweaks

- merged Area and lightArea settings
- made missileQty, superQty and powerBombQty use value from 10 to 90 and divide value by float(10) when generating
- fixed inverted layoutPatch setting

* added option start_inventory_removes_from_pool

fixed option names formatting
fixed lint errors
small code and repo cleanup

* Hopefully fixed ROR2 that could not send any items

* - fixed missing required change to ROR2

* fixed 0 hp when respawning without having ever saved (start items were not updating the save checksum)

* fixed typo with doors_colors_rando

* fixed checksum

* added custom sprites for off-world items (progression or not)

the original AP sprite was made with PierRoulette's SM Item Sprite Utility by ijwu

* - added missing change following upstream merge

- changed patch filename extension from apbp to apm3 so patch can be used with the new client

* added morph placement options: early means local and sphere 1

* fixed failing unit tests

* - fixed broken custom_preset options

* - big cleanup to remove unnecessary or unsupported features

* - more cleanup

* - moved sm_randomizer_rom and all always applied patches into an external project that outputs basepatch.ips

- small cleanup

* - added comment to refer to project for generating basepatch.ips (https://github.com/lordlou/SMBasepatch)

* fixed g4_skip patch that can be not applied if hud is enabled

* - fixed off world sprite that can have broken graphics (restricted to use only first 2 palette)

* - updated basepatch to reflect g4_skip removal

- moved more asm files to SMBasepatch project

* - tourian grey doors at baby metroid are now always flashing (allowing to go back if needed)

* fixed wrong path if using built as exe

* - cleaned exposed maxDifficulty options

- removed always enabled Knows

* Merged LttPClient and SMClient into SNIClient

* added varia_custom Preset Option that fetch a preset (read from a new varia_custom_preset Option) from varia's web service

* small doc precision

* - added death_link support

- fixed broken Goal Completion
- post merge fix

* - removed now useless presets

* - fixed bad internal mapping with maxDiff

- increases maxDiff if only Bosses is preventing beating the game

* - added support for lowercase custom preset sections (knows, settings and controller)

- fixed controller settings not applying to ROM

* - fixed death loop when dying with Door rando, bomb or speed booster as starting items

- varia's backup save should now be usable (automatically enabled when doing door rando)

* -added docstring for generated yaml

* fixed bad merge

* fixed broken infinity max difficulty

* commented debug prints

* adjusted credits to mark progression speed and difficulty as Non Available

* added support for more than 255 players (will print Archipelago for higher player number)

* fixed missing cleanup

* added support for 65535 different player names in ROM

* fixed generations failing when only bosses are unreachable

* - replaced setting maxDiff to infinity with a bool only affecting boss logics if only bosses are left to finish

* fixed failling generations when using 'fun' settings

Accessibility checks are forced to 'items' if restricted locations are used by VARIA following usage of 'fun' settings

* fixed debug logger

* removed unsupported "suits_restriction" option

* fixed generations failing when only bosses are unreachable (using a less intrusive approach for AP)

* - fixed deathlink emptying reserves

- added death_link_survive option that lets player survive when receiving a deathlink if the have non-empty reserves

* - merged death_link and death_link_survive options

* fixed death_link

* added a fallback default starting location instead of failing generation if an invalid one was chosen

* added Nothing and NoEnergy as hint blacklist

added missing NoEnergy as local items and removed it from progression

* - enabled local item dialog boxes for dungeon and keycard items when keysanity is used

* - fixed ItemLink support

* fixed shops sending checks

* Added get_filler_item_name() returning a random junk item

Co-authored-by: Fabian Dill <[email protected]>

* Subnautica: add creature scans

* LTTP: Yaml Update (#765)

removes vendor option from hints, adds scam setting, and adds P option to shop shuffle.

* OoT: Fix gerudo_fortress on normal (#784)

* Final Fantasy: fix outdated advancement flag

* The Witness 0.3.4 features (#780)

New options:

Shuffle Doors: Many doors in the game will open on their own upon receiving an item ("key").
Variant - Shuffle Door/Control Panels: Many panels in the game that open doors or control devices in the world will be off until receiving their respective item ("key").
Shuffle Lasers: Lasers no longer activate by solving the laser panel, instead you will get an item that activates the laser.
Shuffle Symbols: Now that there is something else to shuffle (doors / door panels), you can turn off Symbol Rando.
Shuffle Postgame (replaces "Shuffle Hard"): The randomizer will now determine by your settings which panels are in the "postgame" - Meaning they can only be accessed after you can complete your win condition anyway.

* SMZ3: Pedestal hint (#792)

* - fixed missing pedestal and tablets hint text for foreign items (was "Don't waste yout time!", is now "A small victory!")

- small precision to SMZ3 and SM docs about "What does another world's item look like in Super Metroid"

* WebHost: reduce server uptime (#794)

* WebHost: attempt to improve wording of server resume
* WebHost: reduce default room timeout to 2 hours


Co-authored-by: black-sliver <[email protected]>

* ChecksFinder: Linux support via wine (#795)

* ChecksFinder: Linux support via wine

* ChecksFinder: account for custom $WINEPREFIX

* ChecksFinder: wine detection

* DS3: Add the Dark Souls 3 World into Archipelago (#769)

* Factorio: update rcon lib

* Subnautica: add missed PDA

* Subnautica: Add DeathLink (#803)

* HK - Fix typos in option names

Fixed max charm and max geo cost display names.

* Add to the ArchipIDLE items list (#807)

* Add to the ArchipIDLE items list

* Update Items.py

* Update Items.py

* Donkey Kong Country 3 Implementation (#798)

* Baseline patching and logic for DKC3

* Client can send, but not yet receive

* Alpha Test Baseline

* Bug Fixes and Starting Lives Option

* Finish BBH, add world hints

* Add music shuffle

* Boomer Costs Text

* Stubbed in Collect behaviour

* Adjust Gyrocopter option

* Add Bonus Coin junk replacement and tracker support

* Delete bad logs

* Undo host.yaml change

* Refactored SNIClient

* Make Swanky Free

* Fix Typo

* Undo SNIClient run_game hack

* Fix Typo

* Remove Bosses from Level Shuffle

* Remove duplicate kivy Data

* Add DKC3 Docs and increment Data version

* Remove dead code

* Fix mislabeled region

* Add Dark Souls 3 to README

* Always force Cog on Rocket Rush Flag

* Fix Single Ski lock and too many DK Coins

* Update Retroarch version number

* Don't send DKC3 through LttP Adjuster

* Comment Location ROM Table

* Change ROM Hash prefix to D3

* Remove redundant constructor

* Add ROM Change Safeguards

* Properly mark WRAM accesses

* Remove outdated region connect

* Fix syntax error

* Fix Game description

* Fix SNES Bank Access

* Add isso_setup for DKC3

* Double Quote strings

* Escape single quotes I guess

* LttP: Fix scam options (#806)

* Sm beam door speedkeep fun accessibility (#785)

added speedkeep option
now forces accessibility to "minimal" instead of (to be deprecated) "item" when "fun" settings is used

* The Witness: Small changes in response to beta tests (#801)

* Option order and better tooltip

* Logic fix: Hedge Laser requires access to all Hedges

* Add item groups: Lasers, Symbols, Doors

* Update worlds/witness/items.py

Co-authored-by: black-sliver <[email protected]>

* Comment for clarity

* Logic fix

* Another logic fix

Co-authored-by: metzner <[email protected]>
Co-authored-by: black-sliver <[email protected]>

* OOT updates (#821)

* oot: remove all escape characters in LogicTricks.py

* only attempt to connect to client once

* oot: don't kill player outside ToT or in market entrance
fixed camera makes the game crash outside ToT. added market entrance to be safe, it doesn't matter if you don't die there

* sm64ex: Various Features (#790)

* sm64ex: Course and Secret Randomizer

* sm64ex: Allow higher star door costs, raise minimum amount of stars, deprecate ExtraStars

* sm64ex: Support setting MIPS costs

* sm64ex: Safeguard MIPS Costs

* DKC3 - Logic Softlock Fix (#817)

* Add two locations to Trade Sequence List

* Remove trace sequence locations from ROM data dict

* Subnautica: fix Multipurpose Room not acquirable in valuable item pool

BaseRoomFragment doesn't exist in vanilla, so when valuable item pool marked it as scannable in vanilla location it did not work, as it's technically BaseRoom
BaseRoom is also required to install other modules into, modules that are already marked as useful, so logically if it's required for other useful stuff it should also be marked as useful
By switching from Fragment to non-fragment one now needs 1 out of 2 instead of 2 out of 2 items, which I consider a plus as well.

* HK - focus location (#778)

* Update ds3 locations and items (#819)

* DS3: Add more rules to avoid softlocks, remove Path of the Dragon gesture location/item and remove useless comments

* DS3: Add more Hostile NPCs locations/items

* DS3: Add missing key items to the key items list

* Archipidle: Fix forgotten version increment when a new item was added

* SM: smoother co-op, basepatch internal improvements (#793)

* SM: remote touch instantly, pull ips refactor and symbols

* SM: remove hard-coded ROM address writes

* SM: Full length player table, incl. receive-only player ids

+ apply PR feedback (correct graphic offset, readable data file paths)

* WebHost: flask caching did a rename

* SC2 docs: Extensive reworks and rewordings. (#809)

* LttP: fix deprecated use of isSet() (#831)

* SNIClient: fix program not exiting if SNI does not exist nor is running

* WebHost: fix 30 days cutoff for stats (#826)

* DKC3: fix missing default options in Utils.py

* WebHost: games played per day plot per game on stats page (#827)

* WebHost: generate stats page palette for maximum hue difference between neighbours.

* WebHost: add per game played stats

* CI: update SNI to 0.0.82

* Smz3 no progression gt fix (#818)

* Witness: Fatal logic bug fix (#837)

* Renamed some event items

* Fatal logic bug: Door panels did not check their symbol items

* [Docs] Further explained the mythical `InvalidPacket` (#828)

* [Docs] Further explained the mythical `InvalidPacket`

* Fixed header category

* Update docs/network protocol.md

Co-authored-by: black-sliver <[email protected]>

* Update docs/network protocol.md

Co-authored-by: black-sliver <[email protected]>

* Apply suggestions from code review

Co-authored-by: Hussein Farran <[email protected]>

Co-authored-by: black-sliver <[email protected]>
Co-authored-by: Hussein Farran <[email protected]>

* Prevent Krematoa Crash (#832)

* Prevent Krematoa Crash, add crash robustness

* Remove print statements

* Don't remove ctx.rom if save file dies

* Consolidate logic for readability

* Doc: move Running from source from wiki to docs (#797)

* Doc: move "Running from source" from wiki to docs/

* Doc: update links and reformat running from source

* Doc: implement suggestions in "Running from source"

thanks @alwaysintreble

* Doc: update link to "Running from source"

also link docs/ folder

* Doc: Running from source: Apply suggestions from code review

Co-authored-by: KonoTyran <[email protected]>

Co-authored-by: KonoTyran <[email protected]>

* WebHost: make a deeply buried if tree for games a bit more automatic

* Migrate DKC3 to APDeltaPatch (#838)

* Add DKC3 to APDeltaPatch

* Undo unintended commit

* More undoing

* Remove else clause

* Sm broken start location fix (#841)

* - fixed basepatches application order breaking (at least) starting location

* Sm smz3 create item fix (#844)

* Core: have generation print plando settings as string instead of numbers (#843)

* have generation print plando settings as string instead of numbers

* Change to __str__

* Make to_string not a class method

* Suggested fix

Co-authored-by: black-sliver <[email protected]>

* Fix the fix

* Better quotes

Co-authored-by: black-sliver <[email protected]>

* WebHost: Add links to "Setup Guides" in Supported Games page (#847)

* WebHost: Add links to "Setup Guides" in Supported Games page

* Remove a hanging console.log() I left in

* Fixed a crafting category bug related to fluids. (#848)

* WebHost: update flask (#804)

* The Witness: Logic fix (unbeatable seed) (#850)

* Add an optional path to factorio server-settings.json (#851)

* Add an optional path to factorio server-settings.json

* factorio: changes

* use forward slashs in host.yaml going forward.  (works on all OSes.)
* comment out the host.yaml server_settings option.
* assume that server_settings is NOT provided and explicitly check for its existence in factorio_client.

* HK: Add bug report link (#824)


Co-authored-by: Hussein Farran <[email protected]>

* Core: patch stream_input to ignore non-parsable input (such as EOF encoded as 0xff) (#854)

* Subnautica: update docs with resume info (#853)



Co-authored-by: black-sliver <[email protected]>
Co-authored-by: strotlog <[email protected]>

* SMZ3: FixJunkFillGT making invalid placements

* SMZ3: Fix Swamp Palace Entrace for minimal accessibility

* Core: update version

* Stats: limit to recognized games

* Core: optimize away Item.world (#840)

* Core: optimize away Item.world

* Update test/general/TestFill.py

* Test: undo unnecessary changes

* lttp: remove two more Item.world writes

Co-authored-by: black-sliver <[email protected]>

* WebHost: fix filename rename in flask update

* move some docs out of readme and link with the headers

* PR template

* bug report template

Co-authored-by: jtoyoda <[email protected]>
Co-authored-by: Fabian Dill <[email protected]>
Co-authored-by: Fabian Dill <[email protected]>
Co-authored-by: CaitSith2 <[email protected]>
Co-authored-by: TheCondor07 <[email protected]>
Co-authored-by: Zach Parks <[email protected]>
Co-authored-by: lordlou <[email protected]>
Co-authored-by: N00byKing <[email protected]>
Co-authored-by: espeon65536 <[email protected]>
Co-authored-by: TheCondor07 <[email protected]>
Co-authored-by: Chris Wilson <[email protected]>
Co-authored-by: Jarno Westhof <[email protected]>
Co-authored-by: Felix R <[email protected]>
Co-authored-by: black-sliver <[email protected]>
Co-authored-by: strotlog <[email protected]>
Co-authored-by: t3hf1gm3nt <[email protected]>
Co-authored-by: Kono Tyran <[email protected]>
Co-authored-by: Kippi00 <[email protected]>
Co-authored-by: Colin Lenzen <[email protected]>
Co-authored-by: Alchav <[email protected]>
Co-authored-by: Joethepic <[email protected]>
Co-authored-by: Hussein Farran <[email protected]>
Co-authored-by: Daniel Grace <[email protected]>
Co-authored-by: NewSoupVi <[email protected]>
Co-authored-by: PoryGone <[email protected]>
Co-authored-by: RaspberrySpaceJam <[email protected]>
Co-authored-by: Grrmo <[email protected]>
Co-authored-by: rsyh93 <[email protected]>
Co-authored-by: The T <[email protected]>
Co-authored-by: Rome Reginelli <[email protected]>
Co-authored-by: espeon65536 <[email protected]>
Co-authored-by: Sunny Bat <[email protected]>
Co-authored-by: Doug Hoskisson <[email protected]>
Co-authored-by: Bicoloursnake <[email protected]>
Co-authored-by: SoldierofOrder <[email protected]>
Co-authored-by: jsd1982 <[email protected]>
Co-authored-by: Vale <[email protected]>
Co-authored-by: Vale <[email protected]>
Co-authored-by: Ludovic Marechal <[email protected]>
Co-authored-by: Jolteon0163 <[email protected]>
Co-authored-by: metzner <[email protected]>
Co-authored-by: KonoTyran <[email protected]>
alwaysintreble added a commit to alwaysintreble/Archipelago that referenced this pull request Aug 5, 2022
* WebHost: fix plando options type error

* Clients: some cleanup

* LttP: fix adjuster partial settings store crash

* Block collection of Sahasrahlah. (#562)

* SC2: Launch game in fullscreen mode.

* Clients: now featuring tooltips and some general cleanup (#564)

* Clients: now featuring tooltips and some general cleanup

* Clients: fade in tooltip over 0.25 seconds

* Clients: reset slot and team when disconnecting

* Clients: allow joining multiworld via link (TextClient only for now)

* add tooltip for Plando Options on Generate page (#563)

* Network: remove "SlotAlreadyTaken" from docs and clients, as it was removed from the server in 0.2

* Sm various fixes (#518)

* v6,sm64ex: Use standard Death Link option name

* MC: Bee Trap is renamed and trap

* Clients: allow "&[]" in tooltips, as kivy-escaped characters and fix similar translate issues in copy-paste clipboard

* OoT: write double-ended shuffled entrances to spoiler log more clearly

* OoT: remove warning message during multidata manipulation

* OoT: trap display rework
Traps from all games now disguise themselves as OoT items
Traps all display "[Player] is a FOOL!" when picked up

* OoT: write data into autotracking context
useful for the client and autotrackers to gather data easily

* OoT: add version check to lua script + client

* OoT: lua script reads MQ dungeon address dynamically from autotracker context
finally I can stop updating this every version

* OoT: big poe count option returns

* OoT Client: deathlink toggle

* SC2: Option for random mission order (#569)

* WebHost: update waitress and bokeh (#575)

* WebHost: undo autoconnect link as not all browsers behave like Vivaldi. (#577)

* WebHost: undo autoconnect link as not all browsers behave like Vivaldi.

* Increase tooltip z-index

Co-authored-by: Chris Wilson <[email protected]>

* SC2: fix copy pasta in client

* Setup: "ParseVersion" gives Deprecated Warning, fixing the warning.

* MC: fix Bee Trap name

* SC2: Updated webhost details page

* [Timespinner] Removed backwarp from refugee camp to library from logic

* SC2: Fixed issue in random mission order with some missions being available too early

* Meritous: Minor logic change (#584)

* LttP: convert vendors hint into separate scams option

* AppImage: fix build (#589)

* CI: build: use ARCH= for AppImage

* WebHost: pin flask-caching

until https://github.com/pallets-eco/flask-caching/pull/352 is merged or fixed otherwise

* WebHost: use non-blocking file lock on unix, just like windows

* SC2: GUI Mission Launcher (#586)

* SC2: Functioning Starcraft 2 Mission Launcher UI

* AutoWorld: add .__file__ attribute to AutoWorlds
This tries to help with a recurring easy to make mistake, where ./worlds/myworld does not exist in frozen form and is instead ./lib/worlds/myworld

* SC2: get .kv file path correctly when frozen too

Co-authored-by: TheCondor07 <[email protected]>
Co-authored-by: Fabian Dill <[email protected]>

* Sm remote item fix (#592)

* Doc: deprecate datapackage_version

* Server: remove compat to ~0.2 unversioned save data
If the savegame was loaded in the last few months, it will have already been upgraded.

* Tests: add test to check for typo'd item name group definitions (#594)

* 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

* WebHost: update flask-caching

* Tracker: fix ItemLinks items not being attributed to inventory

* LttP: split Retro into Retro Bows and Retro Caves (#588)

* SNIClient: run adjuster for new aplttp file type

* config: Use valid default enemizer_path on Linux (and Windows)

* TS: Add region names to location names, and other location name clarifications (#570)

* Add region names to location names, and other location name clarification changes

* kvui: fix warning about "X missing in __all__" when importing from kivy.base instead of correct module

* SC2: UI update, Relegate No Build Option, and Filler Item Update (#606)

* update minecraft_en.md wording slightly and minecraft version

* AppImage: better compatibility

* old startup script did not work with dash
* add missing libcrypt in cx_freeze

* UI: add Utils.messagebox

automatically uses either new kvui.MessageBox or tkinter.messagebox

* Core: move is_linux, _macos, _windows to Utils.py

* Ui: add open_filename helper

* native look & feel on Linux (Gnome and KDE)
* falls back to tkinter

* requirements: update cx-Freeze, fix compatibility

this conflicts with and replaces commit #f9b12b51080c7bbbf3d52c79453ac6c8222a03c5

* Appimage: include libssl (#613)

* Clients: UX improvements (#615)

* Clients: some improvements (#602)

* Clients: some improvements
SNIClient is the only client that uses slow_mode, so its definition should be moved there.
type info for CommandProcessor was int for some reason.
Moved a lot of type info from init to class body, making it easier for type checkers to find.
getLogger("") and getLogger(None) is technically different, just happens that our root logger is "", fixed it in case of future confusion though.

* Logging: log that init_logging was run and what the current AP version is.

* WebHost: some updates (#603)

* 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

* Generate: sort input files, preventing arbitrary order from OS layer.

* Update LICENSE files for WebHost assets (#616)

* Document multi-game YAMLs (#619)

* SC2: send ItemLink messages to ingame as well

* HK: allow shuffling charm costs, instead of randomizing. (#441)

* SNIClient: sort devices for consistent key
SNIClient: get rid of * import

* WebHost: request maximum amount of file handles from the system for autolauncher. (#625)

* WebHost: request maximum amount of file handles from the system for autolauncher.

* WebHostLib: wrap resource import into try to restore windows compatibility

* ALTTP: Updates to setup documents (#628)



Co-authored-by: alwaysintreble <[email protected]>

* OOT: Add note about common issue with lua option in the configuration step (#629)

* OOT: Add note about common issue with lua option in the configuration step

More and more people have issues with connecting with OoT because fresh installs of newer versions of Bizhawk show having "Lua+LuaInterface" selected when it actually loads "Nlua+KopiLua" instead until you toggle between the two options. Hopefully adding this bolded note will help new users avoid this problem in the future.

* [Timespinner] Add Boss Randomization Settings (#598)

* [Timespinner] Add Boss Randomization Settings

* Fix Room log

* Fix LTTP filler items (#621)

* Tutorials: hide ArchipIDLE (#622)

* Don't copy files of hidden worlds

* tutorials: hardcode not generating ArchipIDLE tutorial files outside april

* tutorials: ignore hidden worlds unless it's 'Archipelago'

* add parenthesis to prevent ambiguity

* Fix the possibility of manually assigning 'random' via alias_random

* Minecraft 1.19 (#623)

* WebHost: Allow "random" to be default option for toggles and choices. (#640)

* Itemlink tutorial improvement (#611)

* Update Items.py

* Update advanced_settings_en.md

* Update Items.py

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* improve consistency

Co-authored-by: alwaysintreble <[email protected]>

* fix formating on game setting in example

Co-authored-by: alwaysintreble <[email protected]>

* change version

Co-authored-by: alwaysintreble <[email protected]>

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* tutorials: add description for game weight and properly document item links

* tutorials: add description for null replacement

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: alwaysintreble <[email protected]>

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: Hussein Farran <[email protected]>

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: Hussein Farran <[email protected]>

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: Hussein Farran <[email protected]>

Co-authored-by: alwaysintreble <[email protected]>
Co-authored-by: Hussein Farran <[email protected]>

* Options: introduce SpecialRange (#630)

* Options: introduce SpecialRange

* Include SpecialRange data in player-settings and weighted-settings JSON files

* Add support for SpecialRange to player-settings pages

* Add support for SpecialRange options to weighted-settings. Also fixed a bug which would cause the page to crash if an unknown setting was detected.

Co-authored-by: Chris Wilson <[email protected]>

* SNIClient: prevent hang on exit if waiting on devices from SNI

* WebHost: update Flask-Limiter

* Hollow Knight updates (goals, WP/POP, etc.) (#438)

* Hollow Knight updates:

- Add configurable goals (Any, THK, Siblings, Radiance)
  - Change base logic to require Opened_Black_Egg_Temple instead of
    requiring 3 dreamers.  This is future-proof for transition rando,
    where Black Egg might not have been located yet.
  - Add combat logic for THK and Radiance on par with Rando4's boss logic,
    so itemless HK shouldn't be required.
- Existing completion logic now uses Black_Egg_te

- Add White Palace options
  (Exclude, King Fragment Only, No Path of Pain, Include)
  - Excluded WP may still be required for King Fragment if Charms are
    not randomized
  - Simply don't place WP locations that are excluded
  - Distinguish between POP locations (required for POP), WP checks (
    actual item locations), WP transitions (relevant for future transition
    rando), and WP events (logically required to reach King Fragment)
  - Many transitions were listed twice.  Remove duplicates.
  - Sort transitions by scene

- For randomizable locations that have no logical significance when not
    randomized, simply skip adding them to the pool entirely for
    theoretically faster generation.

* Hollow Knight updates

  - Support random starting geo up to 1000 geo.
  - Always include locations rather than dropping unrandomized "logicless"
    ones, as it is required to best support same-slot coop.

* ChecksFinder Client refactored to import CommonClient components.

* Options: fix all games templates breaking due to invalid progression balancing

* fix spaces in folder names failing to launch forge.

* Tracker: fix order received column being empty

* Generate: ignore files starting with ., something about Macs having a .DS_STORE or something. (#656)

* Generate: ignore files starting with ., something about Macs having a .DS_STORE or something.

* Generate: .name is important

* Meritous get_filler_item_name

* The Witness - 0.3.3 features and fixes (#617)

New option: "Early Secret Area" (Opens a door to the Challenge Area from the start of the game)
New option: Victory Conditions "Mountaintop Box Short" and "Mountaintop Box Long"
New options: Number of Lasers of Mountain, Number of Lasers for Challenge
New option & item: Add some number of "Puzzle Skips", which let you skip one puzzle in the game

Many logic fixes

* MultiServer: introduce LocationScouts create_as_hint -> only_new

* CommonClient: revamp DataPackage handling

* Tests: always display all warnings
WebHost: fix a warning about new cache names

* Core: move multiple Item properties into a single Flag (#638)

* LttP: fix Ganon's Tower trash prefill ignoring item_rules (#648)

* kivy: include in frozen library zip

* HK: extractor now needs to check for BOM

* Network remove roominfo players (#661)

* LttP: update manual yaml

* Core: increment version

* Core: fix ItemLinks setting advancement flag

* Core: downgrade item classification to int before writing to file

* setup.py: fix setuptools>=61 compatibility

Closes ArchipelagoMW/Archipelago#391

* Factorio: fix impossible recipes requiring stacking non-stacking items
Factorio: speedup load time

* Launcher: always use kvui

* Sort hints by found/not found and then other world/own world. (#642)

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)

* MC client: use user_path to fix appimage permissions

* Factorio: load fluids from exported data

* Factorio: manual crude-oil recipe seems no longer needed and actually messed with costs

* lttp: update requirement version for lttp template yaml

* MinecraftClient: Linux fixes (#668)

* MC: open file selector if client is run without apmc

* MC: linux fixes

* we don't use shell anymore
* use user_path for forge_dir. Unless read-only, this is the same as what cwd is set to.

* SoE: change default prog balancing to 30

* api.md update and rename (#676)

* api.md: update for ItemClassification

* world api.md: rename from api.md

* Factorio: use resources data

* Factorio: more condensed raw_recipes creation
(by black-sliver)

* ror2: correctly mark Dio's as progression and mark equipment as useful

* HK: Bugfix shop requirements to be >= rather than >.

This was causing off-by-one errors, which were problematic if e.g. a Grubfather slot wanted all 46 grubs.

* Server: minify cmd json

This saves between 7 and 15% where compression is unavailable.

* SA2B v1.1.0 (#673)



Co-authored-by: RaspberrySpaceJam <[email protected]>

* FF1 - classify some items as useful (#669)

* Clients: fix clients not requesting Archipelago DataPackage updates unless spectator is present.

* Clients: fix /received calling a dict instead of indexing (#688)

* remove limit of 1000 Yotta-Joule in EnergyLink (#689)

* SC2: Updated apsc2 version required (#691)

* core: add a link to FAQ to the repo readme

* Add stone theme to WebHost (#645)

* Add stone theme

* Fix h2 color, change rogue-legacy to stone theme (approved by Phar)

* Add stone theme preview to world api.md

* Different stone theme preview to match other images

* CI: update enemizer and sni (#696)

* UX: More errors (#697)

* SNIClient: adjuster, ignore missing Tk

* UI: add support for gtk/kde messagebox

* SNIClient: show error when patching fails

* Small Witness fixes (#698)

* TS: Fix broken link to german setup guide (#700)

The German tutorial link pointed to the English version

* Alttp: fix broken msu es link (#702)

* SC2: add Linux setup to tutorial (#679)

also fixes some formatting

* Rename author to authors for consistency

* [HK] Further updates for White Palace logic,  (#662)

* SM64: Add common mistake and troubleshooting to setup guide (#708)

* MC: fix broken brewing image on minecraft tracker (#707)

* makes easier to find where to put the launch options for steam version v6 (#712)

* Update setup_en.md

* Update setup_en.md

* Update setup_en.md

* Update setup_en.md

* typo fix spaces clarification

Co-authored-by: Zach Parks <[email protected]>

* Grammar corrections, clarifications, removed redundant explanations

* Markdown syntax fix

Co-authored-by: Zach Parks <[email protected]>
Co-authored-by: Chris Wilson <[email protected]>

* docs: add reference to text client and commands to a few setup guides (#694)

* Updates to ALTTP, SM, and SMZ3 guides (#703)

* Changes: (#639)

* Changes:

* When client loses connection to the server through no fault of your own, it no longer forgets your username.
* It is now possible to do /connect archipelago://username:password@server:port or to paste archipelago://username:password@server:port into the connect bar and hit connect, and have both the username/password filled in that way.

* Switch checksfinder client to getting username from url if suppplied by url.

* Correct the print statement

* SM64: DDD 100 Coins in Entrance Rando should expect sub removal (#711)

I brought this up in #super-mario-64, and the minor consensus is that 100 Coins is "possible", the same way Red Coins is possible.

According to a FAQ online, DDD has 106 coins. That means you are still required to get at least 5 of the red coins in order to get the 100 coin star. If we already have a rule stating the Red Coins require the sub to be removed (by reaching Bowser in the Fire Sea), it should apply to the 100 coins as well.

The consensus on it being "possible" was that it requires a very specific triple jump. There is no "Strict" category for this since it isn't caps/cannons-based, but it is extremely unreasonable to casual play. If you want to sequence break it, go for it, but I don't think it should be expected.

* multiserver: allow `!release` as an alias for `!forfeit` (#693)

* 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 <[email protected]>

* HK: Add options for Deathlink. (#672)

* ror2: update setup guide (#671)

* ror2: remove yaml template from guide and link to player settings page. Add documentation on chat client

* ror2: copy paste the good config description like everyone else.

* docs: add common terms documentation to website (#680)

* docs: add common terms documentation to website

* minor cleanup

* some rewording and reformatting.

* tighten up world definition clarity

Co-authored-by: Rome Reginelli <[email protected]>

* Clarify seed definition a bit better

Co-authored-by: Rome Reginelli <[email protected]>

* add text for "out of logic" and that slot names must be unique

* rename common terms to glossary

Co-authored-by: Rome Reginelli <[email protected]>

* sm64: only apply DDD 100 coin star rule if the location exists (#716)

* MC: add non-windows install to docs (#713)

* MC: add non-windows install to docs

* MC: better link naming for non-windows doc

Co-authored-by: Hussein Farran <[email protected]>

* MC: doc change manual forge link to index

By removing the direct link to the version we avoid having to update it all the time and users will have to check the other version numbers for manual installation anyway.

Co-authored-by: Hussein Farran <[email protected]>

* Revert SC2 item classifications

* fix glossary link on sitemap

* LttP: now that Enemizer allows for AP rom name, rename it. (#730)

* LttP: now that Enemizer allows for AP rom name, rename it.

* LttP: fix missing Enemizer message parenthesis

* CI: update Enemizer to 7.0.1

* Factorio: Fix impossible seeds for rocket-part recipes as well. (#733)

* SNES games: use JPN as abbreviation for Japan/Japanese

* [The Witness] Update data_version as it was forgotten for 0.3.3

# Conflicts:
#	worlds/witness/docs/setup_en.md

* BaseClasses: make ItemClassification properties faster

* Generate: convert plando settings to an IntFlag with error reporting for unknown plando names (#735)

* [Timespinner] Rename flag and add tiered loot settings (#699)

* Hollow Knight June 2022 Updates (#720)

This is a combined PR for assorted Hollow Knight updates for June 2022 that have cleared testing. It supersedes any HK-exclusive PRs open by myself or @Alchav unless stated otherwise.

Summary of changes below:

 * Implement Split Claw, Split Cloak, Split Superdash, Randomize Nail, Randomize Focus, Randomize Swim and Elevator 
 * Pass options (@Alchav)
 * Add support for Deathlink with three different modes (@dewiniaid)
 * Add customizable additional shop slots per-shop (@Alchav) and overall (@dewiniaid)
 * Overhaul shop cost output to be more generic and account for all locations with standard costs (such as Stag Stations, Cornifer, and Divine) (@dewiniaid)
 * Add "CostSanity", allowing random prices using any cost type to be chosen for any location with a cost. (e.g. a Stag station requiring 15 grubs to obtain an item)
 * Item classification fixes (Map and Journal items are fillter, Mask Shards/Pale Ore/Vessel Fragments are useful) (@Alchav)
 * Fix Ijii -> Jiji (@Alchav )
 * General code quality updates

The above changes are only for the HK world.

* Break out of fill loop if locations is empty (#690)

* docs: fix 2 URLs (#738)

* URL of image in Alttp ES tutorial
* Link to RA download in SMZ3 EN tutorial

* Update Raft for Final Chapter (#724)

* RL: Rename Rogue Legacy Folder  (#452)

* rename rogue legacy
"`rogue-legacy` is not a valid python module name"

* revert rename of the documentation file

* Dev Docs: Add SA2B and SC2 to network diagram (#719)

* Add SA2B and SC2 to network diagram

* Remove jpg version of image.

* Fix png of image... Github web editor borked it

* Update network diagram.svg

* We're back to light mode, friends.

Use SVG and JPG that are valid and let you zoom in properly.

* WebHost: fix comment typo

* Subnautica: fix generation crash on valuable item pool (#739)

* WebHost: Advanced guide cleanup (#725)

* advanced yaml cleanup

* Update advanced_settings_en.md

* i hate this game now

* formatting reverting

* LttP: fix shop inventory corruption in upgrade fairy

* Subnautica: display item_pool as Item Pool on the settings page

* Factorio: fix accidental removal of fluids from make_balanced_recipe (#754)

* Allow potentially all rocket-part ingredients to be fluids. (#753)

* Doc: Add english mac guide (running from source) (#744)

* Create RunFromSourceGuideForMac.md

* Update and rename RunFromSourceGuideForMac.md to docs/RunFromSourceGuideForMac.md

* Clarified the source code download.

* Rename docs/RunFromSourceGuideForMac.md to worlds/generic/docs/RunFromSourceGuideForMac.md

* Update __init__.py

* Noted the case where a user might want EnemizerCLI

* Updated document to reflect requested changes

Updated to reflect the requested changes as well as including some information on virtual environments.

* Added Capital Letters to SNIClient.py

* Reworked Document Structure

Numeric order of lists now makes sense and changed the virtual environment section to match Archipelago tradition.

* Update __init__.py

* Minor Changes for clarity's sake

* Renamed file to make webhost happy

* Changed mac guide filename

* Requirements: update some modules

* gitignore general Windows/macOS files (#763)

* Sm comeback too strict (#755)

* lttp: move open pyramid to new options system (#762)

* Core: skip second sanity check when pushing an item into a location (-O) (#745)

* SC2: Windows ".dll missing" fix and fix for finding SC2 install automatically (#721)

* sm64ex: Allow setting Big Star Door requirements (#773)

* sm64ex: Allow setting Big Star Door requirements

* sm64ex: Lower requirements for StarsToFinish

* SNIClient: update default SNI port from 8080 to 23074

* MultiServer: add /status and allow status command to dynamically filter for Tags

* Put common options first (#774)

* this applies to yaml and webhost
* this allows overwriting common options from the world

* Subnautica: updates (#759)

* Subnautica: add more goals

* Subnautica: fix wrongly positioned Databox

* Subnautica: allow techs to remain vanilla

* Subnautica: make zipimport compatible

* Subnautica: force two Seaglide fragments into local sphere 1

* SoE: texts, energy core, fragments, useful (#777)

* fix missing fields in custom prog balancing option
* fix typos and pep8
* update and implement pyevermizer 0.41.3
  * allow randomizing energy core
  * add energy core fragments (turn in at Prof. Ruffleberg)
  * rename some items to avoid confusion
  * differentiate between progression and useful
* remove obsolete 'Bazooka' group
* don't add items to the pool that get removed

* sm64ex: Adapt area_connections slotdata Format (#767)

* Ror2: reduce locations to 250 and mark legendary items as useful (#776)

* reduce total locations to 250

* minor styling cleanup. mark legendary items as useful

* 😡

Co-authored-by: black-sliver <[email protected]>

Co-authored-by: black-sliver <[email protected]>

* RoR2: FinalStageDeath (#766)

Added a YAML option for 'FinalStageDeath', a toggle for 'death on the final boss stage counts as a win'. Defaults to on.

Co-authored-by: Vale <[email protected]>

* Improve Risk of Rain 2 docs (#770)

* Improve Risk of Rain 2 docs

* RoR2: clarify custom item weight settings

* Update worlds/ror2/docs/en_Risk of Rain 2.md

Co-authored-by: Hussein Farran <[email protected]>

* doc: add style guide (#746)

* doc: add style guide

* doc: style guide for python and markdown

* doc: consistent use of periods and explicit double quotes in style guide

Co-authored-by: Hussein Farran <[email protected]>

* doc: better define string style in style guide

* doc: add format string literals to style guide

* doc: add HTML, CSS and JS to style guide

Co-authored-by: Hussein Farran <[email protected]>

* Factorio: specify rcon version

* MultiServer: make !hint prefer non-local

* Rogue Legacy: obliterate any outdated remnants before installer adds new files

* WebHost: cleanup generate and hopefully fix SQL concurrency problems

* SMZ3: Item link support (#756)

* first working (most of the time) progression generation for SM using VariaRandomizer's rules, items, locations and accessPoint (as regions)

* first working single-world randomized SM rom patches

* - SM now displays message when getting an item outside for someone else (fills ROM item table)

This is dependant on modifications done to sm_randomizer_rom project

* First working MultiWorld SM

* some missing things:

- player name inject in ROM and get in client
- end game get from ROM in client
- send self item to server
- add player names table in ROM

* replaced CollectionState inheritance from SMBoolManager with a composition of an array of it (required to generation more than one SM world, which is still fails but is better)

* - reenabled balancing

* post rebase fixes

* updated SmClient.py

* + added VariaRandomizer LICENSE

* + added sm_randomizer_rom project (which builds sm.ips)

* Moved VariaRandomizer and sm_randomizer_rom projects inside worlds/sm and done some cleaning

* properly revert change made to CollectionState and more cleaning

* Fixed multiworld support patch not working with VariaRandomizer's

* missing file commit

* Fixed syntax error in unused code to satisfy Linter

* Revert "Fixed multiworld support patch not working with VariaRandomizer's"

This reverts commit fb3ca18528bb331995e3d3051648c8f84d04c08b.

* many fixes and improovement

- fixed seeded generation
- fixed broken logic when more than one SM world
- added missing rules for inter-area transitions
- added basic patch presence for logic
- added DoorManager init call to reflect present patches for logic
- moved CollectionState addition out of BaseClasses into SM world
- added condition to apply progitempool presorting only if SM world is present
- set Bosses item id to None to prevent them going into multidata
- now use get_game_players

* first working (most of the time) progression generation for SM using VariaRandomizer's rules, items, locations and accessPoint (as regions)

* first working single-world randomized SM rom patches

* - SM now displays message when getting an item outside for someone else (fills ROM item table)

This is dependant on modifications done to sm_randomizer_rom project

* First working MultiWorld SM

* some missing things:

- player name inject in ROM and get in client
- end game get from ROM in client
- send self item to server
- add player names table in ROM

* replaced CollectionState inheritance from SMBoolManager with a composition of an array of it (required to generation more than one SM world, which is still fails but is better)

* - reenabled balancing

* post rebase fixes

* updated SmClient.py

* + added VariaRandomizer LICENSE

* + added sm_randomizer_rom project (which builds sm.ips)

* Moved VariaRandomizer and sm_randomizer_rom projects inside worlds/sm and done some cleaning

* properly revert change made to CollectionState and more cleaning

* Fixed multiworld support patch not working with VariaRandomizer's

* missing file commit

* Fixed syntax error in unused code to satisfy Linter

* Revert "Fixed multiworld support patch not working with VariaRandomizer's"

This reverts commit fb3ca18528bb331995e3d3051648c8f84d04c08b.

* many fixes and improovement

- fixed seeded generation
- fixed broken logic when more than one SM world
- added missing rules for inter-area transitions
- added basic patch presence for logic
- added DoorManager init call to reflect present patches for logic
- moved CollectionState addition out of BaseClasses into SM world
- added condition to apply progitempool presorting only if SM world is present
- set Bosses item id to None to prevent them going into multidata
- now use get_game_players

* Fixed multiworld support patch not working with VariaRandomizer's

Added stage_fill_hook to set morph first in progitempool
Added back VariaRandomizer's standard patches

* + added missing files from variaRandomizer project

* + added missing variaRandomizer files (custom sprites)

+ started integrating VariaRandomizer options (WIP)

* Some fixes for player and server name display

- fixed player name of 16 characters reading too far in SM client
- fixed 12 bytes SM player name limit (now 16)
- fixed server name not being displayed in SM when using server cheat ( now displays RECEIVED FROM ARCHIPELAGO)
- request: temporarly changed default seed names displayed in SM main menu to OWTCH

* Fixed Goal completion not triggering in smClient

* integrated VariaRandomizer's options into AP (WIP)

- startAP is working
- door rando is working
- skillset is working

* - fixed itemsounds.ips crash by always including nofanfare.ips into multiworld.ips (itemsounds is now always applied and "itemsounds" preset must always be "off")

* skillset are now instanced per player instead of being a singleton class

* RomPatches are now instanced per player instead of being a singleton class

* DoorManager is now instanced per player instead of being a singleton class

* - fixed the last bugs that prevented generation of >1 SM world

* fixed crash when no skillset preset is specified in randoPreset (default to "casual")

* maxDifficulty support and itemsounds removal

- added support for maxDifficulty
- removed itemsounds patch as its always applied from multiworld patch for now

* Fixed bad merge

* Post merge adaptation

* fixed player name length fix that got lost with the merge

* fixed generation with other game type than SM

* added default randoPreset json for SM in playerSettings.yaml

* fixed broken SM client following merge

* beautified json skillset presets

* Fixed ArchipelagoSmClient not building

* Fixed conflict between mutliworld patch and beam_doors_plms patch

- doorsColorsRando now working

* SM generation now outputs APBP

- Fixed paths for patches and presets when frozen

* added missing file and fixed multithreading issue

* temporarily set data_version = 0

* more work

- added support for AP starting items
- fixed client crash with gamemode being None
- patch.py "compatible_version" is now 3

* commited missing asm files

fixed start item reserve breaking game (was using bad write offset when patching)

* Nothing item are now handled game-side. the game will now skip displaying a message box for received Nothing item (but the client will still receive it).

fixed crash in SMClient when loosing connection to SNI

* fixed No Energy Item missing its ID

fixed Plando

* merge post fixes

* fixed start item Grapple, XRay and Reserve HUD, as well as graphic beams (except ice palette color)

* fixed freeze in blue brinstar caused by Varia's custom PLM not being filled with proper Multiworld PLM address (altLocsAddresses)

* fixed start item x-ray HUD display

* Fixed start items being sent by the server (is all handled in ROM)

Start items are now not removed from itempool anymore
Nothing Item is now local_items so no player will ever pickup Nothing. Doing so reduces contribution of this world to the Multiworld the more Nothing there is though.
Fixed crash (and possibly passing but broken) at generation where the static list of IPSPatches used by all SM worlds was being modified

* fixed settings that could be applied to any SM players

* fixed auth to server only using player name (now does as ALTTP to authenticate)

* - fixed End Credits broken text

* added non SM item name display

* added all supported SM options in playerSettings.yaml

* fixed locations needing a list of parent regions (now generate a region for each location with one-way exits to each (previously) parent region

did some cleaning (mainly reverts on unnecessary core classes

* minor setting fixes and tweaks

- merged Area and lightArea settings
- made missileQty, superQty and powerBombQty use value from 10 to 90 and divide value by float(10) when generating
- fixed inverted layoutPatch setting

* added option start_inventory_removes_from_pool

fixed option names formatting
fixed lint errors
small code and repo cleanup

* Hopefully fixed ROR2 that could not send any items

* - fixed missing required change to ROR2

* fixed 0 hp when respawning without having ever saved (start items were not updating the save checksum)

* fixed typo with doors_colors_rando

* fixed checksum

* added custom sprites for off-world items (progression or not)

the original AP sprite was made with PierRoulette's SM Item Sprite Utility by ijwu

* - added missing change following upstream merge

- changed patch filename extension from apbp to apm3 so patch can be used with the new client

* added morph placement options: early means local and sphere 1

* fixed failing unit tests

* - fixed broken custom_preset options

* - big cleanup to remove unnecessary or unsupported features

* - more cleanup

* - moved sm_randomizer_rom and all always applied patches into an external project that outputs basepatch.ips

- small cleanup

* - added comment to refer to project for generating basepatch.ips (https://github.com/lordlou/SMBasepatch)

* fixed g4_skip patch that can be not applied if hud is enabled

* - fixed off world sprite that can have broken graphics (restricted to use only first 2 palette)

* - updated basepatch to reflect g4_skip removal

- moved more asm files to SMBasepatch project

* - tourian grey doors at baby metroid are now always flashing (allowing to go back if needed)

* fixed wrong path if using built as exe

* - cleaned exposed maxDifficulty options

- removed always enabled Knows

* Merged LttPClient and SMClient into SNIClient

* added varia_custom Preset Option that fetch a preset (read from a new varia_custom_preset Option) from varia's web service

* small doc precision

* - added death_link support

- fixed broken Goal Completion
- post merge fix

* - removed now useless presets

* - fixed bad internal mapping with maxDiff

- increases maxDiff if only Bosses is preventing beating the game

* - added support for lowercase custom preset sections (knows, settings and controller)

- fixed controller settings not applying to ROM

* - fixed death loop when dying with Door rando, bomb or speed booster as starting items

- varia's backup save should now be usable (automatically enabled when doing door rando)

* -added docstring for generated yaml

* fixed bad merge

* fixed broken infinity max difficulty

* commented debug prints

* adjusted credits to mark progression speed and difficulty as Non Available

* added support for more than 255 players (will print Archipelago for higher player number)

* fixed missing cleanup

* added support for 65535 different player names in ROM

* fixed generations failing when only bosses are unreachable

* - replaced setting maxDiff to infinity with a bool only affecting boss logics if only bosses are left to finish

* fixed failling generations when using 'fun' settings

Accessibility checks are forced to 'items' if restricted locations are used by VARIA following usage of 'fun' settings

* fixed debug logger

* removed unsupported "suits_restriction" option

* fixed generations failing when only bosses are unreachable (using a less intrusive approach for AP)

* - fixed deathlink emptying reserves

- added death_link_survive option that lets player survive when receiving a deathlink if the have non-empty reserves

* - merged death_link and death_link_survive options

* fixed death_link

* added a fallback default starting location instead of failing generation if an invalid one was chosen

* added Nothing and NoEnergy as hint blacklist

added missing NoEnergy as local items and removed it from progression

* - enabled local item dialog boxes for dungeon and keycard items when keysanity is used

* - fixed ItemLink support

* fixed shops sending checks

* Added get_filler_item_name() returning a random junk item

Co-authored-by: Fabian Dill <[email protected]>

* Subnautica: add creature scans

* LTTP: Yaml Update (#765)

removes vendor option from hints, adds scam setting, and adds P option to shop shuffle.

* OoT: Fix gerudo_fortress on normal (#784)

* Final Fantasy: fix outdated advancement flag

* The Witness 0.3.4 features (#780)

New options:

Shuffle Doors: Many doors in the game will open on their own upon receiving an item ("key").
Variant - Shuffle Door/Control Panels: Many panels in the game that open doors or control devices in the world will be off until receiving their respective item ("key").
Shuffle Lasers: Lasers no longer activate by solving the laser panel, instead you will get an item that activates the laser.
Shuffle Symbols: Now that there is something else to shuffle (doors / door panels), you can turn off Symbol Rando.
Shuffle Postgame (replaces "Shuffle Hard"): The randomizer will now determine by your settings which panels are in the "postgame" - Meaning they can only be accessed after you can complete your win condition anyway.

* SMZ3: Pedestal hint (#792)

* - fixed missing pedestal and tablets hint text for foreign items (was "Don't waste yout time!", is now "A small victory!")

- small precision to SMZ3 and SM docs about "What does another world's item look like in Super Metroid"

* WebHost: reduce server uptime (#794)

* WebHost: attempt to improve wording of server resume
* WebHost: reduce default room timeout to 2 hours


Co-authored-by: black-sliver <[email protected]>

* ChecksFinder: Linux support via wine (#795)

* ChecksFinder: Linux support via wine

* ChecksFinder: account for custom $WINEPREFIX

* ChecksFinder: wine detection

* DS3: Add the Dark Souls 3 World into Archipelago (#769)

* Factorio: update rcon lib

* Subnautica: add missed PDA

* Subnautica: Add DeathLink (#803)

* HK - Fix typos in option names

Fixed max charm and max geo cost display names.

* Add to the ArchipIDLE items list (#807)

* Add to the ArchipIDLE items list

* Update Items.py

* Update Items.py

* Donkey Kong Country 3 Implementation (#798)

* Baseline patching and logic for DKC3

* Client can send, but not yet receive

* Alpha Test Baseline

* Bug Fixes and Starting Lives Option

* Finish BBH, add world hints

* Add music shuffle

* Boomer Costs Text

* Stubbed in Collect behaviour

* Adjust Gyrocopter option

* Add Bonus Coin junk replacement and tracker support

* Delete bad logs

* Undo host.yaml change

* Refactored SNIClient

* Make Swanky Free

* Fix Typo

* Undo SNIClient run_game hack

* Fix Typo

* Remove Bosses from Level Shuffle

* Remove duplicate kivy Data

* Add DKC3 Docs and increment Data version

* Remove dead code

* Fix mislabeled region

* Add Dark Souls 3 to README

* Always force Cog on Rocket Rush Flag

* Fix Single Ski lock and too many DK Coins

* Update Retroarch version number

* Don't send DKC3 through LttP Adjuster

* Comment Location ROM Table

* Change ROM Hash prefix to D3

* Remove redundant constructor

* Add ROM Change Safeguards

* Properly mark WRAM accesses

* Remove outdated region connect

* Fix syntax error

* Fix Game description

* Fix SNES Bank Access

* Add isso_setup for DKC3

* Double Quote strings

* Escape single quotes I guess

* LttP: Fix scam options (#806)

* Sm beam door speedkeep fun accessibility (#785)

added speedkeep option
now forces accessibility to "minimal" instead of (to be deprecated) "item" when "fun" settings is used

* The Witness: Small changes in response to beta tests (#801)

* Option order and better tooltip

* Logic fix: Hedge Laser requires access to all Hedges

* Add item groups: Lasers, Symbols, Doors

* Update worlds/witness/items.py

Co-authored-by: black-sliver <[email protected]>

* Comment for clarity

* Logic fix

* Another logic fix

Co-authored-by: metzner <[email protected]>
Co-authored-by: black-sliver <[email protected]>

* OOT updates (#821)

* oot: remove all escape characters in LogicTricks.py

* only attempt to connect to client once

* oot: don't kill player outside ToT or in market entrance
fixed camera makes the game crash outside ToT. added market entrance to be safe, it doesn't matter if you don't die there

* sm64ex: Various Features (#790)

* sm64ex: Course and Secret Randomizer

* sm64ex: Allow higher star door costs, raise minimum amount of stars, deprecate ExtraStars

* sm64ex: Support setting MIPS costs

* sm64ex: Safeguard MIPS Costs

* DKC3 - Logic Softlock Fix (#817)

* Add two locations to Trade Sequence List

* Remove trace sequence locations from ROM data dict

* Subnautica: fix Multipurpose Room not acquirable in valuable item pool

BaseRoomFragment doesn't exist in vanilla, so when valuable item pool marked it as scannable in vanilla location it did not work, as it's technically BaseRoom
BaseRoom is also required to install other modules into, modules that are already marked as useful, so logically if it's required for other useful stuff it should also be marked as useful
By switching from Fragment to non-fragment one now needs 1 out of 2 instead of 2 out of 2 items, which I consider a plus as well.

* HK - focus location (#778)

* Update ds3 locations and items (#819)

* DS3: Add more rules to avoid softlocks, remove Path of the Dragon gesture location/item and remove useless comments

* DS3: Add more Hostile NPCs locations/items

* DS3: Add missing key items to the key items list

* Archipidle: Fix forgotten version increment when a new item was added

* SM: smoother co-op, basepatch internal improvements (#793)

* SM: remote touch instantly, pull ips refactor and symbols

* SM: remove hard-coded ROM address writes

* SM: Full length player table, incl. receive-only player ids

+ apply PR feedback (correct graphic offset, readable data file paths)

* WebHost: flask caching did a rename

* SC2 docs: Extensive reworks and rewordings. (#809)

* LttP: fix deprecated use of isSet() (#831)

* SNIClient: fix program not exiting if SNI does not exist nor is running

* WebHost: fix 30 days cutoff for stats (#826)

* DKC3: fix missing default options in Utils.py

* WebHost: games played per day plot per game on stats page (#827)

* WebHost: generate stats page palette for maximum hue difference between neighbours.

* WebHost: add per game played stats

* CI: update SNI to 0.0.82

* Smz3 no progression gt fix (#818)

* Witness: Fatal logic bug fix (#837)

* Renamed some event items

* Fatal logic bug: Door panels did not check their symbol items

* [Docs] Further explained the mythical `InvalidPacket` (#828)

* [Docs] Further explained the mythical `InvalidPacket`

* Fixed header category

* Update docs/network protocol.md

Co-authored-by: black-sliver <[email protected]>

* Update docs/network protocol.md

Co-authored-by: black-sliver <[email protected]>

* Apply suggestions from code review

Co-authored-by: Hussein Farran <[email protected]>

Co-authored-by: black-sliver <[email protected]>
Co-authored-by: Hussein Farran <[email protected]>

* Prevent Krematoa Crash (#832)

* Prevent Krematoa Crash, add crash robustness

* Remove print statements

* Don't remove ctx.rom if save file dies

* Consolidate logic for readability

* Doc: move Running from source from wiki to docs (#797)

* Doc: move "Running from source" from wiki to docs/

* Doc: update links and reformat running from source

* Doc: implement suggestions in "Running from source"

thanks @alwaysintreble

* Doc: update link to "Running from source"

also link docs/ folder

* Doc: Running from source: Apply suggestions from code review

Co-authored-by: KonoTyran <[email protected]>

Co-authored-by: KonoTyran <[email protected]>

* WebHost: make a deeply buried if tree for games a bit more automatic

* Migrate DKC3 to APDeltaPatch (#838)

* Add DKC3 to APDeltaPatch

* Undo unintended commit

* More undoing

* Remove else clause

* Sm broken start location fix (#841)

* - fixed basepatches application order breaking (at least) starting location

* Sm smz3 create item fix (#844)

* Core: have generation print plando settings as string instead of numbers (#843)

* have generation print plando settings as string instead of numbers

* Change to __str__

* Make to_string not a class method

* Suggested fix

Co-authored-by: black-sliver <[email protected]>

* Fix the fix

* Better quotes

Co-authored-by: black-sliver <[email protected]>

* WebHost: Add links to "Setup Guides" in Supported Games page (#847)

* WebHost: Add links to "Setup Guides" in Supported Games page

* Remove a hanging console.log() I left in

* Fixed a crafting category bug related to fluids. (#848)

* WebHost: update flask (#804)

* The Witness: Logic fix (unbeatable seed) (#850)

* Add an optional path to factorio server-settings.json (#851)

* Add an optional path to factorio server-settings.json

* factorio: changes

* use forward slashs in host.yaml going forward.  (works on all OSes.)
* comment out the host.yaml server_settings option.
* assume that server_settings is NOT provided and explicitly check for its existence in factorio_client.

* HK: Add bug report link (#824)


Co-authored-by: Hussein Farran <[email protected]>

* Core: patch stream_input to ignore non-parsable input (such as EOF encoded as 0xff) (#854)

* Subnautica: update docs with resume info (#853)



Co-authored-by: black-sliver <[email protected]>
Co-authored-by: strotlog <[email protected]>

* SMZ3: FixJunkFillGT making invalid placements

* SMZ3: Fix Swamp Palace Entrace for minimal accessibility

* Core: update version

* Stats: limit to recognized games

* Core: optimize away Item.world (#840)

* Core: optimize away Item.world

* Update test/general/TestFill.py

* Test: undo unnecessary changes

* lttp: remove two more Item.world writes

Co-authored-by: black-sliver <[email protected]>

* WebHost: fix filename rename in flask update

* move some docs out of readme and link with the headers

* PR template

* bug report template

* task and feature request templates

Co-authored-by: Fabian Dill <[email protected]>
Co-authored-by: CaitSith2 <[email protected]>
Co-authored-by: TheCondor07 <[email protected]>
Co-authored-by: Fabian Dill <[email protected]>
Co-authored-by: Zach Parks <[email protected]>
Co-authored-by: lordlou <[email protected]>
Co-authored-by: N00byKing <[email protected]>
Co-authored-by: espeon65536 <[email protected]>
Co-authored-by: TheCondor07 <[email protected]>
Co-authored-by: Chris Wilson <[email protected]>
Co-authored-by: Jarno Westhof <[email protected]>
Co-authored-by: Felix R <[email protected]>
Co-authored-by: black-sliver <[email protected]>
Co-authored-by: strotlog <[email protected]>
Co-authored-by: t3hf1gm3nt <[email protected]>
Co-authored-by: Kono Tyran <[email protected]>
Co-authored-by: Kippi00 <[email protected]>
Co-authored-by: Colin Lenzen <[email protected]>
Co-authored-by: Alchav <[email protected]>
Co-authored-by: Joethepic <[email protected]>
Co-authored-by: Hussein Farran <[email protected]>
Co-authored-by: Daniel Grace <[email protected]>
Co-authored-by: NewSoupVi <[email protected]>
Co-authored-by: PoryGone <[email protected]>
Co-authored-by: RaspberrySpaceJam <[email protected]>
Co-authored-by: Grrmo <[email protected]>
Co-authored-by: rsyh93 <[email protected]>
Co-authored-by: The T <[email protected]>
Co-authored-by: Rome Reginelli <[email protected]>
Co-authored-by: espeon65536 <[email protected]>
Co-authored-by: Sunny Bat <[email protected]>
Co-authored-by: Doug Hoskisson <[email protected]>
Co-authored-by: Bicoloursnake <[email protected]>
Co-authored-by: SoldierofOrder <[email protected]>
Co-authored-by: jsd1982 <[email protected]>
Co-authored-by: Vale <[email protected]>
Co-authored-by: Vale <[email protected]>
Co-authored-by: Ludovic Marechal <[email protected]>
Co-authored-by: Jolteon0163 <[email protected]>
Co-authored-by: metzner <[email protected]>
Co-authored-by: KonoTyran <[email protected]>
alwaysintreble added a commit to alwaysintreble/Archipelago that referenced this pull request Aug 6, 2022
* SC2: Launch game in fullscreen mode.

* Clients: now featuring tooltips and some general cleanup (#564)

* Clients: now featuring tooltips and some general cleanup

* Clients: fade in tooltip over 0.25 seconds

* Clients: reset slot and team when disconnecting

* Clients: allow joining multiworld via link (TextClient only for now)

* add tooltip for Plando Options on Generate page (#563)

* Network: remove "SlotAlreadyTaken" from docs and clients, as it was removed from the server in 0.2

* Sm various fixes (#518)

* v6,sm64ex: Use standard Death Link option name

* MC: Bee Trap is renamed and trap

* Clients: allow "&[]" in tooltips, as kivy-escaped characters and fix similar translate issues in copy-paste clipboard

* OoT: write double-ended shuffled entrances to spoiler log more clearly

* OoT: remove warning message during multidata manipulation

* OoT: trap display rework
Traps from all games now disguise themselves as OoT items
Traps all display "[Player] is a FOOL!" when picked up

* OoT: write data into autotracking context
useful for the client and autotrackers to gather data easily

* OoT: add version check to lua script + client

* OoT: lua script reads MQ dungeon address dynamically from autotracker context
finally I can stop updating this every version

* OoT: big poe count option returns

* OoT Client: deathlink toggle

* SC2: Option for random mission order (#569)

* WebHost: update waitress and bokeh (#575)

* WebHost: undo autoconnect link as not all browsers behave like Vivaldi. (#577)

* WebHost: undo autoconnect link as not all browsers behave like Vivaldi.

* Increase tooltip z-index

Co-authored-by: Chris Wilson <[email protected]>

* SC2: fix copy pasta in client

* Setup: "ParseVersion" gives Deprecated Warning, fixing the warning.

* MC: fix Bee Trap name

* SC2: Updated webhost details page

* [Timespinner] Removed backwarp from refugee camp to library from logic

* SC2: Fixed issue in random mission order with some missions being available too early

* Meritous: Minor logic change (#584)

* LttP: convert vendors hint into separate scams option

* AppImage: fix build (#589)

* CI: build: use ARCH= for AppImage

* WebHost: pin flask-caching

until https://github.com/pallets-eco/flask-caching/pull/352 is merged or fixed otherwise

* WebHost: use non-blocking file lock on unix, just like windows

* SC2: GUI Mission Launcher (#586)

* SC2: Functioning Starcraft 2 Mission Launcher UI

* AutoWorld: add .__file__ attribute to AutoWorlds
This tries to help with a recurring easy to make mistake, where ./worlds/myworld does not exist in frozen form and is instead ./lib/worlds/myworld

* SC2: get .kv file path correctly when frozen too

Co-authored-by: TheCondor07 <[email protected]>
Co-authored-by: Fabian Dill <[email protected]>

* Sm remote item fix (#592)

* Doc: deprecate datapackage_version

* Server: remove compat to ~0.2 unversioned save data
If the savegame was loaded in the last few months, it will have already been upgraded.

* Tests: add test to check for typo'd item name group definitions (#594)

* 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

* WebHost: update flask-caching

* Tracker: fix ItemLinks items not being attributed to inventory

* LttP: split Retro into Retro Bows and Retro Caves (#588)

* SNIClient: run adjuster for new aplttp file type

* config: Use valid default enemizer_path on Linux (and Windows)

* TS: Add region names to location names, and other location name clarifications (#570)

* Add region names to location names, and other location name clarification changes

* kvui: fix warning about "X missing in __all__" when importing from kivy.base instead of correct module

* SC2: UI update, Relegate No Build Option, and Filler Item Update (#606)

* update minecraft_en.md wording slightly and minecraft version

* AppImage: better compatibility

* old startup script did not work with dash
* add missing libcrypt in cx_freeze

* UI: add Utils.messagebox

automatically uses either new kvui.MessageBox or tkinter.messagebox

* Core: move is_linux, _macos, _windows to Utils.py

* Ui: add open_filename helper

* native look & feel on Linux (Gnome and KDE)
* falls back to tkinter

* requirements: update cx-Freeze, fix compatibility

this conflicts with and replaces commit #f9b12b51080c7bbbf3d52c79453ac6c8222a03c5

* Appimage: include libssl (#613)

* Clients: UX improvements (#615)

* Clients: some improvements (#602)

* Clients: some improvements
SNIClient is the only client that uses slow_mode, so its definition should be moved there.
type info for CommandProcessor was int for some reason.
Moved a lot of type info from init to class body, making it easier for type checkers to find.
getLogger("") and getLogger(None) is technically different, just happens that our root logger is "", fixed it in case of future confusion though.

* Logging: log that init_logging was run and what the current AP version is.

* WebHost: some updates (#603)

* 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

* Generate: sort input files, preventing arbitrary order from OS layer.

* Update LICENSE files for WebHost assets (#616)

* Document multi-game YAMLs (#619)

* SC2: send ItemLink messages to ingame as well

* HK: allow shuffling charm costs, instead of randomizing. (#441)

* SNIClient: sort devices for consistent key
SNIClient: get rid of * import

* WebHost: request maximum amount of file handles from the system for autolauncher. (#625)

* WebHost: request maximum amount of file handles from the system for autolauncher.

* WebHostLib: wrap resource import into try to restore windows compatibility

* ALTTP: Updates to setup documents (#628)



Co-authored-by: alwaysintreble <[email protected]>

* OOT: Add note about common issue with lua option in the configuration step (#629)

* OOT: Add note about common issue with lua option in the configuration step

More and more people have issues with connecting with OoT because fresh installs of newer versions of Bizhawk show having "Lua+LuaInterface" selected when it actually loads "Nlua+KopiLua" instead until you toggle between the two options. Hopefully adding this bolded note will help new users avoid this problem in the future.

* [Timespinner] Add Boss Randomization Settings (#598)

* [Timespinner] Add Boss Randomization Settings

* Fix Room log

* Fix LTTP filler items (#621)

* Tutorials: hide ArchipIDLE (#622)

* Don't copy files of hidden worlds

* tutorials: hardcode not generating ArchipIDLE tutorial files outside april

* tutorials: ignore hidden worlds unless it's 'Archipelago'

* add parenthesis to prevent ambiguity

* Fix the possibility of manually assigning 'random' via alias_random

* Minecraft 1.19 (#623)

* WebHost: Allow "random" to be default option for toggles and choices. (#640)

* Itemlink tutorial improvement (#611)

* Update Items.py

* Update advanced_settings_en.md

* Update Items.py

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* improve consistency

Co-authored-by: alwaysintreble <[email protected]>

* fix formating on game setting in example

Co-authored-by: alwaysintreble <[email protected]>

* change version

Co-authored-by: alwaysintreble <[email protected]>

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* tutorials: add description for game weight and properly document item links

* tutorials: add description for null replacement

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: alwaysintreble <[email protected]>

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: Hussein Farran <[email protected]>

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: Hussein Farran <[email protected]>

* Update worlds/generic/docs/advanced_settings_en.md

Co-authored-by: Hussein Farran <[email protected]>

Co-authored-by: alwaysintreble <[email protected]>
Co-authored-by: Hussein Farran <[email protected]>

* Options: introduce SpecialRange (#630)

* Options: introduce SpecialRange

* Include SpecialRange data in player-settings and weighted-settings JSON files

* Add support for SpecialRange to player-settings pages

* Add support for SpecialRange options to weighted-settings. Also fixed a bug which would cause the page to crash if an unknown setting was detected.

Co-authored-by: Chris Wilson <[email protected]>

* SNIClient: prevent hang on exit if waiting on devices from SNI

* WebHost: update Flask-Limiter

* Hollow Knight updates (goals, WP/POP, etc.) (#438)

* Hollow Knight updates:

- Add configurable goals (Any, THK, Siblings, Radiance)
  - Change base logic to require Opened_Black_Egg_Temple instead of
    requiring 3 dreamers.  This is future-proof for transition rando,
    where Black Egg might not have been located yet.
  - Add combat logic for THK and Radiance on par with Rando4's boss logic,
    so itemless HK shouldn't be required.
- Existing completion logic now uses Black_Egg_te

- Add White Palace options
  (Exclude, King Fragment Only, No Path of Pain, Include)
  - Excluded WP may still be required for King Fragment if Charms are
    not randomized
  - Simply don't place WP locations that are excluded
  - Distinguish between POP locations (required for POP), WP checks (
    actual item locations), WP transitions (relevant for future transition
    rando), and WP events (logically required to reach King Fragment)
  - Many transitions were listed twice.  Remove duplicates.
  - Sort transitions by scene

- For randomizable locations that have no logical significance when not
    randomized, simply skip adding them to the pool entirely for
    theoretically faster generation.

* Hollow Knight updates

  - Support random starting geo up to 1000 geo.
  - Always include locations rather than dropping unrandomized "logicless"
    ones, as it is required to best support same-slot coop.

* ChecksFinder Client refactored to import CommonClient components.

* Options: fix all games templates breaking due to invalid progression balancing

* fix spaces in folder names failing to launch forge.

* Tracker: fix order received column being empty

* Generate: ignore files starting with ., something about Macs having a .DS_STORE or something. (#656)

* Generate: ignore files starting with ., something about Macs having a .DS_STORE or something.

* Generate: .name is important

* Meritous get_filler_item_name

* The Witness - 0.3.3 features and fixes (#617)

New option: "Early Secret Area" (Opens a door to the Challenge Area from the start of the game)
New option: Victory Conditions "Mountaintop Box Short" and "Mountaintop Box Long"
New options: Number of Lasers of Mountain, Number of Lasers for Challenge
New option & item: Add some number of "Puzzle Skips", which let you skip one puzzle in the game

Many logic fixes

* MultiServer: introduce LocationScouts create_as_hint -> only_new

* CommonClient: revamp DataPackage handling

* Tests: always display all warnings
WebHost: fix a warning about new cache names

* Core: move multiple Item properties into a single Flag (#638)

* LttP: fix Ganon's Tower trash prefill ignoring item_rules (#648)

* kivy: include in frozen library zip

* HK: extractor now needs to check for BOM

* Network remove roominfo players (#661)

* LttP: update manual yaml

* Core: increment version

* Core: fix ItemLinks setting advancement flag

* Core: downgrade item classification to int before writing to file

* setup.py: fix setuptools>=61 compatibility

Closes ArchipelagoMW/Archipelago#391

* Factorio: fix impossible recipes requiring stacking non-stacking items
Factorio: speedup load time

* Launcher: always use kvui

* Sort hints by found/not found and then other world/own world. (#642)

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)

* MC client: use user_path to fix appimage permissions

* Factorio: load fluids from exported data

* Factorio: manual crude-oil recipe seems no longer needed and actually messed with costs

* lttp: update requirement version for lttp template yaml

* MinecraftClient: Linux fixes (#668)

* MC: open file selector if client is run without apmc

* MC: linux fixes

* we don't use shell anymore
* use user_path for forge_dir. Unless read-only, this is the same as what cwd is set to.

* SoE: change default prog balancing to 30

* api.md update and rename (#676)

* api.md: update for ItemClassification

* world api.md: rename from api.md

* Factorio: use resources data

* Factorio: more condensed raw_recipes creation
(by black-sliver)

* ror2: correctly mark Dio's as progression and mark equipment as useful

* HK: Bugfix shop requirements to be >= rather than >.

This was causing off-by-one errors, which were problematic if e.g. a Grubfather slot wanted all 46 grubs.

* Server: minify cmd json

This saves between 7 and 15% where compression is unavailable.

* SA2B v1.1.0 (#673)



Co-authored-by: RaspberrySpaceJam <[email protected]>

* FF1 - classify some items as useful (#669)

* Clients: fix clients not requesting Archipelago DataPackage updates unless spectator is present.

* Clients: fix /received calling a dict instead of indexing (#688)

* remove limit of 1000 Yotta-Joule in EnergyLink (#689)

* SC2: Updated apsc2 version required (#691)

* core: add a link to FAQ to the repo readme

* Add stone theme to WebHost (#645)

* Add stone theme

* Fix h2 color, change rogue-legacy to stone theme (approved by Phar)

* Add stone theme preview to world api.md

* Different stone theme preview to match other images

* CI: update enemizer and sni (#696)

* UX: More errors (#697)

* SNIClient: adjuster, ignore missing Tk

* UI: add support for gtk/kde messagebox

* SNIClient: show error when patching fails

* Small Witness fixes (#698)

* TS: Fix broken link to german setup guide (#700)

The German tutorial link pointed to the English version

* Alttp: fix broken msu es link (#702)

* SC2: add Linux setup to tutorial (#679)

also fixes some formatting

* Rename author to authors for consistency

* [HK] Further updates for White Palace logic,  (#662)

* SM64: Add common mistake and troubleshooting to setup guide (#708)

* MC: fix broken brewing image on minecraft tracker (#707)

* makes easier to find where to put the launch options for steam version v6 (#712)

* Update setup_en.md

* Update setup_en.md

* Update setup_en.md

* Update setup_en.md

* typo fix spaces clarification

Co-authored-by: Zach Parks <[email protected]>

* Grammar corrections, clarifications, removed redundant explanations

* Markdown syntax fix

Co-authored-by: Zach Parks <[email protected]>
Co-authored-by: Chris Wilson <[email protected]>

* docs: add reference to text client and commands to a few setup guides (#694)

* Updates to ALTTP, SM, and SMZ3 guides (#703)

* Changes: (#639)

* Changes:

* When client loses connection to the server through no fault of your own, it no longer forgets your username.
* It is now possible to do /connect archipelago://username:password@server:port or to paste archipelago://username:password@server:port into the connect bar and hit connect, and have both the username/password filled in that way.

* Switch checksfinder client to getting username from url if suppplied by url.

* Correct the print statement

* SM64: DDD 100 Coins in Entrance Rando should expect sub removal (#711)

I brought this up in #super-mario-64, and the minor consensus is that 100 Coins is "possible", the same way Red Coins is possible.

According to a FAQ online, DDD has 106 coins. That means you are still required to get at least 5 of the red coins in order to get the 100 coin star. If we already have a rule stating the Red Coins require the sub to be removed (by reaching Bowser in the Fire Sea), it should apply to the 100 coins as well.

The consensus on it being "possible" was that it requires a very specific triple jump. There is no "Strict" category for this since it isn't caps/cannons-based, but it is extremely unreasonable to casual play. If you want to sequence break it, go for it, but I don't think it should be expected.

* multiserver: allow `!release` as an alias for `!forfeit` (#693)

* 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 <[email protected]>

* HK: Add options for Deathlink. (#672)

* ror2: update setup guide (#671)

* ror2: remove yaml template from guide and link to player settings page. Add documentation on chat client

* ror2: copy paste the good config description like everyone else.

* docs: add common terms documentation to website (#680)

* docs: add common terms documentation to website

* minor cleanup

* some rewording and reformatting.

* tighten up world definition clarity

Co-authored-by: Rome Reginelli <[email protected]>

* Clarify seed definition a bit better

Co-authored-by: Rome Reginelli <[email protected]>

* add text for "out of logic" and that slot names must be unique

* rename common terms to glossary

Co-authored-by: Rome Reginelli <[email protected]>

* sm64: only apply DDD 100 coin star rule if the location exists (#716)

* MC: add non-windows install to docs (#713)

* MC: add non-windows install to docs

* MC: better link naming for non-windows doc

Co-authored-by: Hussein Farran <[email protected]>

* MC: doc change manual forge link to index

By removing the direct link to the version we avoid having to update it all the time and users will have to check the other version numbers for manual installation anyway.

Co-authored-by: Hussein Farran <[email protected]>

* Revert SC2 item classifications

* fix glossary link on sitemap

* LttP: now that Enemizer allows for AP rom name, rename it. (#730)

* LttP: now that Enemizer allows for AP rom name, rename it.

* LttP: fix missing Enemizer message parenthesis

* CI: update Enemizer to 7.0.1

* Factorio: Fix impossible seeds for rocket-part recipes as well. (#733)

* SNES games: use JPN as abbreviation for Japan/Japanese

* [The Witness] Update data_version as it was forgotten for 0.3.3

# Conflicts:
#	worlds/witness/docs/setup_en.md

* BaseClasses: make ItemClassification properties faster

* Generate: convert plando settings to an IntFlag with error reporting for unknown plando names (#735)

* [Timespinner] Rename flag and add tiered loot settings (#699)

* Hollow Knight June 2022 Updates (#720)

This is a combined PR for assorted Hollow Knight updates for June 2022 that have cleared testing. It supersedes any HK-exclusive PRs open by myself or @Alchav unless stated otherwise.

Summary of changes below:

 * Implement Split Claw, Split Cloak, Split Superdash, Randomize Nail, Randomize Focus, Randomize Swim and Elevator 
 * Pass options (@Alchav)
 * Add support for Deathlink with three different modes (@dewiniaid)
 * Add customizable additional shop slots per-shop (@Alchav) and overall (@dewiniaid)
 * Overhaul shop cost output to be more generic and account for all locations with standard costs (such as Stag Stations, Cornifer, and Divine) (@dewiniaid)
 * Add "CostSanity", allowing random prices using any cost type to be chosen for any location with a cost. (e.g. a Stag station requiring 15 grubs to obtain an item)
 * Item classification fixes (Map and Journal items are fillter, Mask Shards/Pale Ore/Vessel Fragments are useful) (@Alchav)
 * Fix Ijii -> Jiji (@Alchav )
 * General code quality updates

The above changes are only for the HK world.

* Break out of fill loop if locations is empty (#690)

* docs: fix 2 URLs (#738)

* URL of image in Alttp ES tutorial
* Link to RA download in SMZ3 EN tutorial

* Update Raft for Final Chapter (#724)

* RL: Rename Rogue Legacy Folder  (#452)

* rename rogue legacy
"`rogue-legacy` is not a valid python module name"

* revert rename of the documentation file

* Dev Docs: Add SA2B and SC2 to network diagram (#719)

* Add SA2B and SC2 to network diagram

* Remove jpg version of image.

* Fix png of image... Github web editor borked it

* Update network diagram.svg

* We're back to light mode, friends.

Use SVG and JPG that are valid and let you zoom in properly.

* WebHost: fix comment typo

* Subnautica: fix generation crash on valuable item pool (#739)

* WebHost: Advanced guide cleanup (#725)

* advanced yaml cleanup

* Update advanced_settings_en.md

* i hate this game now

* formatting reverting

* LttP: fix shop inventory corruption in upgrade fairy

* Subnautica: display item_pool as Item Pool on the settings page

* Factorio: fix accidental removal of fluids from make_balanced_recipe (#754)

* Allow potentially all rocket-part ingredients to be fluids. (#753)

* Doc: Add english mac guide (running from source) (#744)

* Create RunFromSourceGuideForMac.md

* Update and rename RunFromSourceGuideForMac.md to docs/RunFromSourceGuideForMac.md

* Clarified the source code download.

* Rename docs/RunFromSourceGuideForMac.md to worlds/generic/docs/RunFromSourceGuideForMac.md

* Update __init__.py

* Noted the case where a user might want EnemizerCLI

* Updated document to reflect requested changes

Updated to reflect the requested changes as well as including some information on virtual environments.

* Added Capital Letters to SNIClient.py

* Reworked Document Structure

Numeric order of lists now makes sense and changed the virtual environment section to match Archipelago tradition.

* Update __init__.py

* Minor Changes for clarity's sake

* Renamed file to make webhost happy

* Changed mac guide filename

* Requirements: update some modules

* gitignore general Windows/macOS files (#763)

* Sm comeback too strict (#755)

* lttp: move open pyramid to new options system (#762)

* Core: skip second sanity check when pushing an item into a location (-O) (#745)

* SC2: Windows ".dll missing" fix and fix for finding SC2 install automatically (#721)

* sm64ex: Allow setting Big Star Door requirements (#773)

* sm64ex: Allow setting Big Star Door requirements

* sm64ex: Lower requirements for StarsToFinish

* SNIClient: update default SNI port from 8080 to 23074

* MultiServer: add /status and allow status command to dynamically filter for Tags

* Put common options first (#774)

* this applies to yaml and webhost
* this allows overwriting common options from the world

* Subnautica: updates (#759)

* Subnautica: add more goals

* Subnautica: fix wrongly positioned Databox

* Subnautica: allow techs to remain vanilla

* Subnautica: make zipimport compatible

* Subnautica: force two Seaglide fragments into local sphere 1

* SoE: texts, energy core, fragments, useful (#777)

* fix missing fields in custom prog balancing option
* fix typos and pep8
* update and implement pyevermizer 0.41.3
  * allow randomizing energy core
  * add energy core fragments (turn in at Prof. Ruffleberg)
  * rename some items to avoid confusion
  * differentiate between progression and useful
* remove obsolete 'Bazooka' group
* don't add items to the pool that get removed

* sm64ex: Adapt area_connections slotdata Format (#767)

* Ror2: reduce locations to 250 and mark legendary items as useful (#776)

* reduce total locations to 250

* minor styling cleanup. mark legendary items as useful

* 😡

Co-authored-by: black-sliver <[email protected]>

Co-authored-by: black-sliver <[email protected]>

* RoR2: FinalStageDeath (#766)

Added a YAML option for 'FinalStageDeath', a toggle for 'death on the final boss stage counts as a win'. Defaults to on.

Co-authored-by: Vale <[email protected]>

* Improve Risk of Rain 2 docs (#770)

* Improve Risk of Rain 2 docs

* RoR2: clarify custom item weight settings

* Update worlds/ror2/docs/en_Risk of Rain 2.md

Co-authored-by: Hussein Farran <[email protected]>

* doc: add style guide (#746)

* doc: add style guide

* doc: style guide for python and markdown

* doc: consistent use of periods and explicit double quotes in style guide

Co-authored-by: Hussein Farran <[email protected]>

* doc: better define string style in style guide

* doc: add format string literals to style guide

* doc: add HTML, CSS and JS to style guide

Co-authored-by: Hussein Farran <[email protected]>

* Factorio: specify rcon version

* MultiServer: make !hint prefer non-local

* Rogue Legacy: obliterate any outdated remnants before installer adds new files

* WebHost: cleanup generate and hopefully fix SQL concurrency problems

* SMZ3: Item link support (#756)

* first working (most of the time) progression generation for SM using VariaRandomizer's rules, items, locations and accessPoint (as regions)

* first working single-world randomized SM rom patches

* - SM now displays message when getting an item outside for someone else (fills ROM item table)

This is dependant on modifications done to sm_randomizer_rom project

* First working MultiWorld SM

* some missing things:

- player name inject in ROM and get in client
- end game get from ROM in client
- send self item to server
- add player names table in ROM

* replaced CollectionState inheritance from SMBoolManager with a composition of an array of it (required to generation more than one SM world, which is still fails but is better)

* - reenabled balancing

* post rebase fixes

* updated SmClient.py

* + added VariaRandomizer LICENSE

* + added sm_randomizer_rom project (which builds sm.ips)

* Moved VariaRandomizer and sm_randomizer_rom projects inside worlds/sm and done some cleaning

* properly revert change made to CollectionState and more cleaning

* Fixed multiworld support patch not working with VariaRandomizer's

* missing file commit

* Fixed syntax error in unused code to satisfy Linter

* Revert "Fixed multiworld support patch not working with VariaRandomizer's"

This reverts commit fb3ca18528bb331995e3d3051648c8f84d04c08b.

* many fixes and improovement

- fixed seeded generation
- fixed broken logic when more than one SM world
- added missing rules for inter-area transitions
- added basic patch presence for logic
- added DoorManager init call to reflect present patches for logic
- moved CollectionState addition out of BaseClasses into SM world
- added condition to apply progitempool presorting only if SM world is present
- set Bosses item id to None to prevent them going into multidata
- now use get_game_players

* first working (most of the time) progression generation for SM using VariaRandomizer's rules, items, locations and accessPoint (as regions)

* first working single-world randomized SM rom patches

* - SM now displays message when getting an item outside for someone else (fills ROM item table)

This is dependant on modifications done to sm_randomizer_rom project

* First working MultiWorld SM

* some missing things:

- player name inject in ROM and get in client
- end game get from ROM in client
- send self item to server
- add player names table in ROM

* replaced CollectionState inheritance from SMBoolManager with a composition of an array of it (required to generation more than one SM world, which is still fails but is better)

* - reenabled balancing

* post rebase fixes

* updated SmClient.py

* + added VariaRandomizer LICENSE

* + added sm_randomizer_rom project (which builds sm.ips)

* Moved VariaRandomizer and sm_randomizer_rom projects inside worlds/sm and done some cleaning

* properly revert change made to CollectionState and more cleaning

* Fixed multiworld support patch not working with VariaRandomizer's

* missing file commit

* Fixed syntax error in unused code to satisfy Linter

* Revert "Fixed multiworld support patch not working with VariaRandomizer's"

This reverts commit fb3ca18528bb331995e3d3051648c8f84d04c08b.

* many fixes and improovement

- fixed seeded generation
- fixed broken logic when more than one SM world
- added missing rules for inter-area transitions
- added basic patch presence for logic
- added DoorManager init call to reflect present patches for logic
- moved CollectionState addition out of BaseClasses into SM world
- added condition to apply progitempool presorting only if SM world is present
- set Bosses item id to None to prevent them going into multidata
- now use get_game_players

* Fixed multiworld support patch not working with VariaRandomizer's

Added stage_fill_hook to set morph first in progitempool
Added back VariaRandomizer's standard patches

* + added missing files from variaRandomizer project

* + added missing variaRandomizer files (custom sprites)

+ started integrating VariaRandomizer options (WIP)

* Some fixes for player and server name display

- fixed player name of 16 characters reading too far in SM client
- fixed 12 bytes SM player name limit (now 16)
- fixed server name not being displayed in SM when using server cheat ( now displays RECEIVED FROM ARCHIPELAGO)
- request: temporarly changed default seed names displayed in SM main menu to OWTCH

* Fixed Goal completion not triggering in smClient

* integrated VariaRandomizer's options into AP (WIP)

- startAP is working
- door rando is working
- skillset is working

* - fixed itemsounds.ips crash by always including nofanfare.ips into multiworld.ips (itemsounds is now always applied and "itemsounds" preset must always be "off")

* skillset are now instanced per player instead of being a singleton class

* RomPatches are now instanced per player instead of being a singleton class

* DoorManager is now instanced per player instead of being a singleton class

* - fixed the last bugs that prevented generation of >1 SM world

* fixed crash when no skillset preset is specified in randoPreset (default to "casual")

* maxDifficulty support and itemsounds removal

- added support for maxDifficulty
- removed itemsounds patch as its always applied from multiworld patch for now

* Fixed bad merge

* Post merge adaptation

* fixed player name length fix that got lost with the merge

* fixed generation with other game type than SM

* added default randoPreset json for SM in playerSettings.yaml

* fixed broken SM client following merge

* beautified json skillset presets

* Fixed ArchipelagoSmClient not building

* Fixed conflict between mutliworld patch and beam_doors_plms patch

- doorsColorsRando now working

* SM generation now outputs APBP

- Fixed paths for patches and presets when frozen

* added missing file and fixed multithreading issue

* temporarily set data_version = 0

* more work

- added support for AP starting items
- fixed client crash with gamemode being None
- patch.py "compatible_version" is now 3

* commited missing asm files

fixed start item reserve breaking game (was using bad write offset when patching)

* Nothing item are now handled game-side. the game will now skip displaying a message box for received Nothing item (but the client will still receive it).

fixed crash in SMClient when loosing connection to SNI

* fixed No Energy Item missing its ID

fixed Plando

* merge post fixes

* fixed start item Grapple, XRay and Reserve HUD, as well as graphic beams (except ice palette color)

* fixed freeze in blue brinstar caused by Varia's custom PLM not being filled with proper Multiworld PLM address (altLocsAddresses)

* fixed start item x-ray HUD display

* Fixed start items being sent by the server (is all handled in ROM)

Start items are now not removed from itempool anymore
Nothing Item is now local_items so no player will ever pickup Nothing. Doing so reduces contribution of this world to the Multiworld the more Nothing there is though.
Fixed crash (and possibly passing but broken) at generation where the static list of IPSPatches used by all SM worlds was being modified

* fixed settings that could be applied to any SM players

* fixed auth to server only using player name (now does as ALTTP to authenticate)

* - fixed End Credits broken text

* added non SM item name display

* added all supported SM options in playerSettings.yaml

* fixed locations needing a list of parent regions (now generate a region for each location with one-way exits to each (previously) parent region

did some cleaning (mainly reverts on unnecessary core classes

* minor setting fixes and tweaks

- merged Area and lightArea settings
- made missileQty, superQty and powerBombQty use value from 10 to 90 and divide value by float(10) when generating
- fixed inverted layoutPatch setting

* added option start_inventory_removes_from_pool

fixed option names formatting
fixed lint errors
small code and repo cleanup

* Hopefully fixed ROR2 that could not send any items

* - fixed missing required change to ROR2

* fixed 0 hp when respawning without having ever saved (start items were not updating the save checksum)

* fixed typo with doors_colors_rando

* fixed checksum

* added custom sprites for off-world items (progression or not)

the original AP sprite was made with PierRoulette's SM Item Sprite Utility by ijwu

* - added missing change following upstream merge

- changed patch filename extension from apbp to apm3 so patch can be used with the new client

* added morph placement options: early means local and sphere 1

* fixed failing unit tests

* - fixed broken custom_preset options

* - big cleanup to remove unnecessary or unsupported features

* - more cleanup

* - moved sm_randomizer_rom and all always applied patches into an external project that outputs basepatch.ips

- small cleanup

* - added comment to refer to project for generating basepatch.ips (https://github.com/lordlou/SMBasepatch)

* fixed g4_skip patch that can be not applied if hud is enabled

* - fixed off world sprite that can have broken graphics (restricted to use only first 2 palette)

* - updated basepatch to reflect g4_skip removal

- moved more asm files to SMBasepatch project

* - tourian grey doors at baby metroid are now always flashing (allowing to go back if needed)

* fixed wrong path if using built as exe

* - cleaned exposed maxDifficulty options

- removed always enabled Knows

* Merged LttPClient and SMClient into SNIClient

* added varia_custom Preset Option that fetch a preset (read from a new varia_custom_preset Option) from varia's web service

* small doc precision

* - added death_link support

- fixed broken Goal Completion
- post merge fix

* - removed now useless presets

* - fixed bad internal mapping with maxDiff

- increases maxDiff if only Bosses is preventing beating the game

* - added support for lowercase custom preset sections (knows, settings and controller)

- fixed controller settings not applying to ROM

* - fixed death loop when dying with Door rando, bomb or speed booster as starting items

- varia's backup save should now be usable (automatically enabled when doing door rando)

* -added docstring for generated yaml

* fixed bad merge

* fixed broken infinity max difficulty

* commented debug prints

* adjusted credits to mark progression speed and difficulty as Non Available

* added support for more than 255 players (will print Archipelago for higher player number)

* fixed missing cleanup

* added support for 65535 different player names in ROM

* fixed generations failing when only bosses are unreachable

* - replaced setting maxDiff to infinity with a bool only affecting boss logics if only bosses are left to finish

* fixed failling generations when using 'fun' settings

Accessibility checks are forced to 'items' if restricted locations are used by VARIA following usage of 'fun' settings

* fixed debug logger

* removed unsupported "suits_restriction" option

* fixed generations failing when only bosses are unreachable (using a less intrusive approach for AP)

* - fixed deathlink emptying reserves

- added death_link_survive option that lets player survive when receiving a deathlink if the have non-empty reserves

* - merged death_link and death_link_survive options

* fixed death_link

* added a fallback default starting location instead of failing generation if an invalid one was chosen

* added Nothing and NoEnergy as hint blacklist

added missing NoEnergy as local items and removed it from progression

* - enabled local item dialog boxes for dungeon and keycard items when keysanity is used

* - fixed ItemLink support

* fixed shops sending checks

* Added get_filler_item_name() returning a random junk item

Co-authored-by: Fabian Dill <[email protected]>

* Subnautica: add creature scans

* LTTP: Yaml Update (#765)

removes vendor option from hints, adds scam setting, and adds P option to shop shuffle.

* OoT: Fix gerudo_fortress on normal (#784)

* Final Fantasy: fix outdated advancement flag

* The Witness 0.3.4 features (#780)

New options:

Shuffle Doors: Many doors in the game will open on their own upon receiving an item ("key").
Variant - Shuffle Door/Control Panels: Many panels in the game that open doors or control devices in the world will be off until receiving their respective item ("key").
Shuffle Lasers: Lasers no longer activate by solving the laser panel, instead you will get an item that activates the laser.
Shuffle Symbols: Now that there is something else to shuffle (doors / door panels), you can turn off Symbol Rando.
Shuffle Postgame (replaces "Shuffle Hard"): The randomizer will now determine by your settings which panels are in the "postgame" - Meaning they can only be accessed after you can complete your win condition anyway.

* SMZ3: Pedestal hint (#792)

* - fixed missing pedestal and tablets hint text for foreign items (was "Don't waste yout time!", is now "A small victory!")

- small precision to SMZ3 and SM docs about "What does another world's item look like in Super Metroid"

* WebHost: reduce server uptime (#794)

* WebHost: attempt to improve wording of server resume
* WebHost: reduce default room timeout to 2 hours


Co-authored-by: black-sliver <[email protected]>

* ChecksFinder: Linux support via wine (#795)

* ChecksFinder: Linux support via wine

* ChecksFinder: account for custom $WINEPREFIX

* ChecksFinder: wine detection

* DS3: Add the Dark Souls 3 World into Archipelago (#769)

* Factorio: update rcon lib

* Subnautica: add missed PDA

* Subnautica: Add DeathLink (#803)

* HK - Fix typos in option names

Fixed max charm and max geo cost display names.

* Add to the ArchipIDLE items list (#807)

* Add to the ArchipIDLE items list

* Update Items.py

* Update Items.py

* Donkey Kong Country 3 Implementation (#798)

* Baseline patching and logic for DKC3

* Client can send, but not yet receive

* Alpha Test Baseline

* Bug Fixes and Starting Lives Option

* Finish BBH, add world hints

* Add music shuffle

* Boomer Costs Text

* Stubbed in Collect behaviour

* Adjust Gyrocopter option

* Add Bonus Coin junk replacement and tracker support

* Delete bad logs

* Undo host.yaml change

* Refactored SNIClient

* Make Swanky Free

* Fix Typo

* Undo SNIClient run_game hack

* Fix Typo

* Remove Bosses from Level Shuffle

* Remove duplicate kivy Data

* Add DKC3 Docs and increment Data version

* Remove dead code

* Fix mislabeled region

* Add Dark Souls 3 to README

* Always force Cog on Rocket Rush Flag

* Fix Single Ski lock and too many DK Coins

* Update Retroarch version number

* Don't send DKC3 through LttP Adjuster

* Comment Location ROM Table

* Change ROM Hash prefix to D3

* Remove redundant constructor

* Add ROM Change Safeguards

* Properly mark WRAM accesses

* Remove outdated region connect

* Fix syntax error

* Fix Game description

* Fix SNES Bank Access

* Add isso_setup for DKC3

* Double Quote strings

* Escape single quotes I guess

* LttP: Fix scam options (#806)

* Sm beam door speedkeep fun accessibility (#785)

added speedkeep option
now forces accessibility to "minimal" instead of (to be deprecated) "item" when "fun" settings is used

* The Witness: Small changes in response to beta tests (#801)

* Option order and better tooltip

* Logic fix: Hedge Laser requires access to all Hedges

* Add item groups: Lasers, Symbols, Doors

* Update worlds/witness/items.py

Co-authored-by: black-sliver <[email protected]>

* Comment for clarity

* Logic fix

* Another logic fix

Co-authored-by: metzner <[email protected]>
Co-authored-by: black-sliver <[email protected]>

* OOT updates (#821)

* oot: remove all escape characters in LogicTricks.py

* only attempt to connect to client once

* oot: don't kill player outside ToT or in market entrance
fixed camera makes the game crash outside ToT. added market entrance to be safe, it doesn't matter if you don't die there

* sm64ex: Various Features (#790)

* sm64ex: Course and Secret Randomizer

* sm64ex: Allow higher star door costs, raise minimum amount of stars, deprecate ExtraStars

* sm64ex: Support setting MIPS costs

* sm64ex: Safeguard MIPS Costs

* DKC3 - Logic Softlock Fix (#817)

* Add two locations to Trade Sequence List

* Remove trace sequence locations from ROM data dict

* Subnautica: fix Multipurpose Room not acquirable in valuable item pool

BaseRoomFragment doesn't exist in vanilla, so when valuable item pool marked it as scannable in vanilla location it did not work, as it's technically BaseRoom
BaseRoom is also required to install other modules into, modules that are already marked as useful, so logically if it's required for other useful stuff it should also be marked as useful
By switching from Fragment to non-fragment one now needs 1 out of 2 instead of 2 out of 2 items, which I consider a plus as well.

* HK - focus location (#778)

* Update ds3 locations and items (#819)

* DS3: Add more rules to avoid softlocks, remove Path of the Dragon gesture location/item and remove useless comments

* DS3: Add more Hostile NPCs locations/items

* DS3: Add missing key items to the key items list

* Archipidle: Fix forgotten version increment when a new item was added

* SM: smoother co-op, basepatch internal improvements (#793)

* SM: remote touch instantly, pull ips refactor and symbols

* SM: remove hard-coded ROM address writes

* SM: Full length player table, incl. receive-only player ids

+ apply PR feedback (correct graphic offset, readable data file paths)

* WebHost: flask caching did a rename

* SC2 docs: Extensive reworks and rewordings. (#809)

* LttP: fix deprecated use of isSet() (#831)

* SNIClient: fix program not exiting if SNI does not exist nor is running

* WebHost: fix 30 days cutoff for stats (#826)

* DKC3: fix missing default options in Utils.py

* WebHost: games played per day plot per game on stats page (#827)

* WebHost: generate stats page palette for maximum hue difference between neighbours.

* WebHost: add per game played stats

* CI: update SNI to 0.0.82

* Smz3 no progression gt fix (#818)

* Witness: Fatal logic bug fix (#837)

* Renamed some event items

* Fatal logic bug: Door panels did not check their symbol items

* [Docs] Further explained the mythical `InvalidPacket` (#828)

* [Docs] Further explained the mythical `InvalidPacket`

* Fixed header category

* Update docs/network protocol.md

Co-authored-by: black-sliver <[email protected]>

* Update docs/network protocol.md

Co-authored-by: black-sliver <[email protected]>

* Apply suggestions from code review

Co-authored-by: Hussein Farran <[email protected]>

Co-authored-by: black-sliver <[email protected]>
Co-authored-by: Hussein Farran <[email protected]>

* Prevent Krematoa Crash (#832)

* Prevent Krematoa Crash, add crash robustness

* Remove print statements

* Don't remove ctx.rom if save file dies

* Consolidate logic for readability

* Doc: move Running from source from wiki to docs (#797)

* Doc: move "Running from source" from wiki to docs/

* Doc: update links and reformat running from source

* Doc: implement suggestions in "Running from source"

thanks @alwaysintreble

* Doc: update link to "Running from source"

also link docs/ folder

* Doc: Running from source: Apply suggestions from code review

Co-authored-by: KonoTyran <[email protected]>

Co-authored-by: KonoTyran <[email protected]>

* WebHost: make a deeply buried if tree for games a bit more automatic

* Migrate DKC3 to APDeltaPatch (#838)

* Add DKC3 to APDeltaPatch

* Undo unintended commit

* More undoing

* Remove else clause

* Sm broken start location fix (#841)

* - fixed basepatches application order breaking (at least) starting location

* Sm smz3 create item fix (#844)

* Core: have generation print plando settings as string instead of numbers (#843)

* have generation print plando settings as string instead of numbers

* Change to __str__

* Make to_string not a class method

* Suggested fix

Co-authored-by: black-sliver <[email protected]>

* Fix the fix

* Better quotes

Co-authored-by: black-sliver <[email protected]>

* WebHost: Add links to "Setup Guides" in Supported Games page (#847)

* WebHost: Add links to "Setup Guides" in Supported Games page

* Remove a hanging console.log() I left in

* Fixed a crafting category bug related to fluids. (#848)

* WebHost: update flask (#804)

* The Witness: Logic fix (unbeatable seed) (#850)

* Add an optional path to factorio server-settings.json (#851)

* Add an optional path to factorio server-settings.json

* factorio: changes

* use forward slashs in host.yaml going forward.  (works on all OSes.)
* comment out the host.yaml server_settings option.
* assume that server_settings is NOT provided and explicitly check for its existence in factorio_client.

* HK: Add bug report link (#824)


Co-authored-by: Hussein Farran <[email protected]>

* Core: patch stream_input to ignore non-parsable input (such as EOF encoded as 0xff) (#854)

* Subnautica: update docs with resume info (#853)



Co-authored-by: black-sliver <[email protected]>
Co-authored-by: strotlog <[email protected]>

* SMZ3: FixJunkFillGT making invalid placements

* SMZ3: Fix Swamp Palace Entrace for minimal accessibility

* Core: update version

* Stats: limit to recognized games

* Core: optimize away Item.world (#840)

* Core: optimize away Item.world

* Update test/general/TestFill.py

* Test: undo unnecessary changes

* lttp: remove two more Item.world writes

Co-authored-by: black-sliver <[email protected]>

* WebHost: fix filename rename in flask update

* move some docs out of readme and link with the headers

* PR template

* bug report template

* task and feature request templates

* md cleanup

* forgot the template

* make expected results separate section

Co-authored-by: TheCondor07 <[email protected]>
Co-authored-by: Fabian Dill <[email protected]>
Co-authored-by: Zach Parks <[email protected]>
Co-authored-by: Fabian Dill <[email protected]>
Co-authored-by: lordlou <[email protected]>
Co-authored-by: N00byKing <[email protected]>
Co-authored-by: espeon65536 <[email protected]>
Co-authored-by: TheCondor07 <[email protected]>
Co-authored-by: Chris Wilson <[email protected]>
Co-authored-by: Jarno Westhof <[email protected]>
Co-authored-by: Felix R <[email protected]>
Co-authored-by: black-sliver <[email protected]>
Co-authored-by: strotlog <[email protected]>
Co-authored-by: t3hf1gm3nt <[email protected]>
Co-authored-by: Kono Tyran <[email protected]>
Co-authored-by: Kippi00 <[email protected]>
Co-authored-by: Colin Lenzen <[email protected]>
Co-authored-by: CaitSith2 <[email protected]>
Co-authored-by: Alchav <[email protected]>
Co-authored-by: Joethepic <[email protected]>
Co-authored-by: Hussein Farran <[email protected]>
Co-authored-by: Daniel Grace <[email protected]>
Co-authored-by: NewSoupVi <[email protected]>
Co-authored-by: PoryGone <[email protected]>
Co-authored-by: RaspberrySpaceJam <[email protected]>
Co-authored-by: Grrmo <[email protected]>
Co-authored-by: rsyh93 <[email protected]>
Co-authored-by: The T <[email protected]>
Co-authored-by: Rome Reginelli <[email protected]>
Co-authored-by: espeon65536 <[email protected]>
Co-authored-by: Sunny Bat <[email protected]>
Co-authored-by: Doug Hoskisson <[email protected]>
Co-authored-by: Bicoloursnake <[email protected]>
Co-authored-by: SoldierofOrder <[email protected]>
Co-authored-by: jsd1982 <[email protected]>
Co-authored-by: Vale <[email protected]>
Co-authored-by: Vale <[email protected]>
Co-authored-by: Ludovic Marechal <[email protected]>
Co-authored-by: Jolteon0163 <[email protected]>
Co-authored-by: metzner <[email protected]>
Co-authored-by: KonoTyran <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants