* 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
* 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
* 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>
* 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
This new type of "area hint" will instead give you general information about one of the named geographical areas in your world.
Example:
```
There are 4 progression items in the "Quarry" region.
Of them, 2 are for other players.
Also, one of them is a laser for this world.
```
This also renames some of the locations in the game to better fit into an "area", such as the "River Obelisk" being renamed to the "Mountainside Obelisk".
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* 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
* Another was missed
* This would create a really bad merge error
I hope this gets a prize for "Most irrelevant PR in AP history"
Explanation:
When changing the hint system on the client side to be able to auto-wrap, decisions were made about which line breaks were still explicitly important, with most of them being removed.
This hint was somewhat devalued in the process.
-. --- - .... .. -. --. translates to "Nothing", which I thought was the entirety of the joke.
However, the line breaks were actually also important, because:
dash dot, dash dash dash,
dash, dot dot dot dot, dot dot,
dash dot, dash dash dot
is a Haiku! And the hint's creator (oddGarrett I believe) said this was specifically part of the creative vision for this joke hint. They said it's fine, I don't need to change it, but I couldn't let that stand.
So, the explicit line breaks for this joke hint are back.
Changes:
* Hints should feel a lot less same-y now ("Priority hints" are no longer always hints in disguise)
* Keep Hedge Mazes 1-3 and Pressure Plates 1-3 are added as locations in all settings
* Desert Final Room Hexagonal & Desert Final Room Bent 3 are added as locations
* Entries in exclude_locations that are referring to panels are now sent through slot data. This means they can be pre-skipped on the client side.
Fixes:
* Logic error in the Stoneworks that led to more restrictive seeds than necessary
* Logic error for Theater Flowers EP that led to more restrictive seeds than necessary
* Fixed crash in plando when "item" is a dict with weights
* Spoiler log locations were in random order per region, now they are consistent
* Make all Keep Pressure Plates logically required for the Laser Panel
* Added more Tutorial checks
* Added the remaining two Shipwreck Boat EPs to the exclude list for normal
* Improved itempool filling system, added warning if usefuls had to be eaten
* Moved creation of said warning string to utils
* Fixed logic bug causing broken seeds on Mountain Floor 2
* Hints system change
* Expert Logic Fix
* Fixed typo
* Better wording
* Added missing games to junk hints
* Made sure Entrance names are unique
* Fixed missing Obelisk Side
* Disable Non Randomized + EP Shuffle fix
* Fixed disable_non_randomized precompleted EPs being 'disabled' instead of 'precompleted'
* Fixed if/elif error
* Tutorial Gate Open local symbol item becomes local_early_item in expert instead
* Bump required client version. There is a beta client that sends 0.3.9.
* Removed print statement, oops
* Fixed itempool manipulation in pre_fill
* Replaced string concats with fstrings
* Improved make_warning_string function signature
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Improved performance on removing multiple items from multiworld itempool
* Comment
* Fixed errors with the code
* Made removal from itempool not fail unit test for multiple references
* Moved all item creation to create_items, got rid of itempool modifying system
* Colored Squares is no longer a good item, that's outdated
* Removed double if
* React to from_pool: false by removing a junk item
* Fixed warning if only Fnc Brain was removed
* Make use of string truthiness instead
* Made reading of plandoed items safer
---------
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
## New Features:
- EP Shuffle (Individual or Obelisk Sides, with varying difficulty levels)
- Ability to play without Puzzle Randomization (I.e. vanilla + AP layer)
- Pet the Dog to get a Puzzle Skip :) (No, really.)
## Changes:
- Starting inventory behavior improved (Consider starting items like doors and lasers logically even if they aren't part of the mode)
- Audio Log hint system improved (On low hint counts, you will no longer get the same locations hinted every time, i.e. always hints are shuffled)
## Fixes:
- Many fixes to symbol requirements
- Fixes to "shuffle_postgame" (What checks are evaluated as "postgame" in specific modes)
- Logically irrelevant doors are now "useful" instead of "progression"