Skip to main content

wowlab_parsers/parsers/dbc/rows/
journal_season.rs

1// #t(file: rust_duplicate_strings) DBC field attributes repeat an upstream-schema ownership reason that Rust requires as a literal.
2
3use serde::Deserialize;
4use wowlab_engine_macros::{HasFk, HasId};
5
6/// DBC row from ManifestInterfaceData.db2: file ID to file path mapping.
7#[derive(Clone, Debug, Deserialize, HasId)]
8#[allow(
9    non_snake_case,
10    reason = "fields mirror upstream DBC CSV headers exactly"
11)]
12pub struct ManifestInterfaceDataRow {
13    pub ID: i32,
14    pub FilePath: String,
15    pub FileName: String,
16}
17
18/// DBC row from Difficulty.db2: dungeon and raid difficulty definitions.
19#[derive(Clone, Debug, Deserialize, HasId)]
20#[allow(
21    non_snake_case,
22    reason = "fields mirror upstream DBC CSV headers exactly"
23)]
24pub struct DifficultyRow {
25    pub ID: i32,
26    pub Name_lang: Option<String>,
27    pub InstanceType: i32,
28    pub OrderIndex: i32,
29    pub OldEnumValue: i32,
30    pub FallbackDifficultyID: i32,
31    pub MinPlayers: i32,
32    pub MaxPlayers: i32,
33    pub Flags: i32,
34    pub ItemContext: i32,
35    pub ToggleDifficultyID: i32,
36    pub GroupSizeHealthCurveID: i32,
37    pub GroupSizeDmgCurveID: i32,
38    pub GroupSizeSpellPointsCurveID: i32,
39    #[serde(rename = "Field_1_15_4_56400_013")]
40    pub Field: i32,
41}
42
43/// DBC row from UiTextureAtlasElement.db2: texture atlas element bounds.
44#[derive(Clone, Debug, Deserialize, HasId)]
45#[allow(
46    non_snake_case,
47    reason = "fields mirror upstream DBC CSV headers exactly"
48)]
49pub struct UiTextureAtlasElementRow {
50    pub Name: String,
51    pub ID: i32,
52}
53
54/// DBC row from JournalEncounterItem.db2: item drop from a journal encounter.
55#[derive(Clone, Debug, Deserialize, HasFk)]
56#[allow(
57    non_snake_case,
58    reason = "fields mirror upstream DBC CSV headers exactly"
59)]
60#[fk_field = "ItemID"]
61pub struct JournalEncounterItemRow {
62    pub ID: i32,
63    pub JournalEncounterID: i32,
64    pub ItemID: i32,
65    pub DifficultyMask: i32,
66    pub FactionMask: i32,
67    pub Flags: i32,
68    pub WorldStateExpressionID: i32,
69}
70
71/// DBC row from JournalEncounterCreature.db2: creature portrait media for a journal encounter.
72#[derive(Clone, Debug, Deserialize, HasFk)]
73#[allow(
74    non_snake_case,
75    reason = "fields mirror upstream DBC CSV headers exactly"
76)]
77#[fk_field = "JournalEncounterID"]
78pub struct JournalEncounterCreatureRow {
79    pub Name_lang: Option<String>,
80    pub Description_lang: Option<String>,
81    pub ID: i32,
82    pub JournalEncounterID: i32,
83    pub CreatureDisplayInfoID: i32,
84    pub FileDataID: i32,
85    pub OrderIndex: i32,
86    pub UiModelSceneID: i32,
87}
88
89/// DBC row from JournalEncounter.db2: boss encounter within a journal instance.
90#[derive(Clone, Debug, Deserialize, HasId)]
91#[allow(
92    non_snake_case,
93    reason = "fields mirror upstream DBC CSV headers exactly"
94)]
95pub struct JournalEncounterRow {
96    pub Name_lang: Option<String>,
97    pub Description_lang: Option<String>,
98    pub Map_0: f32,
99    pub Map_1: f32,
100    pub ID: i32,
101    pub JournalInstanceID: i32,
102    pub DungeonEncounterID: i32,
103    pub OrderIndex: i32,
104    pub FirstSectionID: i32,
105    pub UiMapID: i32,
106    pub MapDisplayConditionID: i32,
107    pub Flags: i32,
108    pub DifficultyMask: i32,
109}
110
111/// DBC row from DungeonEncounter.db2: `boss_tier` is the upgrade-track rank (1..6) the boss drops at.
112#[derive(Clone, Debug, Deserialize, HasId)]
113#[allow(
114    non_snake_case,
115    reason = "fields mirror upstream DBC CSV headers exactly"
116)]
117pub struct DungeonEncounterRow {
118    pub ID: i32,
119    #[serde(rename = "ItemSequenceLevel")]
120    pub boss_tier: i32,
121}
122
123/// DBC row from JournalInstance.db2: dungeon or raid instance in the journal.
124#[derive(Clone, Debug, Deserialize, HasId)]
125#[allow(
126    non_snake_case,
127    reason = "fields mirror upstream DBC CSV headers exactly"
128)]
129pub struct JournalInstanceRow {
130    pub ID: i32,
131    pub Name_lang: Option<String>,
132    pub Description_lang: Option<String>,
133    pub MapID: i32,
134    pub BackgroundFileDataID: i32,
135    pub ButtonFileDataID: i32,
136    pub ButtonSmallFileDataID: i32,
137    pub LoreFileDataID: i32,
138    pub Flags: i32,
139    pub AreaID: i32,
140    pub CovenantID: i32,
141}
142
143/// DBC row from GlobalColor.db2: named color constant (e.g. item quality colors).
144#[derive(Clone, Debug, Deserialize, HasId)]
145#[allow(
146    non_snake_case,
147    reason = "fields mirror upstream DBC CSV headers exactly"
148)]
149pub struct GlobalColorRow {
150    pub ID: i32,
151    pub LuaConstantName: String,
152    pub Color: i32,
153}
154
155/// DBC row from GlobalStrings.db2: localized UI string by tag.
156#[derive(Clone, Debug, Deserialize, HasId)]
157#[allow(
158    non_snake_case,
159    reason = "fields mirror upstream DBC CSV headers exactly"
160)]
161pub struct GlobalStringsRow {
162    pub ID: i32,
163    pub BaseTag: String,
164    pub TagText_lang: Option<String>,
165    pub Flags: i32,
166}
167
168/// DBC row from JournalTier.db2: top-level journal grouping (e.g. "Current Season").
169#[derive(Clone, Debug, Deserialize, HasId)]
170#[allow(
171    non_snake_case,
172    reason = "fields mirror upstream DBC CSV headers exactly"
173)]
174pub struct JournalTierRow {
175    pub ID: i32,
176    pub Name_lang: Option<String>,
177    pub Expansion: i32,
178    pub PlayerConditionID: i32,
179}
180
181/// DBC row from JournalTierXInstance.db2: links a journal instance to a journal tier.
182#[derive(Clone, Debug, Deserialize, HasFk)]
183#[allow(
184    non_snake_case,
185    reason = "fields mirror upstream DBC CSV headers exactly"
186)]
187#[fk_field = "JournalInstanceID"]
188pub struct JournalTierXInstanceRow {
189    pub ID: i32,
190    pub JournalTierID: i32,
191    pub JournalInstanceID: i32,
192    pub OrderIndex: i32,
193}
194
195/// DBC row from Map.db2: map metadata used to classify journal instances.
196#[derive(Clone, Debug, Deserialize, HasId)]
197#[allow(
198    non_snake_case,
199    reason = "fields mirror upstream DBC CSV headers exactly"
200)]
201pub struct MapRow {
202    pub ID: i32,
203    pub Directory: String,
204    pub MapName_lang: Option<String>,
205    pub MapType: i32,
206    pub InstanceType: i32,
207    pub ExpansionID: i32,
208}
209
210/// DBC row from MapChallengeMode.db2: Mythic Keystone-enabled map definition.
211#[derive(Clone, Debug, Deserialize, HasId)]
212#[allow(
213    non_snake_case,
214    reason = "fields mirror upstream DBC CSV headers exactly"
215)]
216pub struct MapChallengeModeRow {
217    pub Name_lang: Option<String>,
218    pub ID: i32,
219    pub MapID: i32,
220    pub ExpansionLevel: i32,
221}
222
223/// DBC row from MythicPlusSeasonRewardLevels.db2: per-key-level Mythic+ reward ilvls.
224#[derive(Clone, Debug, Deserialize, HasFk)]
225#[allow(
226    non_snake_case,
227    reason = "fields mirror upstream DBC CSV headers exactly"
228)]
229#[fk_field = "MythicPlusSeasonID"]
230pub struct MythicPlusSeasonRewardLevelsRow {
231    pub ID: i32,
232    pub MythicPlusSeasonID: i32,
233    pub ActivityTierID: i32,
234    pub DifficultyLevel: i32,
235    pub WeeklyRewardLevel: i32,
236    pub EndOfRunRewardLevel: i32,
237}
238
239/// DBC row from PvpSeason.db2: a `PvP` season header.
240#[derive(Clone, Debug, Deserialize, HasId)]
241#[allow(
242    non_snake_case,
243    reason = "fields mirror upstream DBC CSV headers exactly"
244)]
245pub struct PvpSeasonRow {
246    pub ID: i32,
247    pub MilestoneSeason: i32,
248    pub AllianceAchievementID: i32,
249    pub HordeAchievementID: i32,
250}
251
252/// DBC row from PvpSeasonRewardLevels.db2: per-tier `PvP` reward ilvls for a season.
253#[derive(Clone, Debug, Deserialize, HasFk)]
254#[allow(
255    non_snake_case,
256    reason = "fields mirror upstream DBC CSV headers exactly"
257)]
258#[fk_field = "PvpSeasonID"]
259pub struct PvpSeasonRewardLevelsRow {
260    pub ID: i32,
261    pub Tier: i32,
262    pub EndOfMatchILvl: i32,
263    pub WeeklyCacheILvl: i32,
264    pub PvpSeasonID: i32,
265}
266
267/// DBC row from PvpTier.db2: `PvP` tier (Combatant, Challenger, …) with rating bounds.
268#[derive(Clone, Debug, Deserialize, HasId)]
269#[allow(
270    non_snake_case,
271    reason = "fields mirror upstream DBC CSV headers exactly"
272)]
273pub struct PvpTierRow {
274    pub Name_lang: Option<String>,
275    pub ID: i32,
276    pub MinRating: i32,
277    pub MaxRating: i32,
278    pub PrevTier: i32,
279    pub NextTier: i32,
280    pub BracketID: i32,
281    pub Rank: i32,
282    pub RankIcon: i32,
283}
284
285/// DBC row from MythicPlusSeason.db2: Mythic+ season header.
286#[derive(Clone, Debug, Deserialize, HasId)]
287#[allow(
288    non_snake_case,
289    reason = "fields mirror upstream DBC CSV headers exactly"
290)]
291pub struct MythicPlusSeasonRow {
292    pub ID: i32,
293    pub MilestoneSeason: i32,
294    pub StartTimeEvent: i32,
295    pub ExpansionLevel: i32,
296    pub HeroicLFGDungeonMinGear: i32,
297}
298
299/// DBC row from MythicPlusSeasonTrackedMap.db2: maps included in a display season's Mythic+ pool.
300#[derive(Clone, Debug, Deserialize, HasFk)]
301#[allow(
302    non_snake_case,
303    reason = "fields mirror upstream DBC CSV headers exactly"
304)]
305#[fk_field = "DisplaySeasonID"]
306pub struct MythicPlusSeasonTrackedMapRow {
307    pub ID: i32,
308    pub MapChallengeModeID: i32,
309    pub DisplaySeasonID: i32,
310}
311
312/// DBC row from MythicPlusSeasonTrackedAffix.db2: affixes tracked for a display season.
313#[derive(Clone, Debug, Deserialize, HasFk)]
314#[allow(
315    non_snake_case,
316    reason = "fields mirror upstream DBC CSV headers exactly"
317)]
318#[fk_field = "DisplaySeasonID"]
319pub struct MythicPlusSeasonTrackedAffixRow {
320    pub ID: i32,
321    pub KeystoneAffixID: i32,
322    pub BonusRating: i32,
323    pub DisplaySeasonID: i32,
324}
325
326/// DBC row from MythicPlusSeasonKeyFloor.db2: minimum key level floor for a display season.
327#[derive(Clone, Debug, Deserialize, HasFk)]
328#[allow(
329    non_snake_case,
330    reason = "fields mirror upstream DBC CSV headers exactly"
331)]
332#[fk_field = "DisplaySeasonID"]
333pub struct MythicPlusSeasonKeyFloorRow {
334    pub ID: i32,
335    pub KeyFloor: i32,
336    pub PlayerConditionID: i32,
337    pub DisplaySeasonID: i32,
338}
339
340/// DBC row from DisplaySeason.db2: display season header (PvP/M+/Delves alignment).
341#[derive(Clone, Debug, Deserialize, HasId)]
342#[allow(
343    non_snake_case,
344    reason = "fields mirror upstream DBC CSV headers exactly"
345)]
346pub struct DisplaySeasonRow {
347    pub ID: i32,
348    pub Season: i32,
349    pub ExpansionID: i32,
350    pub DelvesSeasonID: i32,
351    #[serde(rename = "Field_9_2_0_42174_000_lang")]
352    pub display_name_lang: Option<String>,
353}
354
355/// DBC row from DelvesSeason.db2: Delves season header.
356#[derive(Clone, Debug, Deserialize, HasId)]
357#[allow(
358    non_snake_case,
359    reason = "fields mirror upstream DBC CSV headers exactly"
360)]
361pub struct DelvesSeasonRow {
362    pub ID: i32,
363    pub FactionID: i32,
364}