Quantcast

Recipes can now be excluded from a specific faction via an optional parameter to AddRecipe(). Such recipes will never count toward the total recipes, or ever be known to exist. The recipe/profession dumping facility is fully aware of this change.

James D. Callahan III [03-08-11 - 04:52]
Recipes can now be excluded from a specific faction via an optional parameter to AddRecipe(). Such recipes will never count toward the total recipes, or ever be known to exist. The recipe/profession dumping facility is fully aware of this change.
Filename
Database/Alchemy.lua
Database/Blacksmithing.lua
Database/Cooking.lua
Database/Enchanting.lua
Database/Engineering.lua
Database/FirstAid.lua
Database/Inscription.lua
Database/Jewelcrafting.lua
Database/Leatherworking.lua
Database/Smelting.lua
Database/Tailoring.lua
Interface/List.lua
Recipe.lua
Scanner.lua
diff --git a/Database/Alchemy.lua b/Database/Alchemy.lua
index cab4a7d..569f3ad 100644
--- a/Database/Alchemy.lua
+++ b/Database/Alchemy.lua
@@ -35,8 +35,8 @@ local V = private.game_versions
 --------------------------------------------------------------------------------------------------------------------
 -- Counter and wrapper function
 --------------------------------------------------------------------------------------------------------------------
-local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level)
-	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 51304, nil, genesis, optimal_level, medium_level, easy_level, trivial_level)
+local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
+	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 51304, nil, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
 end

 function addon:InitAlchemy()
diff --git a/Database/Blacksmithing.lua b/Database/Blacksmithing.lua
index 0893eb8..e92c149 100644
--- a/Database/Blacksmithing.lua
+++ b/Database/Blacksmithing.lua
@@ -35,8 +35,8 @@ local V		= private.game_versions
 --------------------------------------------------------------------------------------------------------------------
 -- Counter and wrapper function
 --------------------------------------------------------------------------------------------------------------------
-local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level, specialty)
-	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 2018, specialty, genesis, optimal_level, medium_level, easy_level, trivial_level)
+local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level, specialty, required_faction)
+	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 2018, specialty, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
 end

 function addon:InitBlacksmithing()
@@ -2482,64 +2482,64 @@ function addon:InitBlacksmithing()
 	recipe = AddRecipe(63192, 450, 45093, Q.EPIC, V.WOTLK, 450, 455, 465, 475)
 	recipe:AddFilters(F.ALLIANCE, F.HORDE, F.RAID, F.IBOE, F.RBOE, F.TANK, F.PLATE)
 	recipe:AddCustom(39)
-
-	-- Breastplate of the White Knight -- 67091 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67091, 450, 47591, Q.EPIC, V.WOTLK, 450, 455, 465, 475)
+
+	-- Breastplate of the White Knight -- 67091
+	recipe = AddRecipe(67091, 450, 47591, Q.EPIC, V.WOTLK, 450, 455, 465, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID, F.IBOE, F.RBOE, F.TANK, F.PLATE)
 	recipe:AddCustom(42)

-	-- Saronite Swordbreakers -- 67092 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67092, 450, 47570, Q.EPIC, V.WOTLK, 450, 455, 465, 475)
+	-- Saronite Swordbreakers -- 67092
+	recipe = AddRecipe(67092, 450, 47570, Q.EPIC, V.WOTLK, 450, 455, 465, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID, F.IBOE, F.RBOE, F.TANK, F.PLATE)
 	recipe:AddCustom(42)

-	-- Titanium Razorplate -- 67093 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67093, 450, 47589, Q.EPIC, V.WOTLK, 450, 455, 465, 475)
+	-- Titanium Razorplate -- 67093
+	recipe = AddRecipe(67093, 450, 47589, Q.EPIC, V.WOTLK, 450, 455, 465, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID, F.IBOE, F.RBOE, F.DPS, F.PLATE)
 	recipe:AddCustom(42)

-	-- Titanium Spikeguards -- 67094 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67094, 450, 47572, Q.EPIC, V.WOTLK, 450, 455, 465, 475)
+	-- Titanium Spikeguards -- 67094
+	recipe = AddRecipe(67094, 450, 47572, Q.EPIC, V.WOTLK, 450, 455, 465, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID, F.IBOE, F.RBOE, F.DPS, F.PLATE)
 	recipe:AddCustom(42)

-	-- Sunforged Breastplate -- 67095 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67095, 450, 47593, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Sunforged Breastplate
+	recipe = AddRecipe(67095, 450, 47593, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.PLATE)
 	recipe:AddCustom(42)

