Skip to content

Commit 086bf4d

Browse files
committed
DBC: Fixed crash and load of SpellMisc data
1 parent 20a78f2 commit 086bf4d

File tree

2 files changed

+44
-23
lines changed

2 files changed

+44
-23
lines changed

SpellWork/DBC/DBC.cs

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -104,15 +104,19 @@ public static async void Load()
104104

105105
await Task.WhenAll(Task.Run(() =>
106106
{
107-
foreach (var effect in SpellInfoStore.Where(effect => SpellMisc.ContainsKey(effect.Value.Spell.ID)))
107+
foreach (var spellMisc in SpellMisc.Values.Where(misc => SpellInfoStore.ContainsKey(misc.SpellID)))
108108
{
109-
effect.Value.Misc = SpellMisc[effect.Value.Spell.ID];
109+
if (spellMisc.DifficultyID != 0)
110+
continue;
111+
112+
var spell = SpellInfoStore[spellMisc.SpellID];
113+
spell.Misc = spellMisc;
110114

111-
if (SpellDuration.ContainsKey(effect.Value.Misc.DurationIndex))
112-
effect.Value.DurationEntry = SpellDuration[effect.Value.Misc.DurationIndex];
115+
if (SpellDuration.ContainsKey(spellMisc.DurationIndex))
116+
spell.DurationEntry = SpellDuration[spellMisc.DurationIndex];
113117

114-
if (SpellRange.ContainsKey(effect.Value.Misc.RangeIndex))
115-
effect.Value.Range = SpellRange[effect.Value.Misc.RangeIndex];
118+
if (SpellRange.ContainsKey(spellMisc.RangeIndex))
119+
spell.Range = SpellRange[spellMisc.RangeIndex];
116120
}
117121
}), Task.Run(() =>
118122
{
@@ -139,32 +143,35 @@ await Task.WhenAll(Task.Run(() =>
139143
}
140144
}), Task.Run(() =>
141145
{
142-
foreach (var effect in SpellTargetRestrictions.Values)
146+
foreach (var spellTargetRestrictions in SpellTargetRestrictions.Values)
143147
{
144-
if (!SpellInfoStore.ContainsKey(effect.SpellID))
148+
if (spellTargetRestrictions.DifficultyID != 0)
149+
continue;
150+
151+
if (!SpellInfoStore.ContainsKey(spellTargetRestrictions.SpellID))
145152
{
146153
Console.WriteLine(
147-
$"SpellTargetRestrictions: Unknown spell {effect.SpellID} referenced, ignoring!");
154+
$"SpellTargetRestrictions: Unknown spell {spellTargetRestrictions.SpellID} referenced, ignoring!");
148155
continue;
149156
}
150157

151-
SpellInfoStore[effect.SpellID].TargetRestrictions.Add(effect);
158+
SpellInfoStore[spellTargetRestrictions.SpellID].TargetRestrictions.Add(spellTargetRestrictions);
152159
}
153160
}), Task.Run(() =>
154161
{
155-
foreach (var spellXSpellVisual in SpellXSpellVisual.Where(effect =>
156-
effect.Value.DifficultyID == 0 && effect.Value.CasterPlayerConditionID == 0))
162+
foreach (var spellXSpellVisual in SpellXSpellVisual.Values.Where(effect => effect.CasterPlayerConditionID == 0))
157163
{
158-
if (spellXSpellVisual.Value.DifficultyID != 0) { continue; }
164+
if (spellXSpellVisual.DifficultyID != 0)
165+
continue;
159166

160-
if (!SpellInfoStore.ContainsKey(spellXSpellVisual.Value.SpellID))
167+
if (!SpellInfoStore.ContainsKey(spellXSpellVisual.SpellID))
161168
{
162169
Console.WriteLine(
163-
$"SpellXSpellVisual: Unknown spell {spellXSpellVisual.Value.SpellID} referenced, ignoring!");
170+
$"SpellXSpellVisual: Unknown spell {spellXSpellVisual.SpellID} referenced, ignoring!");
164171
continue;
165172
}
166173

167-
SpellInfoStore[spellXSpellVisual.Value.SpellID].SpellXSpellVisual = spellXSpellVisual.Value;
174+
SpellInfoStore[spellXSpellVisual.SpellID].SpellXSpellVisual = spellXSpellVisual;
168175
}
169176
}), Task.Run(() =>
170177
{
@@ -176,13 +183,15 @@ await Task.WhenAll(Task.Run(() =>
176183
$"SpellScaling: Unknown spell {spellScaling.SpellID} referenced, ignoring!");
177184
continue;
178185
}
179-
180186
SpellInfoStore[spellScaling.SpellID].Scaling = spellScaling;
181187
}
182188
}), Task.Run(() =>
183189
{
184190
foreach (var spellAuraOptions in SpellAuraOptions.Values)
185191
{
192+
if (spellAuraOptions.DifficultyID != 0)
193+
continue;
194+
186195
if (!SpellInfoStore.ContainsKey(spellAuraOptions.SpellID))
187196
{
188197
Console.WriteLine(
@@ -198,6 +207,9 @@ await Task.WhenAll(Task.Run(() =>
198207
{
199208
foreach (var spellAuraRestriction in SpellAuraRestrictions.Values)
200209
{
210+
if (spellAuraRestrictions.DifficultyID != 0)
211+
continue;
212+
201213
if (!SpellInfoStore.ContainsKey(spellAuraRestriction.SpellID))
202214
{
203215
Console.WriteLine(
@@ -211,6 +223,9 @@ await Task.WhenAll(Task.Run(() =>
211223
{
212224
foreach (var spellCategory in SpellCategories.Values)
213225
{
226+
if (spellCategory.DifficultyID != 0)
227+
continue;
228+
214229
if (!SpellInfoStore.ContainsKey(spellCategory.SpellID))
215230
{
216231
Console.WriteLine(
@@ -250,6 +265,9 @@ await Task.WhenAll(Task.Run(() =>
250265
{
251266
foreach (var spellCooldown in SpellCooldowns.Values)
252267
{
268+
if (spellCooldown.DifficultyID != 0)
269+
continue;
270+
253271
if (!SpellInfoStore.ContainsKey(spellCooldown.SpellID))
254272
{
255273
Console.WriteLine(
@@ -289,6 +307,9 @@ await Task.WhenAll(Task.Run(() =>
289307
{
290308
foreach (var spellLevel in SpellLevels.Values)
291309
{
310+
if (spellLevel.DifficultyID != 0)
311+
continue;
312+
292313
if (!SpellInfoStore.ContainsKey(spellLevel.SpellID))
293314
{
294315
Console.WriteLine($"SpellLevels: Unknown spell {spellLevel.SpellID} referenced, ignoring!");
@@ -299,16 +320,16 @@ await Task.WhenAll(Task.Run(() =>
299320
}
300321
}), Task.Run(() =>
301322
{
302-
foreach (var effect in SpellReagents)
323+
foreach (var spellReagents in SpellReagents)
303324
{
304-
if (!SpellInfoStore.ContainsKey(effect.Value.SpellID))
325+
if (!SpellInfoStore.ContainsKey(spellReagents.Value.SpellID))
305326
{
306327
Console.WriteLine(
307-
$"SpellReagents: Unknown spell {effect.Value.SpellID} referenced, ignoring!");
328+
$"SpellReagents: Unknown spell {spellReagents.Value.SpellID} referenced, ignoring!");
308329
continue;
309330
}
310331

311-
SpellInfoStore[effect.Value.SpellID].Reagents = effect.Value;
332+
SpellInfoStore[spellReagents.Value.SpellID].Reagents = spellReagents.Value;
312333
}
313334
}), Task.Run(() =>
314335
{

SpellWork/Spell/SpellInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class SpellInfo
1818
{
1919
public SpellEntry Spell { get; set; }
2020
public SpellAuraOptionsEntry AuraOptions { get; set; }
21-
public SpellAuraRestrictionsEntry AuraRestrictions { get; set; }
21+
public List<SpellAuraRestrictionsEntry> AuraRestrictions { get; set; }
2222
public SpellCastingRequirementsEntry CastingRequirements { get; set; }
2323
public SpellCategoriesEntry Categories { get; set; }
2424
public SpellClassOptionsEntry ClassOptions { get; set; }
@@ -769,7 +769,7 @@ from skill in temp.DefaultIfEmpty(new SkillLineAbilityEntry())
769769
if ((Mechanics)effect.EffectMechanic != Mechanics.MECHANIC_NONE)
770770
rtb.AppendFormatLine("Effect Mechanic = {0} ({1})", effect.EffectMechanic, (Mechanics)effect.EffectMechanic);
771771

772-
rtb.AppendFormatLineIfNotNull("Attributes {0:X8} ({0})", effect.EffectAttributes);
772+
rtb.AppendFormatLineIfNotNull("Attributes {0:X8} ({0})", (uint)effect.EffectAttributes);
773773
rtb.AppendLine();
774774
}
775775

0 commit comments

Comments
 (0)