feat: m4 teil 1 — beute, inventar und affixe
- data/: [[loot_tables]] und [[affixes]] als Registries; LootEntry mit guaranteed, nothing, table-in-table, count und affixes - game/loot.rs: EINE Ziehmaschinerie fuer Gegenstaende und Affixe, Tiefendeckel gegen wechselseitigen Bezug - PickUp zieht erst beim Aufheben (Ticket 16) — moeglich nur, weil alle Haufen dasselbe Symbol zeigen - UseItem/Equip/Unequip/Drop, Inventar-Screen als Registry-Schleife - Affixe im Attributpfad, in der Resistenz und in der Trigger-Suche; item_label stellt Affixnamen voran, item_price multipliziert Faktoren - Room haelt eine loot_table (nicht je Haufen eine), Prefab-loot ueberschreibt die Etagentabelle 53 Tests. Offen aus M4: Handel.
This commit is contained in:
@@ -142,11 +142,22 @@ pub fn generate(def: &FloorDef, reg: &Registries, rng: &mut Rng) -> Floor {
|
||||
})
|
||||
.collect();
|
||||
|
||||
// Ein Prefab darf ueber sein optionales `loot`-Feld die Etagentabelle
|
||||
// ersetzen — sonst ist ein Schatzkammer-Raum nur ein Raum mit mehr
|
||||
// `l`-Zeichen (Ticket 16).
|
||||
let loot_table = reg
|
||||
.prefabs
|
||||
.get(&p.prefab)
|
||||
.and_then(|pf| pf.loot.clone())
|
||||
.or_else(|| def.loot.clone())
|
||||
.unwrap_or_default();
|
||||
|
||||
rooms.push(Room {
|
||||
prefab: p.prefab.clone(),
|
||||
rect: p.rect,
|
||||
enemy_spawns,
|
||||
enemies,
|
||||
loot_table,
|
||||
loot,
|
||||
cleared: false,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user