From 35c00588baee0ee3957c9edd5dc3e9ff778fd451 Mon Sep 17 00:00:00 2001 From: CaitSith2 Date: Sat, 19 Dec 2020 15:36:29 -0800 Subject: [PATCH 1/3] Make sure dungeon items aren't in non-local pool if the appropriate shuffle isn't set. --- Main.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Main.py b/Main.py index e58dcdaf..d7d4cc5d 100644 --- a/Main.py +++ b/Main.py @@ -10,7 +10,7 @@ import zlib import concurrent.futures from BaseClasses import World, CollectionState, Item, Region, Location, Shop -from Items import ItemFactory, item_table +from Items import ItemFactory, item_table, item_name_groups from Regions import create_regions, create_shops, mark_light_world_regions, lookup_vanilla_location_to_entrance from InvertedRegions import create_inverted_regions, mark_dark_world_regions from EntranceShuffle import link_entrances, link_inverted_entrances @@ -118,6 +118,19 @@ def main(args, seed=None): # items can't be both local and non-local, prefer local world.non_local_items[player] -= world.local_items[player] + # dungeon items can't be in non-local if the appropriate dungeon item shuffle setting is not set. + if not world.mapshuffle[player]: + world.non_local_items[player] -= item_name_groups['Maps'] + + if not world.compassshuffle[player]: + world.non_local_items[player] -= item_name_groups['Compasses'] + + if not world.keyshuffle[player]: + world.non_local_items[player] -= item_name_groups['Small Keys'] + + if not world.bigkeyshuffle[player]: + world.non_local_items[player] -= item_name_groups['Big Keys'] + world.triforce_pieces_available[player] = max(world.triforce_pieces_available[player], world.triforce_pieces_required[player]) if world.mode[player] != 'inverted': From 2fccb3751c0a6bd9cc049fc00e7f42bc89d07f26 Mon Sep 17 00:00:00 2001 From: CaitSith2 Date: Sat, 19 Dec 2020 16:23:21 -0800 Subject: [PATCH 2/3] Disallow non-local pendants and crystals --- Main.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Main.py b/Main.py index d7d4cc5d..a011de65 100644 --- a/Main.py +++ b/Main.py @@ -131,6 +131,10 @@ def main(args, seed=None): if not world.bigkeyshuffle[player]: world.non_local_items[player] -= item_name_groups['Big Keys'] + # Not possible to place pendants/crystals out side of boss prizes yet. + world.non_local_items[player] -= item_name_groups['Pendants'] + world.non_local_items[player] -= item_name_groups['Crystals'] + world.triforce_pieces_available[player] = max(world.triforce_pieces_available[player], world.triforce_pieces_required[player]) if world.mode[player] != 'inverted': From 769830d45e772e6c523e36d609c537d74f005738 Mon Sep 17 00:00:00 2001 From: CaitSith2 Date: Sat, 19 Dec 2020 16:23:56 -0800 Subject: [PATCH 3/3] Define groups of Everything, Progression Items and Non Progression Items --- Items.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Items.py b/Items.py index 7cc2826c..c896e483 100644 --- a/Items.py +++ b/Items.py @@ -225,3 +225,6 @@ for basename, substring in _simple_groups: del (_simple_groups) progression_items = {name for name, data in item_table.items() if type(data[3]) == int and data[0]} +item_name_groups['Everything'] = {name for name, data in item_table.items() if type(data[3]) == int} +item_name_groups['Progression Items'] = progression_items +item_name_groups['Non Progression Items'] = item_name_groups['Everything'] - progression_items