pokeapi_model/
evolution.rs

1//! Evolution types.
2
3use pokeapi_macro::pokeapi_struct;
4
5use crate::{Item, Location, Move, Name, NamedAPIResource, PokemonSpecies, Type};
6
7#[pokeapi_struct]
8struct EvolutionChain {
9    id: i32,
10    baby_trigger_item: NamedAPIResource<Item>,
11    chain: ChainLink,
12}
13
14#[pokeapi_struct]
15struct ChainLink {
16    is_baby: bool,
17    species: NamedAPIResource<PokemonSpecies>,
18    evolution_details: Vec<EvolutionDetail>,
19    evolves_to: Vec<Self>,
20}
21
22#[pokeapi_struct]
23struct EvolutionDetail {
24    item: NamedAPIResource<Item>,
25    trigger: NamedAPIResource<EvolutionTrigger>,
26    gender: i32,
27    held_item: NamedAPIResource<Item>,
28    known_move: NamedAPIResource<Move>,
29    known_move_type: NamedAPIResource<Type>,
30    location: NamedAPIResource<Location>,
31    min_level: i32,
32    min_happiness: i32,
33    min_beauty: i32,
34    min_affection: i32,
35    needs_overworld_rain: bool,
36    party_species: NamedAPIResource<PokemonSpecies>,
37    party_type: NamedAPIResource<Type>,
38    relative_physical_stats: i32,
39    time_of_day: String,
40    trade_species: NamedAPIResource<PokemonSpecies>,
41    turn_upside_down: bool,
42}
43
44#[pokeapi_struct]
45struct EvolutionTrigger {
46    id: i32,
47    name: String,
48    names: Vec<Name>,
49    pokemon_species: Vec<NamedAPIResource<PokemonSpecies>>,
50}