artifacts/models/
monster_schema.rs1use crate::models;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
5#[cfg_attr(feature = "specta", derive(specta::Type))]
6pub struct MonsterSchema {
7 #[serde(rename = "name")]
9 pub name: String,
10 #[serde(rename = "code")]
12 pub code: String,
13 #[serde(rename = "level")]
15 pub level: i32,
16 #[serde(rename = "hp")]
18 pub hp: i32,
19 #[serde(rename = "attack_fire")]
21 pub attack_fire: i32,
22 #[serde(rename = "attack_earth")]
24 pub attack_earth: i32,
25 #[serde(rename = "attack_water")]
27 pub attack_water: i32,
28 #[serde(rename = "attack_air")]
30 pub attack_air: i32,
31 #[serde(rename = "res_fire")]
33 pub res_fire: i32,
34 #[serde(rename = "res_earth")]
36 pub res_earth: i32,
37 #[serde(rename = "res_water")]
39 pub res_water: i32,
40 #[serde(rename = "res_air")]
42 pub res_air: i32,
43 #[serde(rename = "critical_strike")]
45 pub critical_strike: i32,
46 #[serde(rename = "effects", skip_serializing_if = "Option::is_none")]
48 pub effects: Option<Vec<models::SimpleEffectSchema>>,
49 #[serde(rename = "min_gold")]
51 pub min_gold: i32,
52 #[serde(rename = "max_gold")]
54 pub max_gold: i32,
55 #[serde(rename = "drops")]
57 pub drops: Vec<models::DropRateSchema>,
58}
59
60impl MonsterSchema {
61 pub fn new(
62 name: String,
63 code: String,
64 level: i32,
65 hp: i32,
66 attack_fire: i32,
67 attack_earth: i32,
68 attack_water: i32,
69 attack_air: i32,
70 res_fire: i32,
71 res_earth: i32,
72 res_water: i32,
73 res_air: i32,
74 critical_strike: i32,
75 min_gold: i32,
76 max_gold: i32,
77 drops: Vec<models::DropRateSchema>,
78 ) -> MonsterSchema {
79 MonsterSchema {
80 name,
81 code,
82 level,
83 hp,
84 attack_fire,
85 attack_earth,
86 attack_water,
87 attack_air,
88 res_fire,
89 res_earth,
90 res_water,
91 res_air,
92 critical_strike,
93 effects: None,
94 min_gold,
95 max_gold,
96 drops,
97 }
98 }
99}