diff --git a/src/session.rs b/src/session.rs index 85a8221..6c0ff49 100644 --- a/src/session.rs +++ b/src/session.rs @@ -214,7 +214,15 @@ impl Session { _ => return ExecResult::lines(vec![format!(" (1..{})", d.choices.len())]), } }; - ExecResult::lines(self.step(sel)) + let mut out = self.step(sel); + // Ein start_ink-Tag kann während step() eine neue Story in den Slot + // geladen haben, während die alte auf End lief (mode → Play). Falls + // das passiert ist, sofort den ersten Schritt der neuen Story ziehen + // statt den Spieler im Play-Modus hängen zu lassen. + if self.game.story.is_some() && matches!(self.mode, Mode::Play) { + out.extend(self.step(None)); + } + ExecResult::lines(out) } /// Signal dispatchen, deferred Actions einsammeln und — falls dadurch