mirror of
https://codeberg.org/Duvelcorp/MetaHunt.git
synced 2026-09-28 18:46:07 +00:00
Remove dead code: SmartPet module + orphaned DBC datastores
SmartPet (module never wired into modules.xml) removed entirely — server-side pet AI on TWoW/OctoWoW makes it useless. Deleted modules/smartpet/ and api/options-smartpet.lua. Orphaned .tools DBC extracts (2026-03-20) never loaded via TOC, superseded by the curated/pfQuest datastores that ship: - data/ds-zones-dbc.lua, data/ds-zones-new-dbc.lua (bounds come from ds-zones-wma) - data/ds-stable-prices.lua (never wired to any UI) - data/ds-pet-spells-acquire.lua (learnMethod set at runtime by init.lua + trainer) Also removed api/beastlore-scan.lua (8-line deprecation stub) and its init/api.xml include. No shipped references or player-facing behaviour affected.
This commit is contained in:
@@ -1,8 +0,0 @@
|
||||
------------------------------------------------------
|
||||
-- MetaHunt: Beast Lore Scanner (removed)
|
||||
------------------------------------------------------
|
||||
-- This file previously contained a feature that recorded
|
||||
-- unknown beasts to SavedVariables when scanned with
|
||||
-- Beast Lore. The feature has been removed; the static
|
||||
-- beast database (ds-beasts) is now the sole data source.
|
||||
------------------------------------------------------
|
||||
@@ -1,321 +0,0 @@
|
||||
------------------------------------------------------
|
||||
-- MetaHunt: SmartPet Options Panel
|
||||
-- TWoW 1.18.1
|
||||
------------------------------------------------------
|
||||
|
||||
local function MTH_SP_OPT_Ready()
|
||||
return type(MTH_GetFrame) == "function"
|
||||
and type(MTH_CreateCheckbox) == "function"
|
||||
and type(MTH_CreateSlider) == "function"
|
||||
end
|
||||
|
||||
local function MTH_SP_OPT_GetCfg()
|
||||
if not MTH_SmartPet or not MTH_SmartPet.GetConfig then return {} end
|
||||
return MTH_SmartPet.GetConfig()
|
||||
end
|
||||
|
||||
local MTH_SP_OPT_built = false
|
||||
|
||||
-- Layout constants
|
||||
local OPT_L = 16 -- left column X
|
||||
local OPT_R = 290 -- right column X
|
||||
local OPT_CW = 250 -- column width (for tip text wrapping)
|
||||
|
||||
-- Spacing constants
|
||||
local GAP_SECTION = 34 -- between sections
|
||||
local GAP_CB = 24 -- checkbox height (icon + text)
|
||||
local GAP_TIP = 16 -- small tip text height
|
||||
local GAP_BTN = 28 -- button height + margin
|
||||
local GAP_SLIDER = 52 -- slider total height (label + track + value)
|
||||
local GAP_CB_SLIDER = 40 -- checkbox to slider (checkbox + slider label above track)
|
||||
|
||||
-- Helper: checkbox with click handler
|
||||
local function SP_CB(container, name, label, yOff, xOff, isChecked, onClick)
|
||||
local cb = MTH_CreateCheckbox(container, name, label, yOff, xOff or OPT_L)
|
||||
if cb then
|
||||
cb:SetChecked(isChecked and 1 or 0)
|
||||
cb:SetScript("OnClick", function()
|
||||
local v = this:GetChecked()
|
||||
onClick(v == 1 or v == true)
|
||||
end)
|
||||
end
|
||||
return cb
|
||||
end
|
||||
|
||||
-- Helper: section header label
|
||||
local function SP_Header(container, text, yOff, xOff)
|
||||
local fs = container:CreateFontString(nil, "ARTWORK", "GameFontNormal")
|
||||
fs:SetPoint("TOPLEFT", container, "TOPLEFT", xOff or OPT_L, yOff)
|
||||
fs:SetText("|cffff9900" .. text .. "|r")
|
||||
return fs
|
||||
end
|
||||
|
||||
-- Helper: small descriptive text
|
||||
local function SP_Tip(container, text, yOff, xOff)
|
||||
local fs = container:CreateFontString(nil, "ARTWORK", "GameFontNormalSmall")
|
||||
fs:SetPoint("TOPLEFT", container, "TOPLEFT", xOff or OPT_L, yOff)
|
||||
fs:SetWidth(OPT_CW)
|
||||
fs:SetJustifyH("LEFT")
|
||||
fs:SetTextColor(0.4, 0.6, 1.0)
|
||||
fs:SetText(text)
|
||||
return fs
|
||||
end
|
||||
|
||||
-- Taunt Mode cycle
|
||||
local TAUNT_MODES = { "auto", "growl", "cower", "off" }
|
||||
local TAUNT_LABELS = {
|
||||
auto = "Auto (solo=Growl, tank=Cower)",
|
||||
growl = "Always Growl",
|
||||
cower = "Always Cower",
|
||||
off = "Off (manual)",
|
||||
}
|
||||
|
||||
local function SP_NextTauntMode(current)
|
||||
for i = 1, 4 do
|
||||
if TAUNT_MODES[i] == current then
|
||||
return TAUNT_MODES[math.mod(i, 4) + 1]
|
||||
end
|
||||
end
|
||||
return "auto"
|
||||
end
|
||||
|
||||
-- Channel cycle
|
||||
local CHANNELS = { "SAY", "PARTY", "RAID", "GUILD" }
|
||||
|
||||
local function SP_NextChannel(current)
|
||||
for i = 1, 4 do
|
||||
if CHANNELS[i] == current then
|
||||
return CHANNELS[math.mod(i, 4) + 1]
|
||||
end
|
||||
end
|
||||
return "SAY"
|
||||
end
|
||||
|
||||
-- Build the UI
|
||||
local function MTH_SP_OPT_BuildUI(container)
|
||||
if MTH_SP_OPT_built then return end
|
||||
MTH_SP_OPT_built = true
|
||||
|
||||
local cfg = MTH_SP_OPT_GetCfg()
|
||||
local api = MTH_SmartPet or {}
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- Title (large, like ExpAmmo)
|
||||
---------------------------------------------------------------------------
|
||||
local title = container:CreateFontString(nil, "ARTWORK", "GameFontHighlightLarge")
|
||||
title:SetPoint("TOPLEFT", container, "TOPLEFT", OPT_L, -16)
|
||||
title:SetText("Smart Pet - Pet Combat Management")
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- Module enable checkbox
|
||||
---------------------------------------------------------------------------
|
||||
local moduleEnabled = true
|
||||
if MTH and MTH.IsModuleEnabled then
|
||||
moduleEnabled = MTH:IsModuleEnabled("smartpet", false) and true or false
|
||||
end
|
||||
SP_CB(container, "MTH_SP_OPT_ModuleEnable", "Enable Smart Pet module",
|
||||
-46, OPT_L, moduleEnabled, function(v)
|
||||
if MTH and MTH.SetModuleEnabled then MTH:SetModuleEnabled("smartpet", v) end
|
||||
end)
|
||||
|
||||
-- Columns start below the module checkbox
|
||||
local COL_TOP = -80
|
||||
|
||||
-- Vertical divider
|
||||
local divider = container:CreateTexture(nil, "BACKGROUND")
|
||||
divider:SetTexture(0.3, 0.3, 0.3, 0.6)
|
||||
divider:SetPoint("TOPLEFT", container, "TOPLEFT", OPT_R - 14, COL_TOP)
|
||||
divider:SetPoint("BOTTOMLEFT", container, "TOPLEFT", OPT_R - 14, -530)
|
||||
divider:SetWidth(1)
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- LEFT COLUMN — Focus Management
|
||||
---------------------------------------------------------------------------
|
||||
local y = COL_TOP
|
||||
|
||||
SP_Header(container, "Focus Management", y)
|
||||
y = y - 22
|
||||
|
||||
-- Smart Focus
|
||||
SP_CB(container, "MTH_SP_OPT_SmartFocus", "Enable Smart Focus",
|
||||
y, OPT_L, cfg.smartFocus, function(v)
|
||||
if api.SetSmartFocus then api.SetSmartFocus(v) end
|
||||
end)
|
||||
y = y - GAP_CB
|
||||
SP_Tip(container, "Budget pet focus across DPS abilities.", y)
|
||||
y = y - GAP_TIP
|
||||
SP_Tip(container, "|cff80ff80High focus|r — all DPS abilities ON.", y)
|
||||
y = y - GAP_TIP
|
||||
SP_Tip(container, "|cffffcc00Mid focus|r — expensive ability first, others wait.", y)
|
||||
y = y - GAP_TIP
|
||||
SP_Tip(container, "|cffff8080Low focus|r — cheapest ability always ON (never idle).", y)
|
||||
y = y - GAP_TIP
|
||||
SP_Tip(container, "Taunt cost is always reserved.", y)
|
||||
y = y - GAP_SECTION
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- LEFT COLUMN — Taunt Management
|
||||
---------------------------------------------------------------------------
|
||||
SP_Header(container, "Taunt Management", y)
|
||||
y = y - GAP_TIP
|
||||
SP_Tip(container, "Controls Growl/Cower autocast based on party.", y)
|
||||
y = y - 22
|
||||
|
||||
local tauntBtn = CreateFrame("Button", "MTH_SP_OPT_TauntBtn", container, "UIPanelButtonTemplate")
|
||||
tauntBtn:SetPoint("TOPLEFT", container, "TOPLEFT", OPT_L, y)
|
||||
tauntBtn:SetWidth(250)
|
||||
tauntBtn:SetHeight(22)
|
||||
tauntBtn:SetText("Mode: " .. (TAUNT_LABELS[cfg.tauntMode] or "Auto"))
|
||||
tauntBtn:SetScript("OnClick", function()
|
||||
local c = MTH_SP_OPT_GetCfg()
|
||||
local newMode = SP_NextTauntMode(c.tauntMode)
|
||||
if api.SetTauntMode then api.SetTauntMode(newMode) end
|
||||
this:SetText("Mode: " .. (TAUNT_LABELS[newMode] or newMode))
|
||||
end)
|
||||
y = y - GAP_BTN
|
||||
|
||||
SP_CB(container, "MTH_SP_OPT_PvpDetaunt", "PVP Auto-Detaunt",
|
||||
y, OPT_L, cfg.pvpDetaunt, function(v)
|
||||
if api.SetPvpDetaunt then api.SetPvpDetaunt(v) end
|
||||
end)
|
||||
y = y - GAP_SECTION
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- LEFT COLUMN — CC-Break Prevention
|
||||
---------------------------------------------------------------------------
|
||||
SP_Header(container, "CC-Break Prevention", y)
|
||||
y = y - 22
|
||||
|
||||
SP_CB(container, "MTH_SP_OPT_CcBreak", "Check for breakable CC",
|
||||
y, OPT_L, cfg.ccBreakCheck, function(v)
|
||||
if api.SetCcBreakCheck then api.SetCcBreakCheck(v) end
|
||||
end)
|
||||
y = y - GAP_CB
|
||||
|
||||
local ccLabels = { block = "Block attack", warn = "Warn only" }
|
||||
local ccModeBtn = CreateFrame("Button", "MTH_SP_OPT_CcModeBtn", container, "UIPanelButtonTemplate")
|
||||
ccModeBtn:SetPoint("TOPLEFT", container, "TOPLEFT", OPT_L + 20, y)
|
||||
ccModeBtn:SetWidth(180)
|
||||
ccModeBtn:SetHeight(20)
|
||||
ccModeBtn:SetText("CC Mode: " .. (ccLabels[cfg.ccBreakMode] or "Block"))
|
||||
ccModeBtn:SetScript("OnClick", function()
|
||||
local c = MTH_SP_OPT_GetCfg()
|
||||
local newMode = (c.ccBreakMode == "block") and "warn" or "block"
|
||||
if api.SetCcBreakMode then api.SetCcBreakMode(newMode) end
|
||||
this:SetText("CC Mode: " .. (ccLabels[newMode] or newMode))
|
||||
end)
|
||||
y = y - GAP_SECTION
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- RIGHT COLUMN — General
|
||||
---------------------------------------------------------------------------
|
||||
local ry = COL_TOP
|
||||
|
||||
-- The Button
|
||||
SP_Header(container, "The Button", ry, OPT_R)
|
||||
ry = ry - 22
|
||||
|
||||
SP_CB(container, "MTH_SP_OPT_TheButton", "Enable The Button keybind",
|
||||
ry, OPT_R, cfg.theButton, function(v)
|
||||
if api.SetTheButton then api.SetTheButton(v) end
|
||||
end)
|
||||
ry = ry - GAP_CB
|
||||
SP_Tip(container, "Enemy=attack, friendly=assist, none=recall.", ry, OPT_R)
|
||||
ry = ry - GAP_SECTION
|
||||
|
||||
-- Rush on Attack
|
||||
SP_CB(container, "MTH_SP_OPT_Rush", "Rush on initial attack",
|
||||
ry, OPT_R, cfg.rushOnAttack, function(v)
|
||||
if api.SetRushOnAttack then api.SetRushOnAttack(v) end
|
||||
end)
|
||||
ry = ry - GAP_CB
|
||||
SP_Tip(container, "Charge / Dash / Dive when pet is sent to attack.", ry, OPT_R)
|
||||
ry = ry - GAP_SECTION
|
||||
|
||||
-- NoChase
|
||||
SP_CB(container, "MTH_SP_OPT_NoChase", "NoChase (recall on mob flee)",
|
||||
ry, OPT_R, cfg.noChase, function(v)
|
||||
if api.SetNoChase then api.SetNoChase(v) end
|
||||
end)
|
||||
ry = ry - GAP_CB
|
||||
SP_Tip(container, "Recall pet when target attempts to flee.", ry, OPT_R)
|
||||
ry = ry - GAP_SECTION
|
||||
|
||||
-- AutoCower
|
||||
SP_Header(container, "AutoCower", ry, OPT_R)
|
||||
ry = ry - 22
|
||||
|
||||
SP_CB(container, "MTH_SP_OPT_AutoCower", "Enable AutoCower on low HP",
|
||||
ry, OPT_R, cfg.autoCower, function(v)
|
||||
if api.SetAutoCower then api.SetAutoCower(v) end
|
||||
end)
|
||||
ry = ry - GAP_CB_SLIDER
|
||||
|
||||
local acSlider = MTH_CreateSlider(container, "MTH_SP_OPT_AutoCowerSlider",
|
||||
"HP Threshold (%)", 5, 80, 5, ry)
|
||||
if acSlider then
|
||||
acSlider:ClearAllPoints()
|
||||
acSlider:SetPoint("TOPLEFT", container, "TOPLEFT", OPT_R, ry)
|
||||
acSlider:SetWidth(200)
|
||||
acSlider:SetValue(cfg.autoCowerPct or 30)
|
||||
local valText = getglobal("MTH_SP_OPT_AutoCowerSliderValue")
|
||||
if valText then valText:SetText(tostring(cfg.autoCowerPct or 30)) end
|
||||
acSlider.onChange = function(val)
|
||||
if api.SetAutoCowerPct then api.SetAutoCowerPct(val) end
|
||||
end
|
||||
end
|
||||
ry = ry - GAP_SLIDER
|
||||
|
||||
-- AutoWarn
|
||||
SP_Header(container, "AutoWarn", ry, OPT_R)
|
||||
ry = ry - 22
|
||||
|
||||
SP_CB(container, "MTH_SP_OPT_AutoWarn", "Warn when pet HP is low",
|
||||
ry, OPT_R, cfg.autoWarn, function(v)
|
||||
if api.SetAutoWarn then api.SetAutoWarn(v) end
|
||||
end)
|
||||
ry = ry - GAP_CB_SLIDER
|
||||
|
||||
local awSlider = MTH_CreateSlider(container, "MTH_SP_OPT_AutoWarnSlider",
|
||||
"HP Threshold (%)", 5, 60, 5, ry)
|
||||
if awSlider then
|
||||
awSlider:ClearAllPoints()
|
||||
awSlider:SetPoint("TOPLEFT", container, "TOPLEFT", OPT_R, ry)
|
||||
awSlider:SetWidth(200)
|
||||
awSlider:SetValue(cfg.autoWarnPct or 20)
|
||||
local valText = getglobal("MTH_SP_OPT_AutoWarnSliderValue")
|
||||
if valText then valText:SetText(tostring(cfg.autoWarnPct or 20)) end
|
||||
awSlider.onChange = function(val)
|
||||
if api.SetAutoWarnPct then api.SetAutoWarnPct(val) end
|
||||
end
|
||||
end
|
||||
ry = ry - GAP_SLIDER
|
||||
|
||||
local chanBtn = CreateFrame("Button", "MTH_SP_OPT_ChanBtn", container, "UIPanelButtonTemplate")
|
||||
chanBtn:SetPoint("TOPLEFT", container, "TOPLEFT", OPT_R, ry)
|
||||
chanBtn:SetWidth(180)
|
||||
chanBtn:SetHeight(22)
|
||||
chanBtn:SetText("Channel: " .. (cfg.autoWarnChannel or "SAY"))
|
||||
chanBtn:SetScript("OnClick", function()
|
||||
local c = MTH_SP_OPT_GetCfg()
|
||||
local newChan = SP_NextChannel(c.autoWarnChannel or "SAY")
|
||||
if api.SetAutoWarnChannel then api.SetAutoWarnChannel(newChan) end
|
||||
this:SetText("Channel: " .. newChan)
|
||||
end)
|
||||
ry = ry - GAP_CB
|
||||
SP_Tip(container, "Chat channel for low-HP warnings.", ry, OPT_R)
|
||||
end
|
||||
|
||||
-- Public setup function (called by options-shell.lua)
|
||||
function MTH_SetupSmartPetOptions()
|
||||
if not MTH_SP_OPT_Ready() then return end
|
||||
local container = MTH_GetFrame("MetaHuntOptionsSmartPet")
|
||||
if not container then return end
|
||||
local ok, err = pcall(MTH_SP_OPT_BuildUI, container)
|
||||
if not ok then
|
||||
if MTH and MTH.Print then
|
||||
MTH:Print("[SmartPet Options] " .. tostring(err), "error")
|
||||
end
|
||||
MTH_SP_OPT_built = false
|
||||
end
|
||||
end
|
||||
@@ -1,140 +0,0 @@
|
||||
-- MetaHunt: Pet spell DBC acquire-method overlay (learnMethod, minRank, nextSpellId)
|
||||
-- AUTO-GENERATED by .tools — do not edit by hand.
|
||||
-- Source DBC(s): SkillLineAbility.dbc, SkillLine.dbc
|
||||
-- Generated: 2026-03-20 13:57 UTC
|
||||
|
||||
-- This file patches MTH_DS_PetSpells.allSpells entries with DBC-authoritative
|
||||
-- learnMethod, minRank, and nextSpellId values.
|
||||
-- Load order: after ds-pet-spells.lua and ds-pet-spells-trainer.lua
|
||||
|
||||
if not MTH_DS_PetSpells or not MTH_DS_PetSpells.allSpells then return end
|
||||
|
||||
local _acquire = {
|
||||
[1747] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[1748] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[1749] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[1750] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[1751] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[1853] = { learnMethod="unknown(1)", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[2975] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[2976] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[2977] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[2980] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[2981] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[2982] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[3666] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[3667] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[4195] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[4196] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[4197] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[4198] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[4199] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[4200] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[4201] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[4202] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[5048] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[5049] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[5149] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[7370] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[14922] = { learnMethod="unknown(1)", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[14923] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[14924] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[14925] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[14926] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[14927] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[16698] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[17254] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[17262] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[17263] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[17264] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[17265] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[17266] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[17267] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[17268] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[23100] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[23111] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[23112] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[23146] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[23149] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[23150] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[23163] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[23166] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[23167] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24424] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24440] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24441] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24451] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24454] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24455] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24463] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24464] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24475] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24476] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24477] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24478] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24490] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24494] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24495] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24508] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24509] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24510] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24511] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24512] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24513] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24514] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24515] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24516] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24547] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24556] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24557] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24558] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24559] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24560] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24561] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24562] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24580] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24581] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24582] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24584] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24588] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24589] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24599] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24607] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24608] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24609] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24631] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24632] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24641] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[24845] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[25013] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[25014] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[25015] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[25016] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[25017] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[25077] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[26065] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[26094] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[26184] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[26185] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[26186] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[26189] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[26190] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[26202] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[28343] = { learnMethod="trainer", minRank=1, nextSpellId=0, skillLineId=261 },
|
||||
[46023] = { learnMethod="trainer", minRank=0, nextSpellId=0, skillLineId=261 },
|
||||
[46303] = { learnMethod="trainer", minRank=0, nextSpellId=0, skillLineId=261 },
|
||||
[46307] = { learnMethod="trainer", minRank=0, nextSpellId=0, skillLineId=261 },
|
||||
[51154] = { learnMethod="trainer", minRank=0, nextSpellId=0, skillLineId=261 },
|
||||
[51155] = { learnMethod="trainer", minRank=0, nextSpellId=0, skillLineId=261 },
|
||||
[51157] = { learnMethod="trainer", minRank=0, nextSpellId=0, skillLineId=261 },
|
||||
}
|
||||
|
||||
for _, spell in ipairs(MTH_DS_PetSpells.allSpells) do
|
||||
local meta = _acquire[spell.id]
|
||||
if meta then
|
||||
spell.learnMethod = meta.learnMethod
|
||||
spell.minRank = meta.minRank
|
||||
spell.nextSpellId = meta.nextSpellId
|
||||
spell.skillLineId = meta.skillLineId
|
||||
end
|
||||
end
|
||||
@@ -1,41 +0,0 @@
|
||||
-- MetaHunt: Stable slot prices
|
||||
-- AUTO-GENERATED by .tools — do not edit by hand.
|
||||
-- Source DBC(s): StableSlotPrices.dbc
|
||||
-- Generated: 2026-03-20 13:57 UTC
|
||||
|
||||
if not MTH_DS then MTH_DS = {} end
|
||||
|
||||
MTH_DS_StableSlotPrices = {
|
||||
[1] = {
|
||||
["cost_copper"] = 500,
|
||||
["cost_gold"] = 0,
|
||||
["cost_silver"] = 5,
|
||||
["cost_copper_remainder"] = 0,
|
||||
["display"] = "0g 5s 0c",
|
||||
["acquireMethod"] = "gold",
|
||||
},
|
||||
[2] = {
|
||||
["cost_copper"] = 50000,
|
||||
["cost_gold"] = 5,
|
||||
["cost_silver"] = 0,
|
||||
["cost_copper_remainder"] = 0,
|
||||
["display"] = "5g 0s 0c",
|
||||
["acquireMethod"] = "gold",
|
||||
},
|
||||
[3] = {
|
||||
["cost_copper"] = 2500000,
|
||||
["cost_gold"] = 250,
|
||||
["cost_silver"] = 0,
|
||||
["cost_copper_remainder"] = 0,
|
||||
["display"] = "250g 0s 0c",
|
||||
["acquireMethod"] = "gold",
|
||||
},
|
||||
[4] = {
|
||||
["cost_copper"] = 0,
|
||||
["cost_gold"] = 0,
|
||||
["cost_silver"] = 0,
|
||||
["cost_copper_remainder"] = 0,
|
||||
["display"] = "Shop",
|
||||
["acquireMethod"] = "shop",
|
||||
},
|
||||
}
|
||||
@@ -1,97 +0,0 @@
|
||||
-- MetaHunt: Zone DBC enrichment (worldBounds, dbcAreaId, dbcMapId, dbcName)
|
||||
-- AUTO-GENERATED by .tools — do not edit by hand.
|
||||
-- Source DBC(s): WorldMapArea.dbc, AreaTable.dbc
|
||||
-- Generated: 2026-03-20 13:57 UTC
|
||||
|
||||
if not MTH_DS_Zones then return end
|
||||
|
||||
-- WMA ID=301 map=0 'Stormwind'
|
||||
if MTH_DS_Zones[1519] then
|
||||
MTH_DS_Zones[1519]["dbcAreaId"] = 1519
|
||||
MTH_DS_Zones[1519]["dbcMapId"] = 0
|
||||
MTH_DS_Zones[1519]["dbcName"] = "Stormwind"
|
||||
MTH_DS_Zones[1519]["worldBounds"] = {
|
||||
["left"] = 1722.92,
|
||||
["right"] = -14.58,
|
||||
["top"] = -7995.8301,
|
||||
["bottom"] = -9154.1699,
|
||||
}
|
||||
end
|
||||
|
||||
-- WMA ID=321 map=1 'Ogrimmar'
|
||||
if MTH_DS_Zones[1637] then
|
||||
MTH_DS_Zones[1637]["dbcAreaId"] = 1637
|
||||
MTH_DS_Zones[1637]["dbcMapId"] = 1
|
||||
MTH_DS_Zones[1637]["dbcName"] = "Ogrimmar"
|
||||
MTH_DS_Zones[1637]["worldBounds"] = {
|
||||
["left"] = -3680.6001,
|
||||
["right"] = -5083.21,
|
||||
["top"] = 2273.8799,
|
||||
["bottom"] = 1338.46,
|
||||
}
|
||||
end
|
||||
|
||||
-- WMA ID=362 map=1 'ThunderBluff'
|
||||
if MTH_DS_Zones[1638] then
|
||||
MTH_DS_Zones[1638]["dbcAreaId"] = 1638
|
||||
MTH_DS_Zones[1638]["dbcMapId"] = 1
|
||||
MTH_DS_Zones[1638]["dbcName"] = "ThunderBluff"
|
||||
MTH_DS_Zones[1638]["worldBounds"] = {
|
||||
["left"] = 516.67,
|
||||
["right"] = -527.08,
|
||||
["top"] = -850.0,
|
||||
["bottom"] = -1545.83,
|
||||
}
|
||||
end
|
||||
|
||||
-- WMA ID=381 map=1 'Darnassis'
|
||||
if MTH_DS_Zones[1657] then
|
||||
MTH_DS_Zones[1657]["dbcAreaId"] = 1657
|
||||
MTH_DS_Zones[1657]["dbcMapId"] = 1
|
||||
MTH_DS_Zones[1657]["dbcName"] = "Darnassis"
|
||||
MTH_DS_Zones[1657]["worldBounds"] = {
|
||||
["left"] = 2938.3601,
|
||||
["right"] = 1880.03,
|
||||
["top"] = 10238.3203,
|
||||
["bottom"] = 9532.5898,
|
||||
}
|
||||
end
|
||||
|
||||
-- WMA ID=382 map=0 'Undercity'
|
||||
if MTH_DS_Zones[1497] then
|
||||
MTH_DS_Zones[1497]["dbcAreaId"] = 1497
|
||||
MTH_DS_Zones[1497]["dbcMapId"] = 0
|
||||
MTH_DS_Zones[1497]["dbcName"] = "Undercity"
|
||||
MTH_DS_Zones[1497]["worldBounds"] = {
|
||||
["left"] = 873.19,
|
||||
["right"] = -86.18,
|
||||
["top"] = 1877.95,
|
||||
["bottom"] = 1237.84,
|
||||
}
|
||||
end
|
||||
|
||||
-- WMA ID=508 map=1 'AmaniAlor'
|
||||
if MTH_DS_Zones[2041] then
|
||||
MTH_DS_Zones[2041]["dbcAreaId"] = 2041
|
||||
MTH_DS_Zones[2041]["dbcMapId"] = 1
|
||||
MTH_DS_Zones[2041]["dbcName"] = "AmaniAlor"
|
||||
MTH_DS_Zones[2041]["worldBounds"] = {
|
||||
["left"] = 3112.0,
|
||||
["right"] = 1599.0,
|
||||
["top"] = 3437.0,
|
||||
["bottom"] = 2434.0,
|
||||
}
|
||||
end
|
||||
|
||||
-- WMA ID=509 map=0 'AlahThalas'
|
||||
if MTH_DS_Zones[2040] then
|
||||
MTH_DS_Zones[2040]["dbcAreaId"] = 2040
|
||||
MTH_DS_Zones[2040]["dbcMapId"] = 0
|
||||
MTH_DS_Zones[2040]["dbcName"] = "AlahThalas"
|
||||
MTH_DS_Zones[2040]["worldBounds"] = {
|
||||
["left"] = -2169.0,
|
||||
["right"] = -3637.0,
|
||||
["top"] = 4907.0,
|
||||
["bottom"] = 3931.0,
|
||||
}
|
||||
end
|
||||
File diff suppressed because it is too large
Load Diff
@@ -43,7 +43,6 @@
|
||||
<Include file="..\api\pets-service-stablescan.lua"/>
|
||||
<Include file="..\api\core-scan-beasttraining.lua"/>
|
||||
<Include file="..\api\core-scan-spellbookpet.lua"/>
|
||||
<Include file="..\api\beastlore-scan.lua"/>
|
||||
<Include file="..\api\core-scan-huntertalents.lua"/>
|
||||
<Include file="..\api\core.lua"/>
|
||||
<Include file="..\api\version-check.lua"/>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +0,0 @@
|
||||
<!--
|
||||
MetaHunt: SmartPet Module Loader
|
||||
-->
|
||||
<Ui xmlns="http://www.blizzard.com/wow/ui/">
|
||||
<Include file="engine.lua"/>
|
||||
</Ui>
|
||||
Reference in New Issue
Block a user