fix: Log füllt volle Fläche + Quest-Abschluss mit Reise

- max_log 15→30, alle Einträge werden gerendert (nicht nur 12)
- Quest-Abschluss: Belohnung → Reise → Ankunft → neue Quest
  - 'Du machst dich auf den Weg...' → 'Ankunft in: X' → 'Neue Quest'
- 2 Sekunden Pause nach Quest-Abschluss zum Lesen
This commit is contained in:
arch_agent
2026-07-25 20:21:25 +02:00
parent 45b7cf5e2b
commit cc172d71c5
2 changed files with 21 additions and 6 deletions
+10 -4
View File
@@ -28,7 +28,7 @@ class GameEngine:
self.quest_progress = 0
self.quest_target = random.randint(3, 8)
self.log = []
self.max_log = 15
self.max_log = 30
def _add_log(self, msg: str):
self.log.insert(0, msg)
@@ -99,15 +99,21 @@ class GameEngine:
quest_xp = 10 + self.character.level * 5 + random.randint(0, 10)
self.character.gold += quest_gold
leveled = self.character.gain_xp(quest_xp)
self._add_log(f"[bold green]✅ Quest abgeschlossen: {self.current_quest} (+{quest_gold} Gold, +{quest_xp} XP)[/]")
self._add_log(f"[bold green]✅ Quest abgeschlossen: {self.current_quest}[/]")
self._add_log(f"[dim]Belohnung: +{quest_gold} Gold, +{quest_xp} XP[/]")
if leveled:
self._add_log(f"[bold yellow]⬆️ Stufe {self.character.level} erreicht![/]")
self.character.heal()
# Travel to new location before new quest
self._add_log(f"[blue]🌍 Du machst dich auf den Weg...[/]")
self.current_location = self.cache.get_location()
self._add_log(f"[blue]🌍 Ankunft in: {self.current_location}[/]")
# New quest
self.current_quest = self.cache.get_quest(self.character.level)
self.quest_progress = 0
self.quest_target = random.randint(3, 8)
self._add_log(f"[cyan]📜 Neue Quest: {self.current_quest} ({self.quest_target} Gegner)[/]")
self._add_log(f"[cyan]📜 Neue Quest: {self.current_quest}[/]")
self._add_log(f"[dim]Ziel: Besiege {self.quest_target} Gegner[/]")
def step(self) -> dict:
"""Ein Schritt des Auto-Progress. Gibt Event-Info zurück."""
@@ -159,7 +165,7 @@ class GameEngine:
self.quest_progress += 1
if self.quest_progress >= self.quest_target:
self._complete_quest()
events.append(("quest_done", f"[green]✅ Quest erfüllt![/]"))
events.append(("quest_done", f"[green]✅ Quest erfüllt![/]", True)) # True = pause flag
elif result["result"] == "death":
self.character.deaths += 1
+11 -2
View File
@@ -135,7 +135,7 @@ def render_game(engine: GameEngine) -> Panel:
# === Log Panel ===
log_text = Text()
for entry in engine.log[-12:]:
for entry in engine.log:
if isinstance(entry, str):
t = Text.from_markup(entry)
log_text.append(t)
@@ -188,6 +188,12 @@ def run_game(engine: GameEngine, save_path: str):
# Game step
result = engine.step()
# Check for quest completion pause
quest_pause = False
for ev in result.get("events", []):
if isinstance(ev, tuple) and len(ev) > 2 and ev[0] == "quest_done" and ev[2]:
quest_pause = True
# Refill cache occasionally
if engine.character.steps % 5 == 0:
engine.cache.refill_async()
@@ -207,7 +213,10 @@ def run_game(engine: GameEngine, save_path: str):
# Speed — slower for readability, faster at higher levels
speed = max(0.3, 1.5 - engine.character.level * 0.02)
time.sleep(speed)
if quest_pause:
time.sleep(2.0) # Pause after quest completion
else:
time.sleep(speed)
except KeyboardInterrupt:
live.update(render_game(engine))