Pet arrival: fire after run narration, not before

The run-complete emergence seam rolled the pet-arrival DM synchronously,
then handed the run narration to streamFlow's paced (fire-and-forget)
streamer. The 'animal in your house' prompt landed ahead of the queued
'Run complete' + loot beats. Add streamFlowThen to run the roll after the
final message is delivered; fix the same inverted order in tryAutoRun.
This commit is contained in:
prosolis
2026-05-22 07:10:51 -07:00
parent ef8fbe5496
commit 56f896b941
3 changed files with 39 additions and 11 deletions

View File

@@ -165,17 +165,17 @@ func (p *AdventurePlugin) tryAutoRun(e *Expedition, now time.Time) error {
}
// Emergence seam: a run-complete reached by the background ticker is
// still a live emergence — roll pet arrival. See maybeRollPetArrivalOnEmerge.
// Deferred until after the run-summary DM below so the "animal in your
// house" prompt lands after the summary, not ahead of it.
if shouldDMAutoRun(r) {
body := renderAutoRunDM(r)
if err := p.SendDM(uid, body); err != nil {
slog.Warn("expedition: autorun DM", "user", uid, "err", err)
}
}
if r.reason == stopComplete {
p.maybeRollPetArrivalOnEmerge(uid)
}
if !shouldDMAutoRun(r) {
return nil
}
body := renderAutoRunDM(r)
if err := p.SendDM(uid, body); err != nil {
slog.Warn("expedition: autorun DM", "user", uid, "err", err)
}
return nil
}