Пример #1
0
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
    }
Пример #2
0
    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
        ])