Skip to content

Instantly share code, notes, and snippets.

@DDuarte
Created September 6, 2014 20:41
Show Gist options
  • Save DDuarte/d927145de13d4c785868 to your computer and use it in GitHub Desktop.
Save DDuarte/d927145de13d4c785868 to your computer and use it in GitHub Desktop.
WPP npc trainer flags
diff --git a/WowPacketParser/SQL/Builders/UnitMisc.cs b/WowPacketParser/SQL/Builders/UnitMisc.cs
index 4944c09..74f7f91 100644
--- a/WowPacketParser/SQL/Builders/UnitMisc.cs
+++ b/WowPacketParser/SQL/Builders/UnitMisc.cs
@@ -603,6 +603,48 @@ namespace WowPacketParser.SQL.Builders
return result.Count == 0 ? null : result;
}
+ private static HashSet<string> _professionTrainers = new HashSet<string>
+ {
+ "Alchemy Trainer", "Armorsmith Trainer", "Armorsmithing Trainer", "Blacksmith Trainer",
+ "Blacksmithing Trainer", "Blacksmithing Trainer & Supplies", "Cold Weather Flying Trainer",
+ "Cooking Trainer", "Cooking Trainer & Supplies", "Dragonscale Leatherworking Trainer",
+ "Elemental Leatherworking Trainer", "Enchanting Trainer", "Engineering Trainer",
+ "First Aid Trainer", "Fishing Trainer", "Fishing Trainer & Supplies",
+ "Gnome Engineering Trainer", "Gnomish Engineering Trainer", "Goblin Engineering Trainer",
+ "Grand Master Alchemy Trainer", "Grand Master Blacksmithing Trainer",
+ "Grand Master Cooking Trainer", "Grand Master Enchanting Trainer",
+ "Grand Master Engineering Trainer", "Grand Master First Aid Trainer",
+ "Grand Master Fishing Trainer", "Grand Master Fishing Trainer & Supplies",
+ "Grand Master Herbalism Trainer", "Grand Master Inscription Trainer",
+ "Grand Master Jewelcrafting Trainer", "Grand Master Leatherworking Trainer",
+ "Grand Master Mining Trainer", "Grand Master Skinning Trainer",
+ "Grand Master Tailoring Trainer", "Herbalism Trainer",
+ "Herbalism Trainer & Supplies", "Inscription Trainer",
+ "Jewelcrafting Trainer", "Leatherworking Trainer",
+ "Master Alchemy Trainer", "Master Blacksmithing Trainer",
+ "Master Enchanting Trainer", "Master Engineering Trainer",
+ "Master Fishing Trainer", "Master Herbalism Trainer",
+ "Master Inscription Trainer", "Master Jewelcrafting Trainer",
+ "Master Leatherworking Trainer", "Master Mining Trainer",
+ "Master Skinning Trainer", "Master Tailoring Trainer",
+ "Mining Trainer", "Skinning Trainer", "Tailor Trainer", "Tailoring Trainer",
+ "Tribal Leatherworking Trainer", "Weaponsmith Trainer", "Weaponsmithing Trainer",
+ "Horse Riding Trainer", "Ram Riding Trainer", "Raptor Riding Trainer",
+ "Tiger Riding Trainer", "Wolf Riding Trainer", "Mechastrider Riding Trainer",
+ "Riding Trainer", "Undead Horse Riding Trainer"
+ };
+
+ private static HashSet<string> _classTrainers = new HashSet<string>
+ {
+ "Druid Trainer", "Portal Trainer", "Portal: Darnassus Trainer",
+ "Portal: Ironforge Trainer", "Portal: Orgrimmar Trainer",
+ "Portal: Stormwind Trainer", "Portal: Thunder Bluff Trainer",
+ "Portal: Undercity Trainer", "Deathknight Trainer",
+ "Hunter Trainer", "Mage Trainer", "Paladin Trainer",
+ "Priest Trainer", "Shaman Trainer", "Warlock Trainer",
+ "Warrior Trainer"
+ };
+
// Non-WDB data but nevertheless data that should be saved to creature_template
public static string NpcTemplateNonWDB(Dictionary<WowGuid, Unit> units)
{
@@ -656,6 +698,21 @@ namespace WowPacketParser.SQL.Builders
template.DynamicFlag &= ~(uint)UnitDynamicFlags.TappedByPlayer;
template.DynamicFlag &= ~(uint)UnitDynamicFlags.TappedByAllThreatList;
+ // has trainer flag but doesn't have prof nor class trainer flag
+ if ((template.NpcFlag & (uint) NPCFlags.Trainer) != 0 &&
+ ((template.NpcFlag & (uint) NPCFlags.ProfessionTrainer) == 0 ||
+ (template.NpcFlag & (uint) NPCFlags.ClassTrainer) == 0))
+ {
+ UnitTemplate ut;
+ if (Storage.UnitTemplates.TryGetValue(unit.Key.GetEntry(), out ut))
+ {
+ if (_professionTrainers.Contains(ut.SubName))
+ template.NpcFlag |= (uint) NPCFlags.ProfessionTrainer;
+ else if (_classTrainers.Contains(ut.SubName))
+ template.NpcFlag |= (uint)NPCFlags.ClassTrainer;
+ }
+ }
+
templates.Add(unit.Key.GetEntry(), template);
}
warning: CRLF will be replaced by LF in WowPacketParser/SQL/Builders/UnitMisc.cs.
The file will have its original line endings in your working directory.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment