Core: Band-aid fixes `start_inventory_from_pool` causing generation failures if any world doesn't utilize it. (#1694)
* Core: Band-aid fixes `start_inventory_from_pool` causing generation failures if any world does utilize it. * Core: Slightly better(?) solution * Set default so it doesn't fail on WebHost.
This commit is contained in:
		
							parent
							
								
									05d398a51d
								
							
						
					
					
						commit
						3c3954f5e8
					
				| 
						 | 
				
			
			@ -7,9 +7,9 @@ import random
 | 
			
		|||
import secrets
 | 
			
		||||
import typing  # this can go away when Python 3.8 support is dropped
 | 
			
		||||
from argparse import Namespace
 | 
			
		||||
from collections import OrderedDict, Counter, deque, ChainMap
 | 
			
		||||
from collections import ChainMap, Counter, OrderedDict, deque
 | 
			
		||||
from enum import IntEnum, IntFlag
 | 
			
		||||
from typing import List, Dict, Optional, Set, Iterable, Union, Any, Tuple, TypedDict, Callable, NamedTuple
 | 
			
		||||
from typing import Any, Callable, Dict, Iterable, List, NamedTuple, Optional, Set, Tuple, TypedDict, Union
 | 
			
		||||
 | 
			
		||||
import NetUtils
 | 
			
		||||
import Options
 | 
			
		||||
| 
						 | 
				
			
			@ -121,7 +121,7 @@ class MultiWorld():
 | 
			
		|||
        self.early_items = {player: {} for player in self.player_ids}
 | 
			
		||||
        self.local_early_items = {player: {} for player in self.player_ids}
 | 
			
		||||
        self.indirect_connections = {}
 | 
			
		||||
        self.start_inventory_from_pool = {player: Options.StartInventoryPool({}) for player in range(1, players + 1)}
 | 
			
		||||
        self.start_inventory_from_pool: Dict[int, Options.StartInventoryPool] = {}
 | 
			
		||||
        self.fix_trock_doors = self.AttributeProxy(
 | 
			
		||||
            lambda player: self.shuffle[player] != 'vanilla' or self.mode[player] == 'inverted')
 | 
			
		||||
        self.fix_skullwoods_exit = self.AttributeProxy(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										26
									
								
								Main.py
								
								
								
								
							
							
						
						
									
										26
									
								
								Main.py
								
								
								
								
							| 
						 | 
				
			
			@ -1,23 +1,24 @@
 | 
			
		|||
import collections
 | 
			
		||||
import concurrent.futures
 | 
			
		||||
import logging
 | 
			
		||||
import os
 | 
			
		||||
import time
 | 
			
		||||
import zlib
 | 
			
		||||
import concurrent.futures
 | 
			
		||||
import pickle
 | 
			
		||||
import tempfile
 | 
			
		||||
import time
 | 
			
		||||
import zipfile
 | 
			
		||||
from typing import Dict, List, Tuple, Optional, Set
 | 
			
		||||
import zlib
 | 
			
		||||
from typing import Dict, List, Optional, Set, Tuple
 | 
			
		||||
 | 
			
		||||
from BaseClasses import Item, MultiWorld, CollectionState, Region, LocationProgressType, Location
 | 
			
		||||
import worlds
 | 
			
		||||
from worlds.alttp.SubClasses import LTTPRegionType
 | 
			
		||||
from worlds.alttp.Regions import is_main_entrance
 | 
			
		||||
from Fill import distribute_items_restrictive, flood_items, balance_multiworld_progression, distribute_planned
 | 
			
		||||
from worlds.alttp.Shops import FillDisabledShopSlots
 | 
			
		||||
from Utils import output_path, get_options, __version__, version_tuple
 | 
			
		||||
from worlds.generic.Rules import locality_rules, exclusion_rules
 | 
			
		||||
from BaseClasses import CollectionState, Item, Location, LocationProgressType, MultiWorld, Region
 | 
			
		||||
from Fill import balance_multiworld_progression, distribute_items_restrictive, distribute_planned, flood_items
 | 
			
		||||
from Options import StartInventoryPool
 | 
			
		||||
from Utils import __version__, get_options, output_path, version_tuple
 | 
			
		||||
from worlds import AutoWorld
 | 
			
		||||
from worlds.alttp.Regions import is_main_entrance
 | 
			
		||||
from worlds.alttp.Shops import FillDisabledShopSlots
 | 
			
		||||
from worlds.alttp.SubClasses import LTTPRegionType
 | 
			
		||||
from worlds.generic.Rules import exclusion_rules, locality_rules
 | 
			
		||||
 | 
			
		||||
ordered_areas = (
 | 
			
		||||
    'Light World', 'Dark World', 'Hyrule Castle', 'Agahnims Tower', 'Eastern Palace', 'Desert Palace',
 | 
			
		||||
| 
						 | 
				
			
			@ -115,7 +116,8 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No
 | 
			
		|||
        for item_name, count in world.start_inventory[player].value.items():
 | 
			
		||||
            for _ in range(count):
 | 
			
		||||
                world.push_precollected(world.create_item(item_name, player))
 | 
			
		||||
        for item_name, count in world.start_inventory_from_pool[player].value.items():
 | 
			
		||||
 | 
			
		||||
        for item_name, count in world.start_inventory_from_pool.setdefault(player, StartInventoryPool({})).value.items():
 | 
			
		||||
            for _ in range(count):
 | 
			
		||||
                world.push_precollected(world.create_item(item_name, player))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue