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.' )
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
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.'
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}.' )