luminol_data/rmxp/
armor.rs1use crate::{
18 id_alox, id_serde, id_vec_alox, id_vec_serde, optional_id_alox, optional_id_serde,
19 optional_path_alox, optional_path_serde, Path,
20};
21
22#[derive(Default, Debug, serde::Deserialize, serde::Serialize)]
23#[derive(alox_48::Deserialize, alox_48::Serialize)]
24#[marshal(class = "RPG::Armor")]
25pub struct Armor {
26 #[serde(with = "id_serde")]
27 #[marshal(with = "id_alox")]
28 pub id: usize,
29 pub name: String,
30 #[serde(with = "optional_path_serde")]
31 #[marshal(with = "optional_path_alox")]
32 pub icon_name: Path,
33 pub description: String,
34 pub kind: Kind,
35 #[serde(with = "optional_id_serde")]
36 #[marshal(with = "optional_id_alox")]
37 pub auto_state_id: Option<usize>,
38 pub price: i32,
39 pub pdef: i32,
40 pub mdef: i32,
41 pub eva: i32,
42 pub str_plus: i32,
43 pub dex_plus: i32,
44 pub agi_plus: i32,
45 pub int_plus: i32,
46 #[serde(with = "id_vec_serde")]
47 #[marshal(with = "id_vec_alox")]
48 pub guard_element_set: Vec<usize>,
49 #[serde(with = "id_vec_serde")]
50 #[marshal(with = "id_vec_alox")]
51 pub guard_state_set: Vec<usize>,
52}
53
54#[derive(Clone, Copy, Debug, Eq, PartialEq, Default)]
55#[derive(
56 num_enum::TryFromPrimitive,
57 num_enum::IntoPrimitive,
58 strum::Display,
59 strum::EnumIter
60)]
61#[derive(serde::Deserialize, serde::Serialize)]
62#[derive(alox_48::Deserialize, alox_48::Serialize)]
63#[repr(u8)]
64#[serde(into = "u8")]
65#[serde(try_from = "u8")]
66#[marshal(into = "u8")]
67#[marshal(try_from = "u8")]
68pub enum Kind {
69 #[default]
70 Shield = 0,
71 Helmet = 1,
72 #[strum(to_string = "Body Armor")]
73 BodyArmor = 2,
74 Accessory = 3,
75}