Fabian Dill
44638ccc1a
Fill: fix priority_locations being undone by prog_balancing shop shuffle and other late-fills ( #513 )
2022-05-14 14:04:16 -07:00
Doug Hoskisson
c085ee47ed
variable-progression-balancing ( #356 )
2022-05-11 09:13:21 +02:00
espeon65536
f6d857b5b5
Core: make progression balancing deterministic ( #295 )
2022-05-11 04:12:26 +02:00
Fabian Dill
491e6c8730
HK: don't progression balance "Currency"-like progression items ( #419 )
...
* HK: don't progression balance "Currency"-like progression items
* only skip prog balancing on charms that don't unlock checks by themselves
Co-authored-by: Kono Tyran <HAklowner@gmail.com>
2022-04-05 18:41:15 -04:00
Doug Hoskisson
2b138ac940
some typing and cleaning, mostly in Fill.py ( #349 )
...
* some typing and cleaning, mostly in Fill.py
* address missing Option types
* resolve a few TODOs discussed in pull request
2022-03-27 19:47:47 -04:00
Fabian Dill
cb024b00d9
Fill: don't crash before debug output in case of unfilled locations ( #342 )
2022-03-24 12:47:20 -04:00
espeon65536
2d25369d06
Core: fix division by zero in case of spectator slot
2022-03-20 16:08:22 +01:00
Fabian Dill
32a58b1adb
Progression Balancing: fix ItemLinks and Spectator interactions
2022-03-14 20:10:49 +01:00
espeon65536
15e0763ed5
Update progression balancing algorithm ( #300 )
...
* New progression balancing algo: computes based on percentage of locations available rather than absolute number of locations
2022-03-12 22:05:03 +01:00
Fabian Dill
5dbccfcbbd
ItemLinks: fix all_state not collecting event locations
2022-02-22 09:49:01 +01:00
Fabian Dill
c525c80b49
ItemLinks: move item links to events, mess up their logic in doing so and lock them behind plando option "item_links" until they're fixed.
2022-02-17 06:07:20 +01:00
Fabian Dill
53340ab22c
Core: remove legacy "dynamic_regions", as all regions are now dynamic
2022-02-15 06:29:57 +01:00
Fabian Dill
dc4b064c73
Options: change displayname to display_name
2022-02-02 16:29:29 +01:00
Brad Humphrey
2361f8f9d3
Use logic when placing non-excluded items
2022-02-01 16:35:18 +01:00
Brad Humphrey
3cecab25c7
Add unplaced_items into the fill sweep
2022-01-31 19:17:06 +01:00
Brad Humphrey
814851ba60
Don't require every item to fill
2022-01-31 19:17:06 +01:00
Fabian Dill
25dd89ed17
MultiServer: delete unused function
2022-01-28 09:29:29 +01:00
Brad Humphrey
dd61d0d395
Don't swap items that reduce access ( #247 )
2022-01-28 05:40:08 +01:00
Brad Humphrey
65a92746d1
Sort before distribute to preserve seed integrity
2022-01-28 05:39:34 +01:00
Brad Humphrey
64ce90d5ca
Don't add more locations to the priority fill pool
2022-01-24 06:48:59 +01:00
Fabian Dill
415526d23e
Fill: remove warning loggers that confused people
2022-01-24 04:50:49 +01:00
Fabian Dill
7a7e3544cf
Fill: log per-player item and location counts in case of mismatch.
2022-01-24 00:18:00 +01:00
Alchav
219bcb3521
Item Plando updates ( #226 )
...
* Item Plando updates
Add True option for item count to place the number of that item that is in the item pool.
Prioritize plando blocks by location count minus item count, so that the least flexible blocks are handled first to increase likelihood of success.
True and False for Force option are coming in as bools instead of strings, so that had to be accounted for.
Several other bug fixes.
2022-01-22 21:03:13 +01:00
Fabian Dill
66c15c8639
fix MultiTracker
2022-01-22 05:19:33 +01:00
Brad Humphrey
00ccecac9c
Allow fill_hook to remove things from the pool
2022-01-22 04:40:24 +01:00
Fabian Dill
06ec72a064
Fill: fix for crash when locations are prefilled
2022-01-21 05:04:02 +01:00
Alchav
dc6f1c4dd2
Item Plando overhaul ( #205 )
2022-01-20 19:34:17 +01:00
Brad Humphrey
ec95ce8329
Allow locations to be prioritized for progress item placement ( #189 )
2022-01-20 04:19:07 +01:00
Fabian Dill
d13b7988b7
Core: undo change that made Python 3.9 required
2021-12-31 15:08:30 +01:00
Brad Humphrey
18d262c1ae
Add test for minimal accessibility
2021-12-30 16:55:08 +01:00
Brad Humphrey
e5fedb90a6
Process swaped items last
2021-12-30 16:55:08 +01:00
Brad Humphrey
dc82b384c5
Add comment about swap count
2021-12-30 16:55:08 +01:00
Brad Humphrey
2f56e40fb7
Include player information in swapped item count
2021-12-30 16:55:08 +01:00
Brad Humphrey
d719eb356f
Don't allow items to swap infinitly
2021-12-30 16:55:08 +01:00
Brad Humphrey
6a34fe5184
Add fallback item swap for unreachable items
2021-12-30 16:55:08 +01:00
lordlou
77ec8d4141
Added Super Metroid support ( #46 )
...
Varia Randomizer based implementation
LttPClient -> SNIClient
2021-11-12 14:00:11 +01:00
Fabian Dill
a82bf1bb32
Options: raise Exception if per-game options are in root
...
Options: implement progression balancing and accessibility on new system
Options: implement the notion of "common" and "per_game_common" options in various systems
Options: centralize item and location name checking
Spoiler: prettier print some lists, sets and dicts
WebHost: add common options into /templates
2021-09-17 00:17:54 +02:00
Fabian Dill
74c30ce09a
Fill: remove/delay some LttP imports
2021-09-02 03:45:37 +02:00
Fabian Dill
fd6e009c4b
Fill: fix placing non_local + non advancement items
2021-08-30 22:20:44 +02:00
Fabian Dill
30ac7baa2c
FactorioClient: Batch-Send RCON commands when receiving catch-up locations and multiple items.
2021-08-24 09:52:12 +02:00
Fabian Dill
a532ceeb0a
AutoWorld: Should no longer need to overwrite collect, collect_item should be used instead
...
AutoWorld: Now correctly automatically applies State.remove if collect_item is also correct
LttP: Make keys advancement items
This feels like it improved generation chance. Might not be the case.
2021-08-10 09:47:28 +02:00
Fabian Dill
9ec0680ce5
LttP: move game specific fill to new AutoWorld fill_hook
2021-08-10 09:03:44 +02:00
Fabian Dill
299036ecca
LttP: move some LttP specific things more towards locations where they belong.
2021-08-10 08:00:53 +02:00
Fabian Dill
ba3bb201cd
Multiple: Followed a rabbit hole of moving LttP Rom generation to AutoWorld
...
Generator: Re-allow names with spaces (and see what breaks)
Generator: Removed teams (Note that teams are intended to move from a generation step feature to a server runtime feature, allowing dynamic creation of an already generated MW)
LttP: All Rom Options are now on the new system
LttP: palette option "random" is now called "good"
LttP: Roms are now created as part of the general output file creation step
LttP: disable Music is now Music, removing potential double negatives
LttP & Factorio: Progressive option random is now grouped_random
LttP: Enemy damage option random is now Enemy damage: chaos
2021-08-09 09:15:41 +02:00
Fabian Dill
af30d8b7cd
ensure Hyrule Castle Small Key locality in standard + small key shuffle
2021-07-24 01:42:00 +02:00
espeon65536
64c80c32f0
update exclusion procedure for clarity
2021-07-23 18:18:32 +00:00
espeon65536
12eba33dbf
separate fill step for nonadvancement nonexcluded items
2021-07-23 18:18:32 +00:00
espeon65536
0eee1f2d01
add separate can_exclude property, so non-progression items can be marked non-excluded
2021-07-23 18:18:32 +00:00
Fabian Dill
2fc4006dfa
RIP: MultiMystery and Mystery, now there's just Generate
...
Other changes:
host.yaml Multi Mystery options were moved and changed
generate_output now has an output_directory argument
MultiWorld.get_game_players(<game>) now replaces <game>_player_ids
Python venv should now work properly
2021-07-21 18:08:15 +02:00
Fabian Dill
304f63aedf
Merge branch 'espeon' into Archipelago_Main
...
# Conflicts:
# playerSettings.yaml
2021-06-21 02:49:06 +02:00
espeon65536
deff356910
Added HMG check to all checks for OWG and NL
2021-06-14 22:10:26 -05:00
Fabian Dill
59a56c803a
Log which player's plando has caused a placement failure
2021-06-14 23:42:13 +02:00
Fabian Dill
cea2f81b86
remove IRH special rule now that it's a 1/1 triforce piece hunt
2021-06-13 07:57:34 +02:00
espeon65536
d425e5eb6a
disable GT junk fill in hybrid
2021-06-12 13:11:14 -05:00
Fabian Dill
f2a1858b59
Implement (most) Hollow Knight Options
2021-03-21 00:47:17 +01:00
Fabian Dill
bbe51c4cc7
Speed up restrictive_fill a bit.
...
This also changes behaviour slightly; it used to fill beatable only players' items first, now it shuffles it all together. It is not documented why this was done, so hopefully this doesn't undo something intentional.
2021-03-18 17:27:31 +01:00
Fabian Dill
567954a17f
Merge branch 'main' into breaking_changes
...
# Conflicts:
# BaseClasses.py
2021-03-06 05:27:16 +01:00
Fabian Dill
f130829c0c
Massively speed up progression balancing for very large multiworlds
...
Several times faster was observed in testing. 10+ hours to less than 2 in the last sample.
2021-03-04 08:10:30 +01:00
Fabian Dill
bda86a65f7
Add Grimmkin Flames logic
2021-02-27 16:27:35 +01:00
Fabian Dill
499f67c586
HK Logic
2021-02-24 06:02:51 +01:00
Fabian Dill
dcce53f8c8
Merge branch 'main' into breaking_changes
...
# Conflicts:
# Adjuster.py
# Gui.py
# MultiClient.py
# setup.py
# worlds/alttp/AdjusterMain.py
# worlds/alttp/Main.py
2021-02-21 20:15:07 +01:00
Fabian Dill
c55cf28229
allow ER coop
2021-02-20 02:30:55 +01:00
Fabian Dill
122e360ec8
Merge branch 'main' into breaking_changes
...
# Conflicts:
# MultiClient.py
# Utils.py
# worlds/alttp/ItemPool.py
# worlds/alttp/Main.py
# worlds/alttp/Shops.py
2021-02-19 13:45:50 +01:00
Fabian Dill
96d544ac84
Speed up Progression Balancing, mostly by using generators and pre-sorts where the opportunity exists
...
In some cases multi-thousand element lists were created in-memory with near identical contents, per player, then discarded and reassembled.
Was testing against a case with 3 GB of additional memory use (50 players) which appeared to get stuck, but really was just very slow. This example case is fixed with these changes.
Additionally, progression balancing is now run after ShopSlotFill, so it is now "aware" of the changed progression shops can produce.
As well, special handling for keys was removed, as not all games will have the notion of keys.
2021-02-05 08:07:12 +01:00
Fabian Dill
a646594f08
Merge branch 'main' into breaking_changes
...
# Conflicts:
# BaseClasses.py
# Fill.py
# MultiClient.py
# MultiServer.py
# Utils.py
# test/dungeons/TestDungeon.py
# test/inverted/TestInverted.py
# test/inverted_minor_glitches/TestInvertedMinor.py
# test/inverted_owg/TestInvertedOWG.py
# test/minor_glitches/TestMinor.py
# test/owg/TestVanillaOWG.py
# test/vanilla/TestVanilla.py
# worlds/alttp/ItemPool.py
# worlds/alttp/Main.py
# worlds/alttp/Rom.py
2021-01-30 23:29:32 +01:00
Fabian Dill
2352445146
Remove all uses of "item.priority" as the remaining fill algorithms don't need it anymore.
2021-01-30 09:57:25 +01:00
CaitSith2
eb1c4313a8
Fix root cause of items not being placed into locations
2021-01-26 13:11:43 -08:00
CaitSith2
c88d9b4339
Additional fixes for Ice Rod Hunt
2021-01-26 07:06:57 -08:00
Fabian Dill
670b8b4b11
Merge branch 'main' into breaking_changes
...
# Conflicts:
# MultiClient.py
# WebUI.py
2021-01-21 05:36:16 +01:00
Fabian Dill
f4281f81f5
Merge branch 'main' into multishop
2021-01-17 22:08:43 +01:00
Fabian Dill
a87a79eb00
remove some duplicate code
2021-01-17 22:08:28 +01:00
Fabian Dill
7333a15f1f
handle merge conflicts after plando update
2021-01-17 06:54:38 +01:00
CaitSith2
082a7b7e41
Merge branch 'main' into multishop
2021-01-13 10:40:52 -08:00
CaitSith2
7bb115de72
Fix bug with placements always being empty.
...
It will never be not empty, because every placement that succeeds gets its event set to true, and the conditional expects locations already placed within the fill to also not be events.
2021-01-13 10:40:23 -08:00
Fabian Dill
058436e47f
shop cleanup and correctly backreference swapped items' locations
...
Also fixes a false reference in progression balancing from 2019 (swapped Location.item.location was not updated)
2021-01-11 13:35:48 +01:00
Fabian Dill
36123308a6
Refine Shop Item Candidate picking
2021-01-10 15:50:18 +01:00
Fabian Dill
e36c6e97c1
Merge remote-tracking branch 'pepper/multishop-all' into multishop
...
# Conflicts:
# EntranceRandomizer.py
# Rom.py
# WebHostLib/static/static/playerSettings.json
# data/basepatch.bmbp
2021-01-09 16:03:59 +01:00
CaitSith2
eea4cb5815
Make sure yamls that specify key drop plando locations don't fail.
2021-01-08 06:37:23 -08:00
Fabian Dill
37cf2e1ac4
speed up local item fill, by sorting by world once instead of up to twice per player
2021-01-07 12:43:11 +01:00
CaitSith2
113efa8f02
Fix bugs that prevent seed rolling from continuing if too many plando items are placed.
2021-01-06 11:13:22 -08:00
CaitSith2
8ef78cc32a
Add options to allow silent failed plando placements.
2021-01-05 09:56:39 -08:00
CaitSith2
a6d53aafb0
Add option to hard require plando item placement.
2021-01-04 13:50:42 -08:00
Fabian Dill
bd86a07115
make random world targeting smarter, in only considering possible unfilled locations
2021-01-04 15:14:20 +01:00
Fabian Dill
f3b6be2b20
Item Plando Support
2021-01-02 12:49:43 +01:00
pepperpow
c66e97faf6
Merge branch 'shop-fill' into multishop-all
2020-12-23 11:29:20 -06:00
pepperpow
83304fd314
Rotate rupees out of shop and equalize prices
2020-12-23 11:28:42 -06:00
pepperpow
4f58459742
Shop Generation options
...
(reduced from previous PR)
2020-11-23 19:38:57 -06:00
Fabian Dill
fd020ead7f
Fix FillError message assembly crashing the error
2020-11-22 22:53:02 +01:00
Fabian Dill
3271460c68
No need to set locality rules in single player and no need to reverse a list that was just shuffled
2020-08-25 18:05:16 +02:00
Fabian Dill
d86eb69b4c
Remove old fill algorithms that I have no intention to optimize or support in the future
2020-08-25 17:44:03 +02:00
Fabian Dill
b5048d99b9
optimize sweep_for_events, some has_ functions and some minor things
2020-08-22 19:19:29 +02:00
Fabian Dill
685ff49711
make "universal" small key shuffle a thing and split it out of retro
...
also make retro usable independently from the other world modes in mystery
2020-08-20 20:13:00 +02:00
Fabian Dill
52cf99c5c8
skip gtower fill if target fill count is 0
...
Also rename gftower to gtower. I don't know what the f could stand for. Girlfriend tower?
2020-08-17 03:55:46 +02:00
Fabian Dill
b3bb1f187d
GT Trash Fill adjustments:
...
- skipped in no_logic; already was skipped in OWG
- instead of randint[0, 15] and randint[15, 50] (if any kind of triforce hunt) trash items, it is now randint[0, GT_crystals*2] and randint[GT_crystals*2, GT_crystals*4] if you're on local or singleplayer triforce hunt; in general this means that the trash prefill is lessened and is especially low if your GT can be entered early.
2020-08-17 03:51:55 +02:00
Fabian Dill
df6ee1a08b
Fill Algorithm optimisations (somewhat minor, but easy pickings)
2020-08-14 00:34:41 +02:00
Fabian Dill
86025745ac
reimplement easy item pool
...
Some changes were made. The design chosen is to keep the changes to the same range of changes that hard and expert apply (so no change in lamp count, for example), while trying to keep easy as similar as it was.
2020-08-01 06:22:59 +02:00
Fabian Dill
7a29445c07
Should probably not spoil which players have progression balancing in a logging.info level, for mystery rolling
2020-07-30 20:17:04 +02:00
Fabian Dill
93ecf5988b
implement secrets.SystemRandom() for --race
2020-07-14 07:01:51 +02:00
Fabian Dill
57fe16ab60
remove special rules for pinball room
2020-07-09 16:16:31 +02:00
CaitSith2
545bb8023c
Add ganon triforce hunt ( #117 )
...
* Add ganon triforce hunt
* Add self to license
* Correction of help message for Local Ganon Triforce Hunt.
* if 'triforcehunt in world.goal[player]:
2020-06-26 16:18:53 +02:00