diff --git a/app.py b/app.py
index 8fb620b..54fce8d 100644
--- a/app.py
+++ b/app.py
@@ -933,18 +933,61 @@ def _blaulicht_intro():
đ POLIZEI · VERKEHRSKONTROLLE
Anhalten â Fahrzeugkontrolle!
Kurz vor dem Kragle-Tresor stoppt dich eine Streife.
- Die Beamten mustern deinen FĂŒhrerschein misstrauisch:
+ Ein Beamter tritt ans Fenster: âGuten Tag. Fahrzeugkontrolle â
+ Ihren FĂŒhrerschein bitte!â
+
+ đȘȘ
+ Zieh deinen FĂŒhrerschein aus dem Inventar (links) hierher,
+ um ihn den Beamten vorzuzeigen.
+
+ """
+ return adventure_seite(inhalt, akzent="#1e50ff")
+
+
+def _fs_ansage():
+ """Nach dem Vorzeigen des FĂŒhrerscheins: misstrauische Ansage der Beamten."""
+ inhalt = """
+
+
+
+
đš
+
đ POLIZEI · FĂHRERSCHEIN-PRĂFUNG
+
âDer ist doch nie echt!â
+
Die Beamten mustern deinen FĂŒhrerschein misstrauisch:
âDiesen Lappen haben Sie doch nie im Leben ehrlich bestanden!
Wenn er echt ist, beweisen Sie es: Lösen Sie diese drei Aufgaben
aus der TheorieprĂŒfung â dann dĂŒrfen Sie weiter.â
đŠ Achtung: Bei manchen Fragen ist
mehr als eine Antwort richtig. Kreuze alle
zutreffenden an â ein falsches Kreuz und du fĂ€llst durch.
-
- đȘȘ
- Zieh deinen FĂŒhrerschein aus dem Inventar (links) hierher,
- um ihn den Beamten vorzuzeigen.
-
+
TheorieprĂŒfung starten â¶
"""
return adventure_seite(inhalt, akzent="#1e50ff")
@@ -1038,13 +1081,15 @@ def _fs_frage_screen(idx, feedback=""):
def fuehrerschein_kontrolle():
"""Steuert die dreiteilige Polizei-FĂŒhrerschein-Kontrolle vor dem Finale."""
- # Noch nicht gestartet â Blaulicht-Intro (oder Start per ?fs=1)
+ # Ablauf: Blaulicht + FĂŒhrerschein droppen â misstrauische Ansage â 3 Fragen
if FS_IDX_KEY not in session:
if request.args.get("fs") == "1":
session[FS_IDX_KEY] = 0
session.modified = True
return redirect("/app/raum/40")
- return _blaulicht_intro()
+ if request.args.get("fs") == "gezeigt":
+ return _fs_ansage() # FĂŒhrerschein vorgezeigt â Ansage
+ return _blaulicht_intro() # Kontrolle: FĂŒhrerschein hierher ziehen
idx = session.get(FS_IDX_KEY, 0)
feedback = ""
@@ -1107,9 +1152,14 @@ def raum(id):
# âââ RĂ€ume mit Fragen: thema (PrĂŒf-Weg) · ziel (Finale) âââ
if typ in ("thema", "ziel"):
- # ââ Finale (Raum 40): Tresor-Schloss â Polizei-Kontrolle â Frage ââ
+ # ââ Finale (Raum 40): erst Polizei-Kontrolle, dann Tresor-Schloss ââ
if typ == "ziel" and id == 40:
- # ZugangsschlĂŒssel einsetzen (per Drag&Drop ausgelöst)
+ # 1) Polizei-FĂŒhrerschein-Kontrolle zuerst
+ if not session.get(FS_DONE_KEY):
+ _stage_start(40) # Polizei-Kontrolle Zeitmessung
+ db.close()
+ return fuehrerschein_kontrolle()
+ # 2) Danach: ZugangsschlĂŒssel in den Kragle-Tresor (per Drag&Drop)
if request.args.get("unlock") == "1" and not session.get("vault_unlocked"):
used = next((k for k in ACCESS_KEYS if _inv_has(k)), None)
if used:
@@ -1121,10 +1171,6 @@ def raum(id):
if not session.get("vault_unlocked"):
db.close()
return _tresor_schloss()
- if not session.get(FS_DONE_KEY):
- _stage_start(40) # Polizei-Kontrolle Zeitmessung
- db.close()
- return fuehrerschein_kontrolle()
# ââ PrĂŒf-Weg-RĂ€ume: Zeitmessung dieses Abschnitts startet ââ
if typ == "thema":
_stage_start(id)