def test_add_resource_gain_to_current_resources_convert(blank_resource_db, blank_pickup): # Setup resource_a = blank_resource_db.get_item("Ammo") resource_b = blank_resource_db.item[0] pickup = dataclasses.replace( blank_pickup, progression=(), resource_lock=ResourceLock(resource_b, resource_b, resource_a), unlocks_resource=True, ) current_resources = ResourceCollection() current_resources.add_resource_gain([(resource_a, 5)]) # Run current_resources.add_resource_gain(pickup.resource_gain(current_resources)) # Assert assert dict(current_resources.as_resource_gain()) == { resource_a: 0, resource_b: 5 }
def _add_minimal_logic_initial_resources( self, resources: ResourceCollection, game: GameDescription, major_items: MajorItemsConfiguration, ) -> None: resource_database = game.resource_database if game.minimal_logic is None: raise ValueError( f"Minimal logic enabled, but {game.game} doesn't have support for it." ) item_db = default_database.item_database_for_game(game.game) items_to_skip = set() for it in game.minimal_logic.items_to_exclude: if it.reason is None or major_items.items_state[ item_db.major_items[it.reason]].num_shuffled_pickups != 0: items_to_skip.add(it.name) custom_item_count = game.minimal_logic.custom_item_amount events_to_skip = { it.name for it in game.minimal_logic.events_to_exclude } resources.add_resource_gain([(event, 1) for event in resource_database.event if event.short_name not in events_to_skip ]) resources.add_resource_gain([ (item, custom_item_count.get(item.short_name, 1)) for item in resource_database.item if item.short_name not in items_to_skip ])