-	-- Sunforged Bracers -- 67096 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67096, 450, 47574, Q.EPIC, V.WOTLK, 450, 455, 465, 475)
+	-- Sunforged Bracers -- 67096
+	recipe = AddRecipe(67096, 450, 47574, Q.EPIC, V.WOTLK, 450, 455, 465, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.PLATE)
 	recipe:AddCustom(42)

-	-- Breastplate of the White Knight -- 67130 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67130, 450, 47592, Q.EPIC, V.WOTLK, 450, 455, 465, 475)
+	-- Breastplate of the White Knight -- 67130
+	recipe = AddRecipe(67130, 450, 47592, Q.EPIC, V.WOTLK, 450, 455, 465, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.TANK, F.PLATE)
 	recipe:AddCustom(42)

-	-- Saronite Swordbreakers -- 67131 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67131, 450, 47571, Q.EPIC, V.WOTLK, 450, 455, 465, 475)
+	-- Saronite Swordbreakers -- 67131
+	recipe = AddRecipe(67131, 450, 47571, Q.EPIC, V.WOTLK, 450, 455, 465, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.TANK, F.PLATE)
 	recipe:AddCustom(42)

-	-- Titanium Razorplate -- 67132 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67132, 450, 47590, Q.EPIC, V.WOTLK, 450, 455, 465, 475)
+	-- Titanium Razorplate -- 67132
+	recipe = AddRecipe(67132, 450, 47590, Q.EPIC, V.WOTLK, 450, 455, 465, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.DPS, F.PLATE)
 	recipe:AddCustom(42)

-	-- Titanium Spikeguards -- 67133 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67133, 450, 47573, Q.EPIC, V.WOTLK, 450, 455, 465, 475)
+	-- Titanium Spikeguards -- 67133
+	recipe = AddRecipe(67133, 450, 47573, Q.EPIC, V.WOTLK, 450, 455, 465, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.DPS, F.PLATE)
 	recipe:AddCustom(42)

-	-- Sunforged Breastplate -- 67134 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67134, 450, 47594, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Sunforged Breastplate -- 67134
+	recipe = AddRecipe(67134, 450, 47594, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.CASTER, F.PLATE)
 	recipe:AddCustom(42)

-	-- Sunforged Bracers -- 67135 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67135, 450, 47575, Q.EPIC, V.WOTLK, 450, 455, 465, 475)
+	-- Sunforged Bracers -- 67135
+	recipe = AddRecipe(67135, 450, 47575, Q.EPIC, V.WOTLK, 450, 455, 465, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.CASTER, F.PLATE)
 	recipe:AddCustom(42)

diff --git a/Database/Cooking.lua b/Database/Cooking.lua
index 810c6bd..6aec131 100644
--- a/Database/Cooking.lua
+++ b/Database/Cooking.lua
@@ -35,8 +35,8 @@ local V = private.game_versions
 --------------------------------------------------------------------------------------------------------------------
 -- Counter and wrapper function
 --------------------------------------------------------------------------------------------------------------------
-local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level)
-	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 2550, nil, genesis, optimal_level, medium_level, easy_level, trivial_level)
+local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
+	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 2550, nil, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
 end

 function addon:InitCooking()
@@ -869,29 +869,29 @@ function addon:InitCooking()
 	recipe = AddRecipe(58528, 425, 43480, Q.UNCOMMON, V.WOTLK, 425, 435, 455, 475)
 	recipe:AddFilters(F.ALLIANCE, F.HORDE, F.VENDOR, F.IBOE, F.RBOP)
 	recipe:AddVendor(31031, 31032, 33595)
-
-	-- Pumpkin Pie -- 62044 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(62044, 100, 44839, Q.COMMON, V.WOTLK, 100, 150, 162, 175)
+
+	-- Pumpkin Pie -- 62044
+	recipe = AddRecipe(62044, 100, 44839, Q.COMMON, V.WOTLK, 100, 150, 162, 175, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.SEASONAL, F.IBOE, F.RBOP, F.HEALER, F.CASTER)
 	recipe:AddSeason(5)

-	-- Slow-Roasted Turkey -- 62045 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(62045, 330, 44839, Q.COMMON, V.WOTLK, 330, 330, 342, 355)
+	-- Slow-Roasted Turkey -- 62045
+	recipe = AddRecipe(62045, 330, 44839, Q.COMMON, V.WOTLK, 330, 330, 342, 355, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.SEASONAL, F.IBOE, F.RBOP, F.DPS)
 	recipe:AddSeason(5)

