mirror of
https://github.com/brues-code/SuperCleveRoidMacros.git
synced 2026-09-16 03:38:00 +00:00
Replace tooltip-scanning GetSpellCost with ClassicAPI DBC reads
GetSpellCost now reads power cost and reagents straight from Spell.dbc via C_Spell.GetSpellPowerCost (effective, talent-modified cost) and C_Spell.GetSpellReagents (itemID), dropping the GameTooltip owner/scan frames, their font strings, and all locale-dependent line parsing. Reagent counting is now itemID-based end to end: GetReagentCount takes an itemID and matches by id in the Items cache / bag scan. This removes the hardcoded English reagent tables (_ReagentBySpell, _ReagentIdByName) and the name-matching bag-scan tooltip, so it works on any client locale. Verified in-game that GetSpellReagents covers DBC reagent spells (Vanish -> Flash Powder), which the hand table previously special-cased. The localized reagent name is still used for countedItemTypes registration (recognizing a reagent item placed on the action bar); when that name isn't cached yet, warm it via the ClassicAPI Item mixin (Item:CreateFromItemID/ContinueOnItemLoad) and register it once it lands.
This commit is contained in:
@@ -58,11 +58,7 @@ function CleveRoids.IndexSpells()
|
||||
bookType = CleveRoids.bookTypes[book]
|
||||
spells[bookType] = {}
|
||||
else
|
||||
local cost, reagent = CleveRoids.GetSpellCost(i, bookType)
|
||||
-- Fallback for known reagent spells if tooltip scan failed
|
||||
if (not reagent or reagent == "") and CleveRoids.ReagentBySpell then
|
||||
reagent = CleveRoids.ReagentBySpell[spellName]
|
||||
end
|
||||
local cost, reagent, reagentId = CleveRoids.GetSpellCost(i, bookType, spellId)
|
||||
if not spells[bookType][spellName] then
|
||||
spells[bookType][spellName] = {
|
||||
spellSlot = i,
|
||||
@@ -71,7 +67,7 @@ function CleveRoids.IndexSpells()
|
||||
bookType = bookType,
|
||||
texture = texture,
|
||||
cost = cost,
|
||||
reagent = reagent,
|
||||
reagentId = reagentId,
|
||||
}
|
||||
end
|
||||
if spellRank and not spells[bookType][spellName][spellRank] then
|
||||
@@ -83,7 +79,7 @@ function CleveRoids.IndexSpells()
|
||||
bookType = bookType,
|
||||
texture = texture,
|
||||
cost = cost,
|
||||
reagent = reagent
|
||||
reagentId = reagentId,
|
||||
}
|
||||
spells[bookType][spellName].highest = spells[bookType][spellName][spellRank]
|
||||
end
|
||||
@@ -94,6 +90,13 @@ function CleveRoids.IndexSpells()
|
||||
|
||||
if reagent then
|
||||
CleveRoids.countedItemTypes[reagent] = true
|
||||
elseif reagentId and Item then
|
||||
Item:CreateFromItemID(reagentId):ContinueOnItemLoad(function()
|
||||
local loadedName = C_Item.GetItemNameByID(reagentId)
|
||||
if loadedName and loadedName ~= "" then
|
||||
CleveRoids.countedItemTypes[loadedName] = true
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user