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 = "type")]
18 pub r#type: models::MonsterType,
19 #[serde(rename = "hp")]
21 pub hp: i32,
22 #[serde(rename = "attack_fire")]
24 pub attack_fire: i32,
25 #[serde(rename = "attack_earth")]
27 pub attack_earth: i32,
28 #[serde(rename = "attack_water")]
30 pub attack_water: i32,
31 #[serde(rename = "attack_air")]
33 pub attack_air: i32,
34 #[serde(rename = "res_fire")]
36 pub res_fire: i32,
37 #[serde(rename = "res_earth")]
39 pub res_earth: i32,
40 #[serde(rename = "res_water")]
42 pub res_water: i32,
43 #[serde(rename = "res_air")]
45 pub res_air: i32,
46 #[serde(rename = "critical_strike")]
48 pub critical_strike: i32,
49 #[serde(rename = "initiative")]
51 pub initiative: i32,
52 #[serde(rename = "effects", skip_serializing_if = "Option::is_none")]
54 pub effects: Option<Vec<models::SimpleEffectSchema>>,
55 #[serde(rename = "min_gold")]
57 pub min_gold: i32,
58 #[serde(rename = "max_gold")]
60 pub max_gold: i32,
61 #[serde(rename = "drops")]
63 pub drops: Vec<models::DropRateSchema>,
64}
65
66impl MonsterSchema {
67 pub fn new(
68 name: String,
69 code: String,
70 level: i32,
71 r#type: models::MonsterType,
72 hp: i32,
73 attack_fire: i32,
74 attack_earth: i32,
75 attack_water: i32,
76 attack_air: i32,
77 res_fire: i32,
78 res_earth: i32,
79 res_water: i32,
80 res_air: i32,
81 critical_strike: i32,
82 initiative: i32,
83 min_gold: i32,
84 max_gold: i32,
85 drops: Vec<models::DropRateSchema>,
86 ) -> MonsterSchema {
87 MonsterSchema {
88 name,
89 code,
90 level,
91 r#type,
92 hp,
93 attack_fire,
94 attack_earth,
95 attack_water,
96 attack_air,
97 res_fire,
98 res_earth,
99 res_water,
100 res_air,
101 critical_strike,
102 initiative,
103 effects: None,
104 min_gold,
105 max_gold,
106 drops,
107 }
108 }
109}