-	-- Cranberry Chutney -- 62049 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(62049, 210, 44840, Q.COMMON, V.WOTLK, 210, 210, 222, 235)
+	-- Cranberry Chutney -- 62049
+	recipe = AddRecipe(62049, 210, 44840, Q.COMMON, V.WOTLK, 210, 210, 222, 235, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.SEASONAL, F.IBOE, F.RBOP, F.HEALER, F.CASTER)
 	recipe:AddSeason(5)

-	-- Spice Bread Stuffing -- 62050 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(62050, 90, 44837, Q.COMMON, V.WOTLK, 90, 90, 102, 115)
+	-- Spice Bread Stuffing -- 62050
+	recipe = AddRecipe(62050, 90, 44837, Q.COMMON, V.WOTLK, 90, 90, 102, 115, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.SEASONAL, F.IBOE, F.RBOE)
 	recipe:AddSeason(5)

-	-- Candied Sweet Potato -- 62051 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(62051, 270, 44839, Q.COMMON, V.WOTLK, 270, 270, 282, 295)
+	-- Candied Sweet Potato -- 62051
+	recipe = AddRecipe(62051, 270, 44839, Q.COMMON, V.WOTLK, 270, 270, 282, 295, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.SEASONAL, F.IBOE, F.RBOP)
 	recipe:AddSeason(5)

@@ -1085,67 +1085,56 @@ function addon:InitCooking()
 	recipe:AddFilters(F.ALLIANCE, F.HORDE, F.VENDOR, F.IBOE, F.RBOP)
 	recipe:AddVendor(49701, 49737)

-	-- Some recipes are only availible to specific factions.
-	-- We only add the faction specific recipes if the user is part of that faction
-	local BFAC = LibStub("LibBabble-Faction-3.0"):GetLookupTable()
-	local _,faction = UnitFactionGroup("player")
-
-	if faction == BFAC["Alliance"] then
-
-		-- Candied Sweet Potato -- 62051 -- TORHAL: Add the strict faction flag thing to this recipe.
-		recipe = AddRecipe(62051, 270, 44839, Q.COMMON, V.WOTLK, 270, 270, 282, 295)
-		recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP)
-		recipe:AddSeason(5)
-
-		-- Cranberry Chutney -- 62049 -- TORHAL: Add the strict faction flag thing to this recipe.
-		recipe = AddRecipe(62049, 210, 44840, Q.COMMON, V.WOTLK, 210, 210, 222, 235)
-		recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP, F.HEALER, F.CASTER)
-		recipe:AddSeason(5)
-
-		-- Pumpkin Pie -- 62044 -- TORHAL: Add the strict faction flag thing to this recipe.
-		recipe = AddRecipe(62044, 100, 44839, Q.COMMON, V.WOTLK, 100, 150, 162, 175)
-		recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP, F.HEALER, F.CASTER)
-		recipe:AddSeason(5)
+	-- Candied Sweet Potato -- 62051
+	recipe = AddRecipe(62051, 270, 44839, Q.COMMON, V.WOTLK, 270, 270, 282, 295, "Horde")
+	recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP)
+	recipe:AddSeason(5)

-		-- Slow-Roasted Turkey -- 62045 -- TORHAL: Add the strict faction flag thing to this recipe.
-		recipe = AddRecipe(62045, 330, 44839, Q.COMMON, V.WOTLK, 330, 330, 342, 355)
-		recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP, F.DPS)
-		recipe:AddSeason(5)
+	-- Cranberry Chutney -- 62049
+	recipe = AddRecipe(62049, 210, 44840, Q.COMMON, V.WOTLK, 210, 210, 222, 235, "Horde")
+	recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP, F.HEALER, F.CASTER)
+	recipe:AddSeason(5)

-		-- Spice Bread Stuffing -- 62050 -- TORHAL: Add the strict faction flag thing to this recipe.
-		recipe = AddRecipe(62050, 90, 44837, Q.COMMON, V.WOTLK, 90, 90, 102, 115)
-		recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOE)
-		recipe:AddSeason(5)
+	-- Pumpkin Pie -- 62044
+	recipe = AddRecipe(62044, 100, 44839, Q.COMMON, V.WOTLK, 100, 150, 162, 175, "Horde")
+	recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP, F.HEALER, F.CASTER)
+	recipe:AddSeason(5)

-	elseif faction == BFAC["Horde"] then
+	-- Slow-Roasted Turkey -- 62045
+	recipe = AddRecipe(62045, 330, 44839, Q.COMMON, V.WOTLK, 330, 330, 342, 355, "Horde")
+	recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP, F.DPS)
+	recipe:AddSeason(5)

