1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Different properties of a player/item/entity

pub trait Stat {}

// StatEffector = Effect

pub struct EffectDefinition<K> {
    pub key: K,
    pub name: String,
    pub description: String,
}

pub struct EffectInstance<K> {
    pub effector: K,
}

// Stat of T driving a transition of T to T'
pub trait StatTransition {
    // stat transition can fail (ie missing mana)

    // add key
}