Archipelago/test
BadMagic100 218f28912e
Core: Generic Entrance Rando (#2883)
* Initial implementation of Generic ER

* Move ERType to Entrance.Type, fix typing imports

* updates based on testing (read: flailing)

* Updates from feedback

* Various bug fixes in ERCollectionState

* Use deque instead of queue.Queue

* Allow partial entrances in collection state earlier, doc improvements

* Prevent early loops in region graph, improve reusability of ER stage code

* Typos, grammar, PEP8, and style "fixes"

* use RuntimeError instead of bare Exceptions

* return tuples from connect since it's slightly faster for our purposes

* move the shuffle to the beginning of find_pairing

* do er_state placements within pairing lookups to remove code duplication

* requested adjustments

* Add some temporary performance logging

* Use CollectionState to track available exits and placed regions

* Add a method to automatically disconnect entrances in a coupled-compliant way

 Update docs and cleanup todos

* Make find_placeable_exits deterministic by sorting blocked_connections set

* Move EntranceType out of Entrance

* Handle minimal accessibility, autodetect regions, and improvements to disconnect

* Add on_connect callback to react to succeeded entrance placements

* Relax island-prevention constraints after a successful run on minimal accessibility; better error message on failure

* First set of unit tests for generic ER

* Change on_connect to send lists, add unit tests for EntranceLookup

* Fix duplicated location names in tests

* Update tests after merge

* Address review feedback, start docs with diagrams

* Fix rendering of hidden nodes in ER doc

* Move most docstring content into a docs article

* Clarify when randomize_entrances can be called safely

* Address review feedback

* Apply suggestions from code review

Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>

* Docs on ERPlacementState, add coupled/uncoupled handling to deadend detection

* Documentation clarifications

* Update groups to allow any hashable

* Restrict groups from hashable to int

* Implement speculative sweeping in stage 1, address misc review comments

* Clean unused imports in BaseClasses.py

* Restrictive region/speculative sweep test

* sweep_for_events->advancement

* Remove redundant __str__

Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>

* Allow partial entrances in auto indirect condition sweep

* Treat regions needed for logic as non-dead-end regardless of if they have exits, flip order of stage 3 and 4 to ensure there are enough exits for the dead ends

* Typing fixes suggested by mypy

* Remove erroneous newline 

Not sure why the merge conflict editor is different and worse than the normal editor. Crazy

* Use modern typing for ER

* Enforce the use of explicit indirect conditions

* Improve doc on required indirect conditions

---------

Co-authored-by: qwint <qwint.42@gmail.com>
Co-authored-by: alwaysintreble <mmmcheese158@gmail.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
2024-12-27 21:04:02 +01:00
..
benchmark Tests: add world load benchmark (#2768) 2024-02-04 09:09:07 +01:00
cpp Speedups: remove dependency on c++ (#2796) 2024-06-12 18:54:59 +02:00
general Core: Generic Entrance Rando (#2883) 2024-12-27 21:04:02 +01:00
hosting Generate: split ERmain out of main (#3515) 2024-06-16 03:27:06 +02:00
multiworld Tests: Fix indentation in TestTwoPlayerMulti (#4010) 2024-10-01 21:30:45 +02:00
netutils Core: fix exceptions coming from LocationStore (#4358) 2024-12-10 20:09:36 +01:00
options Core: Fix Template Yamls for games with colon in name (#4106) 2024-11-14 23:43:42 +01:00
programs Tests: Add a test that weights file generates different results per player correctly (#3392) 2024-10-30 23:18:30 +01:00
utils Utils: YAML goes brrrt (#2868) 2024-02-27 08:44:34 +01:00
webhost Tests: have option preset validation test do full validation (#4208) 2024-11-18 18:09:27 +01:00
worlds Core: fix unittest world discovery (#2262) 2023-10-03 09:47:22 +02:00
TestBase.py Tests: modern PEP8-ify core test modules and methods (#2298) 2023-10-22 13:00:27 +02:00
__init__.py Tests: Add ignore filter to s2clientprotocol warnings (#4180) 2024-11-13 19:04:31 +01:00
bases.py Core, some worlds: Rename sweep_for_events to sweep_for_advancements (#3571) 2024-08-23 01:15:05 +02:00