-		-- Candied Sweet Potato -- 66034 -- TORHAL: Add the strict faction flag thing to this recipe.
-		recipe = AddRecipe(66034, 270, 44839, Q.COMMON, V.WOTLK, 270, 270, 282, 295)
-		recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP)
-		recipe:AddSeason(5)
+	-- Spice Bread Stuffing -- 62050
+	recipe = AddRecipe(62050, 90, 44837, Q.COMMON, V.WOTLK, 90, 90, 102, 115, "Horde")
+	recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOE)
+	recipe:AddSeason(5)

-		-- Cranberry Chutney -- 66035 -- TORHAL: Add the strict faction flag thing to this recipe.
-		recipe = AddRecipe(66035, 210, 44840, Q.COMMON, V.WOTLK, 210, 210, 222, 235)
-		recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP, F.HEALER, F.CASTER)
-		recipe:AddSeason(5)

-		-- Pumpkin Pie -- 66036 -- TORHAL: Add the strict faction flag thing to this recipe.
-		recipe = AddRecipe(66036, 100, 44839, Q.COMMON, V.WOTLK, 100, 150, 162, 175)
-		recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP, F.HEALER, F.CASTER)
-		recipe:AddSeason(5)
+	-- Candied Sweet Potato -- 66034
+	recipe = AddRecipe(66034, 270, 44839, Q.COMMON, V.WOTLK, 270, 270, 282, 295, "Horde")
+	recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP)
+	recipe:AddSeason(5)

-		-- Slow-Roasted Turkey -- 66037 -- TORHAL: Add the strict faction flag thing to this recipe.
-		recipe = AddRecipe(66037, 330, 44839, Q.COMMON, V.WOTLK, 330, 330, 342, 355)
-		recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP, F.DPS)
-		recipe:AddSeason(5)
+	-- Cranberry Chutney -- 66035
+	recipe = AddRecipe(66035, 210, 44840, Q.COMMON, V.WOTLK, 210, 210, 222, 235, "Horde")
+	recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP, F.HEALER, F.CASTER)
+	recipe:AddSeason(5)

-		-- Spice Bread Stuffing -- 66038 -- TORHAL: Add the strict faction flag thing to this recipe.
-		recipe = AddRecipe(66038, 90, 44837, Q.COMMON, V.WOTLK, 90, 90, 102, 115)
-		recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOE)
-		recipe:AddSeason(5)
+	-- Pumpkin Pie -- 66036
+	recipe = AddRecipe(66036, 100, 44839, Q.COMMON, V.WOTLK, 100, 150, 162, 175, "Horde")
+	recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP, F.HEALER, F.CASTER)
+	recipe:AddSeason(5)

-	end
+	-- Slow-Roasted Turkey -- 66037
+	recipe = AddRecipe(66037, 330, 44839, Q.COMMON, V.WOTLK, 330, 330, 342, 355, "Horde")
+	recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOP, F.DPS)
+	recipe:AddSeason(5)

+	-- Spice Bread Stuffing -- 66038
+	recipe = AddRecipe(66038, 90, 44837, Q.COMMON, V.WOTLK, 90, 90, 102, 115, "Horde")
+	recipe:AddFilters(F.HORDE, F.SEASONAL, F.IBOE, F.RBOE)
+	recipe:AddSeason(5)

 	self.InitCooking = nil
 end
diff --git a/Database/Enchanting.lua b/Database/Enchanting.lua
index 2d855bd..450dc5d 100644
--- a/Database/Enchanting.lua
+++ b/Database/Enchanting.lua
@@ -35,8 +35,8 @@ local V = private.game_versions
 --------------------------------------------------------------------------------------------------------------------
 -- Counter and wrapper function
 --------------------------------------------------------------------------------------------------------------------
-local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level)
-	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 7411, nil, genesis, optimal_level, medium_level, easy_level, trivial_level)
+local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
+	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 7411, nil, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
 end

 function addon:InitEnchanting()
diff --git a/Database/Engineering.lua b/Database/Engineering.lua
index 24ce479..17e6a99 100644
--- a/Database/Engineering.lua
+++ b/Database/Engineering.lua
@@ -36,8 +36,8 @@ local V		= private.game_versions
 --------------------------------------------------------------------------------------------------------------------
 -- Counter and wrapper function
 --------------------------------------------------------------------------------------------------------------------
