poe_types/
character.rs

1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::{
6    item::{Item, ItemJewelData},
7    passives::PassiveNode,
8};
9
10#[derive(Debug, Clone, Deserialize, Serialize)]
11pub enum BanditChoice {
12    Kraityn,
13    Alira,
14    Oak,
15    Eramir,
16}
17
18#[derive(Debug, Clone, Deserialize, Serialize)]
19pub enum PantheonMajor {
20    TheBrineKing,
21    Arakaali,
22    Solaris,
23    Lunaris,
24}
25
26#[derive(Debug, Clone, Deserialize, Serialize)]
27pub enum PantheonMinor {
28    Abberath,
29    Grukthul,
30    Yugul,
31    Shakari,
32    Tukohama,
33    Ralakesh,
34    Garukhan,
35    Ryslatha,
36}
37
38#[derive(Default, Clone, Deserialize, Serialize)]
39pub struct Character {
40    pub id: String,
41    pub name: String,
42    pub realm: String,
43    pub class: String,
44    pub league: Option<String>,
45    pub level: usize,
46    pub experience: usize,
47    pub ruthless: Option<bool>,
48    pub expired: Option<bool>,
49    pub deleted: Option<bool>,
50    pub current: Option<bool>,
51    pub equipment: Option<Vec<Item>>,
52    pub inventory: Option<Vec<Item>>,
53    pub jewels: Option<Vec<Item>>,
54    pub passives: Option<CharacterPassives>,
55    pub metadata: Option<CharacterMetadata>,
56}
57
58#[derive(Default, Clone, Deserialize, Serialize)]
59pub struct CharacterPassives {
60    pub hashes: Vec<usize>,
61    pub hashes_ex: Vec<usize>,
62    pub mastery_effects: HashMap<String, i64>,
63    pub skill_overrides: HashMap<String, PassiveNode>,
64    pub bandit_choice: Option<BanditChoice>,
65    pub pantheon_major: Option<PantheonMajor>,
66    pub pantheon_minor: Option<PantheonMinor>,
67    pub jewel_data: HashMap<String, ItemJewelData>,
68}
69
70#[derive(Debug, Default, Clone, Deserialize, Serialize)]
71pub struct CharacterMetadata {
72    pub version: String,
73}