1use serde::{Serialize, Deserialize};
2use crate::common::{ArmySlot, SkillMastery, FileRef, Trigger};
3
4#[derive(Debug, Deserialize, Serialize, Clone)]
5#[serde(rename = "cell")]
6pub struct Cell {
7 pub x: u8,
8 pub y: u8
9}
10
11#[derive(Debug, Deserialize, Serialize, Clone)]
12pub struct Coordinates {
13 #[serde(rename = "FloorID")]
14 pub floor_id: u8,
15 pub cell: Cell
16}
17
18#[derive(Debug, Deserialize, Serialize, Clone)]
19pub struct Target {
20 #[serde(rename = "Type")]
21 pub _type: String,
22 #[serde(rename = "Name")]
23 pub name: String,
24 #[serde(rename = "Coords")]
25 pub coords: Coordinates
26}
27
28#[derive(Debug, Deserialize, Serialize, Clone)]
29pub struct TargetGlance {
30 #[serde(rename = "Target")]
31 pub target: Target,
32 #[serde(rename = "Radius")]
33 pub radius: u16,
34 #[serde(rename = "Duration")]
35 pub duration: u32
36}
37
38#[derive(Debug, Deserialize, Serialize, Clone)]
39pub struct Resource {
40 #[serde(rename = "Wood")]
41 pub wood: u16,
42 #[serde(rename = "Ore")]
43 pub ore: u16,
44 #[serde(rename = "Mercury")]
45 pub mercury: u16,
46 #[serde(rename = "Crystal")]
47 pub crystal: u16,
48 #[serde(rename = "Sulfur")]
49 pub sulfur: u16,
50 #[serde(rename = "Gem")]
51 pub gem: u16,
52 #[serde(rename = "Gold")]
53 pub gold: u16
54}
55
56#[derive(Debug, Deserialize, Serialize, Clone)]
57pub struct Award {
58 #[serde(rename = "Type")]
59 pub _type: String,
60 #[serde(rename = "Experience")]
61 pub experience: u32,
62 #[serde(rename = "Resources")]
63 pub resources: Resource,
64 #[serde(rename = "Attribute")]
65 pub attribute: String,
66 #[serde(rename = "AttributeAmount")]
67 pub attribute_amount: u16,
68 #[serde(rename = "ArtifactID")]
69 pub artifact_id: String,
70 #[serde(rename = "SpellID")]
71 pub spell_id: String,
72 #[serde(rename = "ArmySlot")]
73 pub army_slot: ArmySlot,
74 #[serde(rename = "SpellPoints")]
75 pub spell_points: u16,
76 #[serde(rename = "Morale")]
77 pub morale: u8,
78 #[serde(rename = "Luck")]
79 pub luck: u8,
80 #[serde(rename = "SkillWithMastery")]
81 pub skill_with_mastery: SkillMastery,
82}
83
84#[derive(Debug, Deserialize, Serialize, Clone)]
85#[serde(rename = "Item")]
86#[allow(non_snake_case)]
87pub struct Quest {
88 #[serde(rename = "Name")]
89 pub name: String,
90 #[serde(rename = "CaptionFileRef")]
91 pub caption_file_ref: FileRef,
92 #[serde(rename = "ObscureCaptionFileRef")]
93 pub obscure_caption_file_ref: FileRef,
94 #[serde(rename = "DescriptionFileRef")]
95 pub description_file_ref: FileRef,
96 #[serde(rename = "ProgressCommentsFileRef")]
97 pub progress_comments_file_ref: FileRef,
98 #[serde(rename = "Kind")]
99 pub kind: String,
100 #[serde(rename = "Parameters")]
101 pub parameters: String,
102 #[serde(rename = "Timeout")]
103 pub timeout: i8,
104 #[serde(rename = "Holdout")]
105 pub holdout: i8,
106 #[serde(rename = "CheckDelay")]
107 pub check_delay: i8,
108 #[serde(rename = "Dependencies")]
109 pub dependencies: String,
110 #[serde(rename = "InstantVictory")]
111 pub instant_victory: bool,
112 #[serde(rename = "TargetGlance")]
113 pub target_glance: TargetGlance,
114 #[serde(rename = "Award")]
115 pub award: Award,
116 #[serde(rename = "TakeContribution")]
117 pub take_contribution: bool,
118 #[serde(rename = "CanUncomplete")]
119 pub can_uncomplete: bool,
120 #[serde(rename = "IsInitialyActive")]
121 pub is_initialy_active: bool,
122 #[serde(rename = "IsInitialyVisible")]
123 pub is_initialy_visible: bool,
124 #[serde(rename = "IsHidden")]
125 pub is_hidden: bool,
126 #[serde(rename = "Ignore")]
127 pub ignore: bool,
128 #[serde(rename = "ShowCompleted")]
129 pub show_completed: bool,
130 #[serde(rename = "NeedComplete")]
131 pub need_complete: bool,
132 #[serde(rename = "StateChangeTrigger")]
133 pub state_change_trigger: Trigger,
134 #[serde(rename = "SoundActivated")]
135 pub sound_activated: String,
136 #[serde(rename = "SoundComplete")]
137 pub sound_complete: String,
138 #[serde(rename = "SoundFailed")]
139 pub sound_failed: String,
140 #[serde(rename = "AllowMultipleActivations")]
141 pub allow_multiple_activations: bool,
142 #[serde(rename = "AllowMultipleCompletions")]
143 pub allow_multiple_completions: bool
144}
145
146#[derive(Serialize, Deserialize, Debug, Clone)]
147pub struct Objectives {
148 #[serde(rename = "Item")]
149 pub items: Option<Vec<Quest>>
150}
151
152#[derive(Serialize, Deserialize, Debug, Clone)]
153pub struct QuestList {
154 #[serde(rename = "Objectives")]
155 pub objectives: Option<Objectives>,
156 #[serde(rename = "DieInWeekWithoutTowns")]
157 pub die_in_week_without_towns: bool
158}