fix(inventar): ein Stapel wird stueckweise verbraucht
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.
This commit is contained in:
@@ -217,3 +217,24 @@ bleiben Indizes stabil.
|
||||
`Stats` zerfällt in `Attributes` (Katalog aus 01) und Zustandsfelder — heute stehen `max_health` und
|
||||
`current_health` nebeneinander in derselben Struktur. `Player` wird zu `Creature`. Neben `Item` als
|
||||
Definition entsteht `ItemInstance` als Laufzeitform.
|
||||
|
||||
### Befund aus dem Spielen — der Stapel hatte keine Verbraucher
|
||||
|
||||
Ticket 07 beschreibt die Stapelregel, M4 hat sie gebaut: `ItemInstance.count`, `give` verschmilzt,
|
||||
`take` zieht ab. Gebaut wurde damit die **Erzeugungsseite** — Beute, Kauf, Verkauf. Die drei älteren
|
||||
Verbraucher blieben, wie sie waren, und die nahmen alle denselben Weg: `inventory.remove(index)`.
|
||||
|
||||
Im Spiel sichtbar an zwei Heiltränken, von denen ein Schluck beide verbrauchte. Derselbe Fehler steckte
|
||||
in `equip` (legt den ganzen Stapel an) und dieselbe Lücke in `unequip` (schob am Verschmelzen vorbei
|
||||
zurück ins Inventar).
|
||||
|
||||
Entschieden: **ein** Griff für alle Verbraucher — `take_at(index)` nimmt ein Stück aus dem Eintrag und
|
||||
räumt ihn ab, wenn er leer ist. Über den Index und nicht über die `def`, weil zwei Tränke mit
|
||||
verschiedenen Affixen sich die `def` teilen. `unequip` läuft jetzt durch `give`.
|
||||
|
||||
Die Lehre ist nicht „Stapel sind schwierig", sondern: Ein Feld, das die Bedeutung eines Eintrags
|
||||
ändert, macht **jeden** bestehenden Leser zum Kandidaten. `count` einzuführen war ein Vierzeiler; die
|
||||
Verbraucher nachzuziehen war die eigentliche Arbeit, und sie wurde beim ersten Mal vergessen.
|
||||
|
||||
Nebenbei aufgefallen: Der Heiltrank hatte nie `actions` — er war seit M1 verbrauchbar, ohne zu wirken.
|
||||
Kein Test hat es gemerkt, weil kein Test ihn getrunken hat.
|
||||
|
||||
Reference in New Issue
Block a user