coa.17: comprehensive partial-data hardening + DataStore_Characters login scan + Skills strip cap
release / release (push) Successful in 5s
release / release (push) Successful in 5s
- Hardening sweep across DataStore_* (softened crash-asserts in Talents/Containers/Quests to graceful nil) + Altoholic frames (guarded remaining getter results). - DataStore_Characters: scan on login (was ghost-gated -> name/level/class never populated; the core 'no character data' cause). - Skills tab: cap inline professions at 6 (+N) so the strip stops overflowing into Cooking.
This commit is contained in:
@@ -86,10 +86,15 @@ local function OnPlayerMoney()
|
||||
addon.ThisCharacter.money = GetMoney();
|
||||
end
|
||||
|
||||
local hasScannedThisSession
|
||||
local function OnPlayerAlive()
|
||||
-- print("DataStore_Characters.lua") -- DEBUG 2025 07 21
|
||||
if not UnitIsGhost("player") then return end -- only scan if player released spirit and went to graveyard
|
||||
|
||||
-- CoA: scan once at login. PLAYER_ALIVE also fires on resurrect / Feign-Death cancel
|
||||
-- (unchanged data), so skip those. The previous "only when ghost" gate skipped LOGIN
|
||||
-- too, so name/level/class/money/XP never populated on a normal login - the root of
|
||||
-- "no character data". (Same trap as DataStore_Inventory / _Skills; see commit fdcb25a.)
|
||||
if hasScannedThisSession then return end
|
||||
hasScannedThisSession = true
|
||||
|
||||
local character = addon.ThisCharacter
|
||||
|
||||
character.name = UnitName("player") -- to simplify processing a bit, the name is saved in the table too, in addition to being part of the key
|
||||
@@ -263,7 +268,7 @@ local function _GetGuildInfo(character)
|
||||
end
|
||||
|
||||
local function _GetPlayTime(character)
|
||||
return character.played
|
||||
return character.played or 0 -- CoA: nil on partial-data alt; callers do arithmetic (AccountSummary)
|
||||
end
|
||||
|
||||
local function _GetLocation(character)
|
||||
|
||||
Reference in New Issue
Block a user