Fix realm-gate disable for book/options, pet-rank learning, unique beasts

- Hunter's Book and options window now show a full 'DISABLED.' overlay on realm-gated realms instead of rendering content
- Pet training: new rank of an already-known ability is now recognised, announced, and reflected in tooltips
- Restore curated 'unique appearance' beast allowlist (34 beasts) in data/init.lua
- CHANGELOG updated
This commit is contained in:
DuvelCorp
2026-09-08 01:25:51 +02:00
parent 38e080261c
commit c55cd66ffc
19 changed files with 996 additions and 698 deletions
+23 -23
View File
@@ -1,5 +1,5 @@
-- MetaHunt Bags Database (Quivers + Ammo Pouches)
-- Source: https://database.turtlecraft.gg/?items=11
-- Source: https://octowow.st/db/?items=11
-- Auto-generated extraction with source recursion.
if not MTH_DS then MTH_DS = {} end
@@ -14,7 +14,7 @@ MTH_DS_BagItems = {
["subtype"] = "quiver",
["description"] = "",
["tooltip"] = "Light Quiver\n6 Slot Bag\nEquip: Increases ranged attack speed by 10%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=2101",
["sourceUrl"] = "https://octowow.st/db/?item=2101",
["sources"] = {
["sold-by"] = {
["template"] = "npc",
@@ -89,7 +89,7 @@ MTH_DS_BagItems = {
["subtype"] = "ammo pouch",
["description"] = "",
["tooltip"] = "Small Ammo Pouch\n6 Slot Bag\nEquip: Increases ranged attack speed by 10%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=2102",
["sourceUrl"] = "https://octowow.st/db/?item=2102",
["sources"] = {
["sold-by"] = {
["template"] = "npc",
@@ -144,7 +144,7 @@ MTH_DS_BagItems = {
["subtype"] = "quiver",
["description"] = "",
["tooltip"] = "Ribbly's Quiver\nBinds when picked up\nUnique\n16 Slot Bag\nRequires Level 50\nEquip: Increases ranged attack speed by 14%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=2662",
["sourceUrl"] = "https://octowow.st/db/?item=2662",
["sources"] = {
["dropped-by"] = {
["template"] = "npc",
@@ -171,7 +171,7 @@ MTH_DS_BagItems = {
["subtype"] = "ammo pouch",
["description"] = "",
["tooltip"] = "Ribbly's Bandolier\nBinds when picked up\nUnique\n16 Slot Bag\nRequires Level 50\nEquip: Increases ranged attack speed by 14%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=2663",
["sourceUrl"] = "https://octowow.st/db/?item=2663",
["sources"] = {
["dropped-by"] = {
["template"] = "npc",
@@ -197,7 +197,7 @@ MTH_DS_BagItems = {
["subtype"] = "quiver",
["description"] = "",
["tooltip"] = "Hunting Quiver\nBinds when picked up\nUnique\n10 Slot Bag\nEquip: Increases ranged attack speed by 10%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=3573",
["sourceUrl"] = "https://octowow.st/db/?item=3573",
["sources"] = {
["reward-of"] = {
["template"] = "quest",
@@ -216,7 +216,7 @@ MTH_DS_BagItems = {
["subtype"] = "ammo pouch",
["description"] = "",
["tooltip"] = "Hunting Ammo Sack\nBinds when picked up\n10 Slot Bag\nEquip: Increases ranged attack speed by 10%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=3574",
["sourceUrl"] = "https://octowow.st/db/?item=3574",
["sources"] = {
["reward-of"] = {
["template"] = "quest",
@@ -235,7 +235,7 @@ MTH_DS_BagItems = {
["subtype"] = "ammo pouch",
["description"] = "",
["tooltip"] = "Bandolier of the Night Watch\nBinds when picked up\nUnique\n12 Slot Bag\nEquip: Increases ranged attack speed by 11%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=3604",
["sourceUrl"] = "https://octowow.st/db/?item=3604",
["sources"] = {
["reward-of"] = {
["template"] = "quest",
@@ -254,7 +254,7 @@ MTH_DS_BagItems = {
["subtype"] = "quiver",
["description"] = "",
["tooltip"] = "Quiver of the Night Watch\nBinds when picked up\nUnique\n12 Slot Bag\nEquip: Increases ranged attack speed by 11%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=3605",
["sourceUrl"] = "https://octowow.st/db/?item=3605",
["sources"] = {
["reward-of"] = {
["template"] = "quest",
@@ -273,7 +273,7 @@ MTH_DS_BagItems = {
["subtype"] = "quiver",
["description"] = "",
["tooltip"] = "Small Quiver\n8 Slot Bag\nEquip: Increases ranged attack speed by 10%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=5439",
["sourceUrl"] = "https://octowow.st/db/?item=5439",
["sources"] = {
["sold-by"] = {
["template"] = "npc",
@@ -621,7 +621,7 @@ MTH_DS_BagItems = {
["subtype"] = "ammo pouch",
["description"] = "",
["tooltip"] = "Small Shot Pouch\n8 Slot Bag\nEquip: Increases ranged attack speed by 10%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=5441",
["sourceUrl"] = "https://octowow.st/db/?item=5441",
["sources"] = {
["sold-by"] = {
["template"] = "npc",
@@ -773,7 +773,7 @@ MTH_DS_BagItems = {
["subtype"] = "quiver",
["description"] = "",
["tooltip"] = "Light Leather Quiver\n8 Slot Bag\nEquip: Increases ranged attack speed by 10%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=7278",
["sourceUrl"] = "https://octowow.st/db/?item=7278",
["sources"] = {
["created-by"] = {
["template"] = "spell",
@@ -796,7 +796,7 @@ MTH_DS_BagItems = {
["subtype"] = "ammo pouch",
["description"] = "",
["tooltip"] = "Small Leather Ammo Pouch\n8 Slot Bag\nEquip: Increases ranged attack speed by 10%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=7279",
["sourceUrl"] = "https://octowow.st/db/?item=7279",
["sources"] = {
["created-by"] = {
["template"] = "spell",
@@ -820,7 +820,7 @@ MTH_DS_BagItems = {
["subtype"] = "quiver",
["description"] = "",
["tooltip"] = "Heavy Quiver\n14 Slot Bag\nRequires Level 30\nEquip: Increases ranged attack speed by 12%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=7371",
["sourceUrl"] = "https://octowow.st/db/?item=7371",
["sources"] = {
["sold-by"] = {
["template"] = "npc",
@@ -871,7 +871,7 @@ MTH_DS_BagItems = {
["subtype"] = "ammo pouch",
["description"] = "",
["tooltip"] = "Heavy Leather Ammo Pouch\n14 Slot Bag\nRequires Level 30\nEquip: Increases ranged attack speed by 12%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=7372",
["sourceUrl"] = "https://octowow.st/db/?item=7372",
["sources"] = {
["created-by"] = {
["template"] = "spell",
@@ -895,7 +895,7 @@ MTH_DS_BagItems = {
["subtype"] = "quiver",
["description"] = "",
["tooltip"] = "Quickdraw Quiver\n16 Slot Bag\nRequires Level 40\nEquip: Increases ranged attack speed by 13%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=8217",
["sourceUrl"] = "https://octowow.st/db/?item=8217",
["sources"] = {
["created-by"] = {
["template"] = "spell",
@@ -919,7 +919,7 @@ MTH_DS_BagItems = {
["subtype"] = "ammo pouch",
["description"] = "",
["tooltip"] = "Thick Leather Ammo Pouch\n16 Slot Bag\nRequires Level 40\nEquip: Increases ranged attack speed by 13%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=8218",
["sourceUrl"] = "https://octowow.st/db/?item=8218",
["sources"] = {
["created-by"] = {
["template"] = "spell",
@@ -943,7 +943,7 @@ MTH_DS_BagItems = {
["subtype"] = "quiver",
["description"] = "",
["tooltip"] = "Medium Quiver\n10 Slot Bag\nRequires Level 10\nEquip: Increases ranged attack speed by 10%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=11362",
["sourceUrl"] = "https://octowow.st/db/?item=11362",
["sources"] = {
["sold-by"] = {
["template"] = "npc",
@@ -1327,7 +1327,7 @@ MTH_DS_BagItems = {
["subtype"] = "ammo pouch",
["description"] = "",
["tooltip"] = "Medium Shot Pouch\n10 Slot Bag\nRequires Level 10\nEquip: Increases ranged attack speed by 10%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=11363",
["sourceUrl"] = "https://octowow.st/db/?item=11363",
["sources"] = {
["sold-by"] = {
["template"] = "npc",
@@ -1368,7 +1368,7 @@ MTH_DS_BagItems = {
["subtype"] = "quiver",
["description"] = "",
["tooltip"] = "Ancient Sinew Wrapped Lamina\nBinds when picked up\nUnique\n18 Slot Bag\nClasses: Hunter\nRequires Level 60\nEquip: Increases ranged attack speed by 15%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=18714",
["sourceUrl"] = "https://octowow.st/db/?item=18714",
["sources"] = {
["reward-of"] = {
["template"] = "quest",
@@ -1388,7 +1388,7 @@ MTH_DS_BagItems = {
["subtype"] = "quiver",
["description"] = "",
["tooltip"] = "Harpy Hide Quiver\nBinds when picked up\nUnique\n16 Slot Bag\nRequires Level 55\nEquip: Increases ranged attack speed by 15%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=19319",
["sourceUrl"] = "https://octowow.st/db/?item=19319",
["sources"] = {
["sold-by"] = {
["template"] = "npc",
@@ -1440,7 +1440,7 @@ MTH_DS_BagItems = {
["subtype"] = "ammo pouch",
["description"] = "",
["tooltip"] = "Gnoll Skin Bandolier\nBinds when picked up\nUnique\n16 Slot Bag\nRequires Level 55\nEquip: Increases ranged attack speed by 15%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=19320",
["sourceUrl"] = "https://octowow.st/db/?item=19320",
["sources"] = {
["sold-by"] = {
["template"] = "npc",
@@ -1491,7 +1491,7 @@ MTH_DS_BagItems = {
["subtype"] = "quiver",
["description"] = "",
["tooltip"] = "Swiftfeather Quiver\nBinds when equipped\nUnique\n16 Slot Bag\nRequires Level 57\nEquip: Increases ranged attack speed by 14%.",
["sourceUrl"] = "https://database.turtlecraft.gg/?item=61549",
["sourceUrl"] = "https://octowow.st/db/?item=61549",
["sources"] = {
["dropped-by"] = {
["template"] = "npc",
+324 -324
View File
File diff suppressed because it is too large Load Diff
+8 -8
View File
@@ -51,7 +51,7 @@ local growlTrainerRows = {
["rank"] = "Rank 1",
["rankNumber"] = 1,
["school"] = "Physical",
["sourceUrl"] = "https://database.turtlecraft.gg/?spell=2649",
["sourceUrl"] = "https://octowow.st/db/?spell=2649",
["trainLevel"] = 1,
},
{
@@ -72,7 +72,7 @@ local growlTrainerRows = {
["rank"] = "Rank 2",
["rankNumber"] = 2,
["school"] = "Physical",
["sourceUrl"] = "https://database.turtlecraft.gg/?spell=14916",
["sourceUrl"] = "https://octowow.st/db/?spell=14916",
["trainLevel"] = 10,
},
{
@@ -93,7 +93,7 @@ local growlTrainerRows = {
["rank"] = "Rank 3",
["rankNumber"] = 3,
["school"] = "Physical",
["sourceUrl"] = "https://database.turtlecraft.gg/?spell=14917",
["sourceUrl"] = "https://octowow.st/db/?spell=14917",
["trainLevel"] = 20,
},
{
@@ -114,7 +114,7 @@ local growlTrainerRows = {
["rank"] = "Rank 4",
["rankNumber"] = 4,
["school"] = "Physical",
["sourceUrl"] = "https://database.turtlecraft.gg/?spell=14918",
["sourceUrl"] = "https://octowow.st/db/?spell=14918",
["trainLevel"] = 30,
},
{
@@ -135,7 +135,7 @@ local growlTrainerRows = {
["rank"] = "Rank 5",
["rankNumber"] = 5,
["school"] = "Physical",
["sourceUrl"] = "https://database.turtlecraft.gg/?spell=14919",
["sourceUrl"] = "https://octowow.st/db/?spell=14919",
["trainLevel"] = 40,
},
{
@@ -156,7 +156,7 @@ local growlTrainerRows = {
["rank"] = "Rank 6",
["rankNumber"] = 6,
["school"] = "Physical",
["sourceUrl"] = "https://database.turtlecraft.gg/?spell=14920",
["sourceUrl"] = "https://octowow.st/db/?spell=14920",
["trainLevel"] = 50,
},
{
@@ -177,7 +177,7 @@ local growlTrainerRows = {
["rank"] = "Rank 7",
["rankNumber"] = 7,
["school"] = "Physical",
["sourceUrl"] = "https://database.turtlecraft.gg/?spell=14921",
["sourceUrl"] = "https://octowow.st/db/?spell=14921",
["trainLevel"] = 60,
},
}
@@ -228,7 +228,7 @@ end)
MTH_DS_PetSpells.byAbility["Growl"] = {
["ability"] = "Growl",
["searchUrl"] = "https://database.turtlecraft.gg/?search=Growl",
["searchUrl"] = "https://octowow.st/db/?search=Growl",
["spellCount"] = table.getn(growlTrainerRows),
["spells"] = growlTrainerRows,
}
+200 -200
View File
File diff suppressed because it is too large Load Diff
+42 -42
View File
@@ -6,7 +6,7 @@ MTH_DS_Racial = {
version = "1.0",
generatedAtUTC = "2026-02-20T00:00:00Z",
source = {
site = "https://database.turtlecraft.gg",
site = "https://octowow.st/db",
runRoot = ".TurtleDBparsing/racial-audit/runs/20260220-164554Z",
selection = "user-curated-approved",
},
@@ -25,46 +25,46 @@ MTH_DS_Racial = {
["Human"] = { 20599, 20600, 20597, 20864, 20598 },
},
spellsById = {
[2481] = { id = 2481, name = "Find Treasure", rank = "Racial", level = 1, school = 0, race = "Dwarf", sourceUrl = "https://database.turtlecraft.gg/?spell=2481" },
[5227] = { id = 5227, name = "Underwater Breathing", rank = "Racial Passive", level = 0, school = 0, race = "Undead", sourceUrl = "https://database.turtlecraft.gg/?spell=5227" },
[7340] = { id = 7340, name = "Language Gnomish", rank = "", level = 1, school = 0, race = "Gnome", sourceUrl = "https://database.turtlecraft.gg/?spell=7340" },
[7744] = { id = 7744, name = "Will of the Forsaken", rank = "Racial", level = 0, school = 0, race = "Undead", sourceUrl = "https://database.turtlecraft.gg/?spell=7744" },
[20549] = { id = 20549, name = "War Stomp", rank = "Racial", level = 0, school = 0, race = "Tauren", sourceUrl = "https://database.turtlecraft.gg/?spell=20549" },
[20550] = { id = 20550, name = "Endurance", rank = "Racial Passive", level = 0, school = 0, race = "Tauren", sourceUrl = "https://database.turtlecraft.gg/?spell=20550" },
[20551] = { id = 20551, name = "Nature Resistance", rank = "Racial Passive", level = 0, school = 0, race = "Tauren", raceGuess = true, sourceUrl = "https://database.turtlecraft.gg/?spell=20551" },
[20552] = { id = 20552, name = "Cultivation", rank = "Racial Passive", level = 0, school = 0, race = "Tauren", sourceUrl = "https://database.turtlecraft.gg/?spell=20552" },
[20554] = { id = 20554, name = "Berserking", rank = "Racial", level = 0, school = 0, race = "Troll", sourceUrl = "https://database.turtlecraft.gg/?spell=20554" },
[20555] = { id = 20555, name = "Regeneration", rank = "Racial Passive", level = 0, school = 0, race = "Troll", sourceUrl = "https://database.turtlecraft.gg/?spell=20555" },
[20557] = { id = 20557, name = "Beast Slaying", rank = "Racial Passive", level = 0, school = 0, race = "Troll", sourceUrl = "https://database.turtlecraft.gg/?spell=20557" },
[20558] = { id = 20558, name = "Throwing Specialization", rank = "Racial Passive", level = 0, school = 0, race = "Troll", sourceUrl = "https://database.turtlecraft.gg/?spell=20558" },
[20572] = { id = 20572, name = "Blood Fury", rank = "Racial", level = 0, school = 0, race = "Orc", sourceUrl = "https://database.turtlecraft.gg/?spell=20572" },
[20573] = { id = 20573, name = "Hardiness", rank = "Racial Passive", level = 0, school = 0, race = "Orc", sourceUrl = "https://database.turtlecraft.gg/?spell=20573" },
[20574] = { id = 20574, name = "Axe Specialization", rank = "Racial Passive", level = 0, school = 0, race = "Orc", sourceUrl = "https://database.turtlecraft.gg/?spell=20574" },
[20575] = { id = 20575, name = "Command", rank = "Racial Passive", level = 0, school = 0, race = "Orc", sourceUrl = "https://database.turtlecraft.gg/?spell=20575" },
[20576] = { id = 20576, name = "Command", rank = "Racial Passive", level = 0, school = 0, race = "Orc", sourceUrl = "https://database.turtlecraft.gg/?spell=20576" },
[20577] = { id = 20577, name = "Cannibalize", rank = "Racial", level = 0, school = 0, race = "Undead", sourceUrl = "https://database.turtlecraft.gg/?spell=20577" },
[20579] = { id = 20579, name = "Shadow Resistance", rank = "Racial Passive", level = 0, school = 0, race = "Undead", sourceUrl = "https://database.turtlecraft.gg/?spell=20579" },
[20580] = { id = 20580, name = "Shadowmeld", rank = "Racial", level = 1, school = 0, race = "Night Elf", sourceUrl = "https://database.turtlecraft.gg/?spell=20580" },
[20582] = { id = 20582, name = "Quickness", rank = "Racial Passive", level = 0, school = 0, race = "Night Elf", sourceUrl = "https://database.turtlecraft.gg/?spell=20582" },
[20583] = { id = 20583, name = "Nature Resistance", rank = "Racial Passive", level = 0, school = 0, race = "Night Elf", raceGuess = true, sourceUrl = "https://database.turtlecraft.gg/?spell=20583" },
[20585] = { id = 20585, name = "Wisp Spirit", rank = "Racial Passive", level = 0, school = 0, race = "Night Elf", sourceUrl = "https://database.turtlecraft.gg/?spell=20585" },
[20589] = { id = 20589, name = "Escape Artist", rank = "Racial", level = 0, school = 0, race = "Gnome", sourceUrl = "https://database.turtlecraft.gg/?spell=20589" },
[20591] = { id = 20591, name = "Expansive Mind", rank = "Racial Passive", level = 0, school = 0, race = "Gnome", sourceUrl = "https://database.turtlecraft.gg/?spell=20591" },
[20592] = { id = 20592, name = "Arcane Resistance", rank = "Racial Passive", level = 0, school = 0, race = "Gnome", sourceUrl = "https://database.turtlecraft.gg/?spell=20592" },
[20593] = { id = 20593, name = "Engineering Specialization", rank = "Racial Passive", level = 0, school = 0, race = "Gnome", sourceUrl = "https://database.turtlecraft.gg/?spell=20593" },
[20594] = { id = 20594, name = "Stoneform", rank = "Racial", level = 0, school = 0, race = "Dwarf", sourceUrl = "https://database.turtlecraft.gg/?spell=20594" },
[20595] = { id = 20595, name = "Gun Specialization", rank = "Racial Passive", level = 0, school = 0, race = "Dwarf", sourceUrl = "https://database.turtlecraft.gg/?spell=20595" },
[20596] = { id = 20596, name = "Frost Resistance", rank = "Racial Passive", level = 0, school = 0, race = "Dwarf", sourceUrl = "https://database.turtlecraft.gg/?spell=20596" },
[20597] = { id = 20597, name = "Sword Specialization", rank = "Racial Passive", level = 0, school = 0, race = "Human", sourceUrl = "https://database.turtlecraft.gg/?spell=20597" },
[20598] = { id = 20598, name = "The Human Spirit", rank = "Racial Passive", level = 0, school = 0, race = "Human", sourceUrl = "https://database.turtlecraft.gg/?spell=20598" },
[20599] = { id = 20599, name = "Diplomacy", rank = "Racial Passive", level = 0, school = 0, race = "Human", sourceUrl = "https://database.turtlecraft.gg/?spell=20599" },
[20600] = { id = 20600, name = "Perception", rank = "Racial", level = 0, school = 0, race = "Human", sourceUrl = "https://database.turtlecraft.gg/?spell=20600" },
[20864] = { id = 20864, name = "Mace Specialization", rank = "Racial Passive", level = 0, school = 0, race = "Human", sourceUrl = "https://database.turtlecraft.gg/?spell=20864" },
[21009] = { id = 21009, name = "Shadowmeld Passive", rank = "Racial Passive", level = 0, school = 0, race = "Night Elf", sourceUrl = "https://database.turtlecraft.gg/?spell=21009" },
[21563] = { id = 21563, name = "Command", rank = "Racial Passive", level = 0, school = 0, race = "Orc", sourceUrl = "https://database.turtlecraft.gg/?spell=21563" },
[26290] = { id = 26290, name = "Bow Specialization", rank = "Racial Passive", level = 0, school = 0, race = "Troll", sourceUrl = "https://database.turtlecraft.gg/?spell=26290" },
[26296] = { id = 26296, name = "Berserking", rank = "Racial", level = 0, school = 0, race = "Troll", sourceUrl = "https://database.turtlecraft.gg/?spell=26296" },
[26297] = { id = 26297, name = "Berserking", rank = "Racial", level = 0, school = 0, race = "Troll", sourceUrl = "https://database.turtlecraft.gg/?spell=26297" },
[52522] = { id = 52522, name = "Vengeance", rank = "Racial Passive", level = 0, school = 0, race = "Undead", sourceUrl = "https://database.turtlecraft.gg/?spell=52522" },
[2481] = { id = 2481, name = "Find Treasure", rank = "Racial", level = 1, school = 0, race = "Dwarf", sourceUrl = "https://octowow.st/db/?spell=2481" },
[5227] = { id = 5227, name = "Underwater Breathing", rank = "Racial Passive", level = 0, school = 0, race = "Undead", sourceUrl = "https://octowow.st/db/?spell=5227" },
[7340] = { id = 7340, name = "Language Gnomish", rank = "", level = 1, school = 0, race = "Gnome", sourceUrl = "https://octowow.st/db/?spell=7340" },
[7744] = { id = 7744, name = "Will of the Forsaken", rank = "Racial", level = 0, school = 0, race = "Undead", sourceUrl = "https://octowow.st/db/?spell=7744" },
[20549] = { id = 20549, name = "War Stomp", rank = "Racial", level = 0, school = 0, race = "Tauren", sourceUrl = "https://octowow.st/db/?spell=20549" },
[20550] = { id = 20550, name = "Endurance", rank = "Racial Passive", level = 0, school = 0, race = "Tauren", sourceUrl = "https://octowow.st/db/?spell=20550" },
[20551] = { id = 20551, name = "Nature Resistance", rank = "Racial Passive", level = 0, school = 0, race = "Tauren", raceGuess = true, sourceUrl = "https://octowow.st/db/?spell=20551" },
[20552] = { id = 20552, name = "Cultivation", rank = "Racial Passive", level = 0, school = 0, race = "Tauren", sourceUrl = "https://octowow.st/db/?spell=20552" },
[20554] = { id = 20554, name = "Berserking", rank = "Racial", level = 0, school = 0, race = "Troll", sourceUrl = "https://octowow.st/db/?spell=20554" },
[20555] = { id = 20555, name = "Regeneration", rank = "Racial Passive", level = 0, school = 0, race = "Troll", sourceUrl = "https://octowow.st/db/?spell=20555" },
[20557] = { id = 20557, name = "Beast Slaying", rank = "Racial Passive", level = 0, school = 0, race = "Troll", sourceUrl = "https://octowow.st/db/?spell=20557" },
[20558] = { id = 20558, name = "Throwing Specialization", rank = "Racial Passive", level = 0, school = 0, race = "Troll", sourceUrl = "https://octowow.st/db/?spell=20558" },
[20572] = { id = 20572, name = "Blood Fury", rank = "Racial", level = 0, school = 0, race = "Orc", sourceUrl = "https://octowow.st/db/?spell=20572" },
[20573] = { id = 20573, name = "Hardiness", rank = "Racial Passive", level = 0, school = 0, race = "Orc", sourceUrl = "https://octowow.st/db/?spell=20573" },
[20574] = { id = 20574, name = "Axe Specialization", rank = "Racial Passive", level = 0, school = 0, race = "Orc", sourceUrl = "https://octowow.st/db/?spell=20574" },
[20575] = { id = 20575, name = "Command", rank = "Racial Passive", level = 0, school = 0, race = "Orc", sourceUrl = "https://octowow.st/db/?spell=20575" },
[20576] = { id = 20576, name = "Command", rank = "Racial Passive", level = 0, school = 0, race = "Orc", sourceUrl = "https://octowow.st/db/?spell=20576" },
[20577] = { id = 20577, name = "Cannibalize", rank = "Racial", level = 0, school = 0, race = "Undead", sourceUrl = "https://octowow.st/db/?spell=20577" },
[20579] = { id = 20579, name = "Shadow Resistance", rank = "Racial Passive", level = 0, school = 0, race = "Undead", sourceUrl = "https://octowow.st/db/?spell=20579" },
[20580] = { id = 20580, name = "Shadowmeld", rank = "Racial", level = 1, school = 0, race = "Night Elf", sourceUrl = "https://octowow.st/db/?spell=20580" },
[20582] = { id = 20582, name = "Quickness", rank = "Racial Passive", level = 0, school = 0, race = "Night Elf", sourceUrl = "https://octowow.st/db/?spell=20582" },
[20583] = { id = 20583, name = "Nature Resistance", rank = "Racial Passive", level = 0, school = 0, race = "Night Elf", raceGuess = true, sourceUrl = "https://octowow.st/db/?spell=20583" },
[20585] = { id = 20585, name = "Wisp Spirit", rank = "Racial Passive", level = 0, school = 0, race = "Night Elf", sourceUrl = "https://octowow.st/db/?spell=20585" },
[20589] = { id = 20589, name = "Escape Artist", rank = "Racial", level = 0, school = 0, race = "Gnome", sourceUrl = "https://octowow.st/db/?spell=20589" },
[20591] = { id = 20591, name = "Expansive Mind", rank = "Racial Passive", level = 0, school = 0, race = "Gnome", sourceUrl = "https://octowow.st/db/?spell=20591" },
[20592] = { id = 20592, name = "Arcane Resistance", rank = "Racial Passive", level = 0, school = 0, race = "Gnome", sourceUrl = "https://octowow.st/db/?spell=20592" },
[20593] = { id = 20593, name = "Engineering Specialization", rank = "Racial Passive", level = 0, school = 0, race = "Gnome", sourceUrl = "https://octowow.st/db/?spell=20593" },
[20594] = { id = 20594, name = "Stoneform", rank = "Racial", level = 0, school = 0, race = "Dwarf", sourceUrl = "https://octowow.st/db/?spell=20594" },
[20595] = { id = 20595, name = "Gun Specialization", rank = "Racial Passive", level = 0, school = 0, race = "Dwarf", sourceUrl = "https://octowow.st/db/?spell=20595" },
[20596] = { id = 20596, name = "Frost Resistance", rank = "Racial Passive", level = 0, school = 0, race = "Dwarf", sourceUrl = "https://octowow.st/db/?spell=20596" },
[20597] = { id = 20597, name = "Sword Specialization", rank = "Racial Passive", level = 0, school = 0, race = "Human", sourceUrl = "https://octowow.st/db/?spell=20597" },
[20598] = { id = 20598, name = "The Human Spirit", rank = "Racial Passive", level = 0, school = 0, race = "Human", sourceUrl = "https://octowow.st/db/?spell=20598" },
[20599] = { id = 20599, name = "Diplomacy", rank = "Racial Passive", level = 0, school = 0, race = "Human", sourceUrl = "https://octowow.st/db/?spell=20599" },
[20600] = { id = 20600, name = "Perception", rank = "Racial", level = 0, school = 0, race = "Human", sourceUrl = "https://octowow.st/db/?spell=20600" },
[20864] = { id = 20864, name = "Mace Specialization", rank = "Racial Passive", level = 0, school = 0, race = "Human", sourceUrl = "https://octowow.st/db/?spell=20864" },
[21009] = { id = 21009, name = "Shadowmeld Passive", rank = "Racial Passive", level = 0, school = 0, race = "Night Elf", sourceUrl = "https://octowow.st/db/?spell=21009" },
[21563] = { id = 21563, name = "Command", rank = "Racial Passive", level = 0, school = 0, race = "Orc", sourceUrl = "https://octowow.st/db/?spell=21563" },
[26290] = { id = 26290, name = "Bow Specialization", rank = "Racial Passive", level = 0, school = 0, race = "Troll", sourceUrl = "https://octowow.st/db/?spell=26290" },
[26296] = { id = 26296, name = "Berserking", rank = "Racial", level = 0, school = 0, race = "Troll", sourceUrl = "https://octowow.st/db/?spell=26296" },
[26297] = { id = 26297, name = "Berserking", rank = "Racial", level = 0, school = 0, race = "Troll", sourceUrl = "https://octowow.st/db/?spell=26297" },
[52522] = { id = 52522, name = "Vengeance", rank = "Racial Passive", level = 0, school = 0, race = "Undead", sourceUrl = "https://octowow.st/db/?spell=52522" },
},
}
+77 -16
View File
@@ -212,7 +212,7 @@ local function MTH_DS_EnsurePetSpellsTrainerGrowl()
rank = src.rank,
rankNumber = src.rankNumber,
school = "Physical",
sourceUrl = "https://database.turtlecraft.gg/?spell=" .. tostring(src.id),
sourceUrl = "https://octowow.st/db/?spell=" .. tostring(src.id),
trainLevel = src.trainLevel,
}
table.insert(growlSpells, row)
@@ -262,7 +262,7 @@ local function MTH_DS_EnsurePetSpellsTrainerGrowl()
rank = src.rank,
rankNumber = src.rankNumber,
school = "Physical",
sourceUrl = "https://database.turtlecraft.gg/?spell=" .. tostring(src.id),
sourceUrl = "https://octowow.st/db/?spell=" .. tostring(src.id),
trainLevel = src.trainLevel,
}
table.insert(staminaSpells, row)
@@ -312,7 +312,7 @@ local function MTH_DS_EnsurePetSpellsTrainerGrowl()
rank = src.rank,
rankNumber = src.rankNumber,
school = "Physical",
sourceUrl = "https://database.turtlecraft.gg/?spell=" .. tostring(src.id),
sourceUrl = "https://octowow.st/db/?spell=" .. tostring(src.id),
trainLevel = src.trainLevel,
}
table.insert(armorSpells, row)
@@ -356,7 +356,7 @@ local function MTH_DS_EnsurePetSpellsTrainerGrowl()
rank = src.rank,
rankNumber = src.rankNumber,
school = "Physical",
sourceUrl = "https://database.turtlecraft.gg/?spell=" .. tostring(src.id),
sourceUrl = "https://octowow.st/db/?spell=" .. tostring(src.id),
trainLevel = src.trainLevel,
}
table.insert(fireResSpells, row)
@@ -400,7 +400,7 @@ local function MTH_DS_EnsurePetSpellsTrainerGrowl()
rank = src.rank,
rankNumber = src.rankNumber,
school = "Physical",
sourceUrl = "https://database.turtlecraft.gg/?spell=" .. tostring(src.id),
sourceUrl = "https://octowow.st/db/?spell=" .. tostring(src.id),
trainLevel = src.trainLevel,
}
table.insert(frostResSpells, row)
@@ -444,7 +444,7 @@ local function MTH_DS_EnsurePetSpellsTrainerGrowl()
rank = src.rank,
rankNumber = src.rankNumber,
school = "Physical",
sourceUrl = "https://database.turtlecraft.gg/?spell=" .. tostring(src.id),
sourceUrl = "https://octowow.st/db/?spell=" .. tostring(src.id),
trainLevel = src.trainLevel,
}
table.insert(arcaneResSpells, row)
@@ -488,7 +488,7 @@ local function MTH_DS_EnsurePetSpellsTrainerGrowl()
rank = src.rank,
rankNumber = src.rankNumber,
school = "Physical",
sourceUrl = "https://database.turtlecraft.gg/?spell=" .. tostring(src.id),
sourceUrl = "https://octowow.st/db/?spell=" .. tostring(src.id),
trainLevel = src.trainLevel,
}
table.insert(natureResSpells, row)
@@ -532,7 +532,7 @@ local function MTH_DS_EnsurePetSpellsTrainerGrowl()
rank = src.rank,
rankNumber = src.rankNumber,
school = "Physical",
sourceUrl = "https://database.turtlecraft.gg/?spell=" .. tostring(src.id),
sourceUrl = "https://octowow.st/db/?spell=" .. tostring(src.id),
trainLevel = src.trainLevel,
}
table.insert(shadowResSpells, row)
@@ -556,56 +556,56 @@ local function MTH_DS_EnsurePetSpellsTrainerGrowl()
MTH_DS_PetSpells.byAbility["Growl"] = {
ability = "Growl",
searchUrl = "https://database.turtlecraft.gg/?search=Growl",
searchUrl = "https://octowow.st/db/?search=Growl",
spellCount = table.getn(growlSpells),
spells = growlSpells,
}
MTH_DS_PetSpells.byAbility["Great Stamina"] = {
ability = "Great Stamina",
searchUrl = "https://database.turtlecraft.gg/?search=Great+Stamina",
searchUrl = "https://octowow.st/db/?search=Great+Stamina",
spellCount = table.getn(staminaSpells),
spells = staminaSpells,
}
MTH_DS_PetSpells.byAbility["Natural Armor"] = {
ability = "Natural Armor",
searchUrl = "https://database.turtlecraft.gg/?search=Natural+Armor",
searchUrl = "https://octowow.st/db/?search=Natural+Armor",
spellCount = table.getn(armorSpells),
spells = armorSpells,
}
MTH_DS_PetSpells.byAbility["Fire Resistance"] = {
ability = "Fire Resistance",
searchUrl = "https://database.turtlecraft.gg/?search=Fire+Resistance",
searchUrl = "https://octowow.st/db/?search=Fire+Resistance",
spellCount = table.getn(fireResSpells),
spells = fireResSpells,
}
MTH_DS_PetSpells.byAbility["Frost Resistance"] = {
ability = "Frost Resistance",
searchUrl = "https://database.turtlecraft.gg/?search=Frost+Resistance",
searchUrl = "https://octowow.st/db/?search=Frost+Resistance",
spellCount = table.getn(frostResSpells),
spells = frostResSpells,
}
MTH_DS_PetSpells.byAbility["Arcane Resistance"] = {
ability = "Arcane Resistance",
searchUrl = "https://database.turtlecraft.gg/?search=Arcane+Resistance",
searchUrl = "https://octowow.st/db/?search=Arcane+Resistance",
spellCount = table.getn(arcaneResSpells),
spells = arcaneResSpells,
}
MTH_DS_PetSpells.byAbility["Nature Resistance"] = {
ability = "Nature Resistance",
searchUrl = "https://database.turtlecraft.gg/?search=Nature+Resistance",
searchUrl = "https://octowow.st/db/?search=Nature+Resistance",
spellCount = table.getn(natureResSpells),
spells = natureResSpells,
}
MTH_DS_PetSpells.byAbility["Shadow Resistance"] = {
ability = "Shadow Resistance",
searchUrl = "https://database.turtlecraft.gg/?search=Shadow+Resistance",
searchUrl = "https://octowow.st/db/?search=Shadow+Resistance",
spellCount = table.getn(shadowResSpells),
spells = shadowResSpells,
}
@@ -613,6 +613,66 @@ local function MTH_DS_EnsurePetSpellsTrainerGrowl()
MTH_DS_PetSpells.totalSpellRows = table.getn(MTH_DS_PetSpells.allSpells)
end
-- Restore the "unique appearance" flag on beasts.
-- This is a curated allowlist of beasts whose look is genuinely one-of-a-kind
-- (named individuals / distinctive rares that a collector prizes). We do NOT derive
-- this from the skin datastore's unique flag: that flag only means "this texture
-- appears once in the DBC", which over-marks whole color-variant families (e.g. every
-- Moth and Fox colour) and would wrongly flag common mobs like Frenzied Dustwing.
-- Keyed by NPC id (names such as "Crimson Lynx" repeat across entries). Hand-maintained.
local MTH_DS_UniqueBeastIds = {
[5828] = true, -- Humar the Pridelord (Cats)
[61599] = true, -- Darksaber (Cats)
[61699] = true, -- Shar'lan (Cats)
[7434] = true, -- Frostsaber Pride Watcher (Cats)
[3068] = true, -- Mazzranache (Tallstriders)
[61789] = true, -- Moonfeather (Tallstriders)
[61488] = true, -- Azurebeak (Owls)
[59998] = true, -- Blue Owl (Owls)
[59997] = true, -- Red Owl (Owls)
[63147] = true, -- Withered Companion (Owls)
[62778] = true, -- Ahgk'tos the Pure (Spiders)
[8211] = true, -- Old Cliff Jumper (Wolves)
[4512] = true, -- Rotting Agam'ar (Boars)
[62750] = true, -- Magmalash Scorpid (Scorpids)
[11371] = true, -- Razzashi Serpent (Serpents)
[80260] = true, -- Spirit Fox (Foxes)
[61716] = true, -- Crimson Hawkstrider (Tallstriders)
[61691] = true, -- Forest Hawkstrider (Tallstriders)
[61695] = true, -- Ivory Hawkstrider (Tallstriders)
[62817] = true, -- Moonstrider Matriarch (Tallstriders)
[62818] = true, -- Moonstrider Rooster (Tallstriders)
[61774] = true, -- Brilliant Mana Wyrm (Wind Serpents)
[61775] = true, -- Emerald Mana Wyrm (Wind Serpents)
[61776] = true, -- Lavender Mana Wyrm (Wind Serpents)
[61480] = true, -- Brilliant Wind Serpent (Wind Serpents)
[1815] = true, -- Diseased Black Bear (Bears)
[80466] = true, -- Tirisfal Plagued Bear (Bears)
[62820] = true, -- Nightpelt Grizzly (Bears)
[62821] = true, -- Nightpelt Ursa (Bears)
[80816] = true, -- Hinterlands Eagle (Owls)
[61697] = true, -- Bright Lynx (Cats)
[61698] = true, -- Bright Lynx Matriarch (Cats)
[62338] = true, -- Stormwing Buzzard (Carrion Birds)
[62339] = true, -- Stormwing Vulture (Carrion Birds)
}
local function MTH_DS_DeriveBeastUnique()
if type(MTH_DS_Beasts) ~= "table" then
return
end
for npcId, beast in pairs(MTH_DS_Beasts) do
if type(beast) == "table" then
if MTH_DS_UniqueBeastIds[npcId] then
beast.unique = true
else
beast.unique = nil
end
end
end
end
function MTH_DS_OnLoad()
if MTH_DS.loaded then
return
@@ -623,6 +683,7 @@ function MTH_DS_OnLoad()
if MTH_DS_Beasts and MTH_DS_Vendors and MTH_DS_AmmoItems and MTH_DS_Zones and MTH_DS_Families then
MTH_DS_EnsurePetSpellsTrainerGrowl()
MTH_DS_DeriveBeastUnique()
MTH_DS.loaded = true
-- Count entries