11import  base64 
22import  itertools 
33import  os 
4- import  settings 
5- 
64from  enum  import  IntFlag 
7- from  random  import  Random 
85from  typing  import  Any , ClassVar , Dict , get_type_hints , Iterator , List , Set , Tuple 
96
10- from  BaseClasses  import  Entrance , Item , ItemClassification , Location , MultiWorld , Region , Tutorial 
7+ import  settings 
8+ from  BaseClasses  import  Item , ItemClassification , Location , MultiWorld , Region , Tutorial 
119from  Options  import  AssembleOptions 
1210from  Utils  import  __version__ 
1311from  worlds .AutoWorld  import  WebWorld , World 
@@ -103,23 +101,21 @@ def generate_early(self) -> None:
103101
104102    def  create_regions (self ) ->  None :
105103        menu  =  Region ("Menu" , self .player , self .multiworld )
106-         menu .exits .append (Entrance (self .player , "AncientDungeonEntrance" , menu ))
107104        self .multiworld .regions .append (menu )
108105
109106        ancient_dungeon  =  Region ("AncientDungeon" , self .player , self .multiworld , "Ancient Dungeon" )
110-         ancient_dungeon .exits .append (Entrance (self .player , "FinalFloorEntrance" , ancient_dungeon ))
111107        item_count : int  =  int (self .o .blue_chest_count )
112108        if  self .o .shuffle_capsule_monsters :
113109            item_count  +=  len (self .item_name_groups ["Capsule monsters" ])
114110        if  self .o .shuffle_party_members :
115111            item_count  +=  len (self .item_name_groups ["Party members" ])
116112        for  location_name , location_id  in  itertools .islice (l2ac_location_name_to_id .items (), item_count ):
117113            ancient_dungeon .locations .append (L2ACLocation (self .player , location_name , location_id , ancient_dungeon ))
118-         prog_chest_access  =  L2ACItem ("Progressive chest access" , ItemClassification .progression , None , self .player )
119114        for  i  in  range (CHESTS_PER_SPHERE , item_count , CHESTS_PER_SPHERE ):
120115            chest_access  =  \
121116                L2ACLocation (self .player , f"Chest access { i  +  1 } { i  +  CHESTS_PER_SPHERE }  , None , ancient_dungeon )
122-             chest_access .place_locked_item (prog_chest_access )
117+             chest_access .place_locked_item (
118+                 L2ACItem ("Progressive chest access" , ItemClassification .progression , None , self .player ))
123119            ancient_dungeon .locations .append (chest_access )
124120        for  iris  in  self .item_name_groups ["Iris treasures" ]:
125121            treasure_name : str  =  f"Iris treasure { self .item_name_to_id [iris ] -  self .item_name_to_id ['Iris sword' ] +  1 }  
@@ -138,14 +134,12 @@ def create_regions(self) -> None:
138134        final_floor .locations .append (boss )
139135        self .multiworld .regions .append (final_floor )
140136
141-         self .multiworld .get_entrance ("AncientDungeonEntrance" , self .player ) \
142-             .connect (self .multiworld .get_region ("AncientDungeon" , self .player ))
143-         self .multiworld .get_entrance ("FinalFloorEntrance" , self .player ) \
144-             .connect (self .multiworld .get_region ("FinalFloor" , self .player ))
137+         menu .connect (ancient_dungeon , "AncientDungeonEntrance" )
138+         ancient_dungeon .connect (final_floor , "FinalFloorEntrance" )
145139
146140    def  create_items (self ) ->  None :
147-         item_pool : List [str ] =  self .multiworld . random .choices (sorted (self .item_name_groups ["Blue chest items" ]),
148-                                                                k = self .o .blue_chest_count  -  self .o .custom_item_pool .count )
141+         item_pool : List [str ] =  self .random .choices (sorted (self .item_name_groups ["Blue chest items" ]),
142+                                                    k = self .o .blue_chest_count  -  self .o .custom_item_pool .count )
149143        item_pool  +=  [item_name  for  item_name , count  in  self .o .custom_item_pool .items () for  _  in  range (count )]
150144
151145        if  self .o .shuffle_capsule_monsters :
@@ -155,9 +149,7 @@ def create_items(self) -> None:
155149            item_pool  +=  self .item_name_groups ["Party members" ]
156150            self .o .blue_chest_count .value  +=  len (self .item_name_groups ["Party members" ])
157151        for  item_name  in  item_pool :
158-             item_data : ItemData  =  l2ac_item_table [item_name ]
159-             item_id : int  =  items_start_id  +  item_data .code 
160-             self .multiworld .itempool .append (L2ACItem (item_name , item_data .classification , item_id , self .player ))
152+             self .multiworld .itempool .append (self .create_item (item_name ))
161153
162154    def  set_rules (self ) ->  None :
163155        for  i  in  range (1 , self .o .blue_chest_count ):
@@ -270,7 +262,7 @@ def create_item(self, name: str) -> Item:
270262
271263    def  get_filler_item_name (self ) ->  str :
272264        return  ["Potion" , "Hi-Magic" , "Miracle" , "Hi-Potion" , "Potion" , "Ex-Potion" , "Regain" , "Ex-Magic" , "Hi-Magic" ][
273-             (self .multiworld . random .randrange (9 ) +  self . multiworld .random .randrange (9 )) //  2 ]
265+             (self .random .randrange (9 ) +  self .random .randrange (9 )) //  2 ]
274266
275267    # end of overridden AutoWorld.py methods 
276268
@@ -324,33 +316,31 @@ def get_enemy_floors_sprites_and_movement_patterns(self) -> Tuple[bytes, bytes,
324316        index_set : Set [int ] =  set (used_indices )
325317        used_pointers : List [bytes ] =  [pointer  for  index , pointer  in  enumerate (pointers ) if  index  in  index_set ]
326318
327-         slot_random : Random  =  self .multiworld .per_slot_randoms [self .player ]
328- 
329319        d : int  =  2  *  6 
330320        if  self .o .enemy_floor_numbers  ==  EnemyFloorNumbers .option_shuffle :
331-             constrained_shuffle (used_formations , d , random = slot_random )
321+             constrained_shuffle (used_formations , d , random = self . random )
332322        elif  self .o .enemy_floor_numbers  ==  EnemyFloorNumbers .option_randomize :
333-             used_formations  =  constrained_choices (used_formations , d , k = len (used_formations ), random = slot_random )
323+             used_formations  =  constrained_choices (used_formations , d , k = len (used_formations ), random = self . random )
334324
335325        if  self .o .enemy_sprites  ==  EnemySprites .option_shuffle :
336-             slot_random .shuffle (used_sprites )
326+             self . random .shuffle (used_sprites )
337327        elif  self .o .enemy_sprites  ==  EnemySprites .option_randomize :
338-             used_sprites  =  slot_random .choices (tuple (dict .fromkeys (used_sprites )), k = len (used_sprites ))
328+             used_sprites  =  self . random .choices (tuple (dict .fromkeys (used_sprites )), k = len (used_sprites ))
339329        elif  self .o .enemy_sprites  ==  EnemySprites .option_singularity :
340-             used_sprites  =  [slot_random .choice (tuple (dict .fromkeys (used_sprites )))] *  len (used_sprites )
330+             used_sprites  =  [self . random .choice (tuple (dict .fromkeys (used_sprites )))] *  len (used_sprites )
341331        elif  self .o .enemy_sprites .sprite :
342332            used_sprites  =  [self .o .enemy_sprites .sprite ] *  len (used_sprites )
343333
344334        if  self .o .enemy_movement_patterns  ==  EnemyMovementPatterns .option_shuffle_by_pattern :
345-             slot_random .shuffle (used_pointers )
335+             self . random .shuffle (used_pointers )
346336        elif  self .o .enemy_movement_patterns  ==  EnemyMovementPatterns .option_randomize_by_pattern :
347-             used_pointers  =  slot_random .choices (tuple (dict .fromkeys (used_pointers )), k = len (used_pointers ))
337+             used_pointers  =  self . random .choices (tuple (dict .fromkeys (used_pointers )), k = len (used_pointers ))
348338        elif  self .o .enemy_movement_patterns  ==  EnemyMovementPatterns .option_shuffle_by_sprite :
349-             slot_random .shuffle (used_indices )
339+             self . random .shuffle (used_indices )
350340        elif  self .o .enemy_movement_patterns  ==  EnemyMovementPatterns .option_randomize_by_sprite :
351-             used_indices  =  slot_random .choices (tuple (dict .fromkeys (used_indices )), k = len (used_indices ))
341+             used_indices  =  self . random .choices (tuple (dict .fromkeys (used_indices )), k = len (used_indices ))
352342        elif  self .o .enemy_movement_patterns  ==  EnemyMovementPatterns .option_singularity :
353-             used_indices  =  [slot_random .choice (tuple (dict .fromkeys (used_indices )))] *  len (used_indices )
343+             used_indices  =  [self . random .choice (tuple (dict .fromkeys (used_indices )))] *  len (used_indices )
354344        elif  self .o .enemy_movement_patterns .sprite :
355345            used_indices  =  [indices [self .o .enemy_movement_patterns .sprite  -  128 ]] *  len (used_indices )
356346
0 commit comments