pokeapi_model/
moves.rs

1//! Move types.
2
3use pokeapi_macro::pokeapi_struct;
4
5use crate::{
6    APIResource, AbilityEffectChange, ContestEffect, ContestType, Description, Generation,
7    Language, MachineVersionDetail, Name, NamedAPIResource, Stat, SuperContestEffect, Type,
8    VerboseEffect, VersionGroup,
9};
10
11#[pokeapi_struct]
12struct Move {
13    id: i32,
14    name: String,
15    accuracy: i32,
16    effect_chance: i32,
17    pp: i32,
18    priority: i32,
19    power: i32,
20    contest_combos: ContestComboSets,
21    contest_type: NamedAPIResource<ContestType>,
22    contest_effect: APIResource<ContestEffect>,
23    damage_class: NamedAPIResource<MoveDamageClass>,
24    effect_entries: Vec<VerboseEffect>,
25    effect_changes: Vec<AbilityEffectChange>,
26    flavor_text_entries: Vec<MoveFlavorText>,
27    generation: NamedAPIResource<Generation>,
28    machines: Vec<MachineVersionDetail>,
29    meta: MoveMetaData,
30    names: Vec<Name>,
31    past_values: Vec<PastMoveStatValues>,
32    stat_changes: Vec<MoveStatChange>,
33    super_contest_effect: APIResource<SuperContestEffect>,
34    target: NamedAPIResource<MoveTarget>,
35    #[serde(rename = "type")]
36    type_: NamedAPIResource<Type>,
37}
38
39#[pokeapi_struct]
40struct ContestComboSets {
41    normal: ContestComboDetail,
42    #[serde(rename = "super")]
43    super_: ContestComboDetail,
44}
45
46#[pokeapi_struct]
47struct ContestComboDetail {
48    use_before: Vec<NamedAPIResource<Move>>,
49    use_after: Vec<NamedAPIResource<Move>>,
50}
51
52#[pokeapi_struct]
53struct MoveFlavorText {
54    flavor_text: String,
55    language: NamedAPIResource<Language>,
56    version_group: NamedAPIResource<VersionGroup>,
57}
58
59#[pokeapi_struct]
60struct MoveMetaData {
61    ailment: NamedAPIResource<MoveAilment>,
62    category: NamedAPIResource<MoveCategory>,
63    min_hits: i32,
64    max_hits: i32,
65    min_turns: i32,
66    max_turns: i32,
67    drain: i32,
68    healing: i32,
69    crit_rate: i32,
70    ailment_chance: i32,
71    flinch_chance: i32,
72    stat_chance: i32,
73}
74
75#[pokeapi_struct]
76struct MoveStatChange {
77    change: i32,
78    stat: NamedAPIResource<Stat>,
79}
80
81#[pokeapi_struct]
82struct PastMoveStatValues {
83    accuracy: i32,
84    effect_chance: i32,
85    power: i32,
86    pp: i32,
87    effect_entries: Vec<VerboseEffect>,
88    #[serde(rename = "type")]
89    type_: NamedAPIResource<Type>,
90    version_group: NamedAPIResource<VersionGroup>,
91}
92
93#[pokeapi_struct]
94struct MoveAilment {
95    id: i32,
96    name: String,
97    moves: Vec<NamedAPIResource<Move>>,
98    names: Vec<Name>,
99}
100
101#[pokeapi_struct]
102struct MoveBattleStyle {
103    id: i32,
104    name: String,
105    names: Vec<Name>,
106}
107
108#[pokeapi_struct]
109struct MoveCategory {
110    id: i32,
111    name: String,
112    moves: Vec<NamedAPIResource<Move>>,
113    descriptions: Vec<Description>,
114}
115
116#[pokeapi_struct]
117struct MoveDamageClass {
118    id: i32,
119    name: String,
120    descriptions: Vec<Description>,
121    moves: Vec<NamedAPIResource<Move>>,
122    names: Vec<Name>,
123}
124
125#[pokeapi_struct]
126struct MoveLearnMethod {
127    id: i32,
128    name: String,
129    descriptions: Vec<Description>,
130    names: Vec<Name>,
131    version_groups: Vec<NamedAPIResource<VersionGroup>>,
132}
133
134#[pokeapi_struct]
135struct MoveTarget {
136    id: i32,
137    name: String,
138    descriptions: Vec<Description>,
139    moves: Vec<NamedAPIResource<Move>>,
140    names: Vec<Name>,
141}