1.6 KiB
1.6 KiB
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
conditionwurde hierher delegiert, damit Quests und Modifikatoren dieselbe Grammatik benutzen statt zweier, die sich subtil unterscheiden. - 07:
Gamehältquests: Vec<QuestProgress>— die Form vonQuestProgressentscheidet dieses Ticket. Wesen werden überenum CreatureRef { Player, Enemy(usize) }adressiert, Mutationen laufen durch den einen EingangGame::apply(action, source, target, reg). Ein Event-Handler, der etwas bewirkt, geht durch dieselbe Tür.