2021-12-23 12:32:16 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  collections  import  namedtuple  
						 
					
						
							
								
									
										
										
										
											2021-12-27 23:13:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  logging  
						 
					
						
							
								
									
										
										
										
											2017-11-10 04:15:45 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-13 18:06:43 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  BaseClasses  import  ItemClassification  
						 
					
						
							
								
									
										
										
										
											2021-12-27 23:13:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  Fill  import  FillError  
						 
					
						
							
								
									
										
										
										
											2023-04-26 10:48:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  . SubClasses  import  ALttPLocation ,  LTTPRegion ,  LTTPRegionType  
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  . Shops  import  TakeAny ,  total_shop_slots ,  set_up_shops ,  shop_table_by_location ,  ShopType  
						 
					
						
							
								
									
										
										
										
											2023-04-26 10:48:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  . Bosses  import  place_bosses  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  . Dungeons  import  get_dungeon_item_pool_player  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  . EntranceShuffle  import  connect_entrance  
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  . Items  import  item_factory ,  GetBeemizerItem ,  trap_replaceable ,  item_name_groups  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  . Options  import  small_key_shuffle ,  compass_shuffle ,  big_key_shuffle ,  map_shuffle ,  TriforcePiecesMode ,  LTTPBosses  
						 
					
						
							
								
									
										
										
										
											2023-03-03 23:23:52 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  . StateHelpers  import  has_triforce_pieces ,  has_melee_weapon  
						 
					
						
							
								
									
										
										
										
											2023-09-26 23:24:10 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  . Regions  import  key_drop_data  
						 
					
						
							
								
									
										
										
										
											2018-03-22 23:18:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 06:22:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# This file sets the item pools for various modes. Timed modes and triforce hunt are enforced first, and then extra items are specified per mode to fill in the remaining space.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Some basic items that various modes require are placed here, including pendants and crystals. Medallion requirements for the two relevant entrances are also decided.  
						 
					
						
							
								
									
										
										
										
											2017-12-17 00:25:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 06:22:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								alwaysitems  =  [ ' Bombos ' ,  ' Book of Mudora ' ,  ' Cane of Somaria ' ,  ' Ether ' ,  ' Fire Rod ' ,  ' Flippers ' ,  ' Flute ' ,  ' Hammer ' ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               ' Hookshot ' ,  ' Ice Rod ' ,  ' Lamp ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               ' Cape ' ,  ' Magic Powder ' ,  ' Mushroom ' ,  ' Pegasus Boots ' ,  ' Quake ' ,  ' Shovel ' ,  ' Bug Catching Net ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               ' Cane of Byrna ' ,  ' Blue Boomerang ' ,  ' Red Boomerang ' ] 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-10 04:15:45 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								progressivegloves  =  [ ' Progressive Glove ' ]  *  2  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								basicgloves  =  [ ' Power Glove ' ,  ' Titans Mitts ' ]  
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								legacyinsanity  =  [ ' Magic Mirror ' ,  ' Moon Pearl ' ]  
						 
					
						
							
								
									
										
										
										
											2017-11-10 04:15:45 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 06:22:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								normalbottles  =  [ ' Bottle ' ,  ' Bottle (Red Potion) ' ,  ' Bottle (Green Potion) ' ,  ' Bottle (Blue Potion) ' ,  ' Bottle (Fairy) ' ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                 ' Bottle (Bee) ' ,  ' Bottle (Good Bee) ' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								hardbottles  =  [ ' Bottle ' ,  ' Bottle (Red Potion) ' ,  ' Bottle (Green Potion) ' ,  ' Bottle (Blue Potion) ' ,  ' Bottle (Bee) ' ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               ' Bottle (Good Bee) ' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-04 09:24:48 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								easybaseitems  =  ( [ ' Sanctuary Heart Container ' ,  " Lamp " ]  +  [ ' Rupees (300) ' ]  *  5  +  
						 
					
						
							
								
									
										
										
										
											2020-08-01 16:49:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                 [ ' Boss Heart Container ' ]  *  10  +  [ ' Piece of Heart ' ]  *  24 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								easyfirst15extra  =  [ ' Piece of Heart ' ]  *  12  +  [ ' Rupees (300) ' ]  *  3  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								easysecond15extra  =  [ ' Rupees (100) ' ]  +  [ ' Arrows (10) ' ]  *  7  +  [ ' Bombs (3) ' ]  *  7  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								easythird10extra  =  [ ' Bombs (3) ' ]  *  7  +  [ ' Rupee (1) ' ,  ' Rupees (50) ' ,  ' Bombs (10) ' ]  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								easyfourth5extra  =  [ ' Rupees (50) ' ]  *  2  +  [ ' Bombs (3) ' ]  *  2  +  [ ' Arrows (10) ' ]  
						 
					
						
							
								
									
										
										
										
											2020-08-01 06:22:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								easyfinal25extra  =  [ ' Rupees (50) ' ]  *  4  +  [ ' Rupees (20) ' ]  *  14  +  [ ' Rupee (1) ' ]  +  [ ' Arrows (10) ' ]  *  4  +  [ ' Rupees (5) ' ]  *  2  
						 
					
						
							
								
									
										
										
										
											2017-11-11 20:22:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-04 09:24:48 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								normalbaseitems  =  ( [ ' Single Arrow ' ,  ' Sanctuary Heart Container ' ,  ' Arrows (10) ' ,  ' Bombs (10) ' ]  +  
						 
					
						
							
								
									
										
										
										
											2020-08-04 09:39:43 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                   [ ' Rupees (300) ' ]  *  3  +  [ ' Boss Heart Container ' ]  *  10  +  [ ' Piece of Heart ' ]  *  24 ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-22 22:51:54 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								normalfirst15extra  =  [ ' Rupees (100) ' ,  ' Rupees (300) ' ,  ' Rupees (50) ' ]  +  [ ' Arrows (10) ' ]  *  6  +  [ ' Bombs (3) ' ]  *  6  
						 
					
						
							
								
									
										
										
										
											2019-08-10 15:30:14 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								normalsecond15extra  =  [ ' Bombs (3) ' ]  *  10  +  [ ' Rupees (50) ' ]  *  2  +  [ ' Arrows (10) ' ]  *  2  +  [ ' Rupee (1) ' ]  
						 
					
						
							
								
									
										
										
										
											2017-11-10 04:15:45 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								normalthird10extra  =  [ ' Rupees (50) ' ]  *  4  +  [ ' Rupees (20) ' ]  *  3  +  [ ' Arrows (10) ' ,  ' Rupee (1) ' ,  ' Rupees (5) ' ]  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								normalfourth5extra  =  [ ' Arrows (10) ' ]  *  2  +  [ ' Rupees (20) ' ]  *  2  +  [ ' Rupees (5) ' ]  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								normalfinal25extra  =  [ ' Rupees (20) ' ]  *  23  +  [ ' Rupees (5) ' ]  *  2  
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Difficulty  =  namedtuple ( ' Difficulty ' ,  
						 
					
						
							
								
									
										
										
										
											2017-12-17 00:25:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        [ ' baseitems ' ,  ' bottles ' ,  ' bottle_count ' ,  ' same_bottle ' ,  ' progressiveshield ' , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-04 09:24:48 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         ' basicshield ' ,  ' progressivearmor ' ,  ' basicarmor ' ,  ' swordless ' ,  ' progressivemagic ' ,  ' basicmagic ' , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-30 23:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         ' progressivesword ' ,  ' basicsword ' ,  ' progressivebow ' ,  ' basicbow ' ,  ' timedohko ' ,  ' timedother ' , 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         ' progressiveglove ' ,  ' basicglove ' ,  ' alwaysitems ' ,  ' legacyinsanity ' , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-25 19:45:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         ' universal_keys ' , 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-04 01:06:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         ' extras ' ,  ' progressive_sword_limit ' ,  ' progressive_shield_limit ' , 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-11 11:41:05 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         ' progressive_armor_limit ' ,  ' progressive_bottle_limit ' , 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-10 19:37:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         ' progressive_bow_limit ' ,  ' heart_piece_limit ' ,  ' boss_heart_container_limit ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-15 05:19:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								total_items_to_place  =  153  
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-17 00:25:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								difficulties  =  {  
						 
					
						
							
								
									
										
										
										
											2020-08-01 06:22:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ' easy ' :  Difficulty ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        baseitems = easybaseitems , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bottles = normalbottles , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bottle_count = 8 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        same_bottle = False , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressiveshield = [ ' Progressive Shield ' ]  *  6 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicshield = [ ' Blue Shield ' ,  ' Red Shield ' ,  ' Mirror Shield ' ]  *  2 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-06 17:19:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressivearmor = [ ' Progressive Mail ' ]  *  4 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 06:22:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        basicarmor = [ ' Blue Mail ' ,  ' Red Mail ' ]  *  2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swordless = [ ' Rupees (20) ' ]  *  8 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-04 09:24:48 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressivemagic = [ ' Magic Upgrade (1/2) ' ]  *  2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicmagic = [ ' Magic Upgrade (1/2) ' ,  ' Magic Upgrade (1/4) ' ] , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 06:22:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressivesword = [ ' Progressive Sword ' ]  *  8 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicsword = [ ' Master Sword ' ,  ' Tempered Sword ' ,  ' Golden Sword ' ,  ' Fighter Sword ' ]  *  2 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-02 14:55:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressivebow = [ " Progressive Bow " ]  *  4 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 06:22:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        basicbow = [ ' Bow ' ,  ' Silver Bow ' ]  *  2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        timedohko = [ ' Green Clock ' ]  *  25 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 16:49:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        timedother = [ ' Green Clock ' ]  *  20  +  [ ' Blue Clock ' ]  *  10  +  [ ' Red Clock ' ]  *  10 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressiveglove = progressivegloves , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicglove = basicgloves , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        alwaysitems = alwaysitems , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        legacyinsanity = legacyinsanity , 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-26 23:24:10 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        universal_keys = [ ' Small Key (Universal) ' ]  *  29 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 16:49:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        extras = [ easyfirst15extra ,  easysecond15extra ,  easythird10extra ,  easyfourth5extra ,  easyfinal25extra ] , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 06:22:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressive_sword_limit = 8 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressive_shield_limit = 6 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 16:49:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressive_armor_limit = 4 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 06:22:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressive_bow_limit = 4 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressive_bottle_limit = 8 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        boss_heart_container_limit = 10 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 16:49:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        heart_piece_limit = 36 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 06:22:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ' normal ' :  Difficulty ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 06:22:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        baseitems = normalbaseitems , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-30 23:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        bottles = normalbottles , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bottle_count = 4 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        same_bottle = False , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressiveshield = [ ' Progressive Shield ' ]  *  3 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicshield = [ ' Blue Shield ' ,  ' Red Shield ' ,  ' Mirror Shield ' ] , 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-06 17:19:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressivearmor = [ ' Progressive Mail ' ]  *  2 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-30 23:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        basicarmor = [ ' Blue Mail ' ,  ' Red Mail ' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swordless = [ ' Rupees (20) ' ]  *  4 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-04 09:39:43 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressivemagic = [ ' Magic Upgrade (1/2) ' ,  ' Rupees (300) ' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicmagic = [ ' Magic Upgrade (1/2) ' ,  ' Rupees (300) ' ] , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-30 23:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressivesword = [ ' Progressive Sword ' ]  *  4 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicsword = [ ' Fighter Sword ' ,  ' Master Sword ' ,  ' Tempered Sword ' ,  ' Golden Sword ' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressivebow = [ " Progressive Bow " ]  *  2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicbow = [ ' Bow ' ,  ' Silver Bow ' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        timedohko = [ ' Green Clock ' ]  *  25 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        timedother = [ ' Green Clock ' ]  *  20  +  [ ' Blue Clock ' ]  *  10  +  [ ' Red Clock ' ]  *  10 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressiveglove = progressivegloves , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicglove = basicgloves , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        alwaysitems = alwaysitems , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        legacyinsanity = legacyinsanity , 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-26 23:24:10 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        universal_keys = [ ' Small Key (Universal) ' ]  *  19  +  [ ' Rupees (20) ' ]  *  10 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-30 23:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        extras = [ normalfirst15extra ,  normalsecond15extra ,  normalthird10extra ,  normalfourth5extra ,  normalfinal25extra ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressive_sword_limit = 4 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressive_shield_limit = 3 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressive_armor_limit = 2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressive_bow_limit = 2 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-20 20:13:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressive_bottle_limit = 4 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        boss_heart_container_limit = 10 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        heart_piece_limit = 24 , 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ' hard ' :  Difficulty ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-06 17:19:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        baseitems = normalbaseitems , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-30 23:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        bottles = hardbottles , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bottle_count = 4 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        same_bottle = False , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressiveshield = [ ' Progressive Shield ' ]  *  3 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicshield = [ ' Blue Shield ' ,  ' Red Shield ' ,  ' Red Shield ' ] , 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-06 17:19:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressivearmor = [ ' Progressive Mail ' ]  *  2 , 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-28 12:25:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        basicarmor = [ ' Blue Mail ' ]  *  2 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-30 23:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        swordless = [ ' Rupees (20) ' ]  *  4 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-04 09:39:43 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressivemagic = [ ' Magic Upgrade (1/2) ' ,  ' Rupees (300) ' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicmagic = [ ' Magic Upgrade (1/2) ' ,  ' Rupees (300) ' ] , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-30 23:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressivesword = [ ' Progressive Sword ' ]  *  4 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicsword = [ ' Fighter Sword ' ,  ' Master Sword ' ,  ' Master Sword ' ,  ' Tempered Sword ' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressivebow = [ " Progressive Bow " ]  *  2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicbow = [ ' Bow ' ]  *  2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        timedohko = [ ' Green Clock ' ]  *  25 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        timedother = [ ' Green Clock ' ]  *  20  +  [ ' Blue Clock ' ]  *  10  +  [ ' Red Clock ' ]  *  10 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressiveglove = progressivegloves , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicglove = basicgloves , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        alwaysitems = alwaysitems , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        legacyinsanity = legacyinsanity , 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-26 23:24:10 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        universal_keys = [ ' Small Key (Universal) ' ]  *  13  +  [ ' Rupees (5) ' ]  *  16 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-30 23:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        extras = [ normalfirst15extra ,  normalsecond15extra ,  normalthird10extra ,  normalfourth5extra ,  normalfinal25extra ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressive_sword_limit = 3 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressive_shield_limit = 2 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-19 23:39:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressive_armor_limit = 1 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-30 23:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressive_bow_limit = 1 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-19 23:39:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressive_bottle_limit = 4 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        boss_heart_container_limit = 6 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        heart_piece_limit = 16 , 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ' expert ' :  Difficulty ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-06 17:19:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        baseitems = normalbaseitems , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-30 23:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        bottles = hardbottles , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bottle_count = 4 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        same_bottle = False , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressiveshield = [ ' Progressive Shield ' ]  *  3 , 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-22 12:34:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        basicshield = [ ' Blue Shield ' ,  ' Blue Shield ' ,  ' Blue Shield ' ] , 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-06 17:19:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressivearmor = [ ' Progressive Mail ' ]  *  2 ,   # neither will count 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-22 12:34:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        basicarmor = [ ' Rupees (20) ' ]  *  2 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-30 23:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        swordless = [ ' Rupees (20) ' ]  *  4 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-04 09:39:43 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressivemagic = [ ' Magic Upgrade (1/2) ' ,  ' Rupees (300) ' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicmagic = [ ' Magic Upgrade (1/2) ' ,  ' Rupees (300) ' ] , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-30 23:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressivesword = [ ' Progressive Sword ' ]  *  4 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicsword = [ ' Fighter Sword ' ,  ' Fighter Sword ' ,  ' Master Sword ' ,  ' Master Sword ' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressivebow = [ " Progressive Bow " ]  *  2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicbow = [ ' Bow ' ]  *  2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        timedohko = [ ' Green Clock ' ]  *  20  +  [ ' Red Clock ' ]  *  5 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        timedother = [ ' Green Clock ' ]  *  20  +  [ ' Blue Clock ' ]  *  10  +  [ ' Red Clock ' ]  *  10 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressiveglove = progressivegloves , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        basicglove = basicgloves , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        alwaysitems = alwaysitems , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        legacyinsanity = legacyinsanity , 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-26 23:24:10 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        universal_keys = [ ' Small Key (Universal) ' ]  *  13  +  [ ' Rupees (5) ' ]  *  16 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-30 23:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        extras = [ normalfirst15extra ,  normalsecond15extra ,  normalthird10extra ,  normalfourth5extra ,  normalfinal25extra ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressive_sword_limit = 2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressive_shield_limit = 1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressive_armor_limit = 0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressive_bow_limit = 1 , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 16:49:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressive_bottle_limit = 4 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        boss_heart_container_limit = 2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        heart_piece_limit = 8 , 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2017-11-10 04:15:45 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								items_reduction_table  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Piece of Heart " ,  " Boss Heart Container " ,  4 ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # the order of the upgrades is important 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Arrow Upgrade (+5) " ,  " Arrow Upgrade (+10) " ,  8 ,  4 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Arrow Upgrade (+5) " ,  " Arrow Upgrade (+10) " ,  7 ,  4 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Arrow Upgrade (+5) " ,  " Arrow Upgrade (+10) " ,  6 ,  3 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Arrow Upgrade (+10) " ,  " Arrow Upgrade (70) " ,  4 ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Bomb Upgrade (+5) " ,  " Bomb Upgrade (+10) " ,  8 ,  4 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Bomb Upgrade (+5) " ,  " Bomb Upgrade (+10) " ,  7 ,  4 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Bomb Upgrade (+5) " ,  " Bomb Upgrade (+10) " ,  6 ,  3 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Bomb Upgrade (+10) " ,  " Bomb Upgrade (50) " ,  5 ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Bomb Upgrade (+10) " ,  " Bomb Upgrade (50) " ,  4 ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Progressive Sword " ,  4 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Fighter Sword " ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Master Sword " ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Tempered Sword " ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Golden Sword " ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Progressive Shield " ,  3 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Blue Shield " ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Red Shield " ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Mirror Shield " ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Progressive Mail " ,  2 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Blue Mail " ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Red Mail " ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Progressive Bow " ,  2 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Bow " ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Silver Bow " ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Lamp " ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( " Bottles " , ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 16:49:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-22 15:51:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								def  generate_itempool ( world ) :  
						 
					
						
							
								
									
										
										
										
											2025-08-01 22:30:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    player :  int  =  world . player 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-20 19:57:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    multiworld  =  world . multiworld 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-23 12:32:16 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  world . options . item_pool . current_key  not  in  difficulties : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        raise  NotImplementedError ( f " Diffulty  { world . options . item_pool } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  world . options . goal  not  in  ( ' ganon ' ,  ' pedestal ' ,  ' bosses ' ,  ' triforce_hunt ' ,  ' local_triforce_hunt ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                  ' ganon_triforce_hunt ' ,  ' local_ganon_triforce_hunt ' ,  ' crystals ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                  ' ganon_pedestal ' ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        raise  NotImplementedError ( f " Goal  { world . options . goal }  for player  { player } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  world . options . mode  not  in  ( ' open ' ,  ' standard ' ,  ' inverted ' ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        raise  NotImplementedError ( f " Mode  { world . options . mode }  for player  { player } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  world . options . timer  not  in  ( False ,  ' display ' ,  ' timed ' ,  ' timed_ohko ' ,  ' ohko ' ,  ' timed_countdown ' ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        raise  NotImplementedError ( f " Timer  { world . options . timer }  for player  { player } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  world . options . timer  in  [ ' ohko ' ,  ' timed_ohko ' ] : 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-18 18:33:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        world . can_take_damage  =  False 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  world . options . goal  in  [ ' pedestal ' ,  ' triforce_hunt ' ,  ' local_triforce_hunt ' ] : 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        multiworld . push_item ( multiworld . get_location ( ' Ganon ' ,  player ) ,  item_factory ( ' Nothing ' ,  world ) ,  False ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-04 17:40:13 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        multiworld . push_item ( multiworld . get_location ( ' Ganon ' ,  player ) ,  item_factory ( ' Triforce ' ,  world ) ,  False ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-20 19:57:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  world . options . goal  in  [ ' triforce_hunt ' ,  ' local_triforce_hunt ' ] : 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-20 19:57:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        region  =  multiworld . get_region ( ' Light World ' ,  player ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 12:14:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        loc  =  ALttPLocation ( player ,  " Murahdahla " ,  parent = region ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-03 23:23:52 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        loc . access_rule  =  lambda  state :  has_triforce_pieces ( state ,  player ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 12:14:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        region . locations . append ( loc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        multiworld . push_item ( loc ,  item_factory ( ' Triforce ' ,  world ) ,  False ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 12:14:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        loc . locked  =  True 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-20 19:57:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    multiworld . get_location ( ' Ganon ' ,  player ) . locked  =  True 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-02 11:24:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    event_pairs  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ( ' Agahnim 1 ' ,  ' Beat Agahnim 1 ' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ( ' Agahnim 2 ' ,  ' Beat Agahnim 2 ' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ( ' Dark Blacksmith Ruins ' ,  ' Pick Up Purple Chest ' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ( ' Frog ' ,  ' Get Frog ' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ( ' Missing Smith ' ,  ' Return Smith ' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ( ' Floodgate ' ,  ' Open Floodgate ' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ( ' Agahnim 1 ' ,  ' Beat Agahnim 1 ' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ( ' Flute Activation Spot ' ,  ' Activated Flute ' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ( ' Capacity Upgrade Shop ' ,  ' Capacity Upgrade Shop ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-02 11:24:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  location_name ,  event_name  in  event_pairs : 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-20 19:57:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        location  =  multiworld . get_location ( location_name ,  player ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        event  =  item_factory ( event_name ,  world ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-20 19:57:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        multiworld . push_item ( location ,  event ,  False ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-14 13:37:48 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        location . locked  =  True 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-02 11:24:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-10 04:15:45 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # set up item pool 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-25 19:45:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    additional_triforce_pieces  =  0 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-27 19:48:59 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    treasure_hunt_total  =  0 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-20 19:57:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  multiworld . custom : 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-27 19:48:59 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool ,  placed_items ,  precollected_items ,  clock_mode ,  treasure_hunt_required  =  ( 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-18 18:33:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            make_custom_item_pool ( multiworld ,  player ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-27 19:48:59 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ( pool ,  placed_items ,  precollected_items ,  clock_mode ,  treasure_hunt_required ,  treasure_hunt_total , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         additional_triforce_pieces )  =  get_pool_core ( multiworld ,  player ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-11 11:41:05 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-10 15:30:14 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  item  in  precollected_items : 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        multiworld . push_precollected ( item_factory ( item ,  world ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-11 11:41:05 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  world . options . mode  ==  ' standard '  and  not  has_melee_weapon ( multiworld . state ,  player ) : 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-30 06:42:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  " Link ' s Uncle "  not  in  placed_items : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            found_sword  =  False 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            found_bow  =  False 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            possible_weapons  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            for  item  in  pool : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  item  in  [ ' Progressive Sword ' ,  ' Fighter Sword ' ,  ' Master Sword ' ,  ' Tempered Sword ' ,  ' Golden Sword ' ] : 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-09 20:40:45 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  not  found_sword : 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-30 06:42:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        found_sword  =  True 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        possible_weapons . append ( item ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                elif  item  in  [ ' Progressive Bow ' ,  ' Bow ' ]  and  not  found_bow : 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-30 06:42:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    found_bow  =  True 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-11 11:41:05 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    possible_weapons . append ( item ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                elif  item  in  [ ' Hammer ' ,  ' Fire Rod ' ,  ' Cane of Somaria ' ,  ' Cane of Byrna ' ] : 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-30 06:42:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  item  not  in  possible_weapons : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        possible_weapons . append ( item ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                elif  ( item  ==  ' Bombs (10) '  and  ( not  world . options . bombless_start )  and  item  not  in 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        possible_weapons ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    possible_weapons . append ( item ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                elif  ( item  in  [ ' Bomb Upgrade (+10) ' ,  ' Bomb Upgrade (50) ' ]  and  world . options . bombless_start  and  item 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        not  in  possible_weapons ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    possible_weapons . append ( item ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-20 19:57:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            starting_weapon  =  multiworld . random . choice ( possible_weapons ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-30 06:42:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            placed_items [ " Link ' s Uncle " ]  =  starting_weapon 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pool . remove ( starting_weapon ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( placed_items [ " Link ' s Uncle " ]  in  [ ' Bow ' ,  ' Progressive Bow ' ,  ' Bombs (10) ' ,  ' Bomb Upgrade (+10) ' , 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                            ' Bomb Upgrade (50) ' ,  ' Cane of Somaria ' ,  ' Cane of Byrna ' ]  and  world . options . enemy_health  not  in  [ ' default ' ,  ' easy ' ] ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  world . options . bombless_start  and  " Bomb Upgrade "  not  in  placed_items [ " Link ' s Uncle " ] : 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ' Bow '  in  placed_items [ " Link ' s Uncle " ] : 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    world . escape_assist . append ( ' arrows ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                elif  ' Cane '  in  placed_items [ " Link ' s Uncle " ] : 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    world . escape_assist . append ( ' magic ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else : 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                world . escape_assist . append ( ' bombs ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-11 11:41:05 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-12-10 21:21:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  ( location ,  item )  in  placed_items . items ( ) : 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        multiworld . get_location ( location ,  player ) . place_locked_item ( item_factory ( item ,  world ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-11 11:41:05 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    items  =  item_factory ( pool ,  world ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 01:00:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # convert one Progressive Bow into Progressive Bow (Alt), in ID only, for ganon silvers hint text 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  world . has_progressive_bows : 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 01:00:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        for  item  in  items : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  item . code  ==  0x64 :   # Progressive Bow 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                item . code  =  0x65   # Progressive Bow (Alt) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-11 11:41:05 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-18 18:33:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  clock_mode : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        world . clock_mode  =  clock_mode 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-11 11:41:05 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    world . treasure_hunt_required  =  treasure_hunt_required  %  999 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    world . treasure_hunt_total  =  treasure_hunt_total 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-20 19:57:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dungeon_items  =  [ item  for  item  in  get_dungeon_item_pool_player ( world ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                     if  item . name  not  in  world . dungeon_local_item_names ] 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-26 23:24:10 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  key_loc  in  key_drop_data : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        key_data  =  key_drop_data [ key_loc ] 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        drop_item  =  item_factory ( key_data [ 3 ] ,  world ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  not  world . options . key_drop_shuffle : 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-26 23:24:10 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  drop_item  in  dungeon_items : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                dungeon_items . remove ( drop_item ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                dungeon  =  drop_item . name . split ( " ( " ) [ 1 ] . split ( " ) " ) [ 0 ] 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  world . options . mode  ==  ' inverted ' : 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-26 23:24:10 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  dungeon  ==  " Agahnims Tower " : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        dungeon  =  " Inverted Agahnims Tower " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  dungeon  ==  " Ganons Tower " : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        dungeon  =  " Inverted Ganons Tower " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  drop_item  in  world . dungeons [ dungeon ] . small_keys : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    world . dungeons [ dungeon ] . small_keys . remove ( drop_item ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                elif  world . dungeons [ dungeon ] . big_key  is  not  None  and  world . dungeons [ dungeon ] . big_key  ==  drop_item : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    world . dungeons [ dungeon ] . big_key  =  None 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-26 23:24:10 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            loc  =  multiworld . get_location ( key_loc ,  player ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            loc . place_locked_item ( drop_item ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            loc . address  =  None 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        elif  " Small "  in  key_data [ 3 ]  and  world . options . small_key_shuffle  ==  small_key_shuffle . option_universal : 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-26 23:24:10 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # key drop shuffle and universal keys are on. Add universal keys in place of key drop keys. 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            multiworld . itempool . append ( item_factory ( GetBeemizerItem ( multiworld ,  player ,  ' Small Key (Universal) ' ) ,  world ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-18 18:33:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dungeon_item_replacements  =  sum ( difficulties [ world . options . item_pool . current_key ] . extras ,  [ ] )  *  2 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-20 19:57:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    multiworld . random . shuffle ( dungeon_item_replacements ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  x  in  range ( len ( dungeon_items ) - 1 ,  - 1 ,  - 1 ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        item  =  dungeon_items [ x ] 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ( world . options . small_key_shuffle  ==  small_key_shuffle . option_start_with  and  item . type  ==  ' SmallKey ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                or  ( world . options . big_key_shuffle  ==  big_key_shuffle . option_start_with  and  item . type  ==  ' BigKey ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                or  ( world . options . compass_shuffle  ==  compass_shuffle . option_start_with  and  item . type  ==  ' Compass ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                or  ( world . options . map_shuffle  ==  map_shuffle . option_start_with  and  item . type  ==  ' Map ' ) ) : 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            dungeon_items . pop ( x ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-20 19:57:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            multiworld . push_precollected ( item ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            multiworld . itempool . append ( item_factory ( dungeon_item_replacements . pop ( ) ,  world ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    multiworld . itempool . extend ( [ item  for  item  in  dungeon_items ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set_up_shops ( multiworld ,  player ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  world . options . retro_bow : 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        shop_items  =  0 
							 
						 
					
						
							
								
									
										
										
										
											2025-08-01 22:30:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        shop_locations  =  [ location  for  shop_locations  in  ( shop . region . locations  for  shop  in  world . shops  if 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                          shop . type  ==  ShopType . Shop )  for  location  in  shop_locations  if 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                          location . shop_slot  is  not  None ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  location  in  shop_locations : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  location . shop . inventory [ location . shop_slot ] [ " item " ]  ==  " Single Arrow " : 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                location . place_locked_item ( item_factory ( " Single Arrow " ,  world ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                shop_items  + =  1 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        shop_items  =  min ( world . options . shop_item_slots ,  30  if  world . options . include_witch_hut  else  27 ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  world . options . shuffle_capacity_upgrades : 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        shop_items  + =  2 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    chance_100  =  int ( world . options . retro_bow )  *  0.25  +  int ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        world . options . small_key_shuffle  ==  small_key_shuffle . option_universal )  *  0.5 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  _  in  range ( shop_items ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  multiworld . random . random ( )  <  chance_100 : 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            items . append ( item_factory ( GetBeemizerItem ( multiworld ,  player ,  " Rupees (100) " ) ,  world ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-28 23:10:07 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            items . append ( item_factory ( GetBeemizerItem ( multiworld ,  player ,  " Rupees (50) " ) ,  world ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    multiworld . random . shuffle ( items ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool_count  =  len ( items ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    new_items  =  [ " Triforce Piece "  for  _  in  range ( additional_triforce_pieces ) ] 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  world . options . shuffle_capacity_upgrades  or  world . options . bombless_start : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        progressive  =  world . options . progressive 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressive  =  multiworld . random . choice ( [ True ,  False ] )  if  progressive  ==  ' grouped_random '  else  progressive  ==  ' on ' 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  world . options . shuffle_capacity_upgrades  ==  " on_combined " : 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            new_items . append ( " Bomb Upgrade (50) " ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        elif  world . options . shuffle_capacity_upgrades  ==  " on " : 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            new_items  + =  [ " Bomb Upgrade (+5) " ]  *  6 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            new_items . append ( " Bomb Upgrade (+5) "  if  progressive  else  " Bomb Upgrade (+10) " ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  world . options . shuffle_capacity_upgrades  !=  " on_combined "  and  world . options . bombless_start : 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            new_items . append ( " Bomb Upgrade (+5) "  if  progressive  else  " Bomb Upgrade (+10) " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  world . options . shuffle_capacity_upgrades  and  not  world . options . retro_bow : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  world . options . shuffle_capacity_upgrades  ==  " on_combined " : 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                new_items  + =  [ " Arrow Upgrade (70) " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                new_items  + =  [ " Arrow Upgrade (+5) " ]  *  6 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                new_items . append ( " Arrow Upgrade (+5) "  if  progressive  else  " Arrow Upgrade (+10) " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    items  + =  [ item_factory ( item ,  world )  for  item  in  new_items ] 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    removed_filler  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    multiworld . random . shuffle ( items )   # Decide what gets tossed randomly. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    while  len ( items )  >  pool_count : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  i ,  item  in  enumerate ( items ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  item . classification  in  ( ItemClassification . filler ,  ItemClassification . trap ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                removed_filler . append ( items . pop ( i ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # no more junk to remove, condense progressive items 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            def  condense_items ( items ,  small_item ,  big_item ,  rem ,  add ) : 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                small_item  =  item_factory ( small_item ,  world ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                # while (len(items) >= pool_count + rem - 1  # minus 1 to account for the replacement item 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                #         and items.count(small_item) >= rem): 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  items . count ( small_item )  > =  rem : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    for  _  in  range ( rem ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        items . remove ( small_item ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        removed_filler . append ( item_factory ( small_item . name ,  world ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    items  + =  [ item_factory ( big_item ,  world )  for  _  in  range ( add ) ] 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    return  True 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  False 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            def  cut_item ( items ,  item_to_cut ,  minimum_items ) : 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                item_to_cut  =  item_factory ( item_to_cut ,  world ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  items . count ( item_to_cut )  >  minimum_items : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    items . remove ( item_to_cut ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    removed_filler . append ( item_factory ( item_to_cut . name ,  world ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    return  True 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  False 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            while  len ( items )  >  pool_count : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                items_were_cut  =  False 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for  reduce_item  in  items_reduction_table : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  len ( reduce_item )  ==  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        items_were_cut  =  items_were_cut  or  cut_item ( items ,  * reduce_item ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    elif  len ( reduce_item )  ==  4 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        items_were_cut  =  items_were_cut  or  condense_items ( items ,  * reduce_item ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    elif  len ( reduce_item )  ==  1 :   # Bottles 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        bottles  =  [ item  for  item  in  items  if  item . name  in  item_name_groups [ " Bottles " ] ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  len ( bottles )  >  4 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            bottle  =  multiworld . random . choice ( bottles ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            items . remove ( bottle ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            removed_filler . append ( bottle ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            items_were_cut  =  True 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-17 13:29:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  items_were_cut : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    raise  Exception ( f " Failed to limit item pool size for player  { player } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  len ( items )  <  pool_count : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        items  + =  removed_filler [ len ( items )  -  pool_count : ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  world . options . randomize_cost_types : 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Heart and Arrow costs require all Heart Container/Pieces and Arrow Upgrades to be advancement items for logic 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  item  in  items : 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-13 02:32:59 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  item . name  in  ( " Boss Heart Container " ,  " Sanctuary Heart Container " ,  " Piece of Heart " ) : 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                item . classification  =  ItemClassification . progression 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-02 23:00:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Otherwise, logic has some branches where having 4 hearts is one possible requirement (of several alternatives) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # rather than making all hearts/heart pieces progression items (which slows down generation considerably) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # We mark one random heart container as an advancement item (or 4 heart pieces in expert mode) 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-24 23:10:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            next ( item  for  item  in  items  if  item . name  ==  ' Boss Heart Container ' ) . classification  \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                | =  ItemClassification . progression 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        except  StopIteration : 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            adv_heart_pieces  =  ( item  for  item  in  items  if  item . name  ==  ' Piece of Heart ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            for  i  in  range ( 4 ) : 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-24 23:10:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    next ( adv_heart_pieces ) . classification  | =  ItemClassification . progression 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                except  StopIteration : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    break   # logically health tanking is an option, so rules should still resolve to something beatable 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    world . required_medallions  =  ( world . options . misery_mire_medallion . current_key . title ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                 world . options . turtle_rock_medallion . current_key . title ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-10 04:15:45 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-20 19:57:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    place_bosses ( world ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-22 23:18:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    multiworld . itempool  + =  items 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-23 21:38:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  world . options . retro_caves : 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-22 15:36:27 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        set_up_take_anys ( multiworld ,  world ,  player )   # depends on world.itempool to be set 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-25 22:49:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-23 15:03:06 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-26 05:09:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								take_any_locations  =  {  
						 
					
						
							
								
									
										
										
										
											2018-03-22 23:18:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ' Snitch Lady (East) ' ,  ' Snitch Lady (West) ' ,  ' Bush Covered House ' ,  ' Light World Bomb Hut ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ' Fortune Teller (Light) ' ,  ' Lake Hylia Fortune Teller ' ,  ' Lumberjack House ' ,  ' Bonk Fairy (Light) ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ' Bonk Fairy (Dark) ' ,  ' Lake Hylia Healer Fairy ' ,  ' Swamp Healer Fairy ' ,  ' Desert Healer Fairy ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ' Dark Lake Hylia Healer Fairy ' ,  ' Dark Lake Hylia Ledge Healer Fairy ' ,  ' Dark Desert Healer Fairy ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ' Dark Death Mountain Healer Fairy ' ,  ' Long Fairy Cave ' ,  ' Good Bee Cave ' ,  ' 20 Rupee Cave ' , 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-02 16:23:03 +11:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ' Kakariko Gamble Game ' ,  ' 50 Rupee Cave ' ,  ' Lost Woods Gamble ' ,  ' Hookshot Fairy ' , 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-22 23:18:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ' Palace of Darkness Hint ' ,  ' East Dark World Hint ' ,  ' Archery Game ' ,  ' Dark Lake Hylia Ledge Hint ' , 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-26 05:09:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ' Dark Lake Hylia Ledge Spike Cave ' ,  ' Fortune Teller (Dark) ' ,  ' Dark Sanctuary Hint ' ,  ' Dark Desert Hint ' } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 19:13:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								take_any_locations_inverted  =  list ( take_any_locations  -  { " Dark Sanctuary Hint " ,  " Archery Game " } )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								take_any_locations  =  list ( take_any_locations )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# sets are sorted by the element's hash, python's hash is seeded at startup, resulting in different sorting each run  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								take_any_locations_inverted . sort ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								take_any_locations . sort ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-22 23:18:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-22 15:36:27 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								def  set_up_take_anys ( multiworld ,  world ,  player ) :  
						 
					
						
							
								
									
										
										
										
											2021-01-15 19:13:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # these are references, do not modify these lists in-place 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  world . options . mode  ==  ' inverted ' : 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 19:13:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        take_any_locs  =  take_any_locations_inverted 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-26 05:09:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        take_any_locs  =  take_any_locations 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-11 11:41:05 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-22 15:36:27 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    regions  =  multiworld . random . sample ( take_any_locs ,  5 ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-22 23:18:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-22 15:36:27 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    old_man_take_any  =  LTTPRegion ( " Old Man Sword Cave " ,  LTTPRegionType . Cave ,  ' the sword cave ' ,  player ,  multiworld ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    multiworld . regions . append ( old_man_take_any ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-22 23:18:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    reg  =  regions . pop ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-22 15:36:27 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    entrance  =  multiworld . get_region ( reg ,  player ) . entrances [ 0 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connect_entrance ( multiworld ,  entrance . name ,  old_man_take_any . name ,  player ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-22 23:18:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    entrance . target  =  0x58 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-22 07:08:50 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    old_man_take_any . shop  =  TakeAny ( old_man_take_any ,  0x0112 ,  0xE2 ,  True ,  True ,  total_shop_slots ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-08-01 22:30:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    world . shops . append ( old_man_take_any . shop ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-22 23:18:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-06-14 12:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    sword_indices  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        index  for  index ,  item  in  enumerate ( multiworld . itempool )  if  item . player  ==  player  and  item . type  ==  ' Sword ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  sword_indices : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sword_index  =  multiworld . random . choice ( sword_indices ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sword  =  multiworld . itempool . pop ( sword_index ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-22 15:36:27 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        multiworld . itempool . append ( item_factory ( ' Rupees (20) ' ,  world ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        old_man_take_any . shop . add_inventory ( 0 ,  sword . name ,  0 ,  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        loc_name  =  " Old Man Sword Cave " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        location  =  ALttPLocation ( player ,  loc_name ,  shop_table_by_location [ loc_name ] ,  parent = old_man_take_any ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        location . shop_slot  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        old_man_take_any . locations . append ( location ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        location . place_locked_item ( sword ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-22 23:18:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        old_man_take_any . shop . add_inventory ( 0 ,  ' Rupees (300) ' ,  0 ,  0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-22 23:18:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  num  in  range ( 4 ) : 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-22 15:36:27 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        take_any  =  LTTPRegion ( " Take-Any # {} " . format ( num + 1 ) ,  LTTPRegionType . Cave ,  ' a cave of choice ' ,  player ,  multiworld ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        multiworld . regions . append ( take_any ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-22 23:18:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-22 15:36:27 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        target ,  room_id  =  multiworld . random . choice ( [ ( 0x58 ,  0x0112 ) ,  ( 0x60 ,  0x010F ) ,  ( 0x46 ,  0x011F ) ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-22 23:18:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        reg  =  regions . pop ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-22 15:36:27 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        entrance  =  multiworld . get_region ( reg ,  player ) . entrances [ 0 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        connect_entrance ( multiworld ,  entrance . name ,  take_any . name ,  player ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-22 23:18:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        entrance . target  =  target 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-22 07:08:50 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        take_any . shop  =  TakeAny ( take_any ,  room_id ,  0xE3 ,  True ,  True ,  total_shop_slots  +  num  +  1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-08-01 22:30:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        world . shops . append ( take_any . shop ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-26 19:32:19 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        take_any . shop . add_inventory ( 0 ,  ' Blue Potion ' ,  0 ,  0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        take_any . shop . add_inventory ( 1 ,  ' Boss Heart Container ' ,  0 ,  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        location  =  ALttPLocation ( player ,  take_any . name ,  shop_table_by_location [ take_any . name ] ,  parent = take_any ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        location . shop_slot  =  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        take_any . locations . append ( location ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-10 01:18:25 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        location . place_locked_item ( item_factory ( " Boss Heart Container " ,  world ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-22 23:18:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-10 08:00:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-16 11:02:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								def  get_pool_core ( world ,  player :  int ) :  
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    shuffle  =  world . worlds [ player ] . options . entrance_shuffle . current_key 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    difficulty  =  world . worlds [ player ] . options . item_pool . current_key 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    timer  =  world . worlds [ player ] . options . timer . current_key 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    goal  =  world . worlds [ player ] . options . goal . current_key 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    mode  =  world . worlds [ player ] . options . mode . current_key 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    swordless  =  world . worlds [ player ] . options . swordless 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    retro_bow  =  world . worlds [ player ] . options . retro_bow 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    logic  =  world . worlds [ player ] . options . glitches_required 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-16 11:02:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-17 00:25:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pool  =  [ ] 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-10 21:21:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    placed_items  =  { } 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-10 15:30:14 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    precollected_items  =  [ ] 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-18 18:33:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    clock_mode :  str  =  " " 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-27 19:48:59 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    treasure_hunt_required :  int  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    treasure_hunt_total :  int  =  0 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    diff  =  difficulties [ difficulty ] 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pool . extend ( diff . alwaysitems ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-12-10 21:21:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  place_item ( loc ,  item ) : 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-26 01:12:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        assert  loc  not  in  placed_items ,  " cannot place item twice " 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-10 21:21:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        placed_items [ loc ]  =  item 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-01-03 01:09:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # provide boots to major glitch dependent seeds 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  logic . current_key  in  { ' overworld_glitches ' ,  ' hybrid_major_glitches ' ,  ' no_logic ' }  and  world . worlds [ player ] . options . glitch_boots : 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-03 01:09:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        precollected_items . append ( ' Pegasus Boots ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pool . remove ( ' Pegasus Boots ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 16:49:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . append ( ' Rupees (20) ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    want_progressives  =  world . worlds [ player ] . options . progressive . want_progressives 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-03 01:09:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-09 09:15:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  want_progressives ( world . random ) : 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . extend ( diff . progressiveglove ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . extend ( diff . basicglove ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 16:49:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # insanity legacy shuffle doesn't have fake LW/DW logic so for now guaranteed Mirror and Moon Pearl at the start 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-04 13:55:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  shuffle  ==  ' insanity_legacy ' : 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        place_item ( ' Link \' s House ' ,  diff . legacyinsanity [ 0 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        place_item ( ' Sanctuary ' ,  diff . legacyinsanity [ 1 ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . extend ( diff . legacyinsanity ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  timer  ==  ' display ' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        clock_mode  =  ' stopwatch ' 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 20:36:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    elif  timer  ==  ' ohko ' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        clock_mode  =  ' ohko ' 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( diff . baseitems ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # expert+ difficulties produce the same contents for 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # all bottles, since only one bottle is available 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    thisbottle  =  None 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-17 00:25:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  _  in  range ( diff . bottle_count ) : 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  not  diff . same_bottle  or  not  thisbottle : 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-14 07:01:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            thisbottle  =  world . random . choice ( diff . bottles ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . append ( thisbottle ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-09 09:15:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  want_progressives ( world . random ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . extend ( diff . progressiveshield ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pool . extend ( diff . basicshield ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-09 09:15:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  want_progressives ( world . random ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . extend ( diff . progressivearmor ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pool . extend ( diff . basicarmor ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-09 09:15:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  want_progressives ( world . random ) : 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-04 09:24:48 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . extend ( diff . progressivemagic ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pool . extend ( diff . basicmagic ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-09 09:15:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  want_progressives ( world . random ) : 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-30 23:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . extend ( diff . progressivebow ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 01:00:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        world . worlds [ player ] . has_progressive_bows  =  True 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    elif  ( swordless  or  logic  ==  ' no_glitches ' ) : 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 16:49:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        swordless_bows  =  [ ' Bow ' ,  ' Silver Bow ' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  difficulty  ==  " easy " : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            swordless_bows  * =  2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pool . extend ( swordless_bows ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-07 19:51:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pool . extend ( diff . basicbow ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-10 19:37:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-09 20:40:45 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  swordless : 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . extend ( diff . swordless ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-09 09:15:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        progressive_swords  =  want_progressives ( world . random ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-24 00:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . extend ( diff . progressivesword  if  progressive_swords  else  diff . basicsword ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-17 00:25:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    extraitems  =  total_items_to_place  -  len ( pool )  -  len ( placed_items ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  timer  in  [ ' timed ' ,  ' timed_countdown ' ] : 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . extend ( diff . timedother ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        extraitems  - =  len ( diff . timedother ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        clock_mode  =  ' stopwatch '  if  timer  ==  ' timed '  else  ' countdown ' 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    elif  timer  ==  ' timed_ohko ' : 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . extend ( diff . timedohko ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        extraitems  - =  len ( diff . timedohko ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 20:36:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        clock_mode  =  ' countdown-ohko ' 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-25 19:45:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    additional_pieces_to_place  =  0 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ' triforce_hunt '  in  goal : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  world . worlds [ player ] . options . triforce_pieces_mode . value  ==  TriforcePiecesMode . option_extra : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            treasure_hunt_total  =  ( world . worlds [ player ] . options . triforce_pieces_required . value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                   +  world . worlds [ player ] . options . triforce_pieces_extra . value ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        elif  world . worlds [ player ] . options . triforce_pieces_mode . value  ==  TriforcePiecesMode . option_percentage : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            percentage  =  float ( world . worlds [ player ] . options . triforce_pieces_percentage . value )  /  100 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            treasure_hunt_total  =  int ( round ( world . worlds [ player ] . options . triforce_pieces_required . value  *  percentage ,  0 ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        else :   # available 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            treasure_hunt_total  =  world . worlds [ player ] . options . triforce_pieces_available . value 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        triforce_pieces  =  min ( 90 ,  max ( treasure_hunt_total ,  world . worlds [ player ] . options . triforce_pieces_required . value ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pieces_in_core  =  min ( extraitems ,  triforce_pieces ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        additional_pieces_to_place  =  triforce_pieces  -  pieces_in_core 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-25 19:45:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . extend ( [ " Triforce Piece " ]  *  pieces_in_core ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        extraitems  - =  pieces_in_core 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        treasure_hunt_required  =  world . worlds [ player ] . options . triforce_pieces_required . value 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  extra  in  diff . extras : 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 16:49:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  extraitems  > =  len ( extra ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-17 00:25:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            pool . extend ( extra ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            extraitems  - =  len ( extra ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-01 16:49:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        elif  extraitems  >  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pool . extend ( world . random . sample ( extra ,  extraitems ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            break 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-25 19:45:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            break 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-06-01 17:29:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  retro_bow : 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-13 02:32:59 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        replace  =  { ' Single Arrow ' ,  ' Arrows (10) ' ,  ' Arrow Upgrade (+5) ' ,  ' Arrow Upgrade (+10) ' ,  ' Arrow Upgrade (70) ' } 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-25 20:20:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool  =  [ ' Rupees (5) '  if  item  in  replace  else  item  for  item  in  pool ] 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-20 23:04:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  goal  ==  ' pedestal ' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        place_item ( ' Master Sword Pedestal ' ,  ' Triforce ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  rupee_name  in  ( " Rupees (5) " ,  " Rupees (20) " ,  " Rupees (50) " ,  " Rupees (100) " ,  " Rupees (300) " ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                pool . remove ( rupee_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            except  ValueError : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                pass 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  world . worlds [ player ] . options . small_key_shuffle  ==  small_key_shuffle . option_universal : 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-20 20:13:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . extend ( diff . universal_keys ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-16 12:26:14 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  mode  ==  ' standard ' : 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  world . worlds [ player ] . options . key_drop_shuffle : 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-26 23:24:10 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                key_locations  =  [ ' Secret Passage ' ,  ' Hyrule Castle - Map Guard Key Drop ' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                key_location  =  world . random . choice ( key_locations ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                key_locations . remove ( key_location ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                place_item ( key_location ,  " Small Key (Universal) " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                key_locations  + =  [ ' Hyrule Castle - Boomerang Guard Key Drop ' ,  ' Hyrule Castle - Boomerang Chest ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                  ' Hyrule Castle - Map Chest ' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                key_location  =  world . random . choice ( key_locations ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                key_locations . remove ( key_location ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                place_item ( key_location ,  " Small Key (Universal) " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                key_locations  + =  [ ' Hyrule Castle - Big Key Drop ' ,  ' Hyrule Castle - Zelda \' s Chest ' ,  ' Sewers - Dark Cross ' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                key_location  =  world . random . choice ( key_locations ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                key_locations . remove ( key_location ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                place_item ( key_location ,  " Small Key (Universal) " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                key_locations  + =  [ ' Sewers - Key Rat Key Drop ' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                key_location  =  world . random . choice ( key_locations ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                place_item ( key_location ,  " Small Key (Universal) " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                pool  =  pool [ : - 3 ] 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-23 12:32:16 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-27 19:48:59 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  ( pool ,  placed_items ,  precollected_items ,  clock_mode ,  treasure_hunt_required ,  treasure_hunt_total , 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-25 19:45:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            additional_pieces_to_place ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 18:21:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-07-14 07:01:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  make_custom_item_pool ( world ,  player ) :  
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    shuffle  =  world . worlds [ player ] . options . entrance_shuffle 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    difficulty  =  world . worlds [ player ] . options . item_pool 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    timer  =  world . worlds [ player ] . options . timer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    goal  =  world . worlds [ player ] . options . goal 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    mode  =  world . worlds [ player ] . options . mode 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-24 02:24:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    customitemarray  =  world . customitemarray 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-14 07:01:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pool  =  [ ] 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-10 21:21:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    placed_items  =  { } 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-10 15:30:14 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    precollected_items  =  [ ] 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-18 18:33:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    clock_mode :  str  =  " " 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-27 19:48:59 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    treasure_hunt_required :  int  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    treasure_hunt_total :  int  =  0 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-12-10 21:21:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  place_item ( loc ,  item ) : 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-26 01:12:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        assert  loc  not  in  placed_items ,  " cannot place item twice " 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-10 21:21:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        placed_items [ loc ]  =  item 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # Correct for insanely oversized item counts and take initial steps to handle undersized pools. 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-16 18:18:17 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  x  in  range ( 0 ,  67 ) : 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  customitemarray [ x ]  >  total_items_to_place : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            customitemarray [ x ]  =  total_items_to_place 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-16 18:18:17 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  customitemarray [ 68 ]  >  total_items_to_place : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        customitemarray [ 68 ]  =  total_items_to_place 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # count all items, except rupoor cost 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    itemtotal  =  0 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-16 18:18:17 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  x  in  range ( 0 ,  67 ) : 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        itemtotal  =  itemtotal  +  customitemarray [ x ] 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-15 16:53:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    itemtotal  =  itemtotal  +  customitemarray [ 68 ] 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Bow ' ]  *  customitemarray [ 0 ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-24 02:24:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pool . extend ( [ ' Silver Bow ' ]  *  customitemarray [ 1 ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pool . extend ( [ ' Blue Boomerang ' ]  *  customitemarray [ 2 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Red Boomerang ' ]  *  customitemarray [ 3 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Hookshot ' ]  *  customitemarray [ 4 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Mushroom ' ]  *  customitemarray [ 5 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Magic Powder ' ]  *  customitemarray [ 6 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Fire Rod ' ]  *  customitemarray [ 7 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Ice Rod ' ]  *  customitemarray [ 8 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Bombos ' ]  *  customitemarray [ 9 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Ether ' ]  *  customitemarray [ 10 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Quake ' ]  *  customitemarray [ 11 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Lamp ' ]  *  customitemarray [ 12 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Hammer ' ]  *  customitemarray [ 13 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Shovel ' ]  *  customitemarray [ 14 ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-17 10:08:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pool . extend ( [ ' Flute ' ]  *  customitemarray [ 15 ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pool . extend ( [ ' Bug Catching Net ' ]  *  customitemarray [ 16 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Book of Mudora ' ]  *  customitemarray [ 17 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Cane of Somaria ' ]  *  customitemarray [ 19 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Cane of Byrna ' ]  *  customitemarray [ 20 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Cape ' ]  *  customitemarray [ 21 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Pegasus Boots ' ]  *  customitemarray [ 23 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Power Glove ' ]  *  customitemarray [ 24 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Titans Mitts ' ]  *  customitemarray [ 25 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Progressive Glove ' ]  *  customitemarray [ 26 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Flippers ' ]  *  customitemarray [ 27 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Piece of Heart ' ]  *  customitemarray [ 29 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Boss Heart Container ' ]  *  customitemarray [ 30 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Sanctuary Heart Container ' ]  *  customitemarray [ 31 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Master Sword ' ]  *  customitemarray [ 33 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Tempered Sword ' ]  *  customitemarray [ 34 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Golden Sword ' ]  *  customitemarray [ 35 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Blue Shield ' ]  *  customitemarray [ 37 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Red Shield ' ]  *  customitemarray [ 38 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Mirror Shield ' ]  *  customitemarray [ 39 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Progressive Shield ' ]  *  customitemarray [ 40 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Blue Mail ' ]  *  customitemarray [ 41 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Red Mail ' ]  *  customitemarray [ 42 ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-06 17:19:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pool . extend ( [ ' Progressive Mail ' ]  *  customitemarray [ 43 ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pool . extend ( [ ' Magic Upgrade (1/2) ' ]  *  customitemarray [ 44 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Magic Upgrade (1/4) ' ]  *  customitemarray [ 45 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Bomb Upgrade (+5) ' ]  *  customitemarray [ 46 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Bomb Upgrade (+10) ' ]  *  customitemarray [ 47 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Arrow Upgrade (+5) ' ]  *  customitemarray [ 48 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Arrow Upgrade (+10) ' ]  *  customitemarray [ 49 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Single Arrow ' ]  *  customitemarray [ 50 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Arrows (10) ' ]  *  customitemarray [ 51 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Single Bomb ' ]  *  customitemarray [ 52 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Bombs (3) ' ]  *  customitemarray [ 53 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Rupee (1) ' ]  *  customitemarray [ 54 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Rupees (5) ' ]  *  customitemarray [ 55 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Rupees (20) ' ]  *  customitemarray [ 56 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Rupees (50) ' ]  *  customitemarray [ 57 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Rupees (100) ' ]  *  customitemarray [ 58 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Rupees (300) ' ]  *  customitemarray [ 59 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Rupoor ' ]  *  customitemarray [ 60 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Blue Clock ' ]  *  customitemarray [ 61 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Green Clock ' ]  *  customitemarray [ 62 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Red Clock ' ]  *  customitemarray [ 63 ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-23 21:31:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pool . extend ( [ ' Progressive Bow ' ]  *  customitemarray [ 64 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Bombs (10) ' ]  *  customitemarray [ 65 ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-16 18:18:17 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pool . extend ( [ ' Triforce ' ]  *  customitemarray [ 68 ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    diff  =  difficulties [ difficulty ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # expert+ difficulties produce the same contents for 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # all bottles, since only one bottle is available 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    thisbottle  =  None 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  _  in  range ( customitemarray [ 18 ] ) : 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-07 12:36:39 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  not  diff . same_bottle  or  not  thisbottle : 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-14 07:01:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            thisbottle  =  world . random . choice ( diff . bottles ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . append ( thisbottle ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  " triforce "  in  world . worlds [ player ] . options . goal : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pool . extend ( [ " Triforce Piece " ]  *  world . worlds [ player ] . options . triforce_pieces_available ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        itemtotal  + =  world . worlds [ player ] . options . triforce_pieces_available 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        treasure_hunt_required  =  world . worlds [ player ] . options . triforce_pieces_required 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-19 19:07:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  timer  in  [ ' display ' ,  ' timed ' ,  ' timed_countdown ' ] : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        clock_mode  =  ' countdown '  if  timer  ==  ' timed_countdown '  else  ' stopwatch ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    elif  timer  ==  ' timed_ohko ' : 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        clock_mode  =  ' countdown-ohko ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    elif  timer  ==  ' ohko ' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        clock_mode  =  ' ohko ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  goal  ==  ' pedestal ' : 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-10 21:21:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        place_item ( ' Master Sword Pedestal ' ,  ' Triforce ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        itemtotal  =  itemtotal  +  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  mode  ==  ' standard ' : 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  world . worlds [ player ] . options . small_key_shuffle  ==  small_key_shuffle . option_universal : 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-14 07:01:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            key_location  =  world . random . choice ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                [ ' Secret Passage ' ,  ' Hyrule Castle - Boomerang Chest ' ,  ' Hyrule Castle - Map Chest ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                 ' Hyrule Castle - Zelda \' s Chest ' ,  ' Sewers - Dark Cross ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-10 21:21:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            place_item ( key_location ,  ' Small Key (Universal) ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-24 02:24:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            pool . extend ( [ ' Small Key (Universal) ' ]  *  max ( ( customitemarray [ 66 ]  -  1 ) ,  0 ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-16 12:26:14 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-24 02:24:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            pool . extend ( [ ' Small Key (Universal) ' ]  *  customitemarray [ 66 ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-24 02:24:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . extend ( [ ' Small Key (Universal) ' ]  *  customitemarray [ 66 ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-06 21:36:45 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pool . extend ( [ ' Fighter Sword ' ]  *  customitemarray [ 32 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pool . extend ( [ ' Progressive Sword ' ]  *  customitemarray [ 36 ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-10 15:30:14 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-18 14:52:34 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  shuffle  ==  ' insanity_legacy ' : 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-10 21:21:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        place_item ( ' Link \' s House ' ,  ' Magic Mirror ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        place_item ( ' Sanctuary ' ,  ' Moon Pearl ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pool . extend ( [ ' Magic Mirror ' ]  *  max ( ( customitemarray [ 22 ]  - 1  ) ,  0 ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pool . extend ( [ ' Moon Pearl ' ]  *  max ( ( customitemarray [ 28 ]  -  1 ) ,  0 ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pool . extend ( [ ' Magic Mirror ' ]  *  customitemarray [ 22 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pool . extend ( [ ' Moon Pearl ' ]  *  customitemarray [ 28 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  world . worlds [ player ] . options . small_key_shuffle  ==  small_key_shuffle . option_universal : 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-26 23:24:10 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        itemtotal  =  itemtotal  -  28   # Corrects for small keys not being in item pool in universal Mode 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:41:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  world . worlds [ player ] . options . key_drop_shuffle : 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-26 23:24:10 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            itemtotal  =  itemtotal  -  ( len ( key_drop_data )  -  1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  itemtotal  <  total_items_to_place : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pool . extend ( [ ' Nothing ' ]  *  ( total_items_to_place  -  itemtotal ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-20 20:13:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        logging . warning ( f " Pool was filled up with  { total_items_to_place  -  itemtotal }  Nothing ' s for player  { player } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-21 20:43:44 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-27 19:48:59 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  ( pool ,  placed_items ,  precollected_items ,  clock_mode ,  treasure_hunt_required )