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:
@@ -38,6 +38,16 @@ impl Rect {
|
||||
}
|
||||
}
|
||||
|
||||
/// Ein NPC auf der Etage. Sein Warenkorb wird **einmal bei der Erzeugung**
|
||||
/// gezogen und liegt danach fest — sonst wuerfelte jedes Oeffnen des Ladens neu
|
||||
/// und der Spieler koennte sich das Angebot herbeischliessen (M4).
|
||||
#[derive(Debug)]
|
||||
pub struct NpcInstance {
|
||||
pub pos: (u16, u16),
|
||||
pub def: String,
|
||||
pub stock: Vec<super::creature::ItemInstance>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Room {
|
||||
/// Fuer `room_entered` und die Trigger am Prefab (Ticket 08/10).
|
||||
@@ -57,6 +67,9 @@ pub struct Room {
|
||||
/// Die `l`-Plaetze. Ticket 16: erst beim **Aufheben** aufgeloest, deshalb
|
||||
/// stehen hier Positionen und keine Gegenstaende.
|
||||
pub loot: Vec<(u16, u16)>,
|
||||
/// Die `n`-Plaetze, schon aufgeloest. Anders als bei `e` nennt das Prefab
|
||||
/// den NPC — ein Schmied skaliert nicht mit der Tiefe.
|
||||
pub npcs: Vec<NpcInstance>,
|
||||
pub cleared: bool,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user