Пример #1
0
def test_create_message_for_hint_relative_area(echoes_game_description, pickup,
                                               players_config,
                                               distance_precise,
                                               distance_text):
    world_list = echoes_game_description.world_list
    patches = echoes_game_description.create_game_patches(
    ).assign_pickup_assignment({
        PickupIndex(5): PickupTarget(pickup, 0),
    })

    hint_name_creator = LocationHintCreator(world_list, None, None)
    location_formatters = {
        HintLocationPrecision.RELATIVE_TO_AREA:
        RelativeAreaFormatter(world_list, patches)
    }
    hint = Hint(
        HintType.LOCATION,
        PrecisionPair(
            HintLocationPrecision.RELATIVE_TO_AREA, HintItemPrecision.DETAILED,
            RelativeDataArea(distance_precise,
                             AreaLocation(1039999561, 3822429534),
                             HintRelativeAreaName.NAME)), PickupIndex(5))

    # Run
    result = item_hints.create_message_for_hint(hint, {0: patches},
                                                players_config,
                                                hint_name_creator,
                                                location_formatters,
                                                world_list)

    # Assert
    assert result == (
        f'The &push;&main-color=#FF6705B3;Pickup&pop; can be found '
        f'&push;&main-color=#FF3333;{distance_text} 10 rooms&pop; away from Torvus Bog - Great Bridge.'
    )
Пример #2
0
def test_create_hints_item_dark_temple_keys(empty_patches, players_config,
                                            echoes_game_description, pickup,
                                            indices, expected_message):
    # Setup
    db = echoes_game_description.resource_database
    keys = [
        (PickupIndex(index),
         dataclasses.replace(pickup,
                             resources=(ConditionalResources(
                                 None, None, ((db.get_item(item), 1), )), )))
        for index, item in zip(indices, echoes_items.DARK_TEMPLE_KEY_ITEMS[1])
    ]

    patches = dataclasses.replace(empty_patches,
                                  pickup_assignment={
                                      pickup_index: PickupTarget(key, 0)
                                      for pickup_index, key in keys
                                  })

    hint = Hint(HintType.RED_TEMPLE_KEY_SET,
                None,
                dark_temple=HintDarkTemple.TORVUS_BOG)

    # Run
    result = item_hints.create_message_for_hint(
        hint, {0: patches}, players_config, None, {},
        echoes_game_description.world_list)

    # Assert
    assert result == expected_message
Пример #3
0
def test_create_message_for_hint_dark_temple_no_keys(empty_patches,
                                                     players_config,
                                                     echoes_game_description):
    # Setup
    hint = Hint(HintType.RED_TEMPLE_KEY_SET,
                None,
                dark_temple=HintDarkTemple.TORVUS_BOG)

    # Run
    result = item_hints.create_message_for_hint(
        hint, {0: empty_patches}, players_config, None, {},
        echoes_game_description.world_list)

    # Assert
    assert result == 'The keys to &push;&main-color=#FF6705B3;Dark Torvus Temple&pop; are nowhere to be found.'
Пример #4
0
def test_create_message_for_hint_relative_item(echoes_game_description, pickup,
                                               players_config,
                                               distance_precise, distance_text,
                                               reference_precision,
                                               reference_name):
    world_list = echoes_game_description.world_list
    patches = echoes_game_description.create_game_patches(
    ).assign_pickup_assignment({
        PickupIndex(5):
        PickupTarget(pickup, 0),
        PickupIndex(15):
        PickupTarget(dataclasses.replace(pickup, name="Reference Pickup"), 0),
    })

    hint_name_creator = LocationHintCreator(world_list, None, None)
    location_formatters = {
        HintLocationPrecision.RELATIVE_TO_INDEX:
        RelativeItemFormatter(world_list, patches, players_config),
    }
    hint = Hint(
        HintType.LOCATION,
        PrecisionPair(HintLocationPrecision.RELATIVE_TO_INDEX,
                      HintItemPrecision.DETAILED,
                      include_owner=False,
                      relative=RelativeDataItem(distance_precise,
                                                PickupIndex(15),
                                                reference_precision)),
        PickupIndex(5))

    # Run
    result = item_hints.create_message_for_hint(hint, {0: patches},
                                                players_config,
                                                hint_name_creator,
                                                location_formatters,
                                                world_list)

    # Assert
    assert result == (
        f'The &push;&main-color=#FF6705B3;Pickup&pop; can be found '
        f'&push;&main-color=#FF3333;{distance_text} {7 + distance_precise} rooms&pop; away from {reference_name}.'
    )