Skip to main content

wowlab_types/types/data/
shared.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5#[serde(tag = "source")]
6// #t(rust_non_exhaustive_on_public) WoW knowledge sources are game-defined (talent, spec, class)
7pub enum KnowledgeSource {
8    #[serde(rename = "talent")]
9    Talent {
10        #[serde(rename = "traitDefinitionId")]
11        trait_definition_id: i32,
12    },
13    #[serde(rename = "spec")]
14    Spec {
15        #[serde(rename = "specId")]
16        spec_id: i32,
17    },
18    #[serde(rename = "class")]
19    Class {
20        #[serde(rename = "classId")]
21        class_id: i32,
22    },
23    #[serde(rename = "unknown")]
24    #[default]
25    Unknown,
26}
27
28#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
29#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
30#[serde(rename_all = "snake_case")]
31// #t(rust_non_exhaustive_on_public) WoW periodic effect types are game-defined
32pub enum PeriodicType {
33    Damage,
34    Heal,
35    Leech,
36    Energize,
37    TriggerSpell,
38}
39
40#[derive(Clone, Copy, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
41#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
42#[serde(rename_all = "snake_case")]
43// #t(rust_non_exhaustive_on_public) WoW aura refresh behaviors are game-defined
44pub enum RefreshBehavior {
45    Pandemic,
46    Extend,
47    /// Replace with the new duration plus the current duration's remainder modulo one tick.
48    Tick,
49    /// Replace the duration and restart the periodic tick chain.
50    Clip,
51    /// Ignore an application while the aura is already active.
52    None,
53    #[default]
54    Duration,
55}
56
57#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
58#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
59pub struct RppmMod {
60    pub mod_type: i32,
61    pub param: i32,
62    pub coeff: f32,
63}