Change hint for shop items to be "for sale"
Lock Dungeon Prizes, as they're not supposed to be moved by any swapping mechanic
This commit is contained in:
		
							parent
							
								
									c0cdeef67a
								
							
						
					
					
						commit
						e8a57a4d24
					
				| 
						 | 
				
			
			@ -452,9 +452,11 @@ class World(object):
 | 
			
		|||
        """Check if accessibility rules are fulfilled with current or supplied state."""
 | 
			
		||||
        if not state:
 | 
			
		||||
            state = CollectionState(self)
 | 
			
		||||
        players = {}
 | 
			
		||||
        players = {"none" : set(),
 | 
			
		||||
                   "items": set(),
 | 
			
		||||
                   "locations": set()}
 | 
			
		||||
        for player, access in self.accessibility.items():
 | 
			
		||||
            players.setdefault(access, set()).add(player)
 | 
			
		||||
            players[access].add(player)
 | 
			
		||||
 | 
			
		||||
        beatable_fulfilled = False
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -619,7 +619,7 @@ def fill_prizes(world, attempts=15):
 | 
			
		|||
                prize_locs = list(empty_crystal_locations)
 | 
			
		||||
                world.random.shuffle(prizepool)
 | 
			
		||||
                world.random.shuffle(prize_locs)
 | 
			
		||||
                fill_restrictive(world, all_state, prize_locs, prizepool, True)
 | 
			
		||||
                fill_restrictive(world, all_state, prize_locs, prizepool, True, lock=True)
 | 
			
		||||
            except FillError as e:
 | 
			
		||||
                logging.getLogger('').exception("Failed to place dungeon prizes (%s). Will retry %s more times", e,
 | 
			
		||||
                                                attempts - attempt)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										6
									
								
								Main.py
								
								
								
								
							
							
						
						
									
										6
									
								
								Main.py
								
								
								
								
							| 
						 | 
				
			
			@ -218,7 +218,7 @@ def main(args, seed=None):
 | 
			
		|||
 | 
			
		||||
    if shop_slots:
 | 
			
		||||
        # TODO: allow each game to register a blacklist to be used here?
 | 
			
		||||
        blacklist_words = {"Rupee", "Pendant", "Crystal"}
 | 
			
		||||
        blacklist_words = {"Rupee"}
 | 
			
		||||
        blacklist_words = {item_name for item_name in item_table if any(
 | 
			
		||||
            blacklist_word in item_name for blacklist_word in blacklist_words)}
 | 
			
		||||
        blacklist_words.add("Bee")
 | 
			
		||||
| 
						 | 
				
			
			@ -238,12 +238,14 @@ def main(args, seed=None):
 | 
			
		|||
            if shop.can_push_inventory(slot_num):
 | 
			
		||||
                for c in candidates:  # chosen item locations
 | 
			
		||||
                    if c.item_rule(location.item) and location.item_rule(c.item):  # if rule is good...
 | 
			
		||||
                        logger.debug(f'Swapping {c} into {location}:: {c.item}')
 | 
			
		||||
 | 
			
		||||
                        swap_location_item(c, location, check_locked=False)
 | 
			
		||||
                        candidates.remove(c)
 | 
			
		||||
                        if not world.fulfills_accessibility():
 | 
			
		||||
                            swap_location_item(c, location, check_locked=False)
 | 
			
		||||
                            continue
 | 
			
		||||
 | 
			
		||||
                        logger.debug(f'Swapping {c} into {location}:: {location.item}')
 | 
			
		||||
                        break
 | 
			
		||||
 | 
			
		||||
                else:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -416,7 +416,8 @@ def create_shops(world, player: int):
 | 
			
		|||
                if my_shop_slots.pop():
 | 
			
		||||
                    additional_item = 'Rupees (50)' # world.random.choice(['Rupees (50)', 'Rupees (100)', 'Rupees (300)'])
 | 
			
		||||
                    slot_name = "{} Slot {}".format(shop.region.name, index + 1)
 | 
			
		||||
                    loc = Location(player, slot_name, address=shop_table_by_location[slot_name], parent=shop.region)
 | 
			
		||||
                    loc = Location(player, slot_name, address=shop_table_by_location[slot_name],
 | 
			
		||||
                                   parent=shop.region, hint_text="for sale")
 | 
			
		||||
                    loc.shop_slot = True
 | 
			
		||||
                    loc.locked = True
 | 
			
		||||
                    loc.item = ItemFactory(additional_item, player)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue