* Clean these functions up, get the hell out of here 5 parameter function
* Clean up a bunch of rules that no longer need to be multi-lined since the functions are shorter
* Clean up some range functions
* Update to use world instead of player like Vi recommended
* Fix merge conflict
* Create new options
* Slightly revise ls rule
* Update options.py
* Update options.py
* Add tedious option for ls
* Update laurels zips description
* Create new options
* Slightly revise ls rule
* Update options.py
* Update options.py
* Add tedious option for ls
* Update laurels zips description
* Creating structures to redo ladder storage rules
* Put together overworld ladder groups, remove tedious
* Write up the rules for the regular rules
* Update slot data and UT stuff
* Put new ice grapple stuff in er rules
* Ice grapple hard to get to fountain cross room
* More ladder data
* Wrote majority of overworld ladder rules
* Finish the ladder storage rules
* Update notes
* Add note
* Add well rail to the rules
* More rules
* Comment out logically irrelevant entrances
* Update with laurels_zip helper
* Add parameter to has_ice_grapple_logic for difficulty
* Add new parameter to has_ice_grapple_logic
* Move ice grapple chest to lower forest in ER/ladders
* Fix rule
* Finishing out hooking the new rules into the code
* Fix bugs
* Add more hard ice grapples
* Fix more bugs
* Shops my beloved
* Change victory condition back
* Remove debug stuff
* Update plando connections description
* Fix extremely rare bug
* Add well front -> back hard ladder storages
* Note in ls rules about knocking yourself down with bombs being out of logic
* Add atoll fuse with wand + hard ls
* Add some nonsense that boils down to activating the fuse in overworld
* Further update LS description
* Fix missing logic on bridge switch chest in upper zig
* Revise upper zig rule change to account for ER
* Fix merge conflict
* Fix formatting, fix rule for heir access after merge
* Add the shop sword logic stuff in
* Remove todo that was already done
* Fill out a to-do with some cursed nonsense
* Fix event in wrong region
* Fix missing cathedral -> elevator connection
* Fix missing cathedral -> elevator connection
* Add ER exception to cathedral -> elevator
* Fix secret gathering place issue
* Fix incorrect ls rule
* Move 3 locations to Quarry Back since they're easily accessible from the back
* Also update non-er region
* Remove redundant parentheses
* Add new test for a weird edge case in ER
* Slight option description updates
* Use has_ladder in spots where it wasn't used for some reason, add a comment
* Fix unit test for ER
* Update per exempt's suggestion
* Add back LogicRules as an invisible option, to not break old yamls
* Remove unused elevation from portal class
* Update ladder storage without items description
* Remove shop_scene stuff since it's no longer relevant in the mod by the time this version comes out
* Remove shop scene stuff from game info since it's no longer relevant in the mod by the time this comes out
* Update portal list to match main
* god I love github merging things
* Remove note
* Add ice grapple hard path from upper overworld to temple rafters entrance
* Actually that should be medium
* Remove outdated note
* Add ice grapple hard for swamp mid to the ledge
* Add missing laurels zip in swamp
* Some fixes to the ladder storage data while reviewing it
* Add unit test for weird edge case
* Backport outlet region system to fix ls bug
* Fix incorrect ls, add todo
* Add missing swamp ladder storage connections
* Add swamp zip to er data
* Add swamp zip to er rules
* Add hard ice grapple for forest grave path main to upper
* Add ice grapple logic for all bomb walls except the east quarry one
* Add ice grapple logic for frog stairs eye to mouth without the ladder
* Add hard ice grapple for overworld to the stairs to west garden
* Add the ice grapple boss quick kills to medium ice grappling
* Add the reverse connection for the ice grapple kill on Garden Knight
* Add atoll house ice grapple push, and add west garden ice grapple entry to the regular rules
* Pokemon Emerald: Use some new state functions, improve rule reuse
* Pokemon Emerald: Remove a couple more extra lambdas
* Pokemon Emerald: Swap some rules to use exclusive groups/lists
* Pokemon Emerald: Linting
We're not gonna keep both me and the linter happy here, but this at least gets things more consistent
* Pokemon Emerald: Update _exclusive to _unique
* moves the title name in CommonContext.run_gui into a parameter defaulted to the normal default so others using it don't have to rewrite everything
* Change to using a GameManager attribute instead of a default param
* Update CommonClient.py
treble suggestion 1
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
* Update CommonClient.py
treble suggestion 2
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
* Update CommonClient.py
treble suggestion 3
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* Use make_gui() instead of a property to push kivy importing back to lazy loading regardless of gui_enabled status
* cleanup
* almost forgot to type it
* change make_gui to be a class so clients can subclass it
* clean up code readability
---------
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Core: have webhost slot name links go through the launcher so that components can use them
* fix query handling, remove debug prints, and change mousover text for new behavior
* remove a missed debug and unused function
* filter room id to suuid since that's what everything else uses
* pass args to common client correctly
* add GUI to select which client to open
* remove args parsing and "require" components to parse it themselves
* support for messenger since it was basically already done
* use "proper" args argparsing and clean up uri handling
* use a timer and auto launch text client if no component is found
* change the timer to be a bit more appealing. also found a bug lmao
* don't hold 5 hostage and capitalize URI ig
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Add the yacht dice (from other git) world to the yacht dice fork
* Update .gitignore
* Removed zillion because it doesn't work
* Update .gitignore
* added zillion again...
* Now you can have 0 extra fragments
* Added alt categories, also options
* Added item categories
* Extra categories are now working! 🐶
* changed options and added exceptions
* Testing if I change the generate.py
* Revert "Testing if I change the generate.py"
This reverts commit 7c2b3df6170dcf8d8f36a1de9fcbc9dccdec81f8.
* ignore gitignore
* Delete .gitignore
* Update .gitignore
* Update .gitignore
* Update logic, added multiplicative categories
* Changed difficulties
* Update offline mode so that it works again
* Adjusted difficulty
* New version of the apworld, with 1000 as final score, always
Will still need to check difficulty and weights of adding items.
Website is not ready yet, so this version is not usable yet :)
* Changed yaml and small bug fixes
Fix when goal and max are same
Options: changed chance to weight
* no changes, just whitespaces
* changed how logic works
Now you put an array of mults and the cpu gets a couple of tries
* Changed logic, tweaked a bit too
* Preparation for 2.0
* logic tweak
* Logic for alt categories properly now
* Update setup_en.md
* Update en_YachtDice.md
* Improve performance of add_distributions
* Formatting style
* restore gitignore to APMW
* Tweaked generation parameters and methods
* Version 2.0.3
manual input option
max score in logic always 2.0.3
faster gen
* Comments and editing
* Renamed setup guide
* Improved create_items code
* init of locations: remove self.event line
* Moved setting early items to generate_early
* Add my name to CODEOWNERS
* Added Yacht Dice to the readme in list of games
* Improve performance of Yacht Dice
* newline
* Improve typing
* This is actually just slower lol
* Update worlds/yachtdice/Items.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update Options.py
* Styling
* finished text whichstory option
* removed roll and rollfragments; not used
* import; worlds not world :)
* Option groups!
* ruff styling, fix
* ruff format styling!
* styling and capitalization of options
* small comment
* Cleaned up the "state_is_a_list" a little bit
* RUFF 🐶
* Changed filling the itempool for efficiency
Now, we start with 17 extra items in the item pool, it's quite likely you need at least 17 items (~80%?).
And then afterwards, we delete items if we overshoot the target of 1000, and add items if we haven't reached an achievable score of 1000 yet. Also, no need to recompute the entire logic when adding points.
* 🐶
* Removed plando "fix"
* Changed indent of score multiplier
* faster location function
* Comments to docstrings
* fixed making location closest to goal_score be goal_score
* options format
* iterate keys and values of a dict together
* small optimization ListState
* faster collection of categories
* return arguments instead of making a list (will 🐶 later)
* Instead of turning it into a tuple, you can just make a tuple literal
* remove .keys()
* change .random and used enumerate
* some readability improvements
* Remove location "0", we don't use that one
* Remove lookup_id_to_name entirely
I for sure don't use it, and as far as I know it's not one of the mandatory functions for AP, these are item_name_to_id and location_name_to_id.
* .append instead of += for single items, percentile function changed
Also an extra comment for location ids.
* remove ) too many
* Removed sorted from category list
* Hash categories (which makes it slower :( )
Maybe I messed up or misunderstood...
I'll revert this right away since it is 2x slower, probably because of sorted instead of sort?
* Revert "Hash categories (which makes it slower :( )"
This reverts commit 34f2c1aed8c8813b2d9c58896650b82a810d3578.
* temporary push: 40% faster generation test
Small changes in logic make the generation 40% faster.
I'll have to think about how big the changes are. I suspect they are rather limited.
If this is the way to go, I'll remove the temp file and redo the YachtWeights file, I'll remove the functions there and just put the new weights here.
* Add Points item category
* Reverse changes of bad idea :)
* ruff 🐶
* Use numpy and pmf function to speed up gen
Numpy has a built-in way to sum probability mass functions (pmf).
This shaves of 60% of the generation time :D
* Revert "Use numpy and pmf function to speed up gen"
This reverts commit 9290191cb323ae92321d6c2cfcfe8c27370f439b.
* Step inbetween to change the weights
* Changed the weights to make it faster
135 -> 81 seconds on 100 random yamls
* Adjusted max_dist, split dice_simulation function
* Removed nonlocal and pass arguments instead
* Change "weight-lists" to Dict[str, float]
* Removed the return from ini_locations.
Also added explanations to cat_weights
* Choice options; dont'use .value (will ruff later)
* Only put important options in slotdata
* 🐶
* Add Dict import
* Split the cache per player, limit size to 400.
* 🐶
* added , because of style
* Update apworld version to 2.0.6
2.0.5 is the apworld I released on github to be tested
I never separately released 2.0.4.
* Multiple smaller code improvements
- changed names in YachtWeights so we don't need to translate them in Rules anymore
- we now remember which categories are present in the game, and also put this in slotdata. This we do because only one of two categories is present in a game. If for some reason both are present (plando/getitem/startinventory), we now know which category to ignore
-
* 🐶 ruff
* Mostly minimize_extra_items improvements
- Change logic, generation is now even faster (0.6s per default yaml).
- Made the option 'minimize_extra_items' do a lot more, hopefully this makes the impact of Yacht Dice a little bit less, if you want that. Here's what is also does now:
- you start with 2 dice and 2 rolls
- there will be less locations/items at the start of you game
* ruff 🐶
* Removed printing options
* Reworded some option descriptions
* Yacht Dice: setup: change release-link to latest
On the installation page, link to the latest release, instead of the page with all releases
* Several fixes and changes
-change apworld version
-Removed the extra roll (this was not intended)
-change extra_points_added to a mutable list to that it actually does something
-removed variables multipliers_added and items_added
-Rules, don't order by quantity, just by mean_score
-Changed the weights in general to make it faster
* 🐶
* Revert setup to what it was (latest, without S)
* remove temp weights file, shouldn't be here
* Made sure that there is not too many step score multipliers.
Too many step score multipliers lead to gen fails too, probably because you need many categories for them to actually help a lot. So it's hard to use them at the start of the game.
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
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.
* Docs: Specify process for adding a world maintainer to an existing world
* Update world maintainer.md
* Update world maintainer.md
* Update world maintainer.md
* Update world maintainer.md
* Update world maintainer.md
* Update world maintainer.md
* Update world maintainer.md
* Update world maintainer.md
* Update world maintainer.md
* Update world maintainer.md
* Update world maintainer.md
* Rewrite by BadMagic
* Update docs/world maintainer.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* 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>
* Docs: Mention indirect_conditions and that they are a *hard requirement* (with hard exception cases)
I definitely don't feel like I wrote this in the best way, or in the best place, but it is a precedent that I think is necessary so we can treat it as "the law of the land".
* oops
* Update world api.md
* Update world api.md
* Update world api.md
* Update docs/world api.md
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* I like within more here
* Update docs/world api.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update world api.md
---------
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Once a thug shop rolled 0 as the number of items it should have, all
remaining iterations would do nothing because neither the `count == -1`
condition nor the `count >= 1` condition would be met. This caused all
remaining thug shops to have zero items. This also caused the item
counts of remaining thug shops to be absent from slot data, which was
how this issue was found.
I found the old code confusing and, rather than try to figure out how to
fix it, I opted to rewrite it. With the new code, a local variable
dictionary tracks the number of created locations for each thug and no
more locations are created for a thug once their number of locations
equals the number of shop items that thug rolled.
* - 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
* replaced deprecated use of option_definitions for SM and SMZ3 by options_dataclass
* fixed missed references to option_definitions
* Update worlds/sm/variaRandomizer/utils/utils.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* fixed conflicts and made SMZ3 accessibility related code more future proof
* Update worlds/smz3/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/smz3/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* initial work on procedure patch
* more flexibility
load default procedure for version 5 patches
add args for procedure
add default extension for tokens and bsdiff
allow specifying additional required extensions for generation
* pushing current changes to go fix tloz bug
* move tokens into a separate inheritable class
* forgot the commit to remove token from ProcedurePatch
* further cleaning from bad commit
* start on docstrings
* further work on docstrings and typing
* improve docstrings
* fix incorrect docstring
* cleanup
* clean defaults and docstring
* define interface that has only the bare minimum required
for `Patch.create_rom_file`
* change to dictionary.get
* remove unnecessary if statement
* update to explicitly check for procedure, restore compatible version and manual override
* Update Files.py
* remove struct uses
* Update Rom.py
* convert KDL3 to APPP
* change class variables to instance variables
* Update worlds/Files.py
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Update worlds/Files.py
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* move required_extensions to tuple
* fix missing tuple ellipsis
* fix classvar mixup
* rename tokens to _tokens. use hasattr
* type hint cleanup
* Update Files.py
* initial base for local items, need to finish
* coo not clean
* handle local items for real, appp cleanup
* actually make bosses send their locations
* fix cloudy park 4 rule, zero deathlink message
* remove redundant door_shuffle bool
when generic ER gets in, this whole function gets rewritten. So just clean it a little now.
* properly fix deathlink messages, fix fill error
* update docs
* add prefill items
* fix kine fill error
* Update Rom.py
* Update Files.py
* mypy and softlock fix
* Update Gifting.py
* mypy phase 1
* fix rare async client bug
* Update __init__.py
* typing cleanup
* fix stone softlock
because of the way Kine's Stone works, you can't clear the stone blocks before clearing the burning blocks, so we have to bring Burning from outside
* Update Rom.py
* Add option groups
* Rename to lowercase
* finish rename
* whoops broke the world
* fix animal duplication bug
* overhaul filler generation
* add Miku flavor
* Update gifting.py
* fix issues related to max_hs increase
* Update test_locations.py
* fix boss shuffle not working if level shuffle is disabled
* fix bleeding default levels
* Update options.py
* thought this would print seed
* yay bad merges
* forgot options too
* yeah lets just break generation while at it
* this is probably a problem
* cap required heart stars
* Revert "cap required heart stars"
This reverts commit 759efd3e2b14ec2855082de041ac989cb9c5d500.
* fix duplication removal placement, deprecated test option
* forgot that we need to account for what we place
* move location ids
* rewrite trap handling
* further stage renumber fixes
* forgot one more
* basic UT support
* fix local heart star checks
* fix pattern
---------
Co-authored-by: beauxq <beauxq@yahoo.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
We had been keeping a set of items and defining item equality, but
item equality really only makes sense if you consider distinct IDs to
be distinct items. But that means the set ends up having multiple
copies of the same item, causing a bug where some items had the wrong
upgrade level in the game.
This also removes the equality definition, which was only used by this
one set.
* - Add Unit test for all the fish that require a specific region to be reachable
* - Move the crimsonfish to the tide pools region
* - Improved the unit test to be more thorough, add extended family fish to the test
* - Moved the son of crimsonfish to the correct region as well
* FFMQ: Fix reset protection (#3710)
* Revert reset protection
* Fix reset protection
---------
Co-authored-by: alchav <alchav@jalchavware.com>
* - Take shipsanity moss out of shipsanity crops (#3709)
* sc2: Removing unused dependency in requirements.txt (#3697)
* sc2: Removing unused dependency in requirements.txt
* sc2: Add missing newline in requirements.txt
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* WebHost: Fix NamedRange values clamping to the range (#3613)
If a NamedRange has a `special_range_names` entry outside the
`range_start` and `range_end`, the HTML5 range input will clamp the
submitted value to the closest value in the range.
These means that, for example, Pokemon RB's "HM Compatibility" option's
"Vanilla (-1)" option would instead get posted as "0" rather than "-1".
This change updates NamedRange to behave like TextChoice, where the
select element has a `name` attribute matching the option, and there is
an additional element to be able to provide an option other than the
select element's choices.
This uses a different suffix of `-range` rather than `-custom` that
TextChoice uses. The reason is we need some way to decide whether to use
the custom value or the select value, and that method needs to work
without JavaScript. For TextChoice this is easy, if the custom field is
empty use the select element. For NamedRange this is more difficult as
the browser will always submit *something*. My choice was to only use
the value from the range if the select box is set to "custom". Since
this only happens with JS as "custom' is hidden, I made the range hidden
under no-JS. If it's preferred, I could make the select box hidden
instead. Let me know.
This PR also makes the `js-required` class set `display: none` with
`!important` as otherwise the class wouldn't work on any rule that
had `display: flex` with more specificity than a single class.
* Timespinner: migrate to new options api and correct random (#2485)
* Implemented new options system into Timespinner
* Fixed typo
* Fixed typo
* Fixed slotdata maybe
* Fixes
* more fixes
* Fixed failing unit tests
* Implemented options backwards comnpatibility
* Fixed option fallbacks
* Implemented review results
* Fixed logic bug
* Fixed python 3.8/3.9 compatibility
* Replaced one more multiworld option usage
* Update worlds/timespinner/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Updated logging of options replacement to include player name and also write it to spoiler
Fixed generation bug
Implemented review results
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Core: migrate item links out of main (#2914)
* Core: move item linking out of main
* add a test that item link option correctly validates
* remove unused fluff
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Core: Rework accessibility (#1481)
* rename locations accessibility to "full" and make old locations accessibility debug only
* fix a bug in oot
* reorder lttp tests to not override its overrides
* changed the wrong word in the dict
* :forehead:
* update the manual lttp yaml
* use __debug__
* update pokemon and messenger
* fix conflicts from 993
* fix stardew presets
* add that locations may be inaccessible to description
* use reST format and make the items description one line so that it renders correctly on webhost
* forgot i renamed that
* add aliases for back compat
* some cleanup
* fix imports
* fix test failure
* only check "items" players when the item is progression
* Revert "only check "items" players when the item is progression"
This reverts commit ecbf986145e6194aa99a39c481d8ecd0736d5a4c.
* remove some unnecessary diffs
* CV64: Add ItemsAccessibility
* put items description at the bottom of the docstring since that's it's visual order
* :
* rename accessibility reference in pokemon rb dexsanity
* make the rendered tooltips look nicer
* Shivers: New features and removes two missed options using the old options API (#3287)
* Adds an option to have pot pieces placed local/non-local/anywhere
Shivers nearly always finishes last in multiworld games due to the fact you need all 20 pot pieces to win and the pot pieces open very few location checks. This option allows the pieces to be placed locally. This should allow Shivers to be finished earlier.
* New option: Choose how many ixupi captures are needed for goal completion
New option: Choose how many ixupi captures are needed for goal completion
* Fixes rule logic for location 'puzzle solved three floor elevator'
Fixes rule logic for location 'puzzle solved three floor elevator'. Missing a parenthesis caused only the key requirement to be checked for the blue maze region.
* Merge branch 'main' of https://github.com/GodlFire/Shivers
* Revert "Merge branch 'main' of https://github.com/GodlFire/Shivers"
This reverts commit bb08c3f0c2ef148fd24d7c7820cdfe936f7196e2.
* Fixes issue with office elevator rule logic.
* Bug fix, missing logic requirement for location 'Final Riddle: Guillotine Dropped'
Bug fix, missing logic requirement for location 'Final Riddle: Guillotine Dropped'
* Moves plaque location to front for better tracker referencing.
* Tiki should be Shaman.
* Hanging should be Gallows.
* Merrick spelling.
* Clarity change.
* Changes new option to use new option API
Changes new option to use new option API
* Added sub regions for Ixupi
-Added sub regions for Ixupi and moved ixupi capture checks into the sub region.
-Added missing wax capture possible spot in Shaman room
* Adds option for ixupi captures to be priority locations
Adds option for ixupi captures to be priority locations
* Consistency
Consistency
* Changes ixupi captures priority to default on toggle
Changes ixupi captures priority to default on toggle
* Docs update
-Updated link to randomizer
-Update some text to reflect the latest functionality
-Replaced 'setting' with 'option'
* New features/bug fixes
-Adds an option to have completed pots in the item pool
-Moved subterranean world information plaque to maze staircase
* Cleanup
Cleanup
* Fixed name for moved location
When moving a location and renaming it I forgot to fix the name in a second spot.
* Squashed commit of the following:
commit 630a3bdfb9414d8c57154f29253fce0cf67b6436
Merge: 8477d3c8 5e579200
Author: GodlFire <46984098+GodlFire@users.noreply.github.com>
Date: Mon Apr 1 19:08:48 2024 -0600
Merge pull request #10 from ArchipelagoMW/main
Merge main into branch
commit 5e5792009c
Author: Alchav <59858495+Alchav@users.noreply.github.com>
Date: Mon Apr 1 12:08:21 2024 -0500
LttP: delete playerSettings.yaml (#3062)
commit 9aeeeb077a
Author: CaitSith2 <d_good@caitsith2.com>
Date: Mon Apr 1 06:07:56 2024 -0700
ALttP: Re-mark light/dark world regions after applying plando connections (#2964)
commit 35458380e6
Author: Bryce Wilson <gyroscope15@gmail.com>
Date: Mon Apr 1 07:07:11 2024 -0600
Pokemon Emerald: Fix wonder trade race condition (#2983)
commit 4ac1866689
Author: Alchav <59858495+Alchav@users.noreply.github.com>
Date: Mon Apr 1 08:06:31 2024 -0500
ALTTP: Skull Woods Inverted fix (#2980)
commit 4aa03da66e
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date: Mon Apr 1 15:06:02 2024 +0200
Factorio: fix attempting to create savegame with not filename safe characters (#2842)
commit 24a03bc8b6
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date: Mon Apr 1 08:02:26 2024 -0500
KDL3: fix shuffled animals not actually being random (#3060)
commit f813a7005f
Author: Aaron Wagener <mmmcheese158@gmail.com>
Date: Sun Mar 31 11:11:10 2024 -0500
The Messenger: update docs formatting and fix outdated info (#3033)
* The Messenger: update docs formatting and fix outdated info
* address review feedback
* 120 chars
commit 2a0b7e0def
Author: LiquidCat64 <74896918+LiquidCat64@users.noreply.github.com>
Date: Sun Mar 31 09:55:55 2024 -0600
CV64: A couple of very small docs corrections. (#3057)
commit 03d47e460e
Author: Ixrec <ericrhitchcock@gmail.com>
Date: Sun Mar 31 16:55:08 2024 +0100
A Short Hike: Clarify installation instructions (#3058)
* Clarify installation instructions
* don't mention 'config' folder since it isn't created until the game starts
commit e546c0f7ff
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date: Sun Mar 31 10:50:31 2024 -0500
Yoshi's Island: add patch suffix (#3061)
commit 2ec93ba82a
Author: Bryce Wilson <gyroscope15@gmail.com>
Date: Sun Mar 31 09:48:59 2024 -0600
Pokemon Emerald: Fix inconsistent location name (#3065)
commit 4e3d396394
Author: Aaron Wagener <mmmcheese158@gmail.com>
Date: Sun Mar 31 10:47:11 2024 -0500
The Messenger: Fix precollected notes not being removed from the itempool (#3066)
* The Messenger: fix precollected notes not being properly removed from pool
* The Messenger: bump required client version
commit 72c53513f8
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date: Sun Mar 31 03:57:59 2024 +0200
WebHost: fix /check creating broken yaml files if files don't end with a newline (#3063)
commit b7ac6a4cbd
Author: Aaron Wagener <mmmcheese158@gmail.com>
Date: Fri Mar 29 20:14:53 2024 -0500
The Messenger: Fix various portal shuffle issues (#2976)
* put constants in a bit more sensical order
* fix accidental incorrect scoping
* fix plando rules not being respected
* add docstrings for the plando functions
* fix the portal output pools being overwritten
* use shuffle and pop instead of removing by content so plando can go to the same area twice
* move portal pool rebuilding outside mapping creation
* remove plando_connection cleansing since it isn't shared with transition shuffle
commit 5f0112e783
Author: Zach Parks <zach@alliware.com>
Date: Fri Mar 29 19:13:51 2024 -0500
Tracker: Add starting inventory to trackers and received items table. (#3051)
commit bb481256de
Author: Aaron Wagener <mmmcheese158@gmail.com>
Date: Thu Mar 28 21:48:40 2024 -0500
Core: Make fill failure error more human parseable (#3023)
commit 301d9de975
Author: Aaron Wagener <mmmcheese158@gmail.com>
Date: Thu Mar 28 19:31:59 2024 -0500
Docs: adding games rework (#2892)
* Docs: complete adding games.md rework
* remove all the now unused images
* review changes
* address medic's review
* address more comments
commit 9dc708978b
Author: Trevor L <80716066+TRPG0@users.noreply.github.com>
Date: Thu Mar 28 18:26:58 2024 -0600
Hylics 2: Fix invalid multiworld data, use `self.random` instead of `self.multiworld.random` (#3001)
* Hylics 2: Fixes
* Rewrite loop
commit 4391d1f4c1
Author: Bryce Wilson <gyroscope15@gmail.com>
Date: Thu Mar 28 18:05:39 2024 -0600
Pokemon Emerald: Fix opponents learning non-randomized TMs (#3025)
commit 5d9d4ed9f1
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date: Fri Mar 29 01:01:31 2024 +0100
SoE: update to pyevermizer v0.48.0 (#3050)
commit c97215e0e7
Author: Scipio Wright <scipiowright@gmail.com>
Date: Thu Mar 28 17:23:37 2024 -0400
TUNIC: Minor refactor of the vanilla_portals function (#3009)
* Remove unused, change an if to an elif
* Remove unused import
commit eb66886a90
Author: Alchav <59858495+Alchav@users.noreply.github.com>
Date: Thu Mar 28 16:23:01 2024 -0500
SC2: Don't Filter Excluded Victory Locations (#3018)
commit de860623d1
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date: Thu Mar 28 22:21:56 2024 +0100
Core: differentiate between unknown worlds and broken worlds in error message (#2903)
commit 74b2bf5161
Author: Bryce Wilson <gyroscope15@gmail.com>
Date: Thu Mar 28 15:20:55 2024 -0600
Pokemon Emerald: Exclude norman trainer location during norman goal (#3038)
commit 74ac66b032
Author: BadMagic100 <dempsey.sean@outlook.com>
Date: Thu Mar 28 08:49:19 2024 -0700
Hollow Knight: 0.4.5 doc revamp and default options tweaks (#2982)
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
commit 80d7ac4164
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date: Thu Mar 28 09:41:32 2024 -0500
KDL3: RC1 Fixes and Enhancement (#3022)
* fix cloudy park 4 rule, zero deathlink message
* remove redundant door_shuffle bool
when generic ER gets in, this whole function gets rewritten. So just clean it a little now.
* properly fix deathlink messages, fix fill error
* update docs
commit 77311719fa
Author: Ziktofel <ziktofel@gmail.com>
Date: Thu Mar 28 15:38:34 2024 +0100
SC2: Fix HERC upgrades (#3044)
commit cfc1541be9
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date: Thu Mar 28 15:19:32 2024 +0100
Docs: Mention the "last received item index" paradigm in the network protocol docs (#2989)
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
commit 4d954afd9b
Author: Scipio Wright <scipiowright@gmail.com>
Date: Thu Mar 28 10:11:20 2024 -0400
TUNIC: Add link to AP plando guide to connection plando section of game page (#2993)
commit 17748a4bf1
Author: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
Date: Thu Mar 28 10:00:10 2024 -0400
Launcher, Docs: Update UI and Set-Up Guide to Reference Options (#2950)
commit 9182fe563f
Author: Entropynines <163603868+Entropynines@users.noreply.github.com>
Date: Thu Mar 28 06:56:35 2024 -0700
README: Remove outdated information about launchers (#2966)
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
commit bcf223081f
Author: t3hf1gm3nt <59876300+t3hf1gm3nt@users.noreply.github.com>
Date: Thu Mar 28 09:54:56 2024 -0400
TLOZ: Fix markdown issue with game info page (#2985)
commit fa93488f3f
Author: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Date: Thu Mar 28 09:46:00 2024 -0400
Docs: Consistent naming for "connection plando" (#2994)
commit db15dd4bde
Author: chandler05 <66492208+chandler05@users.noreply.github.com>
Date: Thu Mar 28 08:45:19 2024 -0500
A Short Hike: Fix incorrect info in docs (#3016)
commit 01cdb0d761
Author: PoryGone <98504756+PoryGone@users.noreply.github.com>
Date: Thu Mar 28 09:44:23 2024 -0400
SMW: Update World Doc for v2.0 Features (#3034)
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
commit d0ac2b744e
Author: panicbit <panicbit@users.noreply.github.com>
Date: Thu Mar 28 10:11:26 2024 +0100
LADX: fix local and non-local instrument placement (#2987)
* LADX: fix local and non-local instrument placement
* change confusing variable name
commit 14f5f0127e
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date: Thu Mar 28 04:42:35 2024 -0400
Stardew Valley: Fix potential soft lock with vanilla tools and entrance randomizer + Performance improvement for vanilla tool/skills (#3002)
* fix vanilla tool fishing rod requiring metal bars
fix vanilla skill requiring previous level (it's always the same rule or more restrictive)
* add test to ensure fishing rod need fish shop
* fishing rod should be indexed from 0 like a mentally sane person would do.
* fishing rod 0 isn't real, but it definitely can hurt you.
* reeeeeeeee
commit cf133dde72
Author: Bryce Wilson <gyroscope15@gmail.com>
Date: Thu Mar 28 02:32:27 2024 -0600
Pokemon Emerald: Fix typo (#3020)
commit ca18121811
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date: Thu Mar 28 04:27:49 2024 -0400
Stardew Valley: Fix generation fail with SVE and entrance rando when Wizard Tower is in place of Sprite Spring (#2970)
commit 1d4512590e
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date: Wed Mar 27 21:09:09 2024 +0100
requirements.txt: _ instead of - to make PyCharm happy (#3043)
commit f7b415dab0
Author: agilbert1412 <alexgilbert@yahoo.com>
Date: Tue Mar 26 19:40:58 2024 +0300
Stardew valley: Game version documentation (#2990)
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
commit 702f006c84
Author: LiquidCat64 <74896918+LiquidCat64@users.noreply.github.com>
Date: Tue Mar 26 07:31:36 2024 -0600
CV64: Change all mentions of "settings" to "options" and fix a broken link (#3015)
commit 98ce8f8844
Author: Yussur Mustafa Oraji <N00byKing@hotmail.de>
Date: Tue Mar 26 14:29:25 2024 +0100
sm64ex: New Options API and WebHost fix (#2979)
commit ea47b90367
Author: Scipio Wright <scipiowright@gmail.com>
Date: Tue Mar 26 09:25:41 2024 -0400
TUNIC: You can grapple down here without the ladder, neat (#3019)
commit bf3856866c
Author: agilbert1412 <alexgilbert@yahoo.com>
Date: Sun Mar 24 23:53:49 2024 +0300
Stardew Valley: presets with some of the new available values for existing settings to make them more accurate (#3014)
commit c0368ae0d4
Author: Phaneros <31861583+MatthewMarinets@users.noreply.github.com>
Date: Sun Mar 24 13:53:20 2024 -0700
SC2: Fixed missing upgrade from custom tracker (#3013)
commit 36c83073ad
Author: Salzkorn <salzkitty@gmail.com>
Date: Sun Mar 24 21:52:41 2024 +0100
SC2 Tracker: Fix grouped items pointing at wrong item IDs (#2992)
commit 2b24539ea5
Author: Ziktofel <ziktofel@gmail.com>
Date: Sun Mar 24 21:52:16 2024 +0100
SC2 Tracker: Use level tinting to let the player know which level he has of Replenishable Magazine (#2986)
commit 7e904a1c78
Author: Ziktofel <ziktofel@gmail.com>
Date: Sun Mar 24 21:51:46 2024 +0100
SC2: Fix Kerrigan presence resolving when deciding which races should be used (#2978)
commit bdd498db23
Author: Alchav <59858495+Alchav@users.noreply.github.com>
Date: Fri Mar 22 15:36:27 2024 -0500
ALTTP: Fix#2290's crashes (#2973)
commit 355223b8f0
Author: PinkSwitch <52474902+PinkSwitch@users.noreply.github.com>
Date: Fri Mar 22 15:35:00 2024 -0500
Yoshi's Island: Implement New Game (#2141)
Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com>
Co-authored-by: Alchav <59858495+Alchav@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
commit aaa3472d5d
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date: Fri Mar 22 21:30:51 2024 +0100
The Witness: Fix seed bleed issue (#3008)
commit 96d93c1ae3
Author: chandler05 <66492208+chandler05@users.noreply.github.com>
Date: Fri Mar 22 15:30:23 2024 -0500
A Short Hike: Add option to customize filler coin count (#3004)
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
commit ca549df20a
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date: Fri Mar 22 15:29:24 2024 -0500
CommonClient: fix hint tab overlapping (#2957)
Co-authored-by: Remy Jette <remy@remyjette.com>
commit 44988d430d
Author: Star Rauchenberger <fefferburbia@gmail.com>
Date: Fri Mar 22 15:28:41 2024 -0500
Lingo: Add trap weights option (#2837)
commit 11b32f17ab
Author: Danaël V <104455676+ReverM@users.noreply.github.com>
Date: Fri Mar 22 12:46:14 2024 -0400
Docs: replacing "setting" to "option" in world docs (#2622)
* Update contributing.md
* Update contributing.md
* Update contributing.md
* Update contributing.md
* Update contributing.md
* Update contributing.md
Added non-AP World specific information
* Update contributing.md
Fixed broken link
* Some minor touchups
* Update Contributing.md
Draft for version with picture
* Update contributing.md
Small word change
* Minor updates for conciseness, mostly
* Changed all instances of settings to options in info and setup guides
I combed through all world docs and swapped "setting" to "option" when this was refering to yaml options.
I also changed a leftover "setting" in option.py
* Update contributing.md
* Update contributing.md
* Update setup_en.md
Woops I forgot one
* Update Options.py
Reverted changes regarding options.py
* Update worlds/noita/docs/en_Noita.md
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/sc2wol/docs/en_Starcraft 2 Wings of Liberty.md
revert change waiting for that page to be updated
* Update worlds/witness/docs/setup_en.md
* Update worlds/witness/docs/en_The Witness.md
* Update worlds/soe/docs/multiworld_en.md
Fixed Typo
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Update worlds/witness/docs/en_The Witness.md
* Update worlds/adventure/docs/en_Adventure.md
* Update worlds/witness/docs/setup_en.md
* Updated Stardew valley to hopefully get rid of the merge conflicts
* Didn't work :dismay:
* Delete worlds/sc2wol/docs/setup_en.md
I think this will fix the merge issue
* Now it should work
* Woops
---------
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
commit 218cd45844
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date: Fri Mar 22 03:02:38 2024 -0500
APProcedurePatch: fix RLE/COPY incorrect sizing (#3006)
* change class variables to instance variables
* Update worlds/Files.py
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Update worlds/Files.py
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* move required_extensions to tuple
* fix missing tuple ellipsis
* fix classvar mixup
* rename tokens to _tokens. use hasattr
* type hint cleanup
* Update Files.py
* check using isinstance instead
* Update Files.py
---------
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
commit 4196bde597
Author: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Date: Thu Mar 21 16:38:36 2024 -0400
Docs: Fixing special_range_names example (#3005)
commit 40f843f54d
Author: Star Rauchenberger <fefferburbia@gmail.com>
Date: Thu Mar 21 11:00:53 2024 -0500
Lingo: Minor game data fixes (#3003)
commit da333fbb0c
Author: GodlFire <46984098+GodlFire@users.noreply.github.com>
Date: Thu Mar 21 09:52:16 2024 -0600
Shivers: Adds missing logic rule for skull dial door location (#2997)
commit 43084da23c
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date: Thu Mar 21 16:51:29 2024 +0100
The Witness: Fix newlines in Witness option tooltips (#2971)
commit 14816743fc
Author: Scipio Wright <scipiowright@gmail.com>
Date: Thu Mar 21 11:50:07 2024 -0400
TUNIC: Shuffle Ladders option (#2919)
commit 30a0aa2c85
Author: Star Rauchenberger <fefferburbia@gmail.com>
Date: Thu Mar 21 10:46:53 2024 -0500
Lingo: Add item/location groups (#2789)
commit f4b7c28a33
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date: Wed Mar 20 17:45:32 2024 -0500
APProcedurePatch: hotfix changing class variables to instance variables (#2996)
* change class variables to instance variables
* Update worlds/Files.py
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Update worlds/Files.py
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* move required_extensions to tuple
* fix missing tuple ellipsis
* fix classvar mixup
* rename tokens to _tokens. use hasattr
* type hint cleanup
* Update Files.py
* check using isinstance instead
---------
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
commit 12864f7b24
Author: chandler05 <66492208+chandler05@users.noreply.github.com>
Date: Wed Mar 20 22:44:09 2024 +0100
A Short Hike: Implement New Game (#2577)
commit db02e9d2aa
Author: LiquidCat64 <74896918+LiquidCat64@users.noreply.github.com>
Date: Wed Mar 20 15:03:25 2024 -0600
Castlevania 64: Implement New Game (#2472)
commit 32315776ac
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date: Wed Mar 20 16:57:45 2024 -0400
Stardew Valley: Fix extended family legendary fishes being locations with fishsanity set to exclude legendary (#2967)
commit e9620bea77
Author: Magnemania <89949176+Magnemania@users.noreply.github.com>
Date: Wed Mar 20 16:56:00 2024 -0400
SM64: Goal Logic and Hint Bugfixes (#2886)
commit 183ca35bba
Author: qwint <qwint.42@gmail.com>
Date: Wed Mar 20 08:39:37 2024 -0500
CommonClient: Port Casting Bug (#2975)
commit fcaaa197a1
Author: TheLX5 <luisyuregi@gmail.com>
Date: Wed Mar 20 05:56:19 2024 -0700
SMW: Fixes for Bowser being defeatable on Egg Hunt and CI2 DC room access (#2981)
commit 8f7b63a787
Author: TheLX5 <luisyuregi@gmail.com>
Date: Wed Mar 20 05:56:04 2024 -0700
SMW: Blocksanity logic fixes (#2988)
commit 6f64bb9869
Author: Scipio Wright <scipiowright@gmail.com>
Date: Wed Mar 20 08:46:31 2024 -0400
Noita: Remove newline from option description so it doesn't look bad on webhost (#2969)
commit d0a9d0e2d1
Author: Bryce Wilson <gyroscope15@gmail.com>
Date: Wed Mar 20 06:43:13 2024 -0600
Pokemon Emerald: Bump required client version (#2963)
commit 94650a02de
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date: Tue Mar 19 17:08:29 2024 -0500
Core: implement APProcedurePatch and APTokenMixin (#2536)
* initial work on procedure patch
* more flexibility
load default procedure for version 5 patches
add args for procedure
add default extension for tokens and bsdiff
allow specifying additional required extensions for generation
* pushing current changes to go fix tloz bug
* move tokens into a separate inheritable class
* forgot the commit to remove token from ProcedurePatch
* further cleaning from bad commit
* start on docstrings
* further work on docstrings and typing
* improve docstrings
* fix incorrect docstring
* cleanup
* clean defaults and docstring
* define interface that has only the bare minimum required
for `Patch.create_rom_file`
* change to dictionary.get
* remove unnecessary if statement
* update to explicitly check for procedure, restore compatible version and manual override
* Update Files.py
* remove struct uses
* ensure returning bytes, add token type checking
* Apply suggestions from code review
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* pep8
---------
Co-authored-by: beauxq <beauxq@yahoo.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* Changes pot_completed_list to a instance variable instead of global.
Changes pot_completed_list to a instance variable instead of global. The global variable was unintentional and was causing missmatch in pre_fill which would cause generation error.
* Removing deprecated options getter
* Adds back fix from main branch
Adds back fix from main branch
* Removing messenger changes that somehow got on my branch?
Removing messenger changes that somehow got on my branch?
* Removing messenger changes that are somehow on the Shivers branch
Removing messenger changes that are somehow on the Shivers branch
* Still trying to remove Messenger changes on Shivers branch
Still trying to remove Messenger changes on Shivers branch
* Review comments addressed. Early lobby access set as default.
Review comments addressed. Early lobby access set as default.
* Review comments addressed
Review comments addressed
* Review comments addressed. Option for priority locations removed.
Option to have ixupi captures a priority has been removed and can be added again if Priority Fill is changed. See Issues #3467.
* Minor Change
Minor Change
* Fixed ID 10 T Error
Fixed ID 10 T Error
* Front door option added to slot data
Front door option added to slot data
* Add missing .value on slot data
Add missing .value on slot data
* Small change to slot data
Small change to slot data
* Small change to slot data
Why didn't this change get pushed github...
* Forgot list
Forgot list
---------
Co-authored-by: Kory Dondzila <korydondzila@gmail.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Bomb Rush Cyberfunk: Fix Coil quest being in glitched logic too early (#3720)
* Update Rules.py
* Update Rules.py
* Options: Always verify keys for VerifyKeys options (#3280)
* Options: Always verify keys for VerifyKeys options
* fix PlandoTexts
* use OptionError and give a slightly better error message for which option it is
* add the player name to the error
* don't create an unnecessary list
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Docs: Add FFMQ French Setup Guide + Minor fixes to English Guide (#3590)
* Add docs
* Fix character
* Configuration
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* ajuster
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* inclure
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* doublon
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* remplissage
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* autre
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* pouvoir
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* mappemonde
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* apostrophes
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* virgule
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* fournir
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* apostrophes 2
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* snes9x
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* apostrophes 3
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* options
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* lien
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* de laquelle
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* Étape de génération
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* apostrophes 4
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* également
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* guillemets
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* guillemets 2
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* adresse
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* Connect
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* seed
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
* Changer fichier yaml pour de configuration
* Fix capitalization
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
* Fix capitalization 2
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
* Fix typo+Add link to fr/en info page
---------
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
* Spire: Convert options, clean up random calls, and add DeathLink (#3704)
* Convert StS options
* probably a bad idea
* Update worlds/spire/Options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
---------
Co-authored-by: Kono Tyran <Kono@koifysh.dev>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Core: fix missing import for `MultiWorld.link_items()` (#3731)
* Pokemon R/B: Removing Floats from NamedRange #3717
* Docs: Missed Full Accessibility mention/conversion #3734
* ChecksFinder: Refactor/Cleaning (#3725)
* Update ChecksFinder
* minor cleanup
* Check for compatible name
* Enable APWorld
* Update setup_en.md
* Update en_ChecksFinder.md
* The client is getting updated instead
* Qwint suggestions, ' -> ", streamline fill_slot_data
* Oops, too many refactors
---------
Co-authored-by: SunCat <suncat.game@ya.ru>
* OSRS: Implement New Game (#1976)
* MMBN3: Press program now has proper color index when received remotely
* Initial commit of OSRS untangled from MMBN3 branch
* Fixes some broken region connections
* Removes some locations
* Rearranges locations to fill in slots left by removed locations
* Adds starting area rando
* Moves Oak and Willow trees to resource regions
* Fixes various PEP8 violations
* Refactor of regions
* Fixes variable capture issue with region rules
* Partial completion of brutal grind logic
* Finishes can_reach_skill function
* Adds skill requirements to location rules, fixes regions rules
* Adds documentation for OSRS
* Removes match statement
* Updates Data Version to test mode to prevent item name caching
* Fixes starting spawn logic for east varrock
* Fixes river lum crossing logic to not assume you can phase across water
* Prevents equipping items when you haven't unlocked them
* Changes canoe logic to not require huge levels
* Skeletoning out some data I'll need for variable task system
* Adds csvs and parser for logic
* Adds Items parsing
* Fixes the spawning logic to not default to Chunksanity when you didn't pick it
* Begins adding generation rules for data-driven logic
* Moves region handling and location creating to different methods
* Adds logic limits to Options
* Begun the location generation has
* Randomly generates tasks for each skill until populated
* Mopping up improper names, adding custom logic, and fixes location rolling
* Drastically cleans up the location rolling loop
* Modifies generation to properly use local variables and pass unit tests
* Game is now generating, but rules don't seem to work
* Lambda capture, my old nemesis. We meet again
* Fixes issue with Corsair Cove item requirement causing logic loop
* Okay one more fix, another variable capture
* On second thought lets not have skull sceptre tasks. 'Tis a silly place
* Removes QP from item pool (they're events not items)
* Removes Stronghold floor tasks, no varbit to track them
* Loads CSV with pkutil so it can be used in apworld
* Fixes logic of skill tasks and adds QP requirements to long grinds
* Fixes pathing in pkgutil call
* Better handling for empty task categories, no longer throws errors
* Fixes order for progressive tasks, removes un-checkable spider task
* Fixes logic issues related to stew and the Blurite caves
* Fixes issues generating causing tests to sporadically fail
* Adds missing task that caused off-by-one error
* Updates to new Options API
* Updates generation to function properly with the Universal Tracker (Thanks Faris)
* Replaces runtime CSV parsing with pre-made python files generated from CSVs
* Switches to self.random and uses random.choice instead of doing it manually
* Fixes to typing, variable names, iterators, and continue conditions
* Replaces Name classes with Enums
* Fixes parse error on region special rules
* Skill requirements check now returns an accessrule instead of being one that checks options
* Updates documentation and setup guide
* Adjusts maximum numbers for combat and general tasks
* Fixes region names so dictionary lookup works for chunksanity
* Update worlds/osrs/docs/en_Old School Runescape.md
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
* Update worlds/osrs/docs/en_Old School Runescape.md
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
* Updates readme.md and codeowners doc
* Removes erroneous East Varrock -> Al Kharid connection
* Changes to canoe logic to account for woodcutting level options
* Fixes embarassing typo on 'Edgeville'
* Moves Logic CSVs to separate repository, addresses suggested changes on PR
* Fixes logic error in east/west lumbridge regions. Fixes incorrect List typing in main
* Removes task types with weight 0 from the list of rollable tasks
* Missed another place that the task type had to be removed if 0 weight
* Prevents adding an empty task weight if levels are too restrictive for tasks to be added
* Removes giant blank space in error message
* Adds player name to error for not having enough available tasks
---------
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
* TUNIC: Fix missing traversal req #3740
* TUNIC: Sort entrances in the spoiler log (#3733)
* Sort entrances in spoiler log
* Rearrange portal list to closer match the vanilla game order, for better spoiler and because I already did this mod-side
* Add break (thanks vi)
* KH2: Update the docs to support steam in the setup guide (#3711)
* doc updates
* add steam link
* Update worlds/kh2/docs/setup_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update setup_en.md
* Forgot to include these
* Consistent styling
* :)
* version 3.3.0
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* RoR2: Remove recursion from explore mode access rules (#3681)
The access rules for "<Environment name> Chest n", "<Environment name>
Shrine n" etc. locations recursively called state.can_reach() for the
n-1 location name, with the n=1 location being the only location to have
the actual access rule set.
This patch removes the recursion, instead setting the actual access rule
directly on each location, increasing the performance of checking
accessibility of n>1 locations.
Risk of Rain 2 was already quite fast to generate despite the recursion
in the access rules, but with this patch, generating a multiworld with
200 copies of the template RoR2 yaml (and progression balancing
disabled through a meta.yaml) goes from about 18s to about 6s for me.
From generating the same seed before and after this patch, the same
result is produced.
* Aquaria: Logic bug fixes (#3679)
* Fixing logic bugs
* Require energy attack in the cathedral and energy form in the body
* King Jelly can be beaten easily with only the Dual Form
* I think that I have a problem with my left and right...
* There is a monster that is blocking the path, soo need attack to pass
* The Li cage is not accessible without the Sunken city boss
* Removing useless space.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Two more minors logic modification
* Adapting tests to af9b6cd
* Reformat the Region file
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* HK: add grub hunt goal (#3203)
* makes grub hunt goal option that calculates the total available grubs (including item link replacements) and requires all of them to be gathered for goal completion
* update slot data name for grub count
* add option to set number needed for grub hub
* updates to grub hunt goal based on review
* copy/paste fix
* account for 'any' goal and fix overriding non-grub goals
* making sure godhome is in logic for any and removing redundancy on completion condition
* fix typing
* i hate typing
* move to stage_pre_fill
* modify "any" goal so all goals are in logic under minimal settings
* rewrite grub counting to create lookups for grubs and groups that can be reused
* use generator instead of list comprehension
* fix whitespace merging wrong
* minor code cleanup
* DS3: Version 3.0.0 (#3128)
* Update worlds/dark_souls_3/Locations.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Fix Covetous Silver Serpent Ring location
* Update location groups
This should cover pretty much all of the seriously hidden items. It
also splits out miniboss drops, mimic drops, and hostile NPC drops.
* Remove the "Guarded by Keys" group
On reflection, I don't think this is actually that useful. It'll also
get a lot muddier once we can randomize shops and ashes become
pseudo-"keys".
* Restore Knight Slayer's Ring classification
* Support infusions/upgrades in the new DS3 mod system
* Support random starting loadouts
* Make an item's NPC status orthogonal to its category
* Track location groups with flags
* Track Archipelago/Offline mismatches on the server
Also fix a few incorrect item names.
* Add additional locations that are now randomizable
* Don't put soul and multiple items in shops
* Add an option to enable whether NG+ items/locations are included
* Clean up useful item categorization
There are so many weapons in the game now, it doesn't make sense to
treat them all as useful
* Add more variety to filler items
* Iron out a few bugs and incompatibilities
* Fix more silly bugs
* Get tests passing
* Update options to cover new item types
Also recategorize some items.
* Verify the default values of `Option`s.
Since `Option.verify()` can handle normalization of option names, this allows options to define defaults which rely on that normalization. For example, it allows a world to exclude certain locations by default.
This also makes it easier to catch errors if a world author accidentally sets an invalid default.
* Make a few more improvements and fixes
* Randomize Path of the Dragon
* Mark items that unlock checks as useful
These items all unlock missable checks, but they're still good to ahve in the game for variety's sake.
* Guarantee more NPC quests are completable
* Fix a syntax error
* Fix rule definition
* Support enemy randomization
* Support online Yhorm randomization
* Remove a completed TODO
* Fix tests
* Fix force_unique
* Add an option to smooth out upgrade item progression
* Add helpers for setting location/entrance rules
* Support smoother soul item progression
* Fill extra smoothing items into conditional locations as well as other worlds
* Add health item smoothing
* Handle infusions at item generation time
* Handle item upgrades at genreation time
* Fix Grave Warden's Ashes
* Don't overwrite old rules
* Randomize items based on spheres instead of DS3 locations
* Add a smoothing option for weapon upgrades
* Add rules for crow trades
* Small fixes
* Fix a few more bugs
* Fix more bugs
* Try to prevent Path of the Dragon from going somewhere it doesn't work
* Add the ability to provide enemy presets
* Various fixes and features
* Bug fixes
* Better Coiled Sword placement
* Structure DarkSouls3Location more like DarkSouls3Item
* Add events to make DS3's spheres more even
* Restructure locations to work like items do now
* Add rules for more missable locations
* Don't add two Storm Rulers
* Place Hawk Ring in Farron Keep
* Mark the Grass Crest Shield as useful
* Mark new progression items
* Fix a bug
* Support newer better Path of the Dragon code
* Don't lock the player out of Coiled Sword
* Don't create events for missable locations
* Don't throw strings
* Don't smooth event items
* Properly categorize Butcher Knife
* Be more careful about placing Yhorm in low-randomization scenarios
* Don't try to smooth DLC items with DLC disabled
* Fix another Yhorm bug
* Fix upgrade/infusion logic
* Remove the PoolType option
This distinction is no longer meaningful now that every location in
the game of each type is randomized
* Categorize HWL: Red Eye Orb as an NPC location
* Don't place Storm Ruler on CA: Coiled Sword
* Define flatten() locally to make this APWorld capable
* Fix some more Leonhard weirdness
* Fix unique item randomization
* Don't double Twin Dragon Greatshield
* Remove debugging print
* Don't add double Storm Ruler
Also remove now-redundant item sorting by category in create_items.
* Don't add double Storm Ruler
Also remove now-redundant item sorting by category in create_items.
* Add a missing dlc_enabled check
* Use nicer options syntax
* Bump data_version
* Mention where Yhorm is in which world
* Better handle excluded events
* Add a newline to Yhorm location
* Better way of handling excluded unradomized progression locations
* Fix a squidge of nondeterminism
* Only smooth items from this world
* Don't smooth progression weapons
* Remove a location that doesn't actually exist in-game
* Classify Power Within as useful
* Clarify location names
* Fix location requirements
* Clean up randomization options
* Properly name Coiled Sword location
* Add an option for configuring how missable items are handled
* Fix some bugs from location name updates
* Fix location guide link
* Fix a couple locations that were busted offline
* Update detailed location descriptions
* Fix some bugs when generating for a multiworld
* Inject Large Leather Shield
* Fix a few location issues
* Don't allow progression_skip_balancing for unnecessary locs
* Update some location info
* Don't uniquify the wrong items
* Fix some more location issues
* More location fixes
* Use hyphens instead of parens for location descriptions
* Update and fix more locations
* Fix Soul of Cinder boss name
* Fix some logic issues
* Add item groups and document item/location groups
* Fix the display name for "Impatient Mimics"
* Properly handle Transposing Kiln and Pyromancer's Flame
* Testing
* Some fixes to NPC quests, late basin, and transposing kiln
* Improve a couple location names
* Split out and improve missable NPC item logic
* Don't allow crow trades to have foreign items
* Fix a variable capture bug
* Make sure early items are accessible early even with early Castle
* Mark ID giant slave drops as missable
* Make sure late basin means that early items aren't behind it
* Make is_location_available explicitly private
* Add an _add_item_rule utility that checks availability
* Clear excluded items if excluded_locations == "unnecessary"
* Don't allow upgrades/infusions in crow trades
* Fix the documentation for deprecated options
* Create events for all excluded locations
This allows `can_reach` logic to work even if the locations are
randomized.
* Fix up Patches' and Siegward's logic based on some manual testing
* Factor out more sub-methods for setting location rules
* Oops, left these in
* Fixing name
* Left that in too
* Changing to NamedRange to support special_range_names
* Alphabetizing
* Don't call _is_location_available on foreign locations
* Add missing Leonhard items
* Changing late basin to have a post-small-doll option
* Update basin option, add logic for some of Leonhard Hawkwood and Orbeck
* Simplifying an option, fixing a copy-paste error
* Removing trailing whitespace
* Changing lost items to go into start inventory
* Revert Basin changes
* Oops
* Update Options.py
* Reverting small doll changes
* Farron Keep boss requirement logic
* Add Scroll for late_dlc
* Fixing excluded unnecessary locations
* Adding Priestess Ring as being after UG boss
* Removing missable from Corvian Titanite Slab
* Adding KFF Yhorm boss locks
* Screams about Creighton
* Elite Knight Set isn't permanently missable
* Adding Kiln requirement to KFF
* fixing valid_keys and item groups
* Fixing an option-checker
* Throwing unplaceable Storm Ruler into start inventory
* Update locations
* Refactor item injection
* Update setup doc
* Small fixes
* Fix another location name
* Fix injection calculation
* Inject guaranteed items along with progression items
* Mark boss souls as required for access to regions
This allows us to set quest requirements for boss souls and have them
automatically propagated to regions, means we need less machinery for
Yhorm bosses, and allows us to get rid of a few region-transition
events.
* Make sure Sirris's quest can be completed before Pontiff
* Removing unused list
* Changing dict to list
* Removing unused test
* Update __init__.py
* self.multiworld.random -> self.random (#9)
* Fix some miscellaneous location issues
* Rewrite the DS3 intro page/FAQ
* Removing modifying the itempool after fill (#7)
Co-authored-by: Natalie Weizenbaum <nweiz@google.com>
* Small fixes to the setup guide (#10)
Small fixes, adding an example for connecting
* Expanded Late Basin of Vows and Late DLC (#6)
* Add proper requirements for CD: Black Eye Orb
* Fix Aldrich's name
* Document the differences with the 2.x.x branch
* Don't crash if there are more items than locations in smoothing
* Apply suggestions from code review
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
* Code review
* Fix _replace_with_filler
* Don't use the shared flatten function in SM
* Track local items separately rather than iterating the multiworld
* Various formatting/docs changes suggested by PyCharm (#12)
* Drop deprecated options
* Rename "offline randomizer" to "static randomizer" which is clearer
* Move `enable_*_locations` under removed options.
* Avoid excluded locations for locally-filled items
* Adding Removed options to error (#14)
* Changes for WebHost options display and the options overhaul
* unpack iterators in item list (#13)
* Allow worlds to add options to prebuilt groups
Previously, this crashed because `typing.NamedTuple` fields such as
`group.name` aren't assignable. Now it will only fail for group names
that are actually incorrectly cased, and will fail with a better error
message.
* Style changes, rename exclude behavior options, remove guaranteed items option
* Spacing/Formatting (#18)
* Various Fixes (#19)
* Universally Track Yhorm (#20)
* Account for excluded and missable
* These are behaviors now
* This is singular, apparently
* Oops
* Fleshing out the priority process
* Missable Titanite Lizards and excluded locations (#22)
* Small style/efficiency changes
* Final passthrough fixes (#24)
* Use rich option formatting
* Make the behavior option values actual behaviors (#25)
* Use !=
* Remove unused flatten utility
* Some changes from review (#28)
* Fixing determinism and making smooth faster (#29)
* Style change
* PyCharm and Mypy fixes (#26)
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Change yhorm default (#30)
* Add indirect condition (#27)
* Update worlds/dark_souls_3/docs/locations_en.md
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
* Ship all item IDs to the client
This avoids issues where items might get skipped if, for instance,
they're only in the starting inventory.
* Make sure to send AP IDs for infused/upgraded weapons
* Make `RandomEnemyPresetOption` compatible with ArchipelagoMW/Archipelago#3280 (#31)
* Fix cast
* More typing and small fixes (#32)
---------
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: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Core: Check parent_region.can_reach first in Location.can_reach (#3724)
* Core: Check parent_region.can_reach first in Location.can_reach
The comment about self.access_rule computing faster on average appears
to no longer be correct with the current caching system for region
accessibility, resulting in self.parent_region.can_reach computing
faster on average.
Generation of template yamls for each game that does not require a rom
to generate, generated with `python -O .\Generate.py --seed 1`
(all durations averaged over at 4 or 5 generations):
Full generation with `spoiler: 1` and no progression balancing:
89.9s -> 72.6s
Only output from above case:
2.6s -> 2.2s
Full generation with `spoiler: 3` and no progression balancing:
769.9s -> 627.1s
Only playthrough calculation + paths from above case:
680.5s -> 555.3s
Full generation with `spoiler: 1` with default progression balancing:
123.5s -> 98.3s
Only progression balancing from above case:
11.3s -> 9.6s
* Update BaseClasses.py
* Update BaseClasses.py
* Update BaseClasses.py
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Core: Speed up CollectionState.copy() using built-in copy methods (#3678)
All the types being copied are built-in types with their own `copy()`
methods, so using the `copy` module was a bit overkill and also slower.
This patch replaces the use of the `copy` module in
`CollectionState.copy()` with using the built-in `.copy()` methods.
The copying of `reachable_regions` and `blocked_connections` was also
iterating the keys of each dictionary and then looking up the value in
the dictionary for that key. It is faster, and I think more readable, to
iterate the dictionary's `.items()` instead.
For me, when generating a multiworld including the template yaml of
every world with `python -O .\Generate.py --skip_output`, this patch
saves about 2.1s. The overall generation duration for these yamls varies
quite a lot, but averages around 160s for me, so on average this patch
reduced overall generation duration (excluding output duration) by
around 1.3%.
Timing comparisons were made by calling time.perf_counter() at the start
and end of `CollectionState.copy()`'s body, and summing the differences
between the starts and ends of the method body into a global variable
that was printed at the end of generation.
Additional timing comparisons were made, using the `timeit` module, of
the individual function calls or dictionary comprehensions used to
perform the copying.
The main performance cost was `copy.deepcopy()`, which gets slow as the
number of keys multiplied by the number of values within the
sets/Counters gets large, e.g., to deepcopy a `dict[int, Counter[str]]`
with 100 keys and where each Counter contains 100 keys was 30x slower
than most other tested copying methods. Increasing the number of dict
keys or Counter keys only makes it slower.
* HK: fix iterating all worlds instead of only HK worlds in stage_pre_fill (#3750)
Would cause generation to fail when generating with HK and another game.
Mistake in 6803c373e5.
* DOOM, DOOM II: Update steam URLs (#3746)
* TLOZ: world: multiworld (#3752)
* SoE: fix determinism (#3745)
Fixes randomly placed ingredients not being deterministic (depending on settings)
and in turn also fixes logic not being deterministic if they get replaced by fragments.
* Core: fix invalid __package__ of zipped worlds (#3686)
* fix invalid package fix
* add comment describing fix
* Clique: Update to new options API (#3759)
* Timespinner: Fix eels check logic #3777
* TUNIC: Add note to Universal Tracker stuff #3772
* Core: change start inventory from pool to warn when nothing to remove (#3158)
* makes start inventory from pool warn and fixes the itempool to match when it can not find a matching item to remove
* calc the difference correctly
* save new filler and non-removed items differently so we don't remove existing items at random
* Undertale: Fix slot_data and options.as_dict() (#3774)
* Undertale: Fixing slot_data
* Booleans were difficult
* Core: Error on empty options.as_dict (#3773)
* Error on empty options.as_dict
* ValueError instead
* Apply suggestions from code review
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
---------
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Core: Remove broken unused code from Options.py (#3781)
"Unused" is a baseless assertion, but this code path has been crashing on the first statement for 6 months and noone's complained
* Core: Two Small Fixes (#3782)
* Core: recontextualize `CollectionState.collect` (#3723)
* Core: renamed `CollectionState.collect` arg from `event` to `prevent_sweep` and remove forced collection
* Update TestDungeon.py
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Core: dump all item placements for generation failures. (#3237)
* Core: dump all item placements for generation failures
* pass the multiworld from remaining fill
* change how the args get handled to fix formatting
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Tests: fix the all games multiworld test (#3788)
* TUNIC: Swap from multiworld.get to world.get for applicable things (#3789)
* Swap from multiworld.get to world.get for applicable things
* Why was this even here in the first place?
* I have no idea (#3791)
* TUNIC: Add off and on aliases for the Entrance Rando option #3794
* Stardew Valley: Add Quality Bobber in the logic rules for fish quality gold and above #3792
* Core: Require excluded locations to be reachable with full/locations accessibility (#3802)
* Make excludeds reachable
* Update all_state tests
* Lingo: Fixed Initiated-side Eight Door not opening (#3793)
* TUNIC: Give the fox a gun (in logic) (very small PR) (#3790)
* Add bomb wall logic
* Remove option call from can_shop
* Gun for the envoy blocking Quarry
* has_sword -> can_shop on cube cave entrance region
* TLOZ: Fix non-deterministic item pool generation (#3779)
* TLOZ: Fix non-deterministic item pool generation
The way the item pool was constructed involved iterating unions of sets.
Sets are unordered, so the order of iteration of these combined sets
would be non-deterministic, resulting in the items in the item pool
being generated in a different order with the same seed.
Rather than creating unions of sets at all, the original code has been
replaced with using Counter objects. As a dict subclass, Counter
maintains insertion order, and its update() method makes it simple to
combine the separate item dictionaries into a single dictionary with the
total count of each item across each of the separate item dictionaries.
Fixes#3664 - After investigating more deeply, the only differences I
could find between generations of the same seed was the order of items
created by TLOZ, so this patch appears to fix the non-deterministic
generation issue. I did manage to reproduce the non-deterministic
behaviour with just TLOZ in the end, but it was very rare. I'm not
entirely sure why generating with SMZ3 specifically would cause the
non-deterministic behaviour in TLOZ to be frequently present, whereas
generating with other games or multiple TLOZ yamls would not.
* Change import order
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Docs: Update 'tag' documentation (#3632)
* Add tag docs for HintGame
* Apply suggestions from code review
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Make Tracker/TextOnly consistent with previous commit
* Apply suggestion
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* fix spacing
* Apply suggestion
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* apply suggestion correcting footnotes
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
---------
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* [OSRS] Fixes Incorrect filler item names causing failures on tests. (#3768)
* Updates filler item names to match the actual item names
* Adds more descriptive error message in case this error comes back
* Properly raises exception instead of just text
* Replaces exception with assert
* Fix !remaining for cross-world items (#3732)
* Fix !remaining for other worlds
* Typing fixes for the previous change
* Update LocationStore test to match what get_remaining now returns
* Core: early_local != local_early #3780
* Pokemon Emerald: Ensure dig tutor is always usable (#3660)
* Pokemon Emerald: Ensure dig tutor is always usable
* Pokemon Emerald: Clarify comment
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Core: type for `CommonContext.ui` (#3796)
* Core: type for `CommonContext.ui`
* use `Optional`
* VVVVVV: Make unnecessary Trinkets filler (#3806)
* Make unnecessary trinkets filler
* Proper syntax
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Kingdom Hearts: Implement New Game (#3201)
* Added Final Ansem Goal
* Update __init__.py
* Update Rules.py
* New EotW logic
* Update __init__.py
* Update __init__.py
* Update Items.py
* Update Rules.py
* Rename Location to be more meaningful, logic fixes
* Removed Aerith locations
* Change to allow randomized keyblade stats
* Fixed incorrect option description. Fixed victory locations for alternative win condition settings
* Commit
* Lots of changes
* Fixes
* Fixes
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Fixes
* Update Rules.py
* Update Rules.py
* Update Options.py
* Old Book is not required
* Added Jungle Slider
* Add Cid Check
* Add Wonderland Book Check
* Add OC Green Trinity
* Add Inferno Band Event
* Add Kurt Zisa Zantetsuken and Unknown EXP Necklace checks
* Update Locations.py
* Fix Final Ansem Goal
* Update __init__.py
* Update __init__.py
* Add options to exclude super bosses and 100 acre wood
* Fix puppies trp, remove cid check
* Fix 100 Acre Wood Option
* Material to Empty Bottle
* Fixed rules, location names, etc
* Fix super bosses
* Add item + location groups, level sanity
* Fix location and item group names
* Add Bad Starting Weapons Option
* Logic Error for 100 Acre Wood
* Update Rules.py
* Update __init__.py
* Fixes related to randomized keyblade stats and super bosses
* Credits and Fixes
* Logic fixes, location name group changes
* Update Options.py
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update .gitignore
* Update CODEOWNERS
* Update docs/CODEOWNERS
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Fixed Atlantica item group name
* Update CODEOWNERS
* Update Client.py
* Update Items.py
* Update __init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Fixed report group name
* Fixes for PR
* Update Options.py
* Push changes for making the Final Rest Door appear, few option fixes
* Update Rules.py
* Website formatting, 0 min for reports, option description typo
* Create KH1Client.py
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Options.py
* Update Options.py
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Add Donald and Goofy Death Link
* Add fight logic for optional bosses
* Update __init__.py
* Update Options.py
* Update worlds/kh1/Options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Client.py
* Update kh1_en.md
* Update __init__.py
* Cleaning up for PR
* Update Client.py
* Added event locations for vanilla items
* Add proper location groups and auto hint synth shop items when entering
* so many changes
* Update Rules.py
* fixed oathkeeper and crabclaw logic
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Update en_Kingdom Hearts.md
* Update en_Kingdom Hearts.md
* fixing text
* Update kh1_en.md
* Addition of new key items
* Update Regions.py
* Push for start item from pool test
* Update worlds/kh1/Options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Document update
* Update Rules.py
* Added starting world range and final rest goal option
* Update kh1_en.md
* Update en_Kingdom Hearts.md
* Update __init__.py
* Update __init__.py
* Clean up options descriptions
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Client.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Fix grammar in document
* Update __init__.py
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Removed return type
* Update __init__.py
* Update __init__.py
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update __init__.py
* Fix missing i replacement, rework set rules to use "self" instead of a million arguments
* Update KH1Client.py
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* Reformat rules, fix bug with exp mult, add to readme
* Clean up regions, fix client
* Fix item send prompt
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/test/test_goal.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Items.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Locations.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Regions.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Locations.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Locations.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Items.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Regions.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Regions.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* Fix so many suggestions
* removed junk in missable locations option
* Update __init__.py
* Change credits order
* Update en_Kingdom Hearts.md
* Standardize punctuation
* Update en_Kingdom Hearts.md
* Update en_Kingdom Hearts.md
* Update Regions.py
* Removed "disclude" options in generation fillers
* Update Rules.py
* Update __init__.py
* Fix cemetery typo
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Add option groups and option presets
* Update worlds/kh1/__init__.py
That's a good idea!
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Presets.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* fixed HB rule and formatting on a line in Items.py
* Fix logic bug with Geppetto's House postcard
* Update Rules.py
* Update Options.py
* Update __init__.py
* Update __init__.py
* Huge under-the-hood update for PR
* More updates for PR
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update __init__.py
---------
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Core: Fix incorrect default state checked in MultiWorld.can_beat_game (#3813)
`MultiWorld.can_beat_game()` with no arguments would initially check if
`self.state` is beatable, but then would create an empty state,
`state = CollectionState(self)`, to sweep spheres from to determine if
the game is beatable. The issue was that `self.state` and the new empty
state could be different.
Currently, it seems that everywhere in Archipelago's codebase that calls
`MultiWorld.can_beat_game()` with no arguments or `starting_state=None`
has a `self.state` that only contains precollected items, so the new
empty state happens to result in an equivalent state, but this should
not be relied upon to always be the case.
This patch changes `can_beat_game()` to initially check if the new empty
state is beatable instead of `self.state`.
This appears to be a bug introduced way back in 27b6dd8bd7Fixes#3742
* The Witness: Fix Tunnels Theater Flower EP Access Logic + Add Unit Test for it (and Expert PP2) (#3807)
* 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
* Docs: `NetworkItem.player` (#3811)
* Docs: `NetworkItem.player`
In many contexts, it's difficult to tell whether this is the sending player or the receiving player.
* correct player info
* Update NetUtils.py
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
---------
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
* Minecraft: Update to new options system. (#3765)
* Move to new options system.
switch to using self.random
reformat rules file.
* further reformats
* fix tests to use new options system.
* fix slot data to not use self.multiworld
* I hate python
* new starting_items docstring to prepare for 1.20.5+ item components.
fix invalid json being output to starting_items
* more typing fixes.
* stupid quotes around type declarations
* removed unused variable in ItemPool.py
change null check in Structures.py
* update rules "self" variable to a "world: MinecraftWorld" variable
* get key, and not value for required bosses.
* The Witness: Panel Hunt Mode (#3265)
* 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>
* The Witness: Add "vague" hints making use of other games' region names and location groups (#2921)
* 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>
* Mega Man 2: Implement New Game (#3256)
* initial (broken) commit
* small work on init
* Update Items.py
* beginning work, some rom patches
* commit progress from bh branch
* deathlink, fix soft-reset kill, e-tank loss
* begin work on targeting new bhclient
* write font
* definitely didn't forget to add the other two hashes no
* update to modern options, begin colors
* fix 6th letter bug
* palette shuffle + logic rewrite
* fix a bunch of pointers
* fix color changes, deathlink, and add wily 5 req
* adjust weapon weakness generation
* Update Rules.py
* attempt wily 5 softlock fix
* add explicit test for rbm weaknesses
* fix difficulty and hard reset
* fix connect deathlink and off by one item color
* fix atomic fire again
* de-jank deathlink
* rewrite wily5 rule
* fix rare solo-gen fill issue, hopefully
* Update Client.py
* fix wily 5 requirements
* undo fill hook
* fix picopico-kun rules
* for real this time
* update minimum damage requirement
* begin move to procedure patch
* finish move to APPP, allow rando boobeam, color updates
* fix color bug, UT support?
* what do you mean I forgot the procedure
* fix UT?
* plando weakness and fixes
* sfx when item received, more time stopper edge cases
* Update test_weakness.py
* fix rules and color bug
* fix color bug, support reduced flashing
* major world overhaul
* Update Locations.py
* fix first found bugs
* mypy cleanup
* headerless roms
* Update Rom.py
* further cleanup
* work on energylink
* el fixes
* update to energylink 2.0 packet
* energylink balancing
* potentially break other clients, more balancing
* Update Items.py
* remove startup change from basepatch
we write that in patch, since we also need to clean the area before applying
* el balancing and feedback
* hopefully less test failures?
* implement world version check
* add weapon/health option
* Update Rom.py
* x/x2
* specials
* Update Color.py
* Update Options.py
* finally apply location groups
* bump minor version number instead
* fix duplicate stage sends
* validate wily 5, tests
* see if renaming fixes
* add shuffled weakness
* remove passwords
* refresh rbm select, fix wily 5 validation
* forgot we can't check 0
* oops I broke the basepatch (remove failing test later)
* fix solo gen fill error?
* fix webhost patch recognition
* fix imports, basepatch
* move to flexibility metric for boss validation
* special case boobeam trap
* block strobe on stage select init
* more energylink balancing
* bump world version
* wily HP inaccurate in validation
* fix validation edge case
* save last completed wily to data storage
* mypy and pep8 cleanup
* fix file browse validation
* fix test failure, add enemy weakness
* remove test seed
* update enemy damage
* inno setup
* Update en_Mega Man 2.md
* setup guide
* Update en_Mega Man 2.md
* finish plando weakness section
* starting rbm edge case
* remove * imports
* properly wrap later weakness additions in regen playthrough
* fix import
* forgot readme
* remove time stopper special casing
since we moved to proper wily 5 validation, this special casing is no longer important
* properly type added locations
* Update CODEOWNERS
* add animation reduction
* deprioritize Time Stopper in rush checks
* special case wily phase 1
* fix key error
* forgot the test
* music and general cleanup
* the great rename
* fix import
* thanks pycharm
* reorder palette shuffle
* account for alien on shuffled weakness
* apply suggestions
* fix seedbleed
* fix invalid buster passthrough
* fix weakness landing beneath required amount
* fix failsafe
* finish music
* fix Time Stopper on Flash/Alien
* asar pls
* Apply suggestions from code review
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* world helpers
* init cleanup
* apostrophes
* clearer wording
* mypy and cleanup
* options doc cleanup
* Update rom.py
* rules cleanup
* Update __init__.py
* Update __init__.py
* move to defaultdict
* cleanup world helpers
* Update __init__.py
* remove unnecessary line from fill hook
* forgot the other one
* apply code review
* remove collect
* Update rules.py
* forgot another
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Blasphemous: Total overhaul (#3355)
* Blasphemous: WIP overhaul
* Entrance rule mistake
* stuff
* Getting closer
* Real?? Maybe??
* Don't fail me now 🙏
* Add starting location tests
* More tests (it still doesn't work actually 😔)
* REAL
* Add unreachable regions to test_reachability.py
* PR ready
- Remove unused functions from init
- Use group exclusive functions in rules
- Style changes
* Bump required client version
* Clean up unused imports
* Change slot data
* Review fixes
- Prevent strength calculations from including excess items
- Add new lines to ends of files
- Fix missed deprecated option and random usage in init
* Update option docstrings, add groups
* Add preprocessor files
* Update option docstrings again actually
* Update player strength calculation
* Rename group methods
* Fix missing logic for RESCUED_CHERUB_06
* Register indirect conditions
* Register indirect conditions (part 2)
* Update extracted logic, change slot data key
* Add region to excluded list
* A capital letter
* Use camelCase keys in preprocessor
* Write some of new setup guide
* Remove indents before list points
* Change locationinfo to list of dictonaries
* Finish docs, update extractor config and data
* Mark region_data.py as generated
* Suggested changes
* More suggested changes
* Suggested changes again
- Use OptionError
- Create list of disabled locations before looping
- Check if options are equal to str instead of int
- Clean up start location override
- Reword some of setup guide
- Organize location list
- Remove unnecessary escaped quotes from option docstrings
- Add world type to test base
* C# moment
* Requested changes
* Update .gitattributes
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* MM2: fix Wily 5 Time Stopper rule (#3824)
* fix time stopper rule
* that was the entirely wrong rule actually
* YachtDice: implement new game (#3482)
* Add the yacht dice (from other git) world to the yacht dice fork
* Update .gitignore
* Removed zillion because it doesn't work
* Update .gitignore
* added zillion again...
* Now you can have 0 extra fragments
* Added alt categories, also options
* Added item categories
* Extra categories are now working! 🐶
* changed options and added exceptions
* Testing if I change the generate.py
* Revert "Testing if I change the generate.py"
This reverts commit 7c2b3df6170dcf8d8f36a1de9fcbc9dccdec81f8.
* ignore gitignore
* Delete .gitignore
* Update .gitignore
* Update .gitignore
* Update logic, added multiplicative categories
* Changed difficulties
* Update offline mode so that it works again
* Adjusted difficulty
* New version of the apworld, with 1000 as final score, always
Will still need to check difficulty and weights of adding items.
Website is not ready yet, so this version is not usable yet :)
* Changed yaml and small bug fixes
Fix when goal and max are same
Options: changed chance to weight
* no changes, just whitespaces
* changed how logic works
Now you put an array of mults and the cpu gets a couple of tries
* Changed logic, tweaked a bit too
* Preparation for 2.0
* logic tweak
* Logic for alt categories properly now
* Update setup_en.md
* Update en_YachtDice.md
* Improve performance of add_distributions
* Formatting style
* restore gitignore to APMW
* Tweaked generation parameters and methods
* Version 2.0.3
manual input option
max score in logic always 2.0.3
faster gen
* Comments and editing
* Renamed setup guide
* Improved create_items code
* init of locations: remove self.event line
* Moved setting early items to generate_early
* Add my name to CODEOWNERS
* Added Yacht Dice to the readme in list of games
* Improve performance of Yacht Dice
* newline
* Improve typing
* This is actually just slower lol
* Update worlds/yachtdice/Items.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update Options.py
* Styling
* finished text whichstory option
* removed roll and rollfragments; not used
* import; worlds not world :)
* Option groups!
* ruff styling, fix
* ruff format styling!
* styling and capitalization of options
* small comment
* Cleaned up the "state_is_a_list" a little bit
* RUFF 🐶
* Changed filling the itempool for efficiency
Now, we start with 17 extra items in the item pool, it's quite likely you need at least 17 items (~80%?).
And then afterwards, we delete items if we overshoot the target of 1000, and add items if we haven't reached an achievable score of 1000 yet. Also, no need to recompute the entire logic when adding points.
* 🐶
* Removed plando "fix"
* Changed indent of score multiplier
* faster location function
* Comments to docstrings
* fixed making location closest to goal_score be goal_score
* options format
* iterate keys and values of a dict together
* small optimization ListState
* faster collection of categories
* return arguments instead of making a list (will 🐶 later)
* Instead of turning it into a tuple, you can just make a tuple literal
* remove .keys()
* change .random and used enumerate
* some readability improvements
* Remove location "0", we don't use that one
* Remove lookup_id_to_name entirely
I for sure don't use it, and as far as I know it's not one of the mandatory functions for AP, these are item_name_to_id and location_name_to_id.
* .append instead of += for single items, percentile function changed
Also an extra comment for location ids.
* remove ) too many
* Removed sorted from category list
* Hash categories (which makes it slower :( )
Maybe I messed up or misunderstood...
I'll revert this right away since it is 2x slower, probably because of sorted instead of sort?
* Revert "Hash categories (which makes it slower :( )"
This reverts commit 34f2c1aed8c8813b2d9c58896650b82a810d3578.
* temporary push: 40% faster generation test
Small changes in logic make the generation 40% faster.
I'll have to think about how big the changes are. I suspect they are rather limited.
If this is the way to go, I'll remove the temp file and redo the YachtWeights file, I'll remove the functions there and just put the new weights here.
* Add Points item category
* Reverse changes of bad idea :)
* ruff 🐶
* Use numpy and pmf function to speed up gen
Numpy has a built-in way to sum probability mass functions (pmf).
This shaves of 60% of the generation time :D
* Revert "Use numpy and pmf function to speed up gen"
This reverts commit 9290191cb323ae92321d6c2cfcfe8c27370f439b.
* Step inbetween to change the weights
* Changed the weights to make it faster
135 -> 81 seconds on 100 random yamls
* Adjusted max_dist, split dice_simulation function
* Removed nonlocal and pass arguments instead
* Change "weight-lists" to Dict[str, float]
* Removed the return from ini_locations.
Also added explanations to cat_weights
* Choice options; dont'use .value (will ruff later)
* Only put important options in slotdata
* 🐶
* Add Dict import
* Split the cache per player, limit size to 400.
* 🐶
* added , because of style
* Update apworld version to 2.0.6
2.0.5 is the apworld I released on github to be tested
I never separately released 2.0.4.
* Multiple smaller code improvements
- changed names in YachtWeights so we don't need to translate them in Rules anymore
- we now remember which categories are present in the game, and also put this in slotdata. This we do because only one of two categories is present in a game. If for some reason both are present (plando/getitem/startinventory), we now know which category to ignore
-
* 🐶 ruff
* Mostly minimize_extra_items improvements
- Change logic, generation is now even faster (0.6s per default yaml).
- Made the option 'minimize_extra_items' do a lot more, hopefully this makes the impact of Yacht Dice a little bit less, if you want that. Here's what is also does now:
- you start with 2 dice and 2 rolls
- there will be less locations/items at the start of you game
* ruff 🐶
* Removed printing options
* Reworded some option descriptions
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Yacht Dice: setup: change release-link to latest (#3827)
On the installation page, link to the latest release, instead of the page with all releases
* ALTTP: Minor Tweaks to the Adjuster UI (#2533)
* Tweak ALTTP Adjuster padding/size to accommodate resizing
- Set minsize so the actions buttons on bottom are always visible.
- Added a minor amount of padding around the top level objects.
- Increased the size of the entry fields for roms to match general
button size.
- Updated layout calls so vertical spacing doesn't increase
between fields when maximizing the window
- Added a little bit of spacing on the rom label so it more closely
lines up with the other rom selection field
* Tweak ALTTP Adjuster padding/size to accommodate resizing
- Set minsize so the actions buttons on bottom are always visible.
- Added a minor amount of padding around the top level objects.
- Increased the size of the entry fields for roms to match general
button size.
- Updated layout calls so vertical spacing doesn't increase
between fields when maximizing the window
- Added a little bit of spacing on the rom label so it more closely
lines up with the other rom selection field
* LTTP: Fix a bug in Triforce Pieces Mode: Extra (#3784)
When triforce_pieces_mode is set to "extra", the number of Triforce pieces in the pool should be equal to the number required plus the number extra. The number available was being used in this calculation, instead of the number required.
* The Witness: Ban Excluded Panels from Panel Hunt (#3818)
* excluded panels should not be picked by panel hunt
* ban excluded panels from panel hunt
* Get rid of an unused variable
* Purge the world: multiworld evil from osrs (#3751)
* Core, some worlds: Rename sweep_for_events to sweep_for_advancements (#3571)
* 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>
* Core: some typing and cleaning in `BaseClasses.py` (#3391)
* Core: some typing and cleaning in `BaseClasses.py`
* more backwards `__repr__`
* double-quote string
* remove some end-of-line whitespace
* Celeste 64: Typo #3840
oops
* Kingdom Hearts: Make Ceiling Division Human-Readable #3839
* The Witness: Shuffle Dog (#3425)
* 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?
* The Witness: Switch to world.player_name (#3693)
* lint
* player_name
* oops lmao
* shorten
* Launcher: Update message that displays when installing a custom apworld for a game in main (#3607)
* kvui: assert kivy is not imported before kvui (#3823)
* Pokemon Emerald: Send current map to trackers (#3726)
---------
Co-authored-by: Alchav <59858495+Alchav@users.noreply.github.com>
Co-authored-by: alchav <alchav@jalchavware.com>
Co-authored-by: Phaneros <31861583+MatthewMarinets@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Remy Jette <remy@remyjette.com>
Co-authored-by: Jarno <jarnowesthof@gmail.com>
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Co-authored-by: GodlFire <46984098+GodlFire@users.noreply.github.com>
Co-authored-by: Kory Dondzila <korydondzila@gmail.com>
Co-authored-by: Trevor L <80716066+TRPG0@users.noreply.github.com>
Co-authored-by: wildham <64616385+wildham0@users.noreply.github.com>
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
Co-authored-by: Kono Tyran <Kono@koifysh.dev>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: SunCat <suncat.game@ya.ru>
Co-authored-by: digiholic <digikun@gmail.com>
Co-authored-by: JaredWeakStrike <96694163+JaredWeakStrike@users.noreply.github.com>
Co-authored-by: Mysteryem <Mysteryem@users.noreply.github.com>
Co-authored-by: Louis M <prog@tioui.com>
Co-authored-by: qwint <qwint.42@gmail.com>
Co-authored-by: Natalie Weizenbaum <nweiz@google.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: Kaito Sinclaire <ks@rosenthalcastle.org>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com>
Co-authored-by: Star Rauchenberger <fefferburbia@gmail.com>
Co-authored-by: Emily <35015090+EmilyV99@users.noreply.github.com>
Co-authored-by: Bryce Wilson <gyroscope15@gmail.com>
Co-authored-by: Scrungip <95324612+Scrungip@users.noreply.github.com>
Co-authored-by: gaithern <36639398+gaithern@users.noreply.github.com>
Co-authored-by: KonoTyran <Kono.Tyran@gmail.com>
Co-authored-by: Spineraks <markvanderboor@hotmail.com>
Co-authored-by: B1t <christopher.j.wallis@gmail.com>
Co-authored-by: Kappatechy <jmdewar@shaw.ca>
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Co-authored-by: PoryGone <98504756+PoryGone@users.noreply.github.com>
The `Time Rift - Alpine Skyline` region was incorrectly accessible from
Alpine Free Roam without Hookshot Badge or Umbrella.
One of the two regions that connects to the `Time Rift - Alpine Skyline`
region is `Alpine Free Roam`. The problem here is that
`Alpine Free Roam` corresponds to the intro section of Alpine Free Roam,
but the Time Rift is actually found in-game in what equates to the
`Alpine Skyline Area` region.
The entrance connecting `Alpine Free Roam` to `Alpine Skyline Area`
(`AFR -> Alpine Skyline Area`) requires the Hookshot Badge (and Umbrella
if umbrella logic is enabled), but because the entrance to
`Time Rift - Alpine Skyline` is placed in `Alpine Free Roam` instead, it
was missing the hookshot/umbrella requirements.
The missing Hookshot Badge and Umbrella requirements have been added to
`Rules.set_rift_rules()` and `Rules.set_default_rift_rules()`.
The entrances to the `Time Rift - Curly Tail Trail` and `Time Rift - The
Twilight Bell` regions are also in the `Alpine Free Roam` region, but
the logic for both of those entrances require event items that are only
accessible from the `Alpine Skyline Area` region.
The moderate logic for the Mafia Town Clock Tower Chest and Top of
Ruined Tower with nothing, and for clearing Rock the Boat without Ice
Hat were mistakenly using `add_rule` instead of `set_rule`, which was
adding the condition of `and True` which had no effect.
This patch corrects these moderate logic rules to use `set_rule`
instead.
* 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
* Update to Muse Dash 4.7.0 Muse Dash - Let's Rhythm Jam!
* Add the replaced song to the removed list.
* Oops add the other secret song to this list.
* Add trailing comma
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
---------
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>