babalae/better-genshin-impact · error · Exception

与凯瑟琳对话失败

Error message

与凯瑟琳对话失败

What it means

Thrown after 3 attempts to engage Catherine's dialogue: each loop checks Bv.IsInTalkUi(ra) and, if not in dialogue, presses the AutoPick pick key (the F-interact key) and waits 500ms. If still not in the talk UI on the final iteration, the talk is deemed unreachable.

Source

Thrown at BetterGenshinImpact/GameTask/Common/Job/GoToAdventurersGuildTask.cs:187

            },
            EndAction = region => Bv.FindFAndPress(region, text: this.catherineLocalizedString)
        };
        await pathingTask.Pathing(task);

        await Delay(600, ct);

        const int retryTalkTimes = 3;
        for (int i = 0; i < retryTalkTimes; i++)
        {
            using var ra = CaptureToRectArea();
            if (!Bv.IsInTalkUi(ra))
            {
                Simulation.SendInput.Keyboard.KeyPress(AutoPickAssets.Get(ra, TaskContext.Instance().Config.AutoPickConfig.PickKey).PickVk);
                await Delay(500, ct);

                if (i == retryTalkTimes - 1)
                {
                    throw new Exception("与凯瑟琳对话失败");
                }
            }
        }
    }
}

View on GitHub (pinned to a7cb36712d)

Solutions

  1. Verify the AutoPickConfig.PickKey matches the in-game interact key binding.
  2. Move the character closer / reorient toward Catherine before the retry loop (reuse FindFAndPress).
  3. Increase retryTalkTimes and interleave small position adjustments.
  4. Use Bv.FindFAndPress (which targets the F-prompt) instead of a blind key press.

Example fix

// before
if (!Bv.IsInTalkUi(ra))
{
    Simulation.SendInput.Keyboard.KeyPress(AutoPickAssets.Get(ra, ...).PickVk);
    await Delay(500, ct);
    if (i == retryTalkTimes - 1) throw new Exception("与凯瑟琳对话失败");
}

// after: target the F-prompt explicitly before falling back to a blind key
if (!Bv.IsInTalkUi(ra))
{
    if (!Bv.FindFAndPress(ra, text: this.catherineLocalizedString))
    {
        Simulation.SendInput.Keyboard.KeyPress(AutoPickAssets.Get(ra, ...).PickVk);
    }
    await Delay(500, ct);
    if (i == retryTalkTimes - 1) throw new Exception("与凯瑟琳对话失败");
}
Defensive patterns

Strategy: retry

Validate before calling

null

Type guard

null

Try / catch

try { await GoToAdventurersGuild(country, ct); }
catch (Exception e) when (e.Message == "与凯瑟琳对话失败")
{ /* re-approach Catherine and use FindFAndPress instead of a blind key */ }

Prevention

When it happens

Trigger: retryTalkTimes (3) iterations all find Bv.IsInTalkUi false despite pressing AutoPickAssets pick VK each time. The F-key press did not open Catherine's dialogue — she is out of range, facing away, occluded, or the pick key mapping is wrong.

Common situations: Character landed too far from Catherine (pathing EndAction did not approach); camera angle hides the F-prompt; configured pick key does not match the game's interact binding; another interactable (chest, NPC) captured the F-press.

Related errors


AI-assisted analysis of babalae/better-genshin-impact@a7cb36712d (2026-08-13). Data as JSON: /api/errors/53ef69da7dabc458. Report an issue: GitHub.