TotemBar v0.2.5
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
-- TotemBar - core/pulseparse.lua
|
||||
-- PURE parser: periodic combat-log line -> totem name (or nil). Used by
|
||||
-- ui.lua's CHAT_MSG_SPELL_PERIODIC_* handler to re-anchor pulse phase on
|
||||
-- REAL observed ticks. Lua 5.0: string.find with captures only (no
|
||||
-- string.match / no method-call syntax). Offline-tested via
|
||||
-- tools/luatests/test_pulseparse.lua; exact accepted wordings get refined
|
||||
-- from /tb pulsecal telemetry.
|
||||
|
||||
TotemBar = TotemBar or {}
|
||||
|
||||
-- Strips a trailing roman-numeral rank suffix (" IV", " VII", ...) - the
|
||||
-- totem-as-caster shape names the ranked unit ("Healing Stream Totem VII").
|
||||
local function stripRank(src)
|
||||
local _, _, base = string.find(src, "^(.-)%s+[IVXLC]+$")
|
||||
if base and base ~= "" then
|
||||
return base
|
||||
end
|
||||
return src
|
||||
end
|
||||
|
||||
-- Maps a raw source name to a totem name: alias table first (buff names
|
||||
-- like "Mana Spring"), then any source ending in " Totem".
|
||||
local function resolveSource(src)
|
||||
local alias = TotemBar.PULSE_SOURCE_ALIASES and TotemBar.PULSE_SOURCE_ALIASES[src]
|
||||
if alias then
|
||||
return alias
|
||||
end
|
||||
-- Every totem's name ends in " Totem" (rank suffixes already stripped),
|
||||
-- so anchor at the end - a plain substring test would false-positive on
|
||||
-- player names like "Totemguy".
|
||||
if string.find(src, "%sTotem$") then
|
||||
return src
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function TotemBar.parseSelfGain(msg)
|
||||
if not msg then
|
||||
return nil
|
||||
end
|
||||
local _, _, src = string.find(msg, "^You gain %d+ [Mm]ana from (.+)%.$")
|
||||
if not src then
|
||||
_, _, src = string.find(msg, "^You gain %d+ [Hh]ealth from (.+)%.$")
|
||||
end
|
||||
if not src then
|
||||
_, _, src = string.find(msg, "^(.-) heals you for %d+%.$")
|
||||
end
|
||||
if not src then
|
||||
return nil
|
||||
end
|
||||
return resolveSource(stripRank(src))
|
||||
end
|
||||
Reference in New Issue
Block a user