Eine Quest IST ein Trigger mit count = N — kein zweiter Mechanismus. Gezaehlt wird erst ab start_quest, erledigte bleiben mit done = true stehen, und die Belohnung darf die naechste starten: das ist die Kette. - fuenfzehnte Registry, Trigger per serde(flatten) eingebettet - give_item als Aktion, damit eine Belohnung mehr als Erfahrung zahlt - QuestLog auf q, Fortschritt im Speicherstand, unbekannte IDs verworfen - eine Funktion entscheidet fuer alle Traeger, wann ein Trigger feuert Befund: Die Ordnungszahlen im Aktionskatalog widersprechen sich — vier Tickets zaehlten je vom eigenen Stand. Sie sind raus, CONTEXT.md fuehrt die Liste.
35 lines
1.4 KiB
TOML
35 lines
1.4 KiB
TOML
# Quests (Ticket 08). Eine Quest **ist ein Trigger mit `count = N`** — kein
|
|
# zweiter Mechanismus, dieselben Felder wie an Gegenstand, Modifikator oder
|
|
# Gegner: `on`, `when`, `condition`, `actions`, `chance`.
|
|
#
|
|
# Gezaehlt wird ERST AB DEM START (`start_quest`). Alle Quests ab dem ersten Zug
|
|
# mitlaufen zu lassen waere kuerzer und macht das Spiel kaputt: Eine Kette
|
|
# "bring mir fuenf Schwaenze" -> "jetzt in den Keller" waere beim Betreten des
|
|
# Kellers schon erfuellt, bevor sie jemand erwaehnt hat.
|
|
|
|
[[quests]]
|
|
id = "rattenplage"
|
|
name = "Rattenplage"
|
|
description = "Borin zahlt für fünf Riesenratten."
|
|
on = "creature_died"
|
|
count = 5
|
|
condition = [ { check = "has_tag", who = "target", value = "core:beast" } ]
|
|
actions = [
|
|
{ action = "give_item", item = "core:gold", count = 60 },
|
|
{ action = "give_exp", amount = 25 },
|
|
# Die Belohnung startet die naechste Quest — DAS ist die Kette, und sie
|
|
# braucht keinen eigenen Begriff.
|
|
{ action = "start_quest", quest = "core:tiefer_hinab" },
|
|
]
|
|
|
|
# "Besitze N" braucht keine zweite Mechanik, sondern dieselbe Form: ein Ereignis,
|
|
# eine Bedingung, count = 1.
|
|
[[quests]]
|
|
id = "tiefer_hinab"
|
|
name = "Tiefer hinab"
|
|
description = "Steig bis zur dritten Etage ab."
|
|
on = "floor_entered"
|
|
count = 1
|
|
condition = [ { check = "attribute", who = "self", attribute = "level", at_least = 1 } ]
|
|
actions = [ { action = "give_exp", amount = 40 } ]
|