# 08 — Event- und Trigger-System Type: grilling Status: open Blocked by: 07 ## Question Welche Ereignisse meldet das Spiel, und wie hängen Quests und Effekte daran? Quests sind Bedingung plus Belohnung als Daten; Script-Mods hängen sich später an dieselben Events. Zu klären: - Welche Events gibt es, und welche Daten trägt jedes? `enemy_killed`, `item_picked_up`, `floor_entered`, `npc_talked`, `turn_started`, `damage_taken`, `player_died`. - Wie werden Events benannt und für Modder erweiterbar gemacht — feste Liste oder auch namespaced IDs? - Bedingungen: reines Zählen (töte 5 Ratten) oder auch Zustandsabfragen (habe 100 Gold, Level ≥ 3)? Braucht es Verknüpfung mit UND/ODER? - Wie wird ein Questfortschritt gespeichert und wie überlebt er das Deaktivieren des Quest-Mods? - Reihenfolge und Rekursion: Was passiert, wenn eine Belohnung selbst ein Event auslöst? - Ist das synchrone Aufrufe (Handler direkt ausführen) oder eine Warteschlange? Ergebnis: Eventliste mit Nutzlast, Bedingungs-Grammatik, TOML-Beispiel für eine Quest. ## Vorgaben aus anderen Tickets - **01**: Das **Bedingungsvokabular** für `condition` wurde hierher delegiert, damit Quests und Modifikatoren dieselbe Grammatik benutzen statt zweier, die sich subtil unterscheiden. - **07**: `Game` hält `quests: Vec` — die Form von `QuestProgress` entscheidet dieses Ticket. Wesen werden über `enum CreatureRef { Player, Enemy(usize) }` adressiert, Mutationen laufen durch den einen Eingang `Game::apply(action, source, target, reg)`. Ein Event-Handler, der etwas bewirkt, geht durch dieselbe Tür.