-local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level, specialty)
-	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 4036, specialty, genesis, optimal_level, medium_level, easy_level, trivial_level)
+local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level, specialty, required_faction)
+	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 4036, specialty, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
 end

 function addon:InitEngineering()
@@ -1407,13 +1407,13 @@ function addon:InitEngineering()
 	recipe:AddFilters(F.ALLIANCE, F.HORDE, F.TRAINER, F.IBOP, F.RBOP, F.HUNTER, F.SHAMAN, F.MAIL)
 	recipe:AddTrainer(25277, 26907, 26955, 26991, 28697, 33586)

-	-- Mechano-Hog -- 60866 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(60866, 450, 41508, Q.EPIC, V.WOTLK, 450, 480, 485, 490)
+	-- Mechano-Hog -- 60866
+	recipe = AddRecipe(60866, 450, 41508, Q.EPIC, V.WOTLK, 450, 480, 485, 490, "Horde")
 	recipe:AddFilters(F.HORDE, F.VENDOR, F.IBOE, F.RBOP, F.WRATHCOMMON1)
 	recipe:AddRepVendor(FAC.HORDE_EXPEDITION, REP.EXALTED, 32565, 32774)
-
-	-- Mekgineer's Chopper -- 60867 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(60867, 450, 44413, Q.EPIC, V.WOTLK, 450, 480, 485, 490)
+
+	-- Mekgineer's Chopper -- 60867
+	recipe = AddRecipe(60867, 450, 44413, Q.EPIC, V.WOTLK, 450, 480, 485, 490, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.VENDOR, F.IBOE, F.RBOP, F.WRATHCOMMON1)
 	recipe:AddRepVendor(FAC.ALLIANCE_VANGUARD, REP.EXALTED, 32564, 32773)

diff --git a/Database/FirstAid.lua b/Database/FirstAid.lua
index ef9d120..c19d4e3 100644
--- a/Database/FirstAid.lua
+++ b/Database/FirstAid.lua
@@ -35,8 +35,8 @@ local V = private.game_versions
 --------------------------------------------------------------------------------------------------------------------
 -- Counter and wrapper function
 --------------------------------------------------------------------------------------------------------------------
-local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level)
-	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 3273, nil, genesis, optimal_level, medium_level, easy_level, trivial_level)
+local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
+	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 3273, nil, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
 end

 function addon:InitFirstAid()
diff --git a/Database/Inscription.lua b/Database/Inscription.lua
index 2314057..664791b 100644
--- a/Database/Inscription.lua
+++ b/Database/Inscription.lua
@@ -38,8 +38,8 @@ local V = private.game_versions
 --------------------------------------------------------------------------------------------------------------------
 -- Counter and wrapper function
 --------------------------------------------------------------------------------------------------------------------
-local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level)
-	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 45357, nil, genesis, optimal_level, medium_level, easy_level, trivial_level)
+local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
+	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 45357, nil, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
 end

 function addon:InitInscription()
diff --git a/Database/Jewelcrafting.lua b/Database/Jewelcrafting.lua
index ef5013f..f771cd1 100644
--- a/Database/Jewelcrafting.lua
+++ b/Database/Jewelcrafting.lua
@@ -35,8 +35,8 @@ local V = private.game_versions
 --------------------------------------------------------------------------------------------------------------------
 -- Counter and wrapper function
 --------------------------------------------------------------------------------------------------------------------
-local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level)
-	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 25229, nil, genesis, optimal_level, medium_level, easy_level, trivial_level)
+local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
+	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 25229, nil, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
 end

 function addon:InitJewelcrafting()
diff --git a/Database/Leatherworking.lua b/Database/Leatherworking.lua
index 425e956..99c60d2 100644
--- a/Database/Leatherworking.lua
+++ b/Database/Leatherworking.lua
@@ -36,8 +36,8 @@ local V = private.game_versions
 --------------------------------------------------------------------------------------------------------------------
 -- Counter and wrapper function
 --------------------------------------------------------------------------------------------------------------------
-local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level, specialty)
-	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 2108, specialty, genesis, optimal_level, medium_level, easy_level, trivial_level)
+local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level, specialty, required_faction)
+	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 2108, specialty, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
 end

 function addon:InitLeatherworking()
@@ -2551,84 +2551,84 @@ function addon:InitLeatherworking()
 	recipe = AddRecipe(64661, 350, 33568, Q.COMMON, V.WOTLK, 350, 350, 362, 375)
 	recipe:AddFilters(F.ALLIANCE, F.HORDE, F.TRAINER, F.IBOE, F.RBOP, F.LEATHER)
 	recipe:AddTrainer(26911, 26961, 26996, 26998, 28700, 33581)
