* Docs: tests: add naming / file naming conventions
Deprecates putting stuff into `__init__.py`.
This may be relevant for test discovery in the future.
* Docs: tests: fix class naming
* Docs: tests: update examples
* Punctuation is hard
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Revert part of one suggestion
The first set of () make the sentence make less sense.
* Docs: tests: clarify that __init__.py may be empty
* Make sentence nicer to read
I simply kept the original wording, but I agree that it reads somewhat odd
Co-authored-by: Ixrec <ericrhitchcock@gmail.com>
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Ixrec <ericrhitchcock@gmail.com>
* Update tests.md
Spelled out that tests will not run without running UpdateModule.py first and including a link to the instructions on how to do that.
* Applied black-silver's feedback and also I ran into tests that don't run correctly unless you also have run Webhost.py once. I have included that in the documentation as well.
* More black-silver feedback.
* CounterOption
* bring back the negative exception for ItemDict
* Backwards compatibility
* ruff on witness
* fix in calls
* move the contains
* comment
* comment
* Add option min and max values for CounterOption
* Use min 0 for TrapWeights
* This is safe now
* ruff
* This fits on one line again now
* OptionCounter
* Update Options.py
* Couple more typing things
* Update Options.py
* Make StartInventory work again, also make LocationCounter theoretically work
* Docs
* more forceful wording
* forced line break
* Fix unit test (that wasn't breaking?)
* Add trapweights to witness option presets to 'prove' that the unit test passes
* Make it so you can order stuff
* Update macros.html
Adds The Legend of Zelda: The Wind Waker as a supported game in Archipelago. The game uses [LagoLunatic's randomizer](https://github.com/LagoLunatic/wwrando) as its base (regarding logic, options, etc.) and builds from there.
* Tests: unroll test_multiworlds.TestTwoPlayerMulti
Also adds a helper function that other tests can use to unroll tests.
* Docs: add more details to docs/tests.md
* Explain parametrization, subtests and link to the new helper
* Mention some performance details and work-arounds
* Mention multithreading / pytest-xdist
* Tests: make param.classvar_matrix accept sets
* CI: add test/param.py to type checking
* Tests: add missing typing to test/param.py
* Tests: fix typo in test/param.py doc comment
Co-authored-by: qwint <qwint.42@gmail.com>
* update docs
* Docs: reword note on performance
---------
Co-authored-by: qwint <qwint.42@gmail.com>
* Init
* remove submodule
* Init
* Update docs
* Fix tests
* Update to use apcivvi
* Update Readme and codeowners
* Minor changes
* Remove .value from options (except starting hint)
* Minor updates
* remove unnecessary property
* Cleanup Rules and Region
* Fix output file generation
* Implement feedback
* Remove 'AP' tag and fix issue with format strings and using same quotes
* Update worlds/civ_6/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Minor docs changes
* minor updates
* Small rework of create items
* Minor updates
* Remove unused variable
* Move client to Launcher Components with rest of similar clients
* Revert "Move client to Launcher Components with rest of similar clients"
This reverts commit f9fd5df9fdf19eaf4f1de54e21e3c33a74f02364.
* modify component
* Fix generation issues
* Fix tests
* Minor change
* Add improvement and test case
* Minor options changes
* .
* Preliminary Review
* Fix failing test due to slot data serialization
* Format json
* Remove exclude missable boosts
* Update options (update goody hut text, make research multiplier a range)
* Update docs punctuation and slot data init
* Move priority/excluded locations into options
* Implement docs PR feedback
* PR Feedback for options
* PR feedback misc
* Update location classification and fix client type
* Fix typings
* Update research cost multiplier
* Remove unnecessary location priority code
* Remove extrenous use of items()
* WIP PR Feedback
* WIP PR Feedback
* Add victory event
* Add option set for death link effect
* PR improvements
* Update post fill hint to support items with multiple classifications
* remove unnecessary len
* Move location exclusion logic
* Update test to use set instead of accidental dict
* Update docs around progressive eras and boost locations
* Update docs for options to be more readable
* Fix issue with filler items and prehints
* Update filler_data to be static
* Update links in docs
* Minor updates and PR feedback
* Update boosts data
* Update era required items
* Update existing techs
* Update existing techs
* move boost data class
* Update reward data
* Update prereq data
* Update new items and progressive districts
* Remove unused code
* Make filler item name func more efficient
* Update death link text
* Move Civ6 to the end of readme
* Fix bug with hidden locations and location.name
* Partial PR Feedback Implementation
* Format changes
* Minor review feedback
* Modify access rules to use list created in generate_early
* Modify boost rules to precalculate requirements
* Remove option checks from access rules
* Fix issue with pre initialized dicts
* Add inno setup for civ6 client
* Update inno_setup.iss
---------
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* MultiServer: add NoText tag and handling
* MultiServer: deprecate and warn for uncompressed connections
* MultiServer: fix missing space in no compression warning
* Add connect_entrances
* update ER docs
* fix that test, but also ew
* Add a test that asserts the new finalization
* Rewrite test a bit
* rewrite some more
* blank line
* rewrite rewrite rewrite
* rewrite rewrite rewrite
* RE. WRITE.
* oops
* Bruh
* I guess, while we're at it
* giga oops
* It's been a long day
* Switch KH1 over to this design with permission of GICU
* Revert
* Oops
* Bc I like it
* Update locations.py
* 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>
* Worked locally before that so this is a lot of work . So, initial push
* Changes in init with better create_regions (Thanks to Phar on discord). Add a rule for victory. Change the regions list to remove menu in the destination.
* Added tests for location rules and changed rule locations to lists instead of sets
* Fixed game var in InscryptionLocation
* Fixed location access by using the same system from The Messenger
* Remove unuse rules in init and add region rules. Add all the act 2 locations and items.
* Add locations rule for the left of the bridge in act 2
* Added test for bridge requirement and added a dash to locationfor clarity
* Added more act 2 rules and removed completion rule
* Created docs for website, added Salmon Card item, marked multiple items as "progression", renamed tomb checks, added more location rules, re-added completion rule
* Renamed tower bath check to "Tentacle", added monocle as requirement for some checks, adjusted setup doc a bit
* Added tentacle to monocle test
* Added forest burrow chest rule
* Switch the two clock location because the id was swapped and screwed with the logic
* Added Ancient Obol rule and adjusted docs
* Added act 3 locations/items/rules/tests
* Added drone & battery to trader rules
* Fixed tutorial docs, added more act 3 rules, renamed holo pelt locations
* Add an option for the optional death card feature
* Added well check and quill item, added rules and tests
* Renamed Gems module and Gems drone
* Added slot data options
* Added rule for act 3 middle pelt
* Added option for randomize ability and uptade the randomize deck option to fit the new setup
* Added randomize ability in slot data
* Added more requirements for mycologists boss since it's pretty much an impossible fight early on
* Finished the french translation of the installation guide
* Changed the french title in the guide
* Added goal option and tests associated to it + fixed goal requirement missing quill
* Added goal option to docs and removed references to the now discarded API mod. Fixed some french translations.
* Added ourobot item + renamed some goal settings
* Fixed locations and items for act 1 goal
* Added skip tutorial option. Cleanup and rename of some options. Added tower requirement for Mycologist Key check. Fixed missing comma in act 2 locations oopsies.
* Added missing rules for Extra Battery, Nano Armor and Goobert's painting
* Added act 1 deathlink behaviour and epitaph pieces randomization options + made pieces progressive + adjusted docs
* Fixed some docs typos
* Added act 3 clock rule. Paintings 2, 3 and Goobert's painting can no longer contain progression items.
* New options system and fixed act 1 goal option breaking
* Added skip epilogue and painting checks balancing options. Renamed randomize abilities to randomize sigils. Fixed generation issue with epitaph pieces randomization. Goobert's painting no longer forces filler. Removed traps option for now. Reworded some option descriptions.
* Attempting type fix for python 3.8
* Attempting type fix for python 3.8 again
* Added starting only option for randomize deck
* Fixed arbitrary rule error
* Import fix attempt
* Migrated to DeathLinkMixin instead of creating a custom DeathLink option, cleaned up imports, renamed Death Link related options to include "death_link" instead of "deathlink", replaced numeral values for option checking into class attributes for readability, slight optimization to tower rule, fixed typo in codes option description.
* Added bug report page to web class, condensed pelt rules to one function, added items/locations count in game docs and adjusted some sections
* Added Inscryption to CODEOWNERS
* Implemented a bunch of suggestions: Better handling of painting option, options as dict for slot data, remove redundant auto_display_name, use of has_all, better goal tests, demote skink card to filler if goal is act 1 and force filler on paintings
* Makes clover plant and squirrel head progression items if paintings are balanced + fixed other issues
* filler items, start inventory from pool, '->"
* Fix bleeding issue
* Copy the list instead
* Fixed bleeding using proper deep copy
* Remove unnecessary for loops in tests
* Add defaults to choice options
---------
Co-authored-by: Benjamin Gregoire <benjamingregoire@outlook.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Add the cotm package with working seed playthrough generation.
* Add the proper event flag IDs for the Item codes.
* Oooops. Put the world completion condition in!
* Adjust the game name and abbreviations.
* Implement more settings.
* Account for too many start_inventory_from_pool cards with Halve DSS Cards Placed.
* Working (albeit very sloooooooooooow) ROM patching.
* Screw you, bsdiff! AP Procedure Patch for life!
* Nuke stage_assert_generate as the ROM is no longer needed for that.
* Working item writing and position adjusting.
* Fix the magic item graphics in Locations wherein they can be fixed.
* Enable sub-weapon shuffle
* Get the seed display working.
* Get the enemy item drop randomization working. Phew!
* Enemy drop rando and seed display fixes.
* Functional Countdown + Early Double setting
* Working multiworld (yay!)
* Fix item links and demo shenanigans.
* Add Wii U VC hash and a docs section explaining the rereleases.
* Change all client read/writes to EWRAM instead of Combined WRAM.
* Custom text insertion foundations.
* Working text converter and word wrap detector.
* More refinements to the text wrap system.
* Well and truly working sent/received messages.
* Add DeathLink and Battle Arena goal options.
* Add tracker stuff, unittests, all locations countdown, presets.
* Add to README, CODEOWNERS, and inno_setup
* Add to README, CODEOWNERS, and inno_setup
* Address some suggestions/problems.
* Switch the Items and Locations to using dataclasses.
* Add note about the alternate classes to the Game Page.
* Oooops, typo!
* Touch up the Options descriptions.
* Fix Battle Arena flag being detected incorrectly on connection and name the locked location/item pairs better.
* Implement option groups
* Swap the Lizard-man Locations into their correct Regions.
* Local start inventory, better DeathLink message handling, handle receiving over 255 of an item.
* Update the PopTracker pack links to no longer point to the Releases page.
* Add Skip Dialogues option.
* Update the presets for the accessibility rework.
* Swap the choices in the accessibility preset options.
* Uhhhhhhh...just see the apworld v4 changelog for this one.
* Ooops, typo!
* .
* Bunch of small stuff
* Correctly change "Fake" to "Breakable" in this comment.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make can_touch_water one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make broke_iron_maidens one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Fix majors countdown and make can_open_ceremonial_door one line.
* Make the Trap AP Item less obvious.
* Add Progression + Useful stuff, patcher handling for incompatible versions, and fix some mypy stuff.
* Better option groups.
* Change Early Double to Early Escape Item.
* Update DeathLink description and ditch the Menu region.
* Fix the Start Broken choice for Iron Maiden Behavior
* Remove the forced option change with Arena goal + required All Bosses and Arena.
* Update the Game Page with the removal of the forced option combination change.
* Fix client potential to send packets nonstop.
* More review addressing.
* Fix the new select_drop code.
* Fix the new select_drop code for REAL this time.
* Send another LocationScout if we send Location checks without having the Location info.
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Saving Princess: initial commit
* settings -> options
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* settings -> options
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* replace RegionData class with List[str]
RegionData was only wrapping a List[str], so we can directly use List[str]
* world: MultiWorld -> multiworld: MultiWorld
* use world's random instead of multiworld's
* use state's has_any and has_all where applicable
* remove unused StartInventory import
* reorder PerGameCommonOptions
* fix relative AutoWorld import
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* clean up double spaces
* local commands -> Local Commands
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
* remove redundant which items section
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
* game info rework
* clean up item count redundancy
* add game to readme and codeowners
* fix get_region_entrance return type
* world.multiworld.get -> world.get
* add more events
added events for the boss kills that open the gate, as well as for system power being restored
these only apply if expanded pool is not selected
* add client/autoupdater to launcher
* reorder commands in game info
* update docs with automated installation info
* add quick links to doc
* Update setup_en.md
* remove standalone saving princess client
* doc fixes
* code improvements and redundant default removal
as suggested by @Exempt-Medic
this includes the removal of events from the item/location name to id, as well as checking for the player name being ASCII
* add option to change launch coammnd
the LaunchCommand option is filled to either the executable or wine with the necessary arguments based on Utils.is_windows
* simplify valid install check
* mod installer improvements
now deletes possible existing files before installing the mod
* add option groups and presets
* add required client version
* update docs about cheat items pop-ups
items sent directly by the server (such as with starting inventory) now have pop-ups just like any other item
* add Steam Input issue to faq
* Saving Princess: BRAINOS requires all weapons
* Saving Princess: Download dll and patch together
Previously, gm-apclientpp.dll was downloaded from its own repo
With this update, the dll is instead extracted from the same zip as the game's patch
* Saving Princess: Add URI launch support
* Saving Princess: goal also requires all weapons
given it's past brainos
* Saving Princess: update docs
automatic connection support was added, docs now reflect this
* Saving Princess: extend([item]) -> append(item)
* Saving Princess: automatic connection validation
also parses the slot, password and host:port into parameters for the game
* Saving Princess: change subprocess .run to .Popen
This keeps the game from freezing the launcher while it is running
---------
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Docs: update min required version
and add comment about security.
* Core: rework python version check
* CI: set min micro update for build and release
* Introduce 'Hint Priority' concept
* fix error when sorting hints while not connected
* fix 'found' -> 'status' kivy stuff
* remove extraneous warning
this warning fired if you clicked to select or toggle priority of any hint, as you weren't clicking on the header...
* skip scanning individual header widgets when not clicking on the header
* update hints on disconnection
* minor cleanup
* minor fixes/cleanup
* fix: hints not updating properly for receiving player
* update re: review
* 'type() is' -> 'isinstance()'
* cleanup, re: Jouramie's review
* Change 'priority' to 'status', add 'Unspecified' and 'Avoid' statuses, update colors
* cleanup
* move dicts out of functions
* fix: new hints being returned when hint already exists
* fix: show `Found` properly when hinting already-found hints
* import `Hint` and `HintStatus` directly from `NetUtils`
* Default any hinted `Trap` item to be classified as `Avoid` by default
* add some sanity checks
* re: Vi's feedback
* move dict out of function
* Update kvui.py
* remove unneeded dismiss message
* allow lclick to drop hint status dropdown
* underline hint statuses to indicate clickability
* only underline clickable statuses
* Update kvui.py
* Update kvui.py
---------
Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>