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
- Verify the AutoPickConfig.PickKey matches the in-game interact key binding.
- Move the character closer / reorient toward Catherine before the retry loop (reuse FindFAndPress).
- Increase retryTalkTimes and interleave small position adjustments.
- 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
- Verify AutoPickConfig.PickKey equals the in-game interact binding.
- Use Bv.FindFAndPress (targeted) before falling back to a blind key press.
- Re-approach the NPC and increase retry count with position adjustments.
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.