-
-	-- Ensorcelled Nerubian Breastplate -- 67080 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67080, 450, 47597, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+
+	-- Ensorcelled Nerubian Breastplate -- 67080
+	recipe = AddRecipe(67080, 450, 47597, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.CASTER, F.MAIL)
 	recipe:AddCustom(42)

-	-- Black Chitin Bracers -- 67081 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67081, 450, 47579, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Black Chitin Bracers -- 67081
+	recipe = AddRecipe(67081, 450, 47579, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID)
 	recipe:AddCustom(42)

-	-- Crusader's Dragonscale Breastplate -- 67082 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67082, 450, 47595, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Crusader's Dragonscale Breastplate -- 67082
+	recipe = AddRecipe(67082, 450, 47595, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID)
 	recipe:AddCustom(42)

-	-- Crusader's Dragonscale Bracers -- 67083 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67083, 450, 47576, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Crusader's Dragonscale Bracers -- 67083
+	recipe = AddRecipe(67083, 450, 47576, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID, F.IBOE, F.RBOE, F.DPS, F.MAIL)
 	recipe:AddCustom(42)

-	-- Lunar Eclipse Chestguard -- 67084 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67084, 450, 47602, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Lunar Eclipse Chestguard -- 67084
+	recipe = AddRecipe(67084, 450, 47602, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID)
 	recipe:AddCustom(42)

-	-- Moonshadow Armguards -- 67085 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67085, 450, 47583, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Moonshadow Armguards -- 67085
+	recipe = AddRecipe(67085, 450, 47583, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID)
 	recipe:AddCustom(42)

-	-- Knightbane Carapace -- 67086 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67086, 450, 47599, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Knightbane Carapace -- 67086
+	recipe = AddRecipe(67086, 450, 47599, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID)
 	recipe:AddCustom(42)

-	-- Bracers of Swift Death -- 67087 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67087, 450, 47581, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Bracers of Swift Death -- 67087
+	recipe = AddRecipe(67087, 450, 47581, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID)
 	recipe:AddCustom(42)

-	-- Ensorcelled Nerubian Breastplate -- 67136 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67136, 450, 47598, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Ensorcelled Nerubian Breastplate -- 67136
+	recipe = AddRecipe(67136, 450, 47598, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.CASTER, F.MAIL)
 	recipe:AddCustom(42)

-	-- Black Chitin Bracers -- 67137 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67137, 450, 47580, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Black Chitin Bracers -- 67137
+	recipe = AddRecipe(67137, 450, 47580, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.CASTER, F.MAIL)
 	recipe:AddCustom(42)

-	-- Crusader's Dragonscale Breastplate -- 67138 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67138, 450, 47596, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Crusader's Dragonscale Breastplate -- 67138
+	recipe = AddRecipe(67138, 450, 47596, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.DPS, F.MAIL)
 	recipe:AddCustom(42)

-	-- Bracers of Swift Death -- 67139 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67139, 450, 47582, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Bracers of Swift Death -- 67139
+	recipe = AddRecipe(67139, 450, 47582, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.DPS, F.LEATHER)
 	recipe:AddCustom(42)

-	-- Lunar Eclipse Robes -- 67140 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67140, 450, 47601, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Lunar Eclipse Robes -- 67140
+	recipe = AddRecipe(67140, 450, 47601, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.CASTER, F.LEATHER)
 	recipe:AddCustom(42)

-	-- Moonshadow Armguards -- 67141 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67141, 450, 47584, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Moonshadow Armguards -- 67141
+	recipe = AddRecipe(67141, 450, 47584, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.CASTER, F.LEATHER)
 	recipe:AddCustom(42)

-	-- Knightbane Carapace -- 67142 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67142, 450, 47600, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Knightbane Carapace -- 67142
+	recipe = AddRecipe(67142, 450, 47600, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.DPS, F.LEATHER)
 	recipe:AddCustom(42)

-	-- Crusader's Dragonscale Bracers -- 67143 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67143, 450, 47577, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Crusader's Dragonscale Bracers -- 67143
+	recipe = AddRecipe(67143, 450, 47577, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.DPS, F.MAIL)
 	recipe:AddCustom(42)

