02 — Typ-Registry statt Enums #3

Closed
opened 2026-08-11 13:13:22 +00:00 by RDietermann · 2 comments
Owner

Teil der Map #1 · Type: wayfinder:grilling · Blocked by: #2

Wie werden Item-Typen, Rassen und Klassen zu Daten statt zu Rust-Enums? num ItemType kann ein Modder nicht erweitern.

Volle Fragestellung (kanonisch): .scratch/rustkeep-1.0/issues/02-typ-registry.md

Teil der Map #1 · **Type: `wayfinder:grilling`** · **Blocked by: #2** Wie werden Item-Typen, Rassen und Klassen zu Daten statt zu Rust-Enums? num ItemType kann ein Modder nicht erweitern. Volle Fragestellung (kanonisch): `.scratch/rustkeep-1.0/issues/02-typ-registry.md`
RDietermann added the wayfinder:grilling label 2026-08-11 13:13:22 +00:00
Author
Owner

Claimed 2026-08-11 — in Arbeit. Kanonischer Claim: Status: claimed in .scratch/rustkeep-1.0/issues/02-typ-registry.md.

**Claimed** 2026-08-11 — in Arbeit. Kanonischer Claim: `Status: claimed` in `.scratch/rustkeep-1.0/issues/02-typ-registry.md`.
Author
Owner

Answer — aufgeloest 2026-08-11

Volle Fassung: .scratch/rustkeep-1.0/issues/02-typ-registry.md. Begriffe im Glossar CONTEXT.md.

Fuenf Registries, alle moddbar und namespaced: Gegenstaende · Slots · Charakteroption-Kategorien · Charakteroptionen · Faehigkeiten.

Es gibt keinen Item-Typ mehr. enum ItemType verschwindet ersatzlos — er vermischte drei Konzepte: Helmet ist ein Slot, Consumable ein Verhalten, Currency eine Kategorie. Genau deshalb war er nie erweiterbar. Stattdessen drei Felder am Gegenstand: slot (leer = nicht ausruestbar), stackable, consumed_on_use.

ItemWeapon und ItemArmor entfallen. Ein Gegenstand ist einheitlich { id, name, base_price, slot?, stackable, consumed_on_use, modifiers[], actions[], abilities[] }. Schwert = Gegenstand mit Modifikator auf damage. Helm = Gegenstand mit Modifikator auf resistance. Tragende Regel: Braucht ein Gegenstand etwas, das Modifikator/Aktion/Faehigkeit nicht ausdruecken koennen, ist das eine Luecke im Vokabular — sie wird dort geschlossen, nicht hier mit einem Sonderfeld umgangen.

Faehigkeit ist der dritte Begriff neben Modifikator und Aktion: ein benanntes, wiederholt ausloesbares Angebot an den Spieler (Kampfmenue, Symbol, Kosten, sperrbar) — im Unterschied zur Aktion, die eine Wirkung ist. Faehigkeiten werden gewaehrt, nicht im Inventar getragen, sonst koennte ein Magier seine Zauberspruece verkaufen. Kosten/Abklingzeit/Verfuegbarkeit sind ausdruecklich an #15 delegiert.

Slots und Charakteroptionen sind moddbar, inklusive der Kategorien selbst (pick = N). Ein Mod kann meinmod:umhang als Slot und meinmod:gottheit als dritte Wahl beim Charakterbau ergaenzen.

on_create ist keine neue Mechanik — eine Liste gewoehnlicher Aktionen, einmal beim Charakterbau ausgefuehrt. Startgold, Startausruestung und Startbuff werden damit moddbar, ohne dass die Engine „Startausruestung" kennt.

Umbenennung: Item.value → base_price, Attribut shop_price → price_modifier.

Auflagen: #12 — Charakterbogen und Charakterbau sind Schleifen ueber Registries, keine festen Layouts. #15 — muss Faehigkeitskosten mitentscheiden (Ticketkoerper erweitert).

Code: weapon.rs und armor.rs werden geloescht, enum ItemType entfaellt, weapons.toml/armors.toml verschmelzen, items.rs schrumpft auf Laden plus Registry.

Freigeschaltet: #4, #8, #14, #16. Neu graduiert: #17.

## Answer — aufgeloest 2026-08-11 Volle Fassung: `.scratch/rustkeep-1.0/issues/02-typ-registry.md`. Begriffe im Glossar `CONTEXT.md`. **Fuenf Registries**, alle moddbar und namespaced: Gegenstaende · Slots · Charakteroption-Kategorien · Charakteroptionen · Faehigkeiten. **Es gibt keinen Item-Typ mehr.** `enum ItemType` verschwindet ersatzlos — er vermischte drei Konzepte: `Helmet` ist ein *Slot*, `Consumable` ein *Verhalten*, `Currency` eine *Kategorie*. Genau deshalb war er nie erweiterbar. Stattdessen drei Felder am Gegenstand: `slot` (leer = nicht ausruestbar), `stackable`, `consumed_on_use`. **`ItemWeapon` und `ItemArmor` entfallen.** Ein Gegenstand ist einheitlich `{ id, name, base_price, slot?, stackable, consumed_on_use, modifiers[], actions[], abilities[] }`. Schwert = Gegenstand mit Modifikator auf `damage`. Helm = Gegenstand mit Modifikator auf `resistance`. **Tragende Regel:** Braucht ein Gegenstand etwas, das Modifikator/Aktion/Faehigkeit nicht ausdruecken koennen, ist das eine Luecke im Vokabular — sie wird dort geschlossen, nicht hier mit einem Sonderfeld umgangen. **Faehigkeit ist der dritte Begriff** neben Modifikator und Aktion: ein benanntes, wiederholt ausloesbares *Angebot* an den Spieler (Kampfmenue, Symbol, Kosten, sperrbar) — im Unterschied zur Aktion, die eine *Wirkung* ist. Faehigkeiten werden gewaehrt, nicht im Inventar getragen, sonst koennte ein Magier seine Zauberspruece verkaufen. Kosten/Abklingzeit/Verfuegbarkeit sind ausdruecklich an #15 delegiert. **Slots und Charakteroptionen sind moddbar**, inklusive der Kategorien selbst (`pick = N`). Ein Mod kann `meinmod:umhang` als Slot und `meinmod:gottheit` als dritte Wahl beim Charakterbau ergaenzen. **`on_create` ist keine neue Mechanik** — eine Liste gewoehnlicher Aktionen, einmal beim Charakterbau ausgefuehrt. Startgold, Startausruestung und Startbuff werden damit moddbar, ohne dass die Engine „Startausruestung" kennt. **Umbenennung:** `Item.value` → `base_price`, Attribut `shop_price` → `price_modifier`. **Auflagen:** #12 — Charakterbogen und Charakterbau sind Schleifen ueber Registries, keine festen Layouts. #15 — muss Faehigkeitskosten mitentscheiden (Ticketkoerper erweitert). **Code:** `weapon.rs` und `armor.rs` werden geloescht, `enum ItemType` entfaellt, `weapons.toml`/`armors.toml` verschmelzen, `items.rs` schrumpft auf Laden plus Registry. Freigeschaltet: #4, #8, #14, #16. Neu graduiert: #17.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RDietermann/rustkeep#3