Archipelago/worlds
Mysteryem 7eda4c47f8
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>
2024-08-16 20:57:04 +02:00
..
_bizhawk BizHawkClient: Reset finished_game if ROM changes (#3246) 2024-06-04 14:06:41 +02:00
_sc2common SC2: don't close all SC2 instances when one quits (#3507) 2024-06-12 02:14:30 +02:00
adventure Various worlds: Fix more absolute world imports (#3510) 2024-06-27 08:51:27 +02:00
ahit AHIT: Generation error fixes and some other bug fixes (#3663) 2024-07-27 19:16:52 +02:00
alttp Core: recontextualize `CollectionState.collect` (#3723) 2024-08-13 22:28:05 +02:00
apsudoku APSudoku: take over maintaining hintgame sudoku from bk_sudoku (#3432) 2024-06-02 11:45:46 -05:00
aquaria Aquaria: Logic bug fixes (#3679) 2024-08-08 00:19:52 +02:00
archipidle ArchipIDLE 2024 (#3079) 2024-04-12 00:32:10 -04:00
blasphemous Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
bomb_rush_cyberfunk Bomb Rush Cyberfunk: Fix Coil quest being in glitched logic too early (#3720) 2024-07-31 17:32:51 +02:00
bumpstik Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
celeste64 Celeste 64: Option Groups (#3321) 2024-05-21 18:22:39 -04:00
checksfinder ChecksFinder: Refactor/Cleaning (#3725) 2024-08-06 16:39:56 +02:00
clique Clique: Update to new options API (#3759) 2024-08-11 14:47:17 +02:00
cv64 Core: Rework accessibility (#1481) 2024-07-31 12:13:14 +02:00
dark_souls_3 DS3: Version 3.0.0 (#3128) 2024-08-09 12:14:26 +02:00
dkc3 Various worlds: Fix more absolute world imports (#3510) 2024-06-27 08:51:27 +02:00
dlcquest DLC Quest: Add options presets to DLC Quest (#3676) 2024-07-24 13:49:28 +02:00
doom_1993 DOOM, DOOM II: Update steam URLs (#3746) 2024-08-09 17:04:59 +02:00
doom_ii DOOM, DOOM II: Update steam URLs (#3746) 2024-08-09 17:04:59 +02:00
factorio Factorio: Fix ap-get-technology nil value crashes (#3517) 2024-07-28 20:57:10 +02:00
ff1 Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
ffmq Docs: Add FFMQ French Setup Guide + Minor fixes to English Guide (#3590) 2024-07-31 17:40:45 +02:00
generic Docs: Missed Full Accessibility mention/conversion #3734 2024-08-06 00:00:33 +02:00
heretic Doom 2, Heretic: fix missing items (Doom2 Megasphere, Heretic Torch) (#3561) 2024-06-19 12:59:10 +02:00
hk HK: fix iterating all worlds instead of only HK worlds in stage_pre_fill (#3750) 2024-08-09 17:02:41 +02:00
hylics2 Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
kdl3 CommonClient: Use lookup_in_game instead of lookup_in_slot in case of own-game name lookup when disconnected from server. (#3514) 2024-06-16 05:37:05 -05:00
kh2 KH2: Update the docs to support steam in the setup guide (#3711) 2024-08-07 23:56:22 +02:00
ladx LADX: Add an item group for instruments (#3666) 2024-07-24 14:07:07 +02:00
landstalker Landstalker: Fixed rare generation issues (#3353) 2024-06-01 06:39:57 -05:00
lingo Lingo: Fixed Initiated-side Eight Door not opening (#3793) 2024-08-16 20:52:16 +02:00
lufia2ac CommonClient: Use lookup_in_game instead of lookup_in_slot in case of own-game name lookup when disconnected from server. (#3514) 2024-06-16 05:37:05 -05:00
meritous Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
messenger Core: Rework accessibility (#1481) 2024-07-31 12:13:14 +02:00
minecraft Core: Rework accessibility (#1481) 2024-07-31 12:13:14 +02:00
mlss MLSS: Fix for missing cutscene trigger 2024-07-05 22:54:35 +02:00
mmbn3 Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
musedash Muse Dash: 6th Anniversary Song update (#3593) 2024-06-30 01:15:13 +02:00
noita Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
oot Core: recontextualize `CollectionState.collect` (#3723) 2024-08-13 22:28:05 +02:00
osrs OSRS: Implement New Game (#1976) 2024-08-06 23:13:11 +02:00
overcooked2 Various worlds: Fix more absolute world imports (#3510) 2024-06-27 08:51:27 +02:00
pokemon_emerald Docs: Add Swedish Guide for Pokemon Emerald (#3252) 2024-07-25 09:30:23 +02:00
pokemon_rb Pokemon R/B: Removing Floats from NamedRange #3717 2024-08-05 23:40:16 +02:00
raft Raft: Move to new Options API (#3587) 2024-07-15 15:09:02 +02:00
rogue_legacy Various worlds: Fix more absolute world imports (#3510) 2024-06-27 08:51:27 +02:00
ror2 RoR2: Remove recursion from explore mode access rules (#3681) 2024-08-07 23:57:07 +02:00
sa2b Fix Incorrect Link Syntax in SA2B Linux Setup (#3524) 2024-06-13 06:53:01 +02:00
sc2 sc2: Removing unused dependency in requirements.txt (#3697) 2024-07-29 23:09:51 +02:00
shivers Shivers: New features and removes two missed options using the old options API (#3287) 2024-07-31 17:32:17 +02:00
shorthike A Short Hike: Fix Boat Rental purchase being incorrectly calculated (#3639) 2024-07-22 01:47:46 +02:00
sm CommonClient: Use lookup_in_game instead of lookup_in_slot in case of own-game name lookup when disconnected from server. (#3514) 2024-06-16 05:37:05 -05:00
sm64ex Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
smw Various worlds: Fix more absolute world imports (#3510) 2024-06-27 08:51:27 +02:00
smz3 Core: Rework accessibility (#1481) 2024-07-31 12:13:14 +02:00
soe SoE: fix determinism (#3745) 2024-08-10 13:08:24 +02:00
spire Spire: Convert options, clean up random calls, and add DeathLink (#3704) 2024-07-31 18:27:35 +02:00
stardew_valley Stardew Valley: Add Quality Bobber in the logic rules for fish quality gold and above #3792 2024-08-14 17:07:06 +02:00
subnautica Subnautica: Fix deprecated option getting (#3685) 2024-07-24 22:17:43 +02:00
terraria Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
timespinner Timespinner: Fix eels check logic #3777 2024-08-12 00:24:09 +02:00
tloz TLOZ: Fix non-deterministic item pool generation (#3779) 2024-08-16 20:57:04 +02:00
tunic TUNIC: Give the fox a gun (in logic) (very small PR) (#3790) 2024-08-16 20:53:54 +02:00
undertale Undertale: Fix slot_data and options.as_dict() (#3774) 2024-08-12 01:53:40 +02:00
v6 Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
wargroove Wargroove: Switched to options API. (#3306) 2024-05-16 18:46:13 +02:00
witness The Witness: Small naming inconsistencies (#3618) 2024-07-24 13:13:41 +02:00
yoshisisland Yoshi's Island: Fix client giving victory randomly (#3586) 2024-06-26 13:19:16 +02:00
yugioh06 YGO06: fixes non-deterministic bug by changing sets to lists (#3674) 2024-07-22 01:27:10 +02:00
zillion Zillion: more rooms added to map_gen option (#3634) 2024-07-10 23:11:47 -07:00
zork_grand_inquisitor Zork Grand Inquisitor: Fix Determinism Issues on Fixed Seeds (#3134) 2024-04-18 18:47:27 +02:00
AutoSNIClient.py SNIClient: dynamically generate patch file identifier (#2870) 2024-03-07 10:18:22 +01:00
AutoWorld.py Core: update required_server_version to 0.5.0 (#3580) 2024-06-23 07:50:00 +02:00
Files.py APProcedurePatch: fix RLE/COPY incorrect sizing (#3006) 2024-03-22 09:02:38 +01:00
LauncherComponents.py Core: hot reload components from installed apworld (#3480) 2024-06-06 20:36:14 +02:00
__init__.py Core: fix invalid __package__ of zipped worlds (#3686) 2024-08-10 13:49:32 +02:00