diff --git a/Database/Smelting.lua b/Database/Smelting.lua
index 73e1080..a78e0b8 100644
--- a/Database/Smelting.lua
+++ b/Database/Smelting.lua
@@ -33,8 +33,8 @@ local V = private.game_versions
 --------------------------------------------------------------------------------------------------------------------
 -- Counter and wrapper function
 --------------------------------------------------------------------------------------------------------------------
-local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level)
-	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 32606, nil, genesis, optimal_level, medium_level, easy_level, trivial_level)
+local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
+	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 32606, nil, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
 end

 function addon:InitSmelting()
diff --git a/Database/Tailoring.lua b/Database/Tailoring.lua
index 9b1d44e..0e6f3fc 100644
--- a/Database/Tailoring.lua
+++ b/Database/Tailoring.lua
@@ -35,8 +35,8 @@ local V = private.game_versions
 --------------------------------------------------------------------------------------------------------------------
 -- Counter and wrapper function
 --------------------------------------------------------------------------------------------------------------------
-local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level, specialty)
-	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 3908, specialty, genesis, optimal_level, medium_level, easy_level, trivial_level)
+local function AddRecipe(spell_id, skill_level, item_id, quality, genesis, optimal_level, medium_level, easy_level, trivial_level, specialty, required_faction)
+	return addon:AddRecipe(spell_id, skill_level, item_id, quality, 3908, specialty, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
 end

 function addon:InitTailoring()
@@ -2059,44 +2059,44 @@ function addon:InitTailoring()
 	recipe = AddRecipe(64730, 405, 45810, Q.COMMON, V.WOTLK, 405, 410, 415, 420)
 	recipe:AddFilters(F.ALLIANCE, F.HORDE, F.TRAINER, F.IBOE, F.RBOP, F.HEALER, F.CASTER, F.CLOAK)
 	recipe:AddTrainer(3363, 26914, 26964, 26969, 27001, 28699, 33580, 44783, 45559)
-
-	-- Royal Moonshroud Robe -- 67064 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67064, 450, 47605, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+
+	-- Royal Moonshroud Robe -- 67064
+	recipe = AddRecipe(67064, 450, 47605, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.CASTER, F.CLOTH)
 	recipe:AddCustom(42)

-	-- Royal Moonshroud Bracers -- 67065 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67065, 450, 47587, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Royal Moonshroud Bracers -- 67065
+	recipe = AddRecipe(67065, 450, 47587, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.CASTER, F.CLOTH)
 	recipe:AddCustom(42)

-	-- Merlin's Robe -- 67066 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67066, 450, 47603, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Merlin's Robe -- 67066
+	recipe = AddRecipe(67066, 450, 47603, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.CASTER, F.CLOTH)
 	recipe:AddCustom(42)

-	-- Bejeweled Wizard's Bracers -- 67079 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67079, 450, 47585, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Bejeweled Wizard's Bracers -- 67079
+	recipe = AddRecipe(67079, 450, 47585, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Alliance")
 	recipe:AddFilters(F.ALLIANCE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.CASTER, F.CLOTH)
 	recipe:AddCustom(42)

-	-- Royal Moonshroud Robe -- 67144 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67144, 450, 47606, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Royal Moonshroud Robe -- 67144
+	recipe = AddRecipe(67144, 450, 47606, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Horde"›)
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.CASTER, F.CLOTH)
 	recipe:AddCustom(42)

-	-- Bejeweled Wizard's Bracers -- 67145 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67145, 450, 47586, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Bejeweled Wizard's Bracers -- 67145
+	recipe = AddRecipe(67145, 450, 47586, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.CASTER, F.CLOTH)
 	recipe:AddCustom(42)

-	-- Merlin's Robe -- 67146 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67146, 450, 47604, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Merlin's Robe -- 67146
+	recipe = AddRecipe(67146, 450, 47604, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.CASTER, F.CLOTH)
 	recipe:AddCustom(42)

-	-- Royal Moonshroud Bracers -- 67147 -- TORHAL: Add the strict faction flag thing to this recipe.
-	recipe = AddRecipe(67147, 450, 47588, Q.EPIC, V.WOTLK, 450, 460, 467, 475)
+	-- Royal Moonshroud Bracers -- 67147
+	recipe = AddRecipe(67147, 450, 47588, Q.EPIC, V.WOTLK, 450, 460, 467, 475, "Horde")
 	recipe:AddFilters(F.HORDE, F.RAID, F.IBOE, F.RBOE, F.HEALER, F.CASTER, F.CLOTH)
 	recipe:AddCustom(42)

diff --git a/Interface/List.lua b/Interface/List.lua
index 3b0c056..71b2708 100644
--- a/Interface/List.lua
+++ b/Interface/List.lua
@@ -731,7 +731,7 @@ function private.InitializeListFrame()
 			for recipe_id, recipe in pairs(recipe_list) do
 				recipe:RemoveState("VISIBLE")

-				if recipe.profession == current_prof then
+				if recipe.profession == current_prof and not recipe.is_ignored then
 					local is_known

 					if MainPanel.is_linked then
diff --git a/Recipe.lua b/Recipe.lua
index e4d14a3..3e43d7e 100644
--- a/Recipe.lua
+++ b/Recipe.lua
@@ -25,10 +25,13 @@ local addon = LibStub("AceAddon-3.0"):GetAddon(MODNAME)

 local L		= LibStub("AceLocale-3.0"):GetLocale(MODNAME)
 local BZ	= LibStub("LibBabble-Zone-3.0"):GetLookupTable()
+local BFAC 	= LibStub("LibBabble-Faction-3.0"):GetLookupTable()

 local A		= private.acquire_types
 local SF	= private.recipe_state_flags

+private.num_recipes = {}
+
 -----------------------------------------------------------------------
 -- Local constants.
 -----------------------------------------------------------------------
@@ -52,7 +55,7 @@ local recipe_meta = {
 -- @param easy_level Level at which recipe is considered green
 -- @param trivial_level Level at which recipe is considered grey
 -- @return Resultant recipe table.
-function addon:AddRecipe(spell_id, skill_level, item_id, quality, profession, specialty, genesis, optimal_level, medium_level, easy_level, trivial_level)
+function addon:AddRecipe(spell_id, skill_level, item_id, quality, profession, specialty, genesis, optimal_level, medium_level, easy_level, trivial_level, required_faction)
 	local recipe_list = private.recipe_list

 	if recipe_list[spell_id] then
@@ -79,11 +82,20 @@ function addon:AddRecipe(spell_id, skill_level, item_id, quality, profession, sp
 		trivial_level = trivial_level or skill_level + 20,
 	}, recipe_meta)

-	if not recipe.name then
+	if not recipe.name or recipe.name == "" then
 		recipe.name = ("%s: %d"):format(_G.UNKNOWN, tonumber(spell_id))
 		self:Print(L["SpellIDCache"]:format(spell_id))
 	end
 	recipe_list[spell_id] = recipe
+	recipe.required_faction = required_faction
+
+	if required_faction and private.Player.faction ~= BFAC[required_faction] then
+		recipe.is_ignored = true
+	end
+
+	if not recipe.is_ignored then
+		private.num_recipes[recipe.profession] = (private.num_recipes[recipe.profession] or 0) + 1
+	end
 	return recipe
 end

diff --git a/Scanner.lua b/Scanner.lua
index 19c4c4b..1059b18 100644
--- a/Scanner.lua
+++ b/Scanner.lua
@@ -963,8 +963,24 @@ do
 		local genesis = private.game_versions[recipe.genesis]

 		table.insert(output, ("-- %s -- %d"):format(recipe.name, recipe.spell_id))
-		table.insert(output, ("recipe = AddRecipe(%d, %d, %s, Q.%s, V.%s, %d, %d, %d, %d%s)"):format(recipe.spell_id, recipe.skill_level, tostring(recipe.item_id), Q[recipe.quality], V[genesis],
-													     recipe.optimal_level, recipe.medium_level, recipe.easy_level, recipe.trivial_level, specialty))
+
+		local spell_id = recipe.spell_id
+		local skill_level = recipe.skill_level
+		local optimal_level = recipe.optimal_level
+		local medium_level = recipe.medium_level
+		local easy_level = recipe.easy_level
+		local trivial_level = recipe.trivial_level
+		local required_faction = recipe.required_faction
+
+		if recipe.required_faction then
+			table.insert(output,
+				     ("recipe = AddRecipe(%d, %d, %s, Q.%s, V.%s, %d, %d, %d, %d%s)"):format(spell_id, skill_level, tostring(recipe.item_id), Q[recipe.quality], V[genesis],
+													     optimal_level, medium_level, easy_level, trivial_level, specialty, required_faction))
+		else
+			table.insert(output,
+				     ("recipe = AddRecipe(%d, %d, %s, Q.%s, V.%s, %d, %d, %d, %d%s)"):format(spell_id, skill_level, tostring(recipe.item_id), Q[recipe.quality], V[genesis],
+													     optimal_level, medium_level, easy_level, trivial_level, specialty))
+		end

 		for table_index, bits in ipairs(private.bit_flags) do
 			table.wipe(sorted_data)