The Messenger: actually implement `get_filler_item_name` (#2070)
This commit is contained in:
		
							parent
							
								
									1d6a2bff4f
								
							
						
					
					
						commit
						6befc91773
					
				|  | @ -1,5 +1,5 @@ | ||||||
| import logging | import logging | ||||||
| from typing import Dict, Any, Optional | from typing import Dict, Any, List, Optional | ||||||
| 
 | 
 | ||||||
| from BaseClasses import Tutorial, ItemClassification, CollectionState, Item, MultiWorld | from BaseClasses import Tutorial, ItemClassification, CollectionState, Item, MultiWorld | ||||||
| from worlds.AutoWorld import World, WebWorld | from worlds.AutoWorld import World, WebWorld | ||||||
|  | @ -71,6 +71,7 @@ class MessengerWorld(World): | ||||||
|     total_shards: int |     total_shards: int | ||||||
|     shop_prices: Dict[str, int] |     shop_prices: Dict[str, int] | ||||||
|     figurine_prices: Dict[str, int] |     figurine_prices: Dict[str, int] | ||||||
|  |     _filler_items: List[str] | ||||||
| 
 | 
 | ||||||
|     def __init__(self, multiworld: MultiWorld, player: int): |     def __init__(self, multiworld: MultiWorld, player: int): | ||||||
|         super().__init__(multiworld, player) |         super().__init__(multiworld, player) | ||||||
|  | @ -130,14 +131,13 @@ class MessengerWorld(World): | ||||||
|             itempool += seals |             itempool += seals | ||||||
| 
 | 
 | ||||||
|         remaining_fill = len(self.multiworld.get_unfilled_locations(self.player)) - len(itempool) |         remaining_fill = len(self.multiworld.get_unfilled_locations(self.player)) - len(itempool) | ||||||
|         filler_pool = dict(list(FILLER.items())[2:]) if remaining_fill < 10 else FILLER |         if remaining_fill < 10: | ||||||
|         itempool += [self.create_item(filler_item) |             self._filler_items = self.random.choices( | ||||||
|                      for filler_item in |                                       list(FILLER)[2:], | ||||||
|                      self.random.choices( |                                       weights=list(FILLER.values())[2:], | ||||||
|                          list(filler_pool), |  | ||||||
|                          weights=list(filler_pool.values()), |  | ||||||
|                                       k=remaining_fill |                                       k=remaining_fill | ||||||
|                      )] |             ) | ||||||
|  |         itempool += [self.create_filler() for _ in range(remaining_fill)] | ||||||
| 
 | 
 | ||||||
|         self.multiworld.itempool += itempool |         self.multiworld.itempool += itempool | ||||||
| 
 | 
 | ||||||
|  | @ -167,7 +167,13 @@ class MessengerWorld(World): | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|     def get_filler_item_name(self) -> str: |     def get_filler_item_name(self) -> str: | ||||||
|         return "Time Shard" |         if not getattr(self, "_filler_items", None): | ||||||
|  |             self._filler_items = [name for name in self.random.choices( | ||||||
|  |                 list(FILLER), | ||||||
|  |                 weights=list(FILLER.values()), | ||||||
|  |                 k=20 | ||||||
|  |             )] | ||||||
|  |         return self._filler_items.pop(0) | ||||||
| 
 | 
 | ||||||
|     def create_item(self, name: str) -> MessengerItem: |     def create_item(self, name: str) -> MessengerItem: | ||||||
|         item_id: Optional[int] = self.item_name_to_id.get(name, None) |         item_id: Optional[int] = self.item_name_to_id.get(name, None) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue