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 ItemRow {
13 pub ID: i32,
14 pub ClassID: i32,
15 pub SubclassID: i32,
16 pub Material: i32,
17 pub InventoryType: i32,
18 pub SheatheType: i32,
19 #[serde(rename = "Sound_override_subclassID")]
20 pub SoundOverrideSubclassID: i32,
21 pub IconFileDataID: i32,
22 pub ItemGroupSoundsID: i32,
23 pub ContentTuningID: i32,
24 pub ModifiedCraftingReagentItemID: i32,
25 #[serde(rename = "Field_12_0_0_63534_010")]
26 pub Field_12_0_0_63534_010: i32,
27 pub CraftingQualityID: i32,
28 pub ItemSquishEraID: i32,
29 pub RecraftReagentCountPercentage: i32,
30 pub OrderSource: i32,
31}
32
33#[derive(Clone, Debug, Deserialize, HasId)]
35#[allow(
36 non_snake_case,
37 reason = "fields mirror upstream DBC CSV headers exactly"
38)]
39pub struct ItemSparseRow {
40 pub ID: i32,
41 pub Description_lang: Option<String>,
42 pub Display3_lang: Option<String>,
43 pub Display2_lang: Option<String>,
44 pub Display1_lang: Option<String>,
45 pub Display_lang: Option<String>,
46 pub ExpansionID: i32,
47 pub DmgVariance: f32,
48 pub LimitCategory: i32,
49 pub DurationInInventory: i32,
50 pub QualityModifier: f32,
51 pub BagFamily: i32,
52 pub StartQuestID: i32,
53 pub LanguageID: i32,
54 pub ItemRange: f32,
55 pub StatPercentageOfSocket_0: f32,
56 pub StatPercentageOfSocket_1: f32,
57 pub StatPercentageOfSocket_2: f32,
58 pub StatPercentageOfSocket_3: f32,
59 pub StatPercentageOfSocket_4: f32,
60 pub StatPercentageOfSocket_5: f32,
61 pub StatPercentageOfSocket_6: f32,
62 pub StatPercentageOfSocket_7: f32,
63 pub StatPercentageOfSocket_8: f32,
64 pub StatPercentageOfSocket_9: f32,
65 pub StatPercentEditor_0: i32,
66 pub StatPercentEditor_1: i32,
67 pub StatPercentEditor_2: i32,
68 pub StatPercentEditor_3: i32,
69 pub StatPercentEditor_4: i32,
70 pub StatPercentEditor_5: i32,
71 pub StatPercentEditor_6: i32,
72 pub StatPercentEditor_7: i32,
73 pub StatPercentEditor_8: i32,
74 pub StatPercentEditor_9: i32,
75 #[serde(rename = "StatModifier_bonusStat_0")]
76 pub StatModifierBonusStat_0: i32,
77 #[serde(rename = "StatModifier_bonusStat_1")]
78 pub StatModifierBonusStat_1: i32,
79 #[serde(rename = "StatModifier_bonusStat_2")]
80 pub StatModifierBonusStat_2: i32,
81 #[serde(rename = "StatModifier_bonusStat_3")]
82 pub StatModifierBonusStat_3: i32,
83 #[serde(rename = "StatModifier_bonusStat_4")]
84 pub StatModifierBonusStat_4: i32,
85 #[serde(rename = "StatModifier_bonusStat_5")]
86 pub StatModifierBonusStat_5: i32,
87 #[serde(rename = "StatModifier_bonusStat_6")]
88 pub StatModifierBonusStat_6: i32,
89 #[serde(rename = "StatModifier_bonusStat_7")]
90 pub StatModifierBonusStat_7: i32,
91 #[serde(rename = "StatModifier_bonusStat_8")]
92 pub StatModifierBonusStat_8: i32,
93 #[serde(rename = "StatModifier_bonusStat_9")]
94 pub StatModifierBonusStat_9: i32,
95 pub Stackable: i32,
96 pub MaxCount: i32,
97 pub MinReputation: i32,
98 pub RequiredAbility: i32,
99 #[serde(default)]
100 pub AllowableRaces_0: Option<i64>,
101 #[serde(default)]
102 pub AllowableRaces_1: Option<i64>,
103 pub SellPrice: i32,
104 pub BuyPrice: i32,
105 pub VendorStackCount: i32,
106 pub PriceVariance: f32,
107 pub PriceRandomValue: f32,
108 pub Flags_0: i32,
109 pub Flags_1: i32,
110 pub Flags_2: i32,
111 pub Flags_3: i32,
112 pub Flags_4: i32,
113 pub OppositeFactionItemID: i32,
114 pub ModifiedCraftingReagentItemID: i32,
115 pub ContentTuningID: i32,
116 pub PlayerLevelToItemLevelCurveID: i32,
117 pub ItemLevelOffsetCurveID: i32,
118 pub ItemLevelOffsetItemLevel: i32,
119 pub ItemSquishEraID: i32,
120 pub ItemNameDescriptionID: i32,
121 pub RequiredTransmogHoliday: i32,
122 pub RequiredHoliday: i32,
123 #[serde(rename = "Gem_properties")]
124 pub GemProperties: i32,
125 #[serde(rename = "Socket_match_enchantment_ID")]
126 pub SocketMatchEnchantmentID: i32,
127 pub TotemCategoryID: i32,
128 pub InstanceBound: i32,
129 pub ZoneBound_0: i32,
130 pub ZoneBound_1: i32,
131 pub ItemSet: i32,
132 pub LockID: i32,
133 pub PageID: i32,
134 pub ItemDelay: i32,
135 pub MinFactionID: i32,
136 pub RequiredSkillRank: i32,
137 pub RequiredSkill: i32,
138 pub ItemLevel: i32,
139 pub AllowableClass: i32,
140 pub ArtifactID: i32,
141 pub SpellWeight: i32,
142 pub SpellWeightCategory: i32,
143 pub SocketType_0: i32,
144 pub SocketType_1: i32,
145 pub SocketType_2: i32,
146 pub SheatheType: i32,
147 pub Material: i32,
148 pub PageMaterialID: i32,
149 pub Bonding: i32,
150 pub DamageType: i32,
151 pub ContainerSlots: i32,
152 pub RequiredPVPMedal: i32,
153 pub RequiredPVPRank: i32,
154 pub RequiredLevel: i32,
155 pub InventoryType: i32,
156 pub OverallQualityID: i32,
157}
158
159#[derive(Clone, Debug, Deserialize, HasFk)]
161#[allow(
162 non_snake_case,
163 reason = "fields mirror upstream DBC CSV headers exactly"
164)]
165#[fk_field = "ItemID"]
166pub struct ItemXItemEffectRow {
167 pub ID: i32,
168 pub ItemEffectID: i32,
169 pub ItemID: i32,
170}
171
172#[derive(Clone, Debug, Deserialize, HasId)]
174#[allow(
175 non_snake_case,
176 reason = "fields mirror upstream DBC CSV headers exactly"
177)]
178pub struct ItemEffectRow {
179 pub ID: i32,
180 pub LegacySlotIndex: i32,
181 pub TriggerType: i32,
182 pub Charges: i32,
183 pub CoolDownMSec: i32,
184 pub CategoryCoolDownMSec: i32,
185 pub SpellCategoryID: i32,
186 pub SpellID: i32,
187 pub ChrSpecializationID: i32,
188}
189
190#[derive(Clone, Debug, Deserialize, HasId)]
192#[allow(
193 non_snake_case,
194 reason = "fields mirror upstream DBC CSV headers exactly"
195)]
196pub struct ItemSetRow {
197 pub ID: i32,
198 pub Name_lang: Option<String>,
199 pub SetFlags: i32,
200 pub RequiredSkill: i32,
201 pub RequiredSkillRank: i32,
202 pub ItemID_0: i32,
203 pub ItemID_1: i32,
204 pub ItemID_2: i32,
205 pub ItemID_3: i32,
206 pub ItemID_4: i32,
207 pub ItemID_5: i32,
208 pub ItemID_6: i32,
209 pub ItemID_7: i32,
210 pub ItemID_8: i32,
211 pub ItemID_9: i32,
212 pub ItemID_10: i32,
213 pub ItemID_11: i32,
214 pub ItemID_12: i32,
215 pub ItemID_13: i32,
216 pub ItemID_14: i32,
217 pub ItemID_15: i32,
218 pub ItemID_16: i32,
219}
220
221#[derive(Clone, Debug, Deserialize, HasFk)]
223#[allow(
224 non_snake_case,
225 reason = "fields mirror upstream DBC CSV headers exactly"
226)]
227#[fk_field = "ItemSetID"]
228pub struct ItemSetSpellRow {
229 pub ID: i32,
230 pub ChrSpecID: i32,
231 pub SpellID: i32,
232 pub TraitSubTreeID: i32,
233 pub Threshold: i32,
234 pub ItemSetID: i32,
235}
236
237#[derive(Clone, Debug, Deserialize, HasId)]
239#[allow(
240 non_snake_case,
241 reason = "fields mirror upstream DBC CSV headers exactly"
242)]
243pub struct ItemClassRow {
244 pub ID: i32,
245 pub ClassName_lang: Option<String>,
246 pub ClassID: i32,
247 pub PriceModifier: f32,
248 pub Flags: i32,
249}
250
251#[derive(Clone, Debug, Deserialize, HasId)]
253#[allow(
254 non_snake_case,
255 reason = "fields mirror upstream DBC CSV headers exactly"
256)]
257pub struct ItemSubClassRow {
258 pub DisplayName_lang: Option<String>,
259 pub VerboseName_lang: Option<String>,
260 pub ID: i32,
261 pub ClassID: i32,
262 pub SubClassID: i32,
263 pub AuctionHouseSortOrder: i32,
264 pub PrerequisiteProficiency: i32,
265 pub Flags: i32,
266 pub DisplayFlags: i32,
267 pub WeaponSwingSize: i32,
268 pub PostrequisiteProficiency: i32,
269}
270
271#[derive(Clone, Debug, Deserialize, HasFk)]
273#[allow(
274 non_snake_case,
275 reason = "fields mirror upstream DBC CSV headers exactly"
276)]
277#[fk_field = "ItemID"]
278pub struct ItemModifiedAppearanceRow {
279 pub ID: i32,
280 pub ItemID: i32,
281 pub ItemAppearanceModifierID: i32,
282 pub ItemAppearanceID: i32,
283 pub OrderIndex: i32,
284 pub TransmogSourceTypeEnum: i32,
285 pub Flags: i32,
286}
287
288#[derive(Clone, Debug, Deserialize, HasId)]
290#[allow(
291 non_snake_case,
292 reason = "fields mirror upstream DBC CSV headers exactly"
293)]
294pub struct ItemAppearanceRow {
295 pub ID: i32,
296 pub DisplayType: i32,
297 pub ItemDisplayInfoID: i32,
298 pub DefaultIconFileDataID: i32,
299 pub UiOrder: i32,
300 pub TransmogPlayerConditionID: i32,
301}
302
303#[derive(Clone, Debug, Deserialize, HasFk)]
305#[allow(
306 non_snake_case,
307 reason = "fields mirror upstream DBC CSV headers exactly"
308)]
309#[fk_field = "ParentItemBonusListID"]
310pub struct ItemBonusRow {
311 pub ID: i32,
312 pub Value_0: i32,
313 pub Value_1: i32,
314 pub Value_2: i32,
315 pub Value_3: i32,
316 pub ParentItemBonusListID: i32,
317 pub Type: i32,
318 pub OrderIndex: i32,
319}
320
321#[derive(Clone, Debug, Deserialize, HasId)]
323#[allow(
324 non_snake_case,
325 reason = "fields mirror upstream DBC CSV headers exactly"
326)]
327pub struct GemPropertiesRow {
328 pub ID: i32,
329 pub Enchant_ID: i32,
330 pub Type: i32,
331}
332
333#[derive(Clone, Debug, Deserialize, HasFk)]
335#[allow(
336 non_snake_case,
337 reason = "fields mirror upstream DBC CSV headers exactly"
338)]
339#[fk_field = "ParentItemBonusTreeID"]
340pub struct ItemBonusTreeNodeRow {
341 pub ID: i32,
342 pub ItemContext: i32,
343 pub ChildItemBonusTreeID: i32,
344 pub ChildItemBonusListID: i32,
345 pub ChildItemBonusListGroupID: i32,
346 pub IblGroupPointsModSetID: i32,
347 pub MinMythicPlusLevel: i32,
348 pub MaxMythicPlusLevel: i32,
349 pub ParentItemBonusTreeID: i32,
350}
351
352#[derive(Clone, Debug, Deserialize, HasFk)]
354#[allow(
355 non_snake_case,
356 reason = "fields mirror upstream DBC CSV headers exactly"
357)]
358#[fk_field = "ItemBonusListGroupID"]
359pub struct ItemBonusListGroupEntryRow {
360 pub ID: i32,
361 pub ItemBonusListGroupID: i32,
362 pub ItemBonusListID: i32,
363 pub ItemLevelSelectorID: i32,
364 pub SequenceValue: i32,
365 pub Flags: i32,
366}
367
368#[derive(Clone, Debug, Deserialize, HasId)]
370#[allow(
371 non_snake_case,
372 reason = "fields mirror upstream DBC CSV headers exactly"
373)]
374pub struct ItemLevelSelectorRow {
375 pub ID: i32,
376 pub MinItemLevel: i32,
377 pub ItemLevelSelectorQualitySetID: i32,
378 pub AzeriteUnlockMappingSetID: i32,
379}
380
381#[derive(Clone, Debug, Deserialize, HasId)]
383#[allow(
384 non_snake_case,
385 reason = "fields mirror upstream DBC CSV headers exactly"
386)]
387pub struct ItemLevelSelectorQualitySetRow {
388 pub ID: i32,
389 pub IlvlRare: i32,
390 pub IlvlEpic: i32,
391}
392
393#[derive(Clone, Debug, Deserialize, HasId)]
395#[allow(
396 non_snake_case,
397 reason = "fields mirror upstream DBC CSV headers exactly"
398)]
399pub struct ItemLevelSelectorQualityRow {
400 pub ID: i32,
401 pub QualityItemBonusListID: i32,
402 pub Quality: i32,
403 pub ParentILSQualitySetID: i32,
404}
405
406#[derive(Clone, Debug, Deserialize, HasFk)]
408#[allow(
409 non_snake_case,
410 reason = "fields mirror upstream DBC CSV headers exactly"
411)]
412#[fk_field = "ItemID"]
413pub struct ItemXBonusTreeRow {
414 pub ID: i32,
415 pub ItemBonusTreeID: i32,
416 pub ItemID: i32,
417}
418
419#[derive(Clone, Debug, Deserialize, HasId)]
421#[allow(
422 non_snake_case,
423 reason = "fields mirror upstream DBC CSV headers exactly"
424)]
425pub struct CraftingDataRow {
426 pub ID: i32,
427 pub Type: i32,
428 pub CraftingDifficultyID: i32,
429 pub CraftedItemID: i32,
430 pub ItemBonusTreeID: i32,
431}
432
433#[derive(Clone, Debug, Deserialize, HasFk)]
435#[allow(
436 non_snake_case,
437 reason = "fields mirror upstream DBC CSV headers exactly"
438)]
439#[fk_field = "CraftingDataID"]
440pub struct CraftingDataItemQualityRow {
441 pub ID: i32,
442 pub ItemID: i32,
443 pub CraftingDataID: i32,
444}
445
446#[derive(Clone, Debug, Deserialize, HasFk)]
448#[allow(
449 non_snake_case,
450 reason = "fields mirror upstream DBC CSV headers exactly"
451)]
452#[fk_field = "CraftingDataID"]
453pub struct CraftingDataEnchantQualityRow {
454 pub ID: i32,
455 pub Rank: i32,
457 pub SpellItemEnchantmentID: i32,
458 pub ItemID: i32,
459 pub CraftingDataID: i32,
460}
461
462#[derive(Clone, Debug, Deserialize, HasFk)]
464#[allow(
465 non_snake_case,
466 reason = "fields mirror upstream DBC CSV headers exactly"
467)]
468#[fk_field = "Spell"]
469pub struct SkillLineAbilityRow {
470 pub ID: i32,
471 pub SkillLine: i32,
472 pub Spell: i32,
473 pub ClassMask: i32,
475 pub RaceMasks_0: i32,
477 pub RaceMasks_1: i32,
479}
480
481#[derive(Clone, Debug, Deserialize, HasFk)]
483#[allow(
484 non_snake_case,
485 reason = "fields mirror upstream DBC CSV headers exactly"
486)]
487#[fk_field = "SkillID"]
488pub struct SkillRaceClassInfoRow {
489 pub ID: i32,
490 pub SkillID: i32,
491 pub ClassMask: i32,
492 pub Flags: i32,
493 pub RaceMasks_0: i32,
494 pub RaceMasks_1: i32,
495}
496
497#[derive(Clone, Debug, Deserialize, HasId)]
499#[allow(
500 non_snake_case,
501 reason = "fields mirror upstream DBC CSV headers exactly"
502)]
503pub struct ProfessionRow {
504 pub ID: i32,
505 pub SkillLineID: i32,
506 pub ProfessionEnumValue: i32,
507}
508
509#[derive(Clone, Debug, Deserialize, HasId)]
511#[allow(
512 non_snake_case,
513 reason = "fields mirror upstream DBC CSV headers exactly"
514)]
515#[id_field = "ItemID"]
516pub struct ModifiedCraftingItemRow {
517 pub ItemID: i32,
518 pub ModifiedCraftingReagentItemID: i32,
519 pub CraftingQualityID: i32,
520}
521
522#[derive(Clone, Debug, Deserialize, HasId)]
524#[allow(
525 non_snake_case,
526 reason = "fields mirror upstream DBC CSV headers exactly"
527)]
528pub struct CraftingQualityRow {
529 pub ID: i32,
530 pub QualityTier: i32,
531 pub CraftingQualityAtlasSetID: i32,
532}
533
534#[derive(Clone, Debug, Deserialize, HasId)]
536#[allow(
537 non_snake_case,
538 reason = "fields mirror upstream DBC CSV headers exactly"
539)]
540pub struct CurrencyTypesRow {
541 pub ID: i32,
542 pub Name_lang: Option<String>,
543 pub CategoryID: i32,
544 pub InventoryIconFileID: i32,
545 pub MaxQty: i32,
546 pub MaxEarnablePerWeek: i32,
547 pub Quality: i32,
548 pub OrderIndex: i32,
549 pub Flags_0: i32,
550}
551
552#[derive(Clone, Debug, Deserialize, HasId)]
554#[allow(
555 non_snake_case,
556 reason = "fields mirror upstream DBC CSV headers exactly"
557)]
558pub struct CurrencyCategoryRow {
559 pub ID: i32,
560 pub Name_lang: Option<String>,
561 pub Flags: i32,
562 pub ExpansionID: i32,
563 pub ParentCategoryID: i32,
564}
565
566#[derive(Clone, Debug, Deserialize, HasId)]
568#[allow(
569 non_snake_case,
570 reason = "fields mirror upstream DBC CSV headers exactly"
571)]
572pub struct ItemBonusListGroupRow {
573 pub ID: i32,
574 pub SequenceSpellID: i32,
575 pub PlayerConditionID: i32,
576 pub ItemExtendedCostID: i32,
577 pub ItemLogicalCostGroupID: i32,
578 pub ItemGroupIlvlScalingID: i32,
579}
580
581#[derive(Clone, Debug, Deserialize, HasFk)]
583#[allow(
584 non_snake_case,
585 reason = "fields mirror upstream DBC CSV headers exactly"
586)]
587#[fk_field = "ItemGroupIlvlScalingID"]
588pub struct ItemGroupIlvlScalingEntryRow {
589 pub ID: i32,
590 pub CurrencyTypeID: i32,
591 pub ItemID: i32,
592 pub CostScaling: f32,
593 pub Flags: i32,
594 pub PlayerConditionID: i32,
595 pub ConditionalCostScaling: f32,
596 pub ItemGroupIlvlScalingID: i32,
597}
598
599#[derive(Clone, Debug, Deserialize, HasId)]
601#[allow(
602 non_snake_case,
603 reason = "fields mirror upstream DBC CSV headers exactly"
604)]
605pub struct ItemConversionRow {
606 pub ID: i32,
607 pub ItemBonusTreeID: i32,
608 pub ItemLogicalCostGroupID: i32,
609 pub AlternateItemLogicalCostGroupID: i32,
610 pub PlayerConditionID: i32,
611}
612
613#[derive(Clone, Debug, Deserialize, HasFk)]
615#[allow(
616 non_snake_case,
617 reason = "fields mirror upstream DBC CSV headers exactly"
618)]
619#[fk_field = "ItemConversionID"]
620pub struct ItemConversionEntryRow {
621 pub ID: i32,
622 pub ItemID: i32,
623 pub ItemConversionID: i32,
624}
625
626#[derive(Clone, Debug, Deserialize, HasId)]
628#[allow(
629 non_snake_case,
630 reason = "fields mirror upstream DBC CSV headers exactly"
631)]
632pub struct ChallengeModeItemBonusOverrideRow {
633 pub ID: i32,
634 pub ItemBonusTreeGroupID: i32,
635 pub DstItemBonusTreeID: i32,
636 pub Value: i32,
637 pub RequiredTimeEventPassed: i32,
638 pub RequiredTimeEventNotPassed: i32,
639 pub SrcItemBonusTreeID: i32,
640}
641
642#[derive(Clone, Debug, Deserialize, HasId)]
644#[allow(
645 non_snake_case,
646 reason = "fields mirror upstream DBC CSV headers exactly"
647)]
648pub struct ItemBonusSequenceSpellRow {
649 pub ID: i32,
650 pub SpellID: i32,
651 pub ItemID: i32,
652}