weiss_core/db/
card.rs

1use serde::{Deserialize, Serialize};
2
3use super::ability::{AbilityDef, AbilityTemplate};
4use super::types::{CardColor, CardId, CardType, TriggerIcon};
5
6/// Static card definition loaded from the card database.
7#[derive(Clone, Debug, Serialize, Deserialize)]
8pub struct CardStatic {
9    /// Unique card id (non-zero).
10    pub id: CardId,
11    #[serde(default)]
12    /// Optional card set identifier.
13    pub card_set: Option<String>,
14    /// Card type (character/event/climax).
15    pub card_type: CardType,
16    /// Card color.
17    pub color: CardColor,
18    /// Level requirement.
19    pub level: u8,
20    /// Stock cost.
21    pub cost: u8,
22    /// Power value.
23    pub power: i32,
24    /// Soul value.
25    pub soul: u8,
26    /// Trigger icons on the card.
27    pub triggers: Vec<TriggerIcon>,
28    /// Trait identifiers (app-specific).
29    pub traits: Vec<u16>,
30    /// Template-based abilities.
31    pub abilities: Vec<AbilityTemplate>,
32    #[serde(default)]
33    /// Explicit ability definitions (advanced/override).
34    pub ability_defs: Vec<AbilityDef>,
35    #[serde(default)]
36    /// Whether this card can be played as a counter.
37    pub counter_timing: bool,
38    #[serde(default)]
39    /// Optional raw text for reference/debugging.
40    pub raw_text: Option<String>,
41}