* Add panel hunt plando option
* Keys are strs
* oops
* better message
* ,
* this doesn ot need to be here
* don't replace pre picked panels
* Update options.py
* rebase error
* rebase error
* oops
* Mypy
* ruff
* another rebase error
* actually this is a stupid change too
* bring over that change™️
* Update entity_hunt.py
* Update entity_hunt.py
* Update entity_hunt.py
* Add more panels that should be panels
* Make it so the caves panel items don't exist in early caves
* Remove unused import
* oops
* Remove Jungle to Monastery Garden from usefulification list
* Add a basic test
* ruff
---------
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
* proguseful
* ruff
* variable rename
* variable rename
* Better (?) comment
* Better way to do this? I guess
* sure
* ruff
* Eh, it's not worth it. Here's the much simpler version
* don't need this now
* Improve some classification checks while we're at it
* Only proguseful obelisk keys if eps are individual
* Split elevators come to you
* .
* unit test
* mypy stuff
* Fine. I'll fix the fcking commented out code. Happy?
* ruff
* """""Backwards compatibility"""""
* ruff
* make it look better
* #
* fix presets
* fix a unit test
* Make that explicit in the code
* Improve description
* The Witness: Fix hints always displaying the Witness player
Got a bit too trigger happy with changing instances of `world.multiworld.player_name` to `world.player_name` - Some of these were actually *supposed* to be other players.
Alternate title: The Witness doesn't have a Silph Scope
* that one i guess
In `_get_next_random_batch()`, the `remaining_entities` and
`remaining_entity_weights` lists were being constructed by iterating
sets.
This patch changes the function to iterate a sorted copy of each set
instead.
* Variety Rando (But WitnessLogicVariety.txt is wrong
* Actually variety the variety file (Ty Exempt-Medic <3)
* This will be preopened
* Tooltip explaining the different difficulties
* Remove ?, those were correct
* Less efficient but easier to follow
* Parentheses
* Fix some reqs
* Not Arrows in Variety
* Oops
* Happy medic, I made a wacky solution
* there we go
* Lint oops
* There
* that copy is unnecessary
* Turns out that copy is necessary still
* yes
* lol
* Rename to Umbra Variety
* missed one
* Erase the Eraser
* Fix remaining instances of 'variety' and don't have a symbol item on the gate in variety
* reorder difficulties
* inbetween
* ruff
* Fix Variety Invis requirements
* Fix wooden beams variety
* Fix PP2 variety
* Mirror changes from 'Variety Mode Puzzle Change 3.2.3'
* These also have Symmetry
* merge error prevention
* Update worlds/witness/data/static_items.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* no elif after return
* add variety to the symbol requirement bleed test
* Add variety to one of the 'other settings' unit tests
* Add Variety minimal symbols unittest
* oops
* I did the dumb again
* .
* Incorporate changes from other PR into WitnesLogicVariety.txt
* Update worlds/witness/data/WitnessLogicVariety.txt
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/witness/data/WitnessLogicVariety.txt
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update the reqs as well haha
* Another difference, thanks Medic :§
* Wait no, this one was right
* lol
* apply changes to WitnessLogicVariety.txt
* Add most recent Variety changes
* oof
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Attempt at optimizing rules
* docstrings
* Python 3.8
* Lasers optimisation
* Simplify conversion code and make it even faster
* mypy
* ruff
* Neat
* Add redirect to the other two modes
* Update WitnessLogic.txt
* Update WitnessLogicExpert.txt
* Update WitnessLogicVanilla.txt
* Use NamedTuple
* Ruff
* mypy thing
* Mypy stuff
* Move Redirect Event to Desert Region so it has a better name
* Town Pet the Dog
* Add shuffle dog to options presets
* I cri evritim
* I guess it's as good a time as any
* :(
* fix the soft conflict
* add all the shuffle dog options to some of the unit tests bc why not
* Laser Panels are just 'General' now, I'm pretty sure
* Could I really call it allsanity?
* Rename sweep_for_events to sweep_for_advancements
* more event->advancement renames
* oops accidentally deleted the deprecation thing in the force push
* Update TestDungeon.py
* Update BaseClasses.py
* Update BaseClasses.py
* oops
* utils.deprecate
* treble, you had no idea how right you were
* Update test_panel_hunt.py
* Update BaseClasses.py
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
---------
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
* Vague hints work! But, the client will probably reveal some of the info through scouts atm
* Fall back on Everywhere if necessary
* Some of these failsafes are not necessary now
* Limit region size to 100 as well
* Actually... like this.
* Nutmeg
* Lol
* -1 for own player but don't scout
* Still make always/priority ITEM hints
* fix
* uwu notices your bug
* The hints should, like, actually work, you know?
* Make it a Toggle
* Update worlds/witness/hints.py
Co-authored-by: Bryce Wilson <gyroscope15@gmail.com>
* Update worlds/witness/hints.py
Co-authored-by: Bryce Wilson <gyroscope15@gmail.com>
* Make some suggested changes
* Make that ungodly equation a bit clearer in terms of formatting
* make that not sorted
* Add a warning about the feature in the option tooltip
* Make using region names experimental
* reword option tooltip
* Note about singleplayer
* Slight rewording again
* Reorder the order of priority a bit
* this condition is unnecessary now
* comment
* No wait the order has to be like this
* Okay now I think it's correct
* Another comment
* Align option tooltip with new behavior
* slight rewording again
* reword reword reword reword
* -
* ethics
* Update worlds/witness/options.py
Co-authored-by: Bryce Wilson <gyroscope15@gmail.com>
* Rename and slight behavior change for local hints
* I think I overengineered this system before. Make it more consistent and clear now
* oops I used checks by accident
* oops
* OMEGA OOPS
* Accidentally commited a print statemetn
* Vi don't commit nonsense challenge difficulty impossible
* This isn't always true but it's good enough
* Update options.py
* Update worlds/witness/options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Scipio :3
* switch to is_event instead of checking against location.address
* oop
* Update test_roll_other_options.py
* Fix that unit test problem lol
* Oh is this not fixed in the apworld?
---------
Co-authored-by: Bryce Wilson <gyroscope15@gmail.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Add panel hunt options
* Make sure all panels are either solvable or disabled in panel hunt
* Pick huntable panels
* Discards in disable non randomized
* Set up panel hunt requirement
* Panel hunt functional
* Make it so an event can have multiple names
* Panel hunt with events
* Add hunt entities to slot data
* ruff
* add to hint data, no client sneding yet
* encode panel hunt amount in compact hint data
* Remove print statement
* my b
* consistent
* meh
* additions for lcient
* Nah
* Victory panels ineligible for panel hunt
* Panel Hunt Postgame option
* cleanup
* Add data generation file
* pull out set
* always disable gate ep in panel hunt
* Disallow certain challenge panels from being panel hunt panels
* Make panelhuntpostgame its own function, so it can be called even if normal postgame is enabled
* disallow PP resets from panel hunt
* Disable challenge timer and elevetor start respectively in disable hunt postgame
* Fix panelhunt postgame
* lol
* When you test that the bug is fixed but not that the non-bug is not unfixed
* Prevent Obelisks from being panel hunt panels
* Make picking panels for panel hunt a bit more sophisticated, if less random
* Better function maybe ig
* Ok maybe that was a bit too much
* Give advanced players some control over panel hunt
* lint
* correct the logic for amount to pick
* decided the jingle thing was dumb, I'll figure sth out client side. Same area discouragement is now a configurable factor, and the logic has been significantly rewritten
* comment
* Make the option visible
* Safety
* Change assert slightly
* We do a little logging
* number tweak & we do a lil logging
* we do a little more logging
* Ruff
* Panel Hunt Option Group
* Idk how that got here
* Update worlds/witness/options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/witness/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* remove merge error
* Update worlds/witness/player_logic.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* True
* Don't have underwater sliding bridge when you have above water sliding bridge
* These are not actually connected lol
* get rid of unnecessary variable
* Refactor compact hint function again
* lint
* Pull out Entity Hunt Picking into its own class, split it into many functions. Kept a lot of the comments tho
* forgot to actually add the new file
* some more refactoring & docstrings
* consistent naming
* flip elif change
* Comment about naming
* Make static eligible panels a constant I can refer back to
* slight formatting change
* pull out options-based eligibility into its own function
* better text and stuff
* lint
* this is not necessary
* capitalisation
* Fix same area discouragement 0
* Simplify data file generation
* Simplify data file generation
* prevent div 0
* Add Vault Boxes -> Vault Panels to replacements
* Update options.py
* Update worlds/witness/entity_hunt.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update entity_hunt.py
* Fix some events not working
* assert
* remove now unused function
* lint
* Lasers Activate, Lasers don't Solve
* lint
* oops
* mypy
* lint
* Add simple panel hunt unit test
* Add Panel Hunt Tests
* Add more Panel Hunt Tests
* Disallow Box Short for normal panel hunt
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Tunnels Theater Flowers fix + Flowers&PP2 Unit Tests
* copypaste
* Can just do it like this
* This is even better probably
* Also do some cleanup :3
* God damnit
* Add hidden early symbol item option, make some unit tests
* Add early symbol item false to the arrows test
* I guess it's not an issue
* more tests
* assertEqual
* cleanup
* add minimum symbols test for all 3 modes
* Formatting
* Add more minimal beatability tests
* one more for the road
* I HATE THIS AAAAAAAAAAAHHHHHHHHHHH WHY DID WE GO WITH OPTIONS
* loiaqeäsdhgalikSDGHjasDÖKHGASKLDÖGHJASKLJGHJSAÖkfaöslifjasöfASGJÖASDLFGJ'sklgösLGIKsdhJLGÖsdfjälghklDASFJghjladshfgjasdfälkjghasdöLfghasd-kjgjASDLÖGHAESKDLJGJÖsdaLGJHsadöKGjFDSLAkgjölSÄDghbASDFKGjasdLJGhjLÖSDGHLJASKDkgjldafjghjÖLADSFghäasdökgjäsadjlgkjsadkLHGsaDÖLGSADGÖLwSdlgkJLwDSFÄLHBJsaöfdkHweaFGIoeWjvlkdösmVJÄlsafdJKhvjdsJHFGLsdaövhWDsköLV-ksdFJHGVöSEKD
* fix imports (within apworld needs to be relative)
* Update worlds/witness/options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Sure
* good suggestion
* subtest
* Add some EP shuffle unit tests, also an explicit event-checking unit test
* add more tests yay
* oops
* mypy
* Update worlds/witness/options.py
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Collapse into one test :(
* More efficiency
* line length
* More collapsing
* Cleanup and docstrings
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Make witness apworld mostly pass mypy
* Fix all remaining mypy errors except the core ones
* I'm a goofy stupid poopoo head
* Two more fixes
* ruff after merge
* Mypy for new stuff
* Oops
* Stricter ruff rules (that I already comply with :3)
* Deprecated ruff thing
* wait no i lied
* lol super nevermind
* I can actually be slightly more specific
* lint
* Refactor postgame code to be more readable
* Change all references to options to strings
* oops
* Fix some outdated code related to yaml-disabled EPs
* Small fixes to short/longbox stuff (thanks Medic)
* comment
* fix duplicate
* Removed triplicate lmfao
* Better comment
* added another 'unfun' postgame consideration
* comment
* more option strings
* oops
* Remove an unnecessary comparison
* another string missed
* New classification changes (Credit: Exempt-Medic)
* Don't need to pass world
* Comments
* Replace it with another magic system because why not at this point :DDDDDD
* oops
* Oops
* Another was missed
* Make events conditions. Disable_Non_Randomized will no longer just 'have all events'
* What the fuck? Has this just always been broken?
* Don't have boolean function with 'not' in the name
* Another useful classification
* slight code refactor
* Funny haha booleans
* This would create a really bad merge error
* I can't believe this actually kind of works
* And here's the punchline. + some bugfixes
* Comment dat code
* Comments galore
* LMAO OOPS
* so nice I did it twice
* debug x2
* Careful
* Add more comments
* That comment is a bit unnecessary now
* Fix overriding region connections
* Correct a comment
* Correct again
* Rename variable
* Idk I guess this is in this branch now
* More tweaking of postgame & comments
* This is commit just exists to fix that grammar error
* I think I can just fucking delete this now???
* Forgot to reset something here
* Delete dead codepath
* Obelisk Keys were getting yote erroneously
* More comments
* Fix duplicate connections
* Oopsington III
* performance improvements & cleanup
* More rules cleanup and performance improvements
* Oh cool I can do this huh
* Okay but this is even more swag tho
* Lazy eval
* remove some implicit checks
* Is this too magical yet
* more guard magic
* Maaaaaaaagiccccccccc
* Laaaaaaaaaaaaaaaazzzzzzyyyyyyyyyyy
* Make it docstring
* Newline bc I like that better
* this is a little spooky lol
* lol
* Wait
* spoO
* Better variable name and comment
* Improved comment again
* better API
* oops I deleted a deepcopy
* lol help
* Help???
* player_regionsns lmao
* Add some comments
* Make doors disabled properly again. I hope this works
* Don't disable lasers
* Omega oops
* Make Floor 2 Exit not exist
* Make a fix that's warps compatible
* I think this was an oversight, I tested a seed and it seems to have the same result
* This is definitely less Violet than before
* Does this feel more violet lol
* Exception if a laser gets disabled, cleanup
* Ruff
* >:(
* consistent utils import
* Make autopostgame more reviewable (hopefully)
* more reviewability
* WitnessRule
* replace another instance of it
* lint
* style
* comment
* found the bug
* Move comment
* Get rid of cache and ugly allow_victory
* comments and lint