docs: ticket 16 (loot-tabellen) aufloesen, nachtraege an 10 und 14, loot-tabelle ins glossar, destination erreicht

This commit is contained in:
2026-08-12 14:18:44 +02:00
parent 5faa5d6165
commit 9c5efab331
5 changed files with 188 additions and 5 deletions

View File

@@ -160,7 +160,8 @@ struct Room {
prefab: PrefabId, // fuer room_entered und Trigger
rect: Rect,
enemies: Vec<Creature>,
loot: Vec<(Pos, ItemInstance)>,
loot_table: LootTableId, // Nachtrag 16: Prefab-loot oder Etagentabelle
loot: Vec<Pos>, // Haufen, erst beim Aufheben aufgeloest
cleared: bool,
}
@@ -178,6 +179,21 @@ Ladeprüfung über die 04-Maschinerie: **`layout`-Zeilen müssen gleich lang sei
kein Rechteck und die Platzierung rechnet mit Müll. Ein Zweizeiler, der eine ganze Klasse von
Modder-Frust abfängt.
### Nachtrag aus Ticket 16
**Bodenbeute wird erst beim Aufheben gezogen**, deshalb hält `Room.loot` nur noch Positionen und der
Raum *eine* `loot_table` — alle Haufen eines Raums ziehen ohnehin aus derselben Tabelle (dem
Prefab-`loot` oder, wenn es fehlt, der Etagentabelle). Die *Zahl* der Haufen steht weiterhin bei der
Erzeugung fest, es sind die `l`-Zeichen; ihr Inhalt nicht. Der Save wird dadurch kleiner.
Möglich ist das nur, weil **alle Haufen dasselbe generische Symbol zeigen**: Die Anzeige verrät damit
nichts, was noch nicht gewürfelt ist. Der Gewinn ist, dass ein Glücksring auch auf Beute wirkt, die auf
dieser Etage schon liegt.
Dazu bekommt ein Prefab ein **optionales `loot`-Feld**, das die Etagentabelle für seine `l`-Plätze
ersetzt — sonst wäre ein `core:treasure`-Raum nur ein Raum mit mehr `l`-Zeichen. Es nennt eine
Tabellen-ID, keine Gegenstände, und bleibt damit über alle Tiefen verwendbar.
### Siegbedingung — bisher nirgends definiert
Kein Ticket hatte je festgelegt, was beim Abstieg von der letzten Etage passiert.