1use serde::Deserialize;
4use wowlab_engine_macros::{HasFk, HasId};
5
6#[derive(Clone, Debug, Deserialize, HasId)]
8#[allow(
9 non_snake_case,
10 reason = "fields mirror upstream DBC CSV headers exactly"
11)]
12pub struct TraitNodeRow {
13 pub ID: i32,
14 pub TraitTreeID: i32,
15 pub PosX: i32,
16 pub PosY: i32,
17 pub Type: i32,
18 pub Flags: i32,
19 pub TraitSubTreeID: i32,
20}
21
22#[derive(Clone, Debug, Deserialize, HasId)]
24#[allow(
25 non_snake_case,
26 reason = "fields mirror upstream DBC CSV headers exactly"
27)]
28pub struct TraitNodeEntryRow {
29 pub ID: i32,
30 pub TraitDefinitionID: i32,
31 pub MaxRanks: i32,
32 pub NodeEntryType: i32,
33 pub TraitSubTreeID: i32,
34}
35
36#[derive(Clone, Debug, Deserialize, HasFk)]
38#[allow(
39 non_snake_case,
40 reason = "fields mirror upstream DBC CSV headers exactly"
41)]
42#[fk_field = "TraitNodeID"]
43pub struct TraitNodeXTraitNodeEntryRow {
44 pub ID: i32,
45 pub TraitNodeID: i32,
46 pub TraitNodeEntryID: i32,
47 #[serde(rename = "_Index")]
48 pub Index: i32,
49}
50
51#[derive(Clone, Debug, Deserialize, HasId)]
53#[allow(
54 non_snake_case,
55 reason = "fields mirror upstream DBC CSV headers exactly"
56)]
57pub struct TraitDefinitionRow {
58 pub OverrideName_lang: Option<String>,
59 pub OverrideSubtext_lang: Option<String>,
60 pub OverrideDescription_lang: Option<String>,
61 pub ID: i32,
62 pub SpellID: i32,
63 pub OverrideIcon: i32,
64 pub OverridesSpellID: i32,
65 pub VisibleSpellID: i32,
66}
67
68#[derive(Clone, Debug, Deserialize, HasFk)]
70#[allow(
71 non_snake_case,
72 reason = "fields mirror upstream DBC CSV headers exactly"
73)]
74#[fk_field = "TraitDefinitionID"]
75pub struct TraitDefinitionEffectPointsRow {
76 pub ID: i32,
77 pub TraitDefinitionID: i32,
78 pub EffectIndex: i32,
79 pub OperationType: i32,
80 pub CurveID: i32,
81}
82
83#[derive(Clone, Debug, Deserialize, HasId)]
85#[allow(
86 non_snake_case,
87 reason = "fields mirror upstream DBC CSV headers exactly"
88)]
89pub struct TraitTreeLoadoutRow {
90 pub ID: i32,
91 pub TraitTreeID: i32,
92 pub ChrSpecializationID: i32,
93}
94
95#[derive(Clone, Debug, Deserialize, HasFk)]
97#[allow(
98 non_snake_case,
99 reason = "fields mirror upstream DBC CSV headers exactly"
100)]
101#[fk_field = "TraitTreeLoadoutID"]
102pub struct TraitTreeLoadoutEntryRow {
103 pub ID: i32,
104 pub TraitTreeLoadoutID: i32,
105 pub SelectedTraitNodeID: i32,
106 pub SelectedTraitNodeEntryID: i32,
107 pub NumPoints: i32,
108 pub OrderIndex: i32,
109}
110
111#[derive(Clone, Debug, Deserialize, HasFk)]
113#[allow(
114 non_snake_case,
115 reason = "fields mirror upstream DBC CSV headers exactly"
116)]
117#[fk_field = "LeftTraitNodeID"]
118pub struct TraitEdgeRow {
119 pub ID: i32,
120 pub VisualStyle: i32,
121 pub LeftTraitNodeID: i32,
122 pub RightTraitNodeID: i32,
123 pub Type: i32,
124}
125
126#[derive(Clone, Debug, Deserialize, HasId)]
128#[allow(
129 non_snake_case,
130 reason = "fields mirror upstream DBC CSV headers exactly"
131)]
132pub struct TraitSubTreeRow {
133 pub Name_lang: Option<String>,
134 pub Description_lang: Option<String>,
135 pub ID: i32,
136 pub UiTextureAtlasElementID: i32,
137 pub TraitTreeID: i32,
138}
139
140#[derive(Clone, Debug, Deserialize, HasFk)]
144#[allow(
145 non_snake_case,
146 reason = "fields mirror upstream DBC CSV headers exactly"
147)]
148#[fk_field = "TraitTreeID"]
149pub struct SkillLineXTraitTreeRow {
150 pub ID: i32,
151 pub SkillLineID: i32,
152 pub TraitTreeID: i32,
153 pub Variant: i32,
154}
155
156#[derive(Clone, Debug, Deserialize, HasFk)]
158#[allow(
159 non_snake_case,
160 reason = "fields mirror upstream DBC CSV headers exactly"
161)]
162#[fk_field = "TraitTreeID"]
163pub struct TraitTreeXTraitCurrencyRow {
164 pub ID: i32,
165 #[serde(rename = "_Index")]
166 pub Index: i32,
167 pub TraitTreeID: i32,
168 pub TraitCurrencyID: i32,
169}
170
171#[derive(Clone, Debug, Deserialize, HasId)]
173#[allow(
174 non_snake_case,
175 reason = "fields mirror upstream DBC CSV headers exactly"
176)]
177pub struct TraitCurrencyRow {
178 pub ID: i32,
179 pub Type: i32,
180 pub CurrencyTypesID: i32,
181 pub Flags: i32,
182 pub Icon: i32,
183 pub PlayerDataElementAccountID: i32,
184 pub PlayerDataElementCharacterID: i32,
185}
186
187#[derive(Clone, Debug, Deserialize, HasFk)]
189#[allow(
190 non_snake_case,
191 reason = "fields mirror upstream DBC CSV headers exactly"
192)]
193#[fk_field = "TraitCurrencyID"]
194pub struct TraitCurrencySourceRow {
195 pub Requirement_lang: Option<String>,
196 pub ID: i32,
197 pub TraitCurrencyID: i32,
198 pub Amount: i32,
199 pub QuestID: i32,
200 pub AchievementID: i32,
201 pub PlayerLevel: i32,
202 pub TraitNodeEntryID: i32,
203 pub OrderIndex: i32,
204}
205
206#[derive(Clone, Debug, Deserialize, HasId)]
208#[allow(
209 non_snake_case,
210 reason = "fields mirror upstream DBC CSV headers exactly"
211)]
212pub struct TraitCostRow {
213 pub InternalName: Option<String>,
214 pub ID: i32,
215 pub Amount: i32,
216 pub TraitCurrencyID: i32,
217 pub CurveID: i32,
218}
219
220#[derive(Clone, Debug, Deserialize, HasFk)]
222#[allow(
223 non_snake_case,
224 reason = "fields mirror upstream DBC CSV headers exactly"
225)]
226#[fk_field = "TraitNodeID"]
227pub struct TraitNodeGroupXTraitNodeRow {
228 pub ID: i32,
229 pub TraitNodeGroupID: i32,
230 pub TraitNodeID: i32,
231 #[serde(rename = "_Index")]
232 pub Index: i32,
233}
234
235#[derive(Clone, Debug, Deserialize, HasFk)]
237#[allow(
238 non_snake_case,
239 reason = "fields mirror upstream DBC CSV headers exactly"
240)]
241#[fk_field = "TraitNodeGroupID"]
242pub struct TraitNodeGroupXTraitCostRow {
243 pub ID: i32,
244 pub TraitNodeGroupID: i32,
245 pub TraitCostID: i32,
246}
247
248#[derive(Clone, Debug, Deserialize, HasFk)]
250#[allow(
251 non_snake_case,
252 reason = "fields mirror upstream DBC CSV headers exactly"
253)]
254#[fk_field = "TraitNodeGroupID"]
255pub struct TraitNodeGroupXTraitCondRow {
256 pub ID: i32,
257 pub TraitCondID: i32,
258 pub TraitNodeGroupID: i32,
259}
260
261#[derive(Clone, Debug, Deserialize, HasFk)]
263#[allow(
264 non_snake_case,
265 reason = "fields mirror upstream DBC CSV headers exactly"
266)]
267#[fk_field = "TraitNodeID"]
268pub struct TraitNodeXTraitCondRow {
269 pub ID: i32,
270 pub TraitCondID: i32,
271 pub TraitNodeID: i32,
272}
273
274#[derive(Clone, Debug, Deserialize, HasId)]
276#[allow(
277 non_snake_case,
278 reason = "fields mirror upstream DBC CSV headers exactly"
279)]
280pub struct TraitCondRow {
281 pub ID: i32,
282 pub CondType: i32,
283 pub TraitTreeID: i32,
284 pub GrantedRanks: i32,
285 pub QuestID: i32,
286 pub AchievementID: i32,
287 pub SpecSetID: i32,
288 pub TraitNodeGroupID: i32,
289 pub TraitNodeID: i32,
290 pub TraitNodeEntryID: i32,
291 pub TraitCurrencyID: i32,
292 pub SpentAmountRequired: i32,
293 pub Flags: i32,
294 pub RequiredLevel: i32,
295 pub FreeSharedStringID: i32,
296 pub SpendMoreSharedStringID: i32,
297 pub TraitCondAccountElementID: i32,
298}