Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 57c603fa8e | |||
| f4f3de929b | |||
| ee3fec624d | |||
| 863709e450 | |||
| 78e50e9f5c | |||
| 14dd30e9a9 |
@@ -338,7 +338,7 @@ function addon:OnEnable()
|
||||
-- CoA: use a Lua constant, not GetAddOnMetadata — TOC metadata is cached at game launch
|
||||
-- and does NOT refresh on /reload, so the .toc version looked stale ("still .18"). A Lua
|
||||
-- constant re-evaluates on every /reload, giving a truthful loaded-code version. Bump with the .toc.
|
||||
AltoholicFrameName:SetText("Altoholic |cFFFFFFFF3.3.002b-coa.23|r")
|
||||
AltoholicFrameName:SetText("Altoholic |cFFFFFFFF3.3.002b-coa.29|r")
|
||||
|
||||
local realm = GetRealmName()
|
||||
local player = UnitName("player")
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
## Author: Thaoky, Telkar-RG
|
||||
## X-Edited-By: Exiles (Sub-Net) — florian.berthold@sub-net.at
|
||||
## Version: 3.3.002b-coa.23
|
||||
## Version: 3.3.002b-coa.29
|
||||
## X-Category: Inventory, Tradeskill, Mail
|
||||
## X-Localizations: enUS, frFR, zhCN, zhTW, deDE, koKR, esES, esMX, ruRU
|
||||
## X-Website: http://wow.curse.com/downloads/wow-addons/details/altoholic.aspx
|
||||
|
||||
@@ -168,7 +168,7 @@ end
|
||||
|
||||
|
||||
function ns:Update()
|
||||
local VisibleLines = 20
|
||||
local VisibleLines = 18
|
||||
local frame = "AltoholicFrameSummary"
|
||||
local entry = frame.."Entry"
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ local ns = addon.Activity -- ns = namespace
|
||||
local Characters = addon.Characters
|
||||
|
||||
function ns:Update()
|
||||
local VisibleLines = 20
|
||||
local VisibleLines = 18
|
||||
local frame = "AltoholicFrameActivity"
|
||||
local entry = frame.."Entry"
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ local ns = addon.BagUsage -- ns = namespace
|
||||
local Characters = addon.Characters
|
||||
|
||||
function ns:Update()
|
||||
local VisibleLines = 20
|
||||
local VisibleLines = 18
|
||||
local frame = "AltoholicFrameBagUsage"
|
||||
local entry = frame.."Entry"
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ function ns:Update()
|
||||
BuildView()
|
||||
end
|
||||
|
||||
local VisibleLines = 20
|
||||
local VisibleLines = 18
|
||||
local frame = "AltoholicFrameGuildBankTabs"
|
||||
local entry = frame.."Entry"
|
||||
|
||||
|
||||
@@ -285,7 +285,7 @@ function ns:Update()
|
||||
BuildView()
|
||||
end
|
||||
|
||||
local VisibleLines = 20
|
||||
local VisibleLines = 17
|
||||
local frame = "AltoholicFrameGuildMembers"
|
||||
local entry = frame.."Entry"
|
||||
|
||||
|
||||
@@ -221,7 +221,7 @@ function ns:Update()
|
||||
BuildView()
|
||||
end
|
||||
|
||||
local VisibleLines = 20
|
||||
local VisibleLines = 18
|
||||
local frame = "AltoholicFrameGuildProfessions"
|
||||
local entry = frame.."Entry"
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ function ns:Update()
|
||||
local character = addon.Tabs.Characters:GetCurrent()
|
||||
|
||||
|
||||
local VisibleLines = 20
|
||||
local VisibleLines = 18
|
||||
local frame = "AltoholicFrameQuests"
|
||||
local entry = frame.."Entry"
|
||||
|
||||
|
||||
@@ -218,7 +218,7 @@ end
|
||||
function ns:Update()
|
||||
local currentProfession = addon.TradeSkills.CurrentProfession
|
||||
|
||||
local VisibleLines = 20
|
||||
local VisibleLines = 18
|
||||
local frame = "AltoholicFrameRecipes"
|
||||
local entry = frame.."Entry"
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ local inset = 2
|
||||
|
||||
|
||||
function ns:Update()
|
||||
local VisibleLines = 20
|
||||
local VisibleLines = 18
|
||||
local frame = "AltoholicFrameSkills"
|
||||
local entry = frame.."Entry"
|
||||
local DS = DataStore
|
||||
@@ -66,6 +66,7 @@ function ns:Update()
|
||||
items[#items + 1] = { kind = "skill", viewLine = viewLine, character = character,
|
||||
spellID = 33388, name = (L and L["Riding"]) or "Riding", rank = riding, maxRank = 300 }
|
||||
end
|
||||
items[#items + 1] = { kind = "spacer" } -- blank row between characters
|
||||
end
|
||||
end
|
||||
|
||||
@@ -76,27 +77,44 @@ function ns:Update()
|
||||
local item = items[i + offset]
|
||||
if item then
|
||||
_G[e.."Collapse"]:Hide()
|
||||
_G[e.."Level"]:SetText("")
|
||||
_G[e.."Skill1NormalText"]:SetText("")
|
||||
_G[e.."CookingNormalText"]:SetText("")
|
||||
_G[e.."FirstAidNormalText"]:SetText("")
|
||||
_G[e.."FishingNormalText"]:SetText("")
|
||||
_G[e.."RidingNormalText"]:SetText("")
|
||||
_G[e.."Name"]:SetWidth(680)
|
||||
_G[e.."Name"]:SetPoint("TOPLEFT", 15, 0)
|
||||
_G[e.."NameNormalText"]:SetWidth(680)
|
||||
|
||||
if item.kind == "header" then
|
||||
if item.kind == "spacer" then
|
||||
-- blank separator row between characters
|
||||
_G[e.."Name"]:SetPoint("TOPLEFT", 15, 0)
|
||||
_G[e.."NameNormalText"]:SetText("")
|
||||
_G[e.."Level"]:SetText("")
|
||||
elseif item.kind == "header" then
|
||||
-- character header: gold "Name (Class)" across the row, no rank column
|
||||
_G[e.."Name"]:SetPoint("TOPLEFT", 12, 0)
|
||||
_G[e.."Name"]:SetWidth(420)
|
||||
_G[e.."NameNormalText"]:SetWidth(420)
|
||||
local cname = Characters:GetInfo(item.viewLine) or "?" -- name from the key, always present (scanned char.name can be nil)
|
||||
local locClass, engClass = DS:GetCharacterClass(item.character)
|
||||
local className = Altoholic:GetCoAClassName(engClass) or locClass or "" -- CoA: PROPHET->Venomancer, MONK->Templar, …
|
||||
_G[e.."NameNormalText"]:SetText( (DS:GetColoredCharacterName(item.character) or "?") .. " " .. WHITE .. "(" .. className .. ")" )
|
||||
local classColor = DS:GetClassColor(item.character) or WHITE
|
||||
_G[e.."NameNormalText"]:SetText( classColor .. cname .. "|r " .. WHITE .. "(" .. className .. ")" )
|
||||
_G[e.."Level"]:SetText("")
|
||||
else
|
||||
-- profession row: [icon] name in the Name cell (indented), rank/max in its own column
|
||||
local iconEsc = ""
|
||||
if item.spellID then
|
||||
iconEsc = addon:TextureToFontstring2(addon:GetSpellIcon(item.spellID), size, size, inset, inset, inset, inset) .. " "
|
||||
end
|
||||
_G[e.."Name"]:SetPoint("TOPLEFT", 34, 0)
|
||||
_G[e.."Name"]:SetWidth(170)
|
||||
_G[e.."NameNormalText"]:SetWidth(170)
|
||||
_G[e.."NameNormalText"]:SetText( iconEsc .. WHITE .. item.name )
|
||||
|
||||
local cap = (item.maxRank > 0) and item.maxRank or 450
|
||||
_G[e.."NameNormalText"]:SetText( " " .. iconEsc .. WHITE .. item.name .. " " .. ns:GetColor(item.rank, cap) .. item.rank .. "/" .. item.maxRank .. "|r" )
|
||||
_G[e.."Level"]:SetPoint("TOPLEFT", 195, 0)
|
||||
_G[e.."Level"]:SetWidth(120)
|
||||
_G[e.."Level"]:SetJustifyH("LEFT")
|
||||
_G[e.."Level"]:SetText( ns:GetColor(item.rank, cap) .. item.rank .. " / " .. item.maxRank )
|
||||
end
|
||||
btn.coaItem = item
|
||||
btn:SetID(item.viewLine or 0)
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
<Button name="AltoSkillsTemplate" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="745" y="22"/>
|
||||
<AbsDimension x="615" y="22"/>
|
||||
</Size>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
@@ -194,7 +194,7 @@
|
||||
|
||||
<Frame name="AltoholicFrameSkills" parent="AltoholicTabSummary" hidden="true">
|
||||
<Size>
|
||||
<AbsDimension x="745" y="414"/>
|
||||
<AbsDimension x="615" y="414"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT">
|
||||
|
||||
@@ -245,8 +245,8 @@
|
||||
</Button>
|
||||
<Button name="$parent_Prof1" inherits="AltoViewIconTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="AltoholicTabCharacters" relativePoint="TOPLEFT" >
|
||||
<Offset x="30" y="-235" />
|
||||
<Anchor point="BOTTOMLEFT" relativeTo="$parent_FirstAid" relativePoint="BOTTOMRIGHT" >
|
||||
<Offset x="5" y="0" />
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
@@ -257,50 +257,6 @@
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<!-- CoA: characters can know many more than 2 primary professions. Extra slots;
|
||||
UpdateViewIcons fills/hides them dynamically and stops at the last one. -->
|
||||
<Button name="$parent_Prof3" inherits="AltoViewIconTemplate" hidden="true">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMLEFT" relativeTo="$parent_Prof2" relativePoint="BOTTOMRIGHT" >
|
||||
<Offset x="5" y="0" />
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="$parent_Prof4" inherits="AltoViewIconTemplate" hidden="true">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMLEFT" relativeTo="$parent_Prof3" relativePoint="BOTTOMRIGHT" >
|
||||
<Offset x="5" y="0" />
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="$parent_Prof5" inherits="AltoViewIconTemplate" hidden="true">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="$parent_Prof1" relativePoint="BOTTOMLEFT" >
|
||||
<Offset x="5" y="0" />
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="$parent_Prof6" inherits="AltoViewIconTemplate" hidden="true">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMLEFT" relativeTo="$parent_Prof5" relativePoint="BOTTOMRIGHT" >
|
||||
<Offset x="5" y="0" />
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="$parent_Prof7" inherits="AltoViewIconTemplate" hidden="true">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMLEFT" relativeTo="$parent_Prof6" relativePoint="BOTTOMRIGHT" >
|
||||
<Offset x="5" y="0" />
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="$parent_Prof8" inherits="AltoViewIconTemplate" hidden="true">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMLEFT" relativeTo="$parent_Prof7" relativePoint="BOTTOMRIGHT" >
|
||||
<Offset x="5" y="0" />
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
|
||||
<Button name="$parent_Sort1" inherits="AltoSortButtonTemplate" id="1">
|
||||
<Size>
|
||||
|
||||
@@ -235,7 +235,8 @@ end
|
||||
-- *** EVENT HANDLERS ***
|
||||
function addon:PLAYER_ALIVE()
|
||||
-- print("DataStore_Achievements.lua") -- DEBUG 2025 07 21
|
||||
if not UnitIsGhost("player") then return end -- only scan if player released spirit and went to graveyard
|
||||
if addon.coaScannedThisSession then return end -- CoA: scan once at login (was ghost-gated, so data never saved on a normal login - the cause of "data not saved")
|
||||
addon.coaScannedThisSession = true
|
||||
|
||||
ScanAllAchievements()
|
||||
ScanProgress()
|
||||
|
||||
@@ -546,7 +546,8 @@ end
|
||||
-- *** Event Handlers ***
|
||||
local function OnPlayerAlive()
|
||||
-- print("DataStore_Crafts.lua") -- DEBUG 2025 07 21
|
||||
if not UnitIsGhost("player") then return end -- only scan if player released spirit and went to graveyard
|
||||
if addon.coaScannedThisSession then return end -- CoA: scan once at login (was ghost-gated, so data never saved on a normal login - the cause of "data not saved")
|
||||
addon.coaScannedThisSession = true
|
||||
|
||||
ScanProfessionLinks()
|
||||
end
|
||||
|
||||
@@ -46,7 +46,8 @@ end
|
||||
-- *** Event Handlers ***
|
||||
local function OnPlayerAlive()
|
||||
-- print("DataStore_Pets.lua") -- DEBUG 2025 07 21
|
||||
if not UnitIsGhost("player") then return end -- only scan if player released spirit and went to graveyard
|
||||
if addon.coaScannedThisSession then return end -- CoA: scan once at login (was ghost-gated, so data never saved on a normal login - the cause of "data not saved")
|
||||
addon.coaScannedThisSession = true
|
||||
|
||||
ScanCompanions("CRITTER")
|
||||
ScanCompanions("MOUNT")
|
||||
|
||||
@@ -177,7 +177,8 @@ end
|
||||
-- *** Event Handlers ***
|
||||
local function OnPlayerAlive()
|
||||
-- print("DataStore_Quests.lua") -- DEBUG 2025 07 21
|
||||
if not UnitIsGhost("player") then return end -- only scan if player released spirit and went to graveyard
|
||||
if addon.coaScannedThisSession then return end -- CoA: scan once at login (was ghost-gated, so data never saved on a normal login - the cause of "data not saved")
|
||||
addon.coaScannedThisSession = true
|
||||
|
||||
ScanQuests()
|
||||
end
|
||||
|
||||
@@ -177,7 +177,8 @@ end
|
||||
-- *** EVENT HANDLERS ***
|
||||
function addon:PLAYER_ALIVE()
|
||||
-- print("DataStore_Reputations.lua") -- DEBUG 2025 07 21
|
||||
if not UnitIsGhost("player") then return end -- only scan if player released spirit and went to graveyard
|
||||
if addon.coaScannedThisSession then return end -- CoA: scan once at login (was ghost-gated, so data never saved on a normal login - the cause of "data not saved")
|
||||
addon.coaScannedThisSession = true
|
||||
|
||||
ScanReputations()
|
||||
end
|
||||
|
||||
@@ -239,7 +239,8 @@ end
|
||||
-- *** EVENT HANDLERS ***
|
||||
function addon:PLAYER_ALIVE()
|
||||
-- print("DataStore_Skills.lua") -- DEBUG 2025 07 21
|
||||
if not UnitIsGhost("player") then return end -- only scan if player released spirit and went to graveyard
|
||||
if addon.coaScannedThisSession then return end -- CoA: scan once at login (was ghost-gated, so data never saved on a normal login - the cause of "data not saved")
|
||||
addon.coaScannedThisSession = true
|
||||
|
||||
ScanSkills()
|
||||
end
|
||||
|
||||
@@ -105,7 +105,8 @@ end
|
||||
-- *** EVENT HANDLERS ***
|
||||
function addon:PLAYER_ALIVE()
|
||||
-- print("DataStore_Spells.lua") -- DEBUG 2025 07 21
|
||||
if not UnitIsGhost("player") then return end -- only scan if player released spirit and went to graveyard
|
||||
if addon.coaScannedThisSession then return end -- CoA: scan once at login (was ghost-gated, so data never saved on a normal login - the cause of "data not saved")
|
||||
addon.coaScannedThisSession = true
|
||||
|
||||
ScanSpells()
|
||||
end
|
||||
|
||||
@@ -156,7 +156,8 @@ end
|
||||
-- *** EVENT HANDLERS ***
|
||||
function addon:PLAYER_ALIVE()
|
||||
-- print("DataStore_Stats.lua") -- DEBUG 2025 07 21
|
||||
if not UnitIsGhost("player") then return end -- only scan if player released spirit and went to graveyard
|
||||
if addon.coaScannedThisSession then return end -- CoA: scan once at login (was ghost-gated, so data never saved on a normal login - the cause of "data not saved")
|
||||
addon.coaScannedThisSession = true
|
||||
|
||||
ScanStats()
|
||||
end
|
||||
|
||||
@@ -419,7 +419,8 @@ end
|
||||
-- *** EVENT HANDLERS ***
|
||||
function addon:PLAYER_ALIVE()
|
||||
-- print("DataStore_Talents.lua") -- DEBUG 2025 07 21
|
||||
if not UnitIsGhost("player") then return end -- only scan if player released spirit and went to graveyard
|
||||
if addon.coaScannedThisSession then return end -- CoA: scan once at login (was ghost-gated, so data never saved on a normal login - the cause of "data not saved")
|
||||
addon.coaScannedThisSession = true
|
||||
|
||||
ScanTalents()
|
||||
ScanTalentReference()
|
||||
|
||||
Reference in New Issue
Block a user