180 lines
8.6 KiB
Markdown
180 lines
8.6 KiB
Markdown
# Glossar
|
|
|
|
Kanonische Begriffe für rustkeep. Nur Sprache, keine Implementierung.
|
|
|
|
## Wesen
|
|
|
|
Held oder Gegner — im Code derselbe Typ. Träger von [Attributen](#attribut), [Zustand](#zustand),
|
|
[Tags](#tag), Inventar, Ausrüstung, gewählten [Charakteroptionen](#charakteroption) und den befristeten
|
|
[Modifikatoren](#modifikator), die gerade auf ihm liegen.
|
|
|
|
Ein Wesen ist dabei nicht in sich abgeschlossen: Eine Aura wohnt beim Träger und wird erst beim
|
|
Auslesen des Ziels eingesammelt.
|
|
|
|
## Attribut
|
|
|
|
Eine benannte, veränderbare Größe an einem [Wesen](#wesen). Der Katalog ist fest und wird von der Engine
|
|
vorgegeben — er umfasst die Grundwerte (Stärke, Geschicklichkeit, Konstitution, Charisma, Glück,
|
|
Leben, Ausdauer, Level) *und* die abgeleiteten Kampfgrößen (Schaden, Rüstung, Trefferchance,
|
|
Kritische Chance, Kritischer Faktor, Preis-Modifikator, Tragfähigkeit).
|
|
|
|
Ein Attribut ist kein Inhalt, den ein Mod anlegt: Ein Modifikator auf ein Attribut, das keine
|
|
Spiellogik ausliest, hätte keine Wirkung. Der Katalog darf wachsen — aber durch die Engine,
|
|
nicht durch eine TOML-Datei.
|
|
|
|
## Modifikator
|
|
|
|
Eine Umrechnung eines [Attributs](#attribut), die gilt, solange eine Bedingung erfüllt ist.
|
|
Er wird nie ausgeführt, sondern beim Auslesen des Attributs aufsummiert. Quellen sind Rasse,
|
|
Klasse, ausgerüstete Gegenstände und befristete Zustände.
|
|
|
|
Beispiele: „Zwerg: +2 Konstitution", „Eisenschwert: +5 Schaden", „Segen: +10 % Kritische Chance".
|
|
|
|
## Aktion
|
|
|
|
Eine einmalige Zustandsänderung. Sie feuert, wirkt, ist vorbei. Quellen sind Angriffe,
|
|
Verbrauchsgegenstände, Questbelohnungen und Fallen.
|
|
|
|
Beispiele: „12 Schaden zufügen", „20 Leben heilen", „50 Gold geben", „Gift anwenden".
|
|
|
|
Eine Aktion kann einen befristeten [Modifikator](#modifikator) erzeugen — so hängen die beiden
|
|
Begriffe zusammen, ohne dasselbe zu sein.
|
|
|
|
## Command
|
|
|
|
Ein Kommando der Oberfläche an das Spiel — „geh nach Norden", „leg das an", „kauf drei Tränke".
|
|
**Nicht dasselbe wie eine [Aktion](#aktion)**, und der Unterschied ist der Grund für den englischen
|
|
Namen: Eine Aktion ist Effektvokabular aus einer TOML, ein Command kommt von einem Tastendruck.
|
|
|
|
Jeder Command kostet einen [Zug](#zug), auch Handel — es gibt keine Ausnahmeliste. Bildschirme zu
|
|
öffnen ist dagegen kein Command, sondern reine Oberfläche und fasst den Spielzustand nicht an.
|
|
|
|
## Fähigkeit
|
|
|
|
Ein benanntes, wiederholt auslösbares Angebot an den Spieler, das [Aktionen](#aktion) ausführt.
|
|
Sie erscheint im Kampfmenü, trägt Symbol und Kosten und kann gesperrt sein.
|
|
|
|
Die dritte und letzte Wirkungsform neben [Modifikator](#modifikator) und [Aktion](#aktion), und die
|
|
Unterscheidung ist wesentlich: Eine Aktion ist eine *Wirkung*, eine Fähigkeit ist ein *Angebot*.
|
|
Fähigkeiten werden von [Charakteroptionen](#charakteroption) und Gegenständen gewährt, nicht im
|
|
Inventar getragen — sonst könnte ein Magier seine Zaubersprüche verkaufen.
|
|
|
|
## Trigger
|
|
|
|
Die vierte Wirkungsform: `{ on = <event>, condition = [...], actions = [...] }`. Ein
|
|
[Modifikator](#modifikator) rechnet um, eine [Aktion](#aktion) wirkt einmal, eine
|
|
[Fähigkeit](#fähigkeit) bietet an — der Trigger sagt **wann**.
|
|
|
|
Er darf überall stehen, wo Modifikatoren und Aktionen stehen: an [Gegenständen](#gegenstand),
|
|
[Affixen](#affix), [Charakteroptionen](#charakteroption) und [Quests](#quest). Im Trigger ist `self`
|
|
immer sein *Träger*, `target` die andere Seite des Events.
|
|
|
|
Die Events sind Engine-Vokabular ohne Namensraum und eine feste Liste — wie Attribute und
|
|
Schadenstypen.
|
|
|
|
## Bedingung
|
|
|
|
Eine Liste von Prüfungen, die *alle* zutreffen müssen — die Liste ist implizit UND, jeder Eintrag
|
|
über `not` negierbar. Es gibt kein ODER und keine Verschachtelung: Zwei Möglichkeiten werden zu zwei
|
|
Einträgen, oder der Modder fasst sie über ein gemeinsames [Tag](#tag) zusammen.
|
|
|
|
Es gibt genau eine Bedingungsgrammatik, und sie gilt an [Triggern](#trigger) wie an
|
|
[Modifikatoren](#modifikator).
|
|
|
|
## Quest
|
|
|
|
Ein [Trigger](#trigger) mit einem Zähler: `count = N` bedeutet, dass das Event N-mal mit erfüllter
|
|
[Bedingung](#bedingung) feuern muss, bevor die [Aktionen](#aktion) als Belohnung ablaufen. Moddbarer,
|
|
namespaced Inhalt.
|
|
|
|
Eine Quest zählt erst mit, nachdem die [Aktion](#aktion) `start_quest` sie angenommen hat.
|
|
|
|
## Gegenstand
|
|
|
|
Ein Ding im Spiel, einheitlich strukturiert: Kennung, Name, Grundpreis, optionaler [Slot](#slot),
|
|
Stapelbarkeit, Verbrauch beim Benutzen, plus Listen von [Modifikatoren](#modifikator),
|
|
[Aktionen](#aktion) und [Fähigkeiten](#fähigkeit).
|
|
|
|
Es gibt **keine Item-Typen**. Der frühere `enum ItemType` vermischte drei Konzepte — `Helmet` war ein
|
|
Slot, `Consumable` ein Verhalten, `Currency` eine Kategorie. Ein Schwert ist ein Gegenstand mit einem
|
|
Modifikator auf `damage`, mehr nicht.
|
|
|
|
Braucht ein Gegenstand etwas, das Modifikator, Aktion oder Fähigkeit nicht ausdrücken können, ist das
|
|
eine Lücke im Vokabular — sie wird dort geschlossen, nicht mit einem Sonderfeld umgangen.
|
|
|
|
## Affix
|
|
|
|
Eine benannte [Modifikator](#modifikator)-Liste mit Anzeigename und Preisfaktor, die an einem
|
|
*einzelnen Exemplar* eines [Gegenstands](#gegenstand) hängt — „Flammendes Eisenschwert". Moddbarer,
|
|
namespaced Inhalt (`core:flaming`).
|
|
|
|
Der Affix ist der Grund, warum ein Gegenstand im Spiel nicht dasselbe ist wie sein Katalogeintrag: Die
|
|
Definition liegt in der Registry, das Exemplar trägt zusätzlich seine Affixe.
|
|
|
|
Strukturell ist ein Affix dasselbe wie eine [Charakteroption](#charakteroption) — benannte
|
|
Modifikatorliste plus Metadaten. Der Unterschied ist, woran er hängt.
|
|
|
|
## Slot
|
|
|
|
Eine benannte Stelle am Charakter, an der genau ein [Gegenstand](#gegenstand) getragen werden kann.
|
|
Moddbarer, namespaced Inhalt mit Anzeigename und Sortierreihenfolge (`core:head`, `meinmod:umhang`).
|
|
Der Charakterbogen rendert die vorhandenen Slots, statt ein festes Layout zu mauern.
|
|
|
|
## Charakteroption
|
|
|
|
Eine Wahl beim Charakterbau — eine benannte Liste von [Modifikatoren](#modifikator),
|
|
[Fähigkeiten](#fähigkeit) und einmalig ausgeführten [Aktionen](#aktion). Rasse und Klasse sind
|
|
Charakteroptionen, keine eigenen Konzepte.
|
|
|
|
Optionen liegen in **Kategorien**, und die Kategorien sind selbst moddbarer Inhalt mit einem Feld
|
|
`pick = N`. Ein Mod kann so eine dritte Wahl („Gottheit") oder eine Mehrfachwahl („zwei Talente")
|
|
ergänzen, ohne dass die Engine davon weiß.
|
|
|
|
## Zustand
|
|
|
|
Der veränderliche Istwert eines Wesens — aktuelles Leben, aktuelle Ausdauer, getragene Gegenstände,
|
|
aktive befristete [Modifikatoren](#modifikator). Kein [Attribut](#attribut) und nicht von
|
|
Modifikatoren umrechenbar: Ein Modifikator wirkt auf `max_health`, eine [Aktion](#aktion) ändert den
|
|
Lebensstand. Die Trennung muss scharf bleiben, sonst heilt ein Ring beim Anlegen.
|
|
|
|
## Schadenstyp
|
|
|
|
Eine von sieben festen Kennzeichnungen, wie Schaden gemindert wird: `fire`, `ice`, `poison`, `shock`,
|
|
`holy`, `slash`, `blunt`. Engine-Vokabular ohne Namensraum. Zu jedem Typ gehört eine Resistenz, und
|
|
Resistenz ist der *einzige* Minderungsmechanismus — Rüstung ist Kurzschreibweise für Resistenz gegen
|
|
`slash` und `blunt`, kein eigenes Konzept.
|
|
|
|
Der Schadenstyp `poison` ist **nicht** der Modifikator `core:poisoned` („Vergiftet"). Der Typ sagt,
|
|
wie gemindert wird; der Modifikator ist ein Zustand, der über Züge tickt.
|
|
|
|
## Tag
|
|
|
|
Eine freie, namespaced Kennzeichnung an einem Wesen (`core:undead`, `meinmod:aquatisch`). Reiner
|
|
Inhalt: Die Engine kennt keine Tags, sie vergleicht nur Zeichenketten. Grundlage für Bedingungen
|
|
wie „+5 Schaden gegen Untote". Gegenpol zum [Attribut](#attribut) — der Doppelpunkt zeigt dem Modder,
|
|
auf welcher Seite er steht.
|
|
|
|
## Zug
|
|
|
|
Die einzige Zeiteinheit des Spiels. Ein Feld weitergehen ist ein Zug, eine Kampfaktion ist ein Zug.
|
|
Ein **abgewiesenes** [Command](#command) kostet dagegen keinen — gegen eine Wand zu laufen verbraucht
|
|
keine Zeit.
|
|
Es gibt keine getrennte Kampfrunden-Uhr: Befristete [Modifikatoren](#modifikator) ticken auch beim
|
|
Erkunden, damit „ich warte den Debuff draußen ab" eine Entscheidung mit Kosten bleibt.
|
|
|
|
## Mod
|
|
|
|
Ein Ordner mit einer `manifest.toml` und beliebig vielen weiteren TOML-Dateien. Das Manifest gibt dem
|
|
Mod seinen **Namensraum** — den Präfix vor dem Doppelpunkt, den der Lader jeder ID darin automatisch
|
|
voranstellt.
|
|
|
|
Das Kernspiel ist ein Mod, kein Sonderfall: `core` liegt als gewöhnlicher Ordner auf der Platte und
|
|
wird über denselben Lader gelesen wie jeder Fremdmod. Genau das ist der Sinn — was nur für Fremdmods
|
|
gilt, ist nie getestet.
|
|
|
|
## Effekt
|
|
|
|
**Kein kanonischer Begriff.** Wird umgangssprachlich für [Modifikator](#modifikator) *und*
|
|
[Aktion](#aktion) benutzt; in Code, TOML und Doku ist stattdessen immer der genaue Begriff zu
|
|
verwenden. Das Wort überlebt nur noch in „Effekt-Vokabular" als Sammelname für beide zusammen.
|