static void OutputClassMaskData(uint compareMask) { uint count = 0; Console.WriteLine("====== SkillRaceClassInfo ======="); foreach (var record in RaceClassDBC.GetAllRecords()) { uint classMask = (uint)record["classMask"]; if ((classMask & compareMask) != 0) { Console.WriteLine($"Count found {++count} ------------------"); using (var enumer = record.GetEnumerator()) { do { var entry = enumer.Current; var key = entry.Key; var value = entry.Value; Console.WriteLine($"[{key}]: {value}"); }while (enumer.MoveNext()); } } } Console.WriteLine("====== SkillLineAbility ======="); foreach (var record in DBC.GetAllRecords()) { uint classMask = (uint)record["ClassMask"]; if ((classMask & compareMask) != 0) { Console.WriteLine($"Count found {++count} ------------------"); using (var enumer = record.GetEnumerator()) { do { var entry = enumer.Current; var key = entry.Key; var value = entry.Value; Console.WriteLine($"[{key}]: {value}"); }while (enumer.MoveNext()); } } } foreach (var record in DBC.GetAllRecords()) { uint classMask = (uint)record["ClassMask"]; if ((classMask & compareMask) != 0) { uint skillId = (uint)record["Id"]; uint spellEntry = (uint)record["SpellDbcRecord"]; var allSpells = SpellDBC.GetAllRecords().FirstOrDefault(r => ((uint)r["ID"]) == spellEntry); string spellName = allSpells != null?SpellDBC.LookupString(((uint[])allSpells["SpellName"])[0]) : "Spell Not Found"; Console.WriteLine($"SkillLineAbilityId: {skillId}, SpellId: {spellEntry}, Name: {spellName}"); } } }