Gemessen statt geschaetzt — es waren nicht die Zahlen:
- on_create konnte nur give_item, die Startwaffe lag also im Beutel.
Jeder Held schlug mit blossen Haenden zu: Schaden 2 statt 7,7, zehn
Zuege pro Ratte statt zweieinhalb. Neue Aktion equip_item.
- Der Dieb bekam gar keine Waffe. Jetzt ein Dolch (+3 Schaden, +5 Krit).
- critical_chance percent = 15 auf einer Basis von 0 ist ein No-op — die
Signaturzahl des Diebs tat nichts. Basis jetzt 5, Dieb traegt flat 10.
Die Prozent-auf-Null-Falle steht im Glossar unter Modifikator: Sie folgt
aus der Stapelregel aus Ticket 01 und schnappt sonst wieder zu.
use_item und equip entfernten den ganzen Eintrag — ein Schluck aus zwei
Heiltraenken verbrauchte beide. `count` kam in M4 dazu, die drei aelteren
Verbraucher wurden nicht mitgezogen.
Ein Griff fuer alle: take_at(index) nimmt ein Stueck und raeumt den
Eintrag ab, wenn er leer ist. unequip laeuft jetzt durch give, damit ein
abgelegter Stapel wieder verschmilzt.
Dabei aufgefallen: Der Heiltrank hatte nie `actions` — seit M1
verbrauchbar, ohne zu wirken.
- 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.
condition fragt Wesen, when filtert das Ereignis. Getrennt, weil dieselbe
Bedingungsgrammatik auch beim Auslesen eines Attributs laeuft — dort gibt es
kein Event, und eine Nutzlast-Pruefung in condition waere im Trigger sinnvoll
und am Modifikator immer falsch, ohne dass der Modder es sieht.
Nutzlast zurueck: damage_type und prefab. critical und amount bleiben draussen,
bis jemand sie fordert.
Dazu Item.triggers/actions/abilities und Trigger-Suche in der Ausruestung —
mods/core/items.toml belegt es mit einem Dornenpanzer, der NUR Feuer
reflektiert.
45 Tests.
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.