feat(handel): NPC-Registry, Dialog, Laden und Stapelregel
Vierzehnte Registry: NPCs sind keine Wesen — kein Kampfzustand, keine Initiative, keine Attribute. Ihre Antwortliste ist flach; was erst nach einer Antwort erscheint, ist eine Option mit einer Bedingung. - open_shop als elfte Aktion (game/ setzt eine Absicht, die UI schiebt) - Talk/Choose/Buy/Sell, Talk wirkt auf das eigene Feld wie PickUp - Preisspanne statt Goldkonto beim Haendler, Charisma in der Preisfunktion - Warenkorb einmal bei der Etagenerzeugung gezogen - Stapelregel aus Ticket 07 endlich gebaut: 50-120 Gold war 120 Eintraege - Dialog- und Shop-Screen, NPC-Symbol im Grid
This commit is contained in:
@@ -13,7 +13,7 @@ pub enum Direction {
|
||||
|
||||
/// Ticket 11 hat zwoelf Commands festgelegt; M1 braucht zwei davon.
|
||||
///
|
||||
// TODO(M5+): `Talk`, `Buy`, `Sell` — und `AssignPoints` aus Ticket 15.
|
||||
// TODO(M5+): `AssignPoints` aus Ticket 15.
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum Command {
|
||||
Move(Direction),
|
||||
@@ -27,6 +27,15 @@ pub enum Command {
|
||||
Equip(usize),
|
||||
Unequip(String),
|
||||
Drop(usize),
|
||||
/// Wirkt auf das Feld, **auf dem der Held steht** — dieselbe Regel wie
|
||||
/// `PickUp` und `Descend`. Ein NPC blockiert nicht: Er steht in einem Laden,
|
||||
/// nicht in einer Tuer.
|
||||
Talk,
|
||||
/// Index in `Game::dialog_options` — die **gefilterte** Liste, damit der
|
||||
/// Screen keine Bedingungen auswerten muss.
|
||||
Choose(usize),
|
||||
Buy(usize),
|
||||
Sell(usize),
|
||||
/// Der normale Angriff ist **keine eigene Variante**, sondern
|
||||
/// `UseAbility("core:attack")` — Faehigkeiten sind seit Ticket 02 eine
|
||||
/// Registry, also gehoert er dorthin, und ein Mod kann ihn ersetzen.
|
||||
|
||||
Reference in New Issue
Block a user