Commit Graph

25 Commits

Author SHA1 Message Date
b25dd1c49a docs: m3-befunde in tickets 01, 08 und 14 zurueckgetragen, dreizehnte registry ins glossar 2026-08-12 17:08:27 +02:00
217a7acbbc feat: m3 kampf, events und trigger
Der Dungeon hat jetzt Gegner, und man kann sterben.

- game/action.rs: sieben Schadenstypen, fuenf der zehn Aktionen, Target
- game/condition.rs: Bedingungsgrammatik (Liste = UND, not je Eintrag)
- game/event.rs: zwoelf Events, Trigger als vierte Wirkungsform
- game/combat.rs: Treffer- und Schadensformel mit drei Klemmbereichen
- Game::apply, drain_events (FIFO), Initiative, Rundenablauf aus Ticket 14
- data/: abilities-, creatures- und modifiers-Registry, [balance] feldweise
- ui/: Combat-Screen mit Faehigkeitsmenue und Sperrgrund

Drei Befunde:
- Die Trefferformel war toter Code — jeder Angriff traf. Nur der Compiler
  hat es gemeldet ('hit_chance is never used'). Test haelt sie am Leben.
- Die Warteschlange war ein Stack (pop statt pop_front), obwohl Ticket 08
  ausdruecklich 'haengt es hinten an' sagt. Jetzt VecDeque.
- Benannte Modifikatoren (core:poisoned) hatten keine Registry — Ticket 01
  laesst apply_modifier per ID referenzieren, aber keine der zwoelf
  definierte sie. Das ist die dreizehnte.

43 Tests.
2026-08-12 17:03:00 +02:00
8bcd53efa2 docs: m2-befunde in tickets 10 und 11 zurueckgetragen, verification erweitert 2026-08-12 16:19:16 +02:00
f998e55210 feat: m2 etagengenerierung — prefabs, floors, korridore, abstieg und sieg
Der handgebaute Testraum ist weg; Etagen entstehen aus Daten.

- game/rng.rs: xorshift64*, Seed im Game (Ticket 14)
- game/generate.rs: freie Platzierung, Pflichtraeume zuerst, Kette
  i->i-1 fuer strukturelle Erreichbarkeit, acht Orientierungen
- data/: [[prefabs]] und [[floors]] als neunte und zehnte Registry,
  Ladepruefungen fuer rechteckige Layouts und Pflichtraum-Flaeche
- Descend plus Siegbedingung: keine [[floors]] mit der naechsten Nummer
  heisst gewonnen — die Zahl 5 steht nirgends im Code
- GameOver-Screen, mitlaufender Bildausschnitt im Grid

Befund: Korridore stanzten 2340 Loecher in gezeichnete Waende, weil sie
AUF der Tuer starteten. Erst Schritt nach aussen, dann L-Form, sonst
Wegsuche ueber den freien Raum — die kann eine Raumwand nicht beruehren.
Der Test zaehlt jetzt null.

21 Tests.
2026-08-12 16:14:23 +02:00
3714bad313 docs: m1-befunde in tickets 03, 04 und 11 zurueckgetragen, verification-abschnitt in der map 2026-08-12 15:42:33 +02:00
b39491916f feat: m1 vertikaler durchstich — mod-lader, registries, attributberechnung, screen-stack
Ersetzt src/ vollstaendig: print_box, include_str! und enum ItemType fallen,
wie Ticket 01-03 es vorgezeichnet haben.

- data/: Mod-Lader mit zwei Suchpfaden, selbstheilender load_order.toml,
  drei Phasen und zweistufiger Deserialisierung (03/04)
- game/: Attributkatalog, Creature, Game::attribute ueber mehrere Quellen,
  Command mit Outcome (01/07/11/12)
- ui/: Screen-Stack mit Response, Grid-Widget, Press-Filter (06/11/12)
- mods/core/: echte TOML-Dateien auf der Platte statt include_str!

10 Tests, darunter der Borrow-Beweis fuer Registries-neben-Game, den
Ticket 12 nicht fuehren konnte.
2026-08-12 15:39:17 +02:00
9c5efab331 docs: ticket 16 (loot-tabellen) aufloesen, nachtraege an 10 und 14, loot-tabelle ins glossar, destination erreicht 2026-08-12 14:18:44 +02:00
5faa5d6165 docs: ticket 15 (progression) aufloesen, nachtraege an 01 07 11 14, erfahrung ins glossar 2026-08-12 13:45:41 +02:00
380400611e docs: ticket 13 (script-engine) aufloesen, rhai gewaehlt, stufe c hinter 1.0, nachtrag an 01 2026-08-12 13:00:50 +02:00
bed9ef5762 docs: ticket 09 (save-schema) aufloesen, nachtraege an 02 und 11, speicherstand ins glossar 2026-08-12 12:34:29 +02:00
6442e104ab docs: ticket 10 (raum-prefab-format) aufloesen, nachtraege an 08 und 14, prefab und etage ins glossar 2026-08-12 12:11:42 +02:00
d51ebb26a1 docs: ticket 14 (kampfformeln) aufloesen, nachtraege an 01 07 08 11, registry-liste und initiative ins glossar 2026-08-12 11:51:25 +02:00
88195d3c9a docs: ticket 12 (durchstich) aufloesen, korrekturen an 11 und 06, zug im glossar geschaerft 2026-08-12 11:27:19 +02:00
2c19cb2aaf docs: ticket 11 (ui-geruest) aufloesen, nachtrag an 01, command ins glossar 2026-08-12 10:54:09 +02:00
d5a6feb091 docs: ticket 08 (event-trigger-system) aufloesen, nachtraege an 01 und 07, trigger bedingung und quest ins glossar 2026-08-12 10:34:12 +02:00
f25f393880 docs: ticket 07 (game-state-baum) aufloesen, wesen und affix ins glossar, vorgaben an tickets 08 09 10 14 16 2026-08-12 10:08:57 +02:00
145b82bc08 docs: ticket 04 (fehlerstrategie) aufloesen, vorgaben an ticket 11 2026-08-12 09:45:55 +02:00
d2d5ae6d8c docs: ticket 03 (mod-ladepipeline) aufloesen, mod ins glossar, vorgaben an tickets 04 und 10 2026-08-12 09:21:45 +02:00
5c4543da1a docs: ticket 02 (typ-registry) aufloesen, faehigkeit ins glossar, ticket 16 graduieren 2026-08-11 16:28:04 +02:00
4e86a37d2f docs: ticket 01 (effekt-vokabular) aufloesen, glossar anlegen, tickets 14 und 15 graduieren 2026-08-11 16:08:00 +02:00
c8cde87db1 docs: ticket 05 (script-engine-research) aufloesen, ticket 13 graduieren 2026-08-11 15:45:38 +02:00
9f9279d926 docs: ticket 06 (ratatui-research) aufloesen, tickets 11 und 12 graduieren 2026-08-11 15:38:22 +02:00
8ad5da82c1 docs: wayfinder-map fuer rustkeep 1.0 anlegen 2026-08-11 15:13:49 +02:00
290d985bc6 refactor: getter-traits durch pub-felder ersetzen, print_box wiederverwenden 2026-08-11 14:39:59 +02:00
eacf0c1a01 feat: initial commit - item catalog, player and stats 2026-08-11 14:36:51 +02:00