Files
rustkeep/mods/core/character_options.toml
MDietermann 69efa72d68 feat(charakterbau): Rasse und Klasse werden gewaehlt
Der Held war seit M1 als Zwergenkrieger verdrahtet, waehrend zwei Rassen
und zwei Klassen ungenutzt in der Registry lagen. Der Charakterbau ist
eine Schleife ueber categories_ordered() und options_of() — ein Mod, der
"Talent" mit pick = 2 ergaenzt, bekommt eine dritte Spalte ohne Code.

- CharacterOption bekommt abilities und on_create (Ticket 02, TODO seit M3)
- abilities_of liest jetzt Rasse und Klasse: Krieger traegt Wuchtschlag,
  Dieb Hinterhalt, Zwerg Steinsinn
- on_create gibt die Startausruestung als gewoehnliche Aktionen —
  starting_hero() schrumpft auf Creature::new(name)
- MainMenu trennt "neuer Held" von "Lauf fortsetzen"

Befund: Das Feld abilities fehlte, obwohl Ticket 15 sein ganzes Argument
darauf stuetzt — eine Klasse konnte nur flache Modifikatoren geben.
2026-08-13 08:03:19 +02:00

59 lines
2.0 KiB
TOML

# Rasse und Klasse sind Charakteroptionen, keine eigenen Konzepte (Ticket 02).
# Die Kategorien sind selbst Inhalt und tragen `pick = N`, damit ein Mod eine
# dritte Wahl ergaenzen kann, ohne dass die Engine davon weiss.
[[categories]]
id = "race"
name = "Rasse"
order = 10
pick = 1
[[categories]]
id = "class"
name = "Klasse"
order = 20
pick = 1
[[options]]
id = "dwarf"
category = "core:race"
name = "Zwerg"
description = "Zäh, misstrauisch, trinkfest."
modifiers = [ { attribute = "constitution", flat = 2 },
{ attribute = "max_health", flat = 10 } ]
abilities = ["core:steinsinn"]
[[options]]
id = "elf"
category = "core:race"
name = "Elf"
description = "Flink, hochmütig, langlebig."
modifiers = [ { attribute = "dexterity", flat = 2 },
{ attribute = "luck", flat = 1 } ]
[[options]]
id = "warrior"
category = "core:class"
name = "Krieger"
description = "Schlägt zu, wo andere nachdenken."
modifiers = [ { attribute = "strength", flat = 3 },
{ attribute = "damage", percent = 10 } ]
abilities = ["core:power_strike"]
# `on_create` ist KEINE neue Mechanik, sondern gewoehnliche Aktionen, einmal
# beim Bau ausgefuehrt (Ticket 02). Die Engine kennt den Begriff
# "Startausruestung" deshalb gar nicht.
on_create = [ { action = "give_item", item = "core:iron_sword" },
{ action = "give_item", item = "core:health_potion", count = 2 } ]
[[options]]
id = "thief"
category = "core:class"
name = "Dieb"
description = "Nimmt, was nicht niet- und nagelfest ist."
modifiers = [ { attribute = "dexterity", flat = 2 },
{ attribute = "luck", flat = 2 },
{ attribute = "critical_chance", percent = 15 } ]
abilities = ["core:backstab"]
on_create = [ { action = "give_item", item = "core:leather_cap" },
{ action = "give_item", item = "core:gold", count = 40 } ]