feat: when-filter am trigger schliesst die luecke aus m3

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.
This commit is contained in:
2026-08-12 17:44:26 +02:00
parent b25dd1c49a
commit cdcabcce21
5 changed files with 170 additions and 24 deletions

View File

@@ -39,11 +39,19 @@ pub struct Item {
pub color: Option<String>,
#[serde(default)]
pub modifiers: Vec<Modifier>,
/// Was beim Benutzen passiert (Trank, Schriftrolle).
#[serde(default)]
pub actions: Vec<Action>,
/// Faehigkeiten, die der Gegenstand **gewaehrt**, solange er getragen wird.
/// Nicht im Inventar tragbar — sonst koennte ein Magier seine Zauber
/// verkaufen (Ticket 02).
#[serde(default)]
pub abilities: Vec<String>,
#[serde(default)]
pub triggers: Vec<Trigger>,
/// Ersetzt den genannten Eintrag und uebernimmt dessen ID (Ticket 03).
#[serde(default)]
pub overrides: Option<String>,
// TODO(M3+): `actions`, `abilities`, `triggers` — brauchen erst Kampf und
// Event-System.
}
fn default_symbol() -> char {