+++ /dev/null
--- DruidIndicators.lua
-local pairs = pairs;
-
-local indSize = OmaRFSettings.IndSize;
-local rhomb = "Interface\\AddOns\\OmaRF\\images\\rhomb";
-local square = "Interface\\AddOns\\OmaRF\\images\\square";
-
-local M = {};
-OmaRFIndicators.Class["DRUID"] = M;
-M.Auras = {
- [33763] = "TOPLEFT", -- Lifebloom
- [774] = "TR1", -- Rejuvenation
- [102352] = "TR2", -- Cenarion Ward (102351 is the pre-buff)
- [207386] = "TR3", -- Spring Blossoms (207385 is the talent)
- [155777] = "TR3", -- Germination (either this or Spring Blossoms taken)
- [8936] = "TR4", -- Regrowth
- [200389] = "TR5", -- Cultivation
-}
-
-function M.Setup(base)
- local inds = {};
- inds["TOPLEFT"] = base:CreateTexture(nil, "OVERLAY");
- inds["TOPLEFT"]:SetPoint("TOPLEFT", base, "TOPLEFT");
- inds["TOPLEFT"]:SetWidth(indSize);
- inds["TOPLEFT"]:SetHeight(indSize);
- inds["TOPLEFT"]:SetTexture(rhomb);
- inds["TOPLEFT"]:SetVertexColor(0, 1, 0.5);
- inds["TOPLEFT"]:Hide();
- inds["TOPLEFT"].text = base:CreateFontString(nil, "OVERLAY", "GameFontHighlight");
- inds["TOPLEFT"].text:SetPoint("BOTTOMRIGHT", inds["TOPLEFT"], "BOTTOMRIGHT");
- inds["TOPLEFT"].text:Hide();
- for _, pos in pairs({"TR1", "TR2", "TR3", "TR4", "TR5"}) do
- inds[pos] = base:CreateTexture(nil, "OVERLAY");
- inds[pos]:SetWidth(indSize/2);
- inds[pos]:SetHeight(indSize/2);
- inds[pos]:SetTexture(square);
- inds[pos]:Hide();
- end
- inds["TR1"]:SetPoint("TOPRIGHT");
- inds["TR1"]:SetVertexColor(0.8, 0, 1);
- inds["TR2"]:SetPoint("TOPRIGHT", inds["TR1"], "TOPLEFT");
- inds["TR2"]:SetVertexColor(0.4, 1, 0);
- inds["TR3"]:SetPoint("TOPRIGHT", inds["TR1"], "BOTTOMRIGHT");
- inds["TR3"]:SetVertexColor(1, 0.2, 0);
- inds["TR4"]:SetPoint("TOPRIGHT", inds["TR2"], "BOTTOMRIGHT");
- inds["TR4"]:SetVertexColor(0, 1, 0);
- inds["TR5"]:SetPoint("TOPRIGHT", inds["TR3"], "BOTTOMRIGHT");
- inds["TR5"]:SetVertexColor(0, 1, 0.5);
- return inds;
-end
+++ /dev/null
--- Events.lua
-local _;
-local unpack = unpack;
-local ssub = string.sub;
-local min = math.min;
-local UnitName, UnitClass, UnitExists = UnitName, UnitClass, UnitExists;
-local UnitDebuff, UnitIsCharmed = UnitDebuff, UnitIsCharmed;
-local UnitHealth, UnitHealthMax = UnitHealth, UnitHealthMax;
-local UnitIsAFK, UnitIsDND = UnitIsAFK, UnitIsDND;
-local UnitGetIncomingHeals, UnitGetTotalAbsorbs = UnitGetIncomingHeals, UnitGetTotalAbsorbs;
-local UnitThreatSituation, GetThreatStatusColor = UnitThreatSituation, GetThreatStatusColor;
-local UnitIsDeadOrGhost, UnitIsConnected = UnitIsDeadOrGhost, UnitIsConnected;
-local UnitGetTotalHealAbsorbs = UnitGetTotalHealAbsorbs;
-local UnitHasVehicleUI, UnitTargetsVehicleInRaidUI = UnitHasVehicleUI, UnitTargetsVehicleInRaidUI;
-local GetReadyCheckTimeLeft, GetReadyCheckStatus = GetReadyCheckTimeLeft, GetReadyCheckStatus;
-local UnitGroupRolesAssigned = UnitGroupRolesAssigned;
-local GetRaidTargetIndex, SetRaidTargetIconTexture = GetRaidTargetIndex, SetRaidTargetIconTexture;
-local RAID_CLASS_COLORS = RAID_CLASS_COLORS;
-local READY_CHECK_READY_TEXTURE = READY_CHECK_READY_TEXTURE;
-local READY_CHECK_NOT_READY_TEXTURE = READY_CHECK_NOT_READY_TEXTURE;
-local READY_CHECK_WAITING_TEXTURE = READY_CHECK_WAITING_TEXTURE;
-
-local updateIndicatorAuras = OmaRFIndicators.UpdateAuras;
-local updateMajorAuras = OmaRFIndicators.UpdateMajorAuras;
-
-local Settings = OmaRFSettings;
-local baseColor = Settings.BaseColor;
-local overlayColorDispel = Settings.OverlayColorDispel;
-local overlayColorCharm = Settings.OverlayColorCharm;
-local overlayColorAlert = Settings.OverlayColorAlert;
-local width = Settings.Width;
-
-local M = {};
-OmaRFEvents = M;
-function M.RegisterEvents(frame)
- frame:RegisterEvent("PLAYER_ENTERING_WORLD");
- frame:RegisterEvent("PLAYER_ROLES_ASSIGNED");
- frame:RegisterEvent("READY_CHECK");
- frame:RegisterEvent("READY_CHECK_FINISHED");
- frame:RegisterEvent("GROUP_ROSTER_UPDATE");
- frame:RegisterEvent("RAID_TARGET_UPDATE");
- if frame.unit == "focus" then frame:RegisterEvent("PLAYER_FOCUS_CHANGED") end
-end
-
-function M.RegisterUnitEvents(frame)
- -- events are taken from FrameXML/CompactUnitFrame.lua
- local displayed = frame.unit ~= frame.displayed and frame.displayed or nil;
- frame:RegisterUnitEvent("UNIT_HEALTH", frame.unit, displayed);
- frame:RegisterUnitEvent("UNIT_HEALTH_FREQUENT", frame.unit, displayed);
- frame:RegisterUnitEvent("UNIT_MAXHEALTH", frame.unit, displayed);
- frame:RegisterUnitEvent("UNIT_NAME_UPDATE", frame.unit, displayed);
- frame:RegisterUnitEvent("UNIT_AURA", frame.unit, displayed);
- frame:RegisterUnitEvent("UNIT_HEAL_PREDICTION", frame.unit, displayed);
- frame:RegisterUnitEvent("UNIT_ABSORB_AMOUNT_CHANGED", frame.unit, displayed);
- frame:RegisterUnitEvent("UNIT_HEAL_ABSORB_AMOUNT_CHANGED", frame.unit, displayed);
- frame:RegisterUnitEvent("UNIT_THREAT_SITUATION_UPDATE", frame.unit, displayed);
- frame:RegisterUnitEvent("UNIT_CONNECTION", frame.unit, displayed);
- frame:RegisterUnitEvent("PLAYER_FLAGS_CHANGED", frame.unit, displayed);
- frame:RegisterUnitEvent("READY_CHECK_CONFIRM", frame.unit, displayed);
- frame:RegisterUnitEvent("UNIT_ENTERED_VEHICLE", frame.unit, displayed);
- frame:RegisterUnitEvent("UNIT_EXITED_VEHICLE", frame.unit, displayed);
- frame:RegisterUnitEvent("UNIT_PET", frame.unit, displayed);
-end
-local registerUnitEvents = M.RegisterUnitEvents;
-
-local function updateText(frame, unit)
- if UnitIsDeadOrGhost(unit) then
- frame.dead = true;
- frame.text:SetText("Dead");
- frame.text:Show();
- elseif not UnitIsConnected(unit) then
- frame.text:SetText("DC");
- frame.text:Show();
- elseif UnitIsAFK(unit) then
- frame.text:SetText("afk");
- frame.text:Show();
- elseif UnitIsDND(unit) then
- frame.text:SetText("dnd");
- frame.text:Show();
- else
- frame.text:Hide();
- end
-end
-M.UpdateText = updateText;
-
-local function updateMaxHealth(frame, unit)
- frame.health.max = UnitHealthMax(unit);
-end
-M.UpdateMaxHealth = updateMaxHealth;
-
-local function updateHealth(frame, unit)
- local current, max = UnitHealth(unit), frame.health.max;
- if current > max or max <= 0 then
- -- somehow current health has gone over the maximum (missed maxhealth event possibly)
- -- just put health bar full and update max health for next event
- frame.health:SetWidth(width);
- frame.health.width = width;
- updateMaxHealth(frame, unit);
- frame.health:Show();
- elseif current <= 0 or UnitIsDeadOrGhost(unit) then
- frame.health:Hide();
- return updateText(frame, unit); -- update death
- else
- local w = current/max*width;
- frame.health:SetWidth(w);
- frame.health.width = w;
- frame.health:Show();
- end
-
- if frame.dead and current > 0 then
- frame.dead = nil;
- updateText(frame, unit); -- update revive
- end
-end
-M.UpdateHealth = updateHealth;
-
-local function updateName(frame, unit)
- local name = UnitName(unit);
- if not name then return end
- name = ssub(name, 1, 6);
- if frame.unit == unit then
- frame.name:SetText(name);
- else
- frame.name:SetFormattedText("-%s", name);
- end
-
- local _, class = UnitClass(unit);
- local color = RAID_CLASS_COLORS[class];
- if color then frame.name:SetVertexColor(color.r, color.g, color.b) end
-end
-M.UpdateName = updateName;
-
-local function updateHealPred(frame, unit)
- local incoming = UnitGetIncomingHeals(unit) or 0;
- if incoming > 0 then
- incoming = (incoming / frame.health.max) * width;
- -- always at least 1 pixel space for heal prediction
- frame.healpred:SetWidth(min(width - frame.health.width + 1, incoming));
- frame.healpred:Show();
- else
- frame.healpred:Hide();
- end
-end
-M.UpdateHealPred = updateHealPred;
-
-local function updateShield(frame, unit)
- local shield = UnitGetTotalAbsorbs(unit) or 0;
- if shield > 0 then
- local space = width - frame.health.width;
- shield = (shield / frame.health.max) * width;
- if space == 0 then
- frame.shield:Hide();
- frame.shieldhl:Show();
- elseif space < shield then
- frame.shield:SetWidth(space);
- frame.shield:Show();
- frame.shieldhl:Show();
- else
- frame.shield:SetWidth(shield);
- frame.shield:Show();
- frame.shieldhl:Hide();
- end
- else
- frame.shield:Hide();
- frame.shieldhl:Hide();
- end
-end
-M.UpdateShield = updateShield;
-
-local function updateHealAbsorb(frame, unit)
- local absorb = UnitGetTotalHealAbsorbs(unit) or 0;
- if absorb > 0 then
- absorb = (absorb / frame.health.max) * width;
- frame.healabsorb:SetWidth(min(frame.health.width, absorb));
- frame.healabsorb:Show();
- else
- frame.healabsorb:Hide();
- end
-end
-M.UpdateHealAbsorb = updateHealAbsorb;
-
-local function updateAuras(frame, unit)
- updateIndicatorAuras(frame, unit); -- this is throttled
- local barColor = updateMajorAuras(frame, unit);
- if barColor then
- if barColor == true and frame.overlay.color ~= overlayColorAlert then
- frame.overlay:SetVertexColor(unpack(overlayColorAlert));
- frame.overlay.color = overlayColorAlert;
- frame.overlay:Show();
- elseif barColor ~= true and frame.overlay.color ~= barColor then
- frame.overlay:SetVertexColor(unpack(barColor));
- frame.overlay.color = barColor;
- frame.overlay:Show();
- end
- elseif UnitDebuff(unit, 1, "RAID") ~= nil then
- -- something dispellable
- if frame.overlay.color ~= overlayColorDispel then
- frame.overlay:SetVertexColor(unpack(overlayColorDispel));
- frame.overlay.color = overlayColorDispel;
- frame.overlay:Show();
- end
- -- don't overlay charmed when in vehicle
- elseif UnitIsCharmed(unit) and unit == frame.unit then
- if frame.overlay.color ~= overlayColorCharm then
- frame.overlay:SetVertexColor(unpack(overlayColorCharm));
- frame.overlay.color = overlayColorCharm;
- frame.overlay:Show();
- end
- else
- if frame.overlay.color ~= nil then
- frame.overlay.color = nil;
- frame.overlay:Hide();
- end
- end
-end
-M.UpdateAuras = updateAuras;
-
-local function updateAggro(frame, unit)
- local status = UnitThreatSituation(unit);
- if status and status > 0 then
- frame.base:SetVertexColor(GetThreatStatusColor(status));
- else
- frame.base:SetVertexColor(unpack(baseColor));
- end
-end
-M.UpdateAggro = updateAggro;
-
-local function updateVehicle(frame)
- local shouldTargetVehicle = UnitHasVehicleUI(frame.unit) and
- UnitTargetsVehicleInRaidUI(frame.unit) and UnitExists(frame.vehicle);
- if shouldTargetVehicle then
- if not frame.inVehicle then
- frame.inVehicle = true;
- frame.displayed = frame.vehicle;
- registerUnitEvents(frame);
- end
- elseif frame.inVehicle then
- frame.inVehicle = false;
- frame.displayed = frame.unit;
- registerUnitEvents(frame);
- end
-end
-M.UpdateVehicle = updateVehicle;
-
-local function updateRole(frame, unit)
- local role = UnitGroupRolesAssigned(unit);
- if role == "HEALER" then
- frame.role:SetTexCoord(0.75, 1, 0, 1);
- frame.role:Show();
- elseif role == "TANK" then
- frame.role:SetTexCoord(0.5, 0.75, 0, 1);
- frame.role:Show();
- else
- frame.role:Hide();
- end
-end
-M.UpdateRole = updateRole;
-
-local function updateReadyCheck(frame, unit)
- local status = GetReadyCheckStatus(unit);
- if status == "ready" then
- frame.ready:SetTexture(READY_CHECK_READY_TEXTURE);
- frame.ready:Show()
- elseif status == "notready" then
- frame.ready:SetTexture(READY_CHECK_NOT_READY_TEXTURE);
- frame.ready:Show()
- elseif status == "waiting" then
- frame.ready:SetTexture(READY_CHECK_WAITING_TEXTURE);
- frame.ready:Show()
- else
- frame.ready:Hide()
- end
-end
-M.UpdateReadyCheck = updateReadyCheck;
-
-local function updateRaidMarker(frame, unit)
- local index = GetRaidTargetIndex(unit);
- if index then
- SetRaidTargetIconTexture(frame.targeticon, index);
- frame.targeticon:Show();
- else
- frame.targeticon:Hide();
- end
-end
-M.UpdateRaidMarker = updateRaidMarker;
-
-local eventFuncs = {
- ["UNIT_HEALTH"] = function(frame)
- updateHealth(frame, frame.displayed);
- updateShield(frame, frame.displayed);
- updateHealAbsorb(frame, frame.displayed);
- -- no heal prediction update, that doesn't overflow too much
- end,
- ["UNIT_AURA"] = function(frame)
- updateAuras(frame, frame.displayed);
- end,
- ["UNIT_HEAL_PREDICTION"] = function(frame)
- updateHealPred(frame, frame.displayed);
- end,
- ["UNIT_ABSORB_AMOUNT_CHANGED"] = function(frame)
- updateShield(frame, frame.displayed);
- end,
- ["UNIT_HEAL_ABSORB_AMOUNT_CHANGED"] = function(frame)
- updateHealAbsorb(frame, frame.displayed);
- end,
- ["UNIT_THREAT_SITUATION_UPDATE"] = function(frame)
- updateAggro(frame, frame.displayed);
- end,
- ["UNIT_MAXHEALTH"] = function(frame)
- updateMaxHealth(frame, frame.displayed);
- updateHealth(frame, frame.displayed);
- updateShield(frame, frame.displayed);
- updateHealAbsorb(frame, frame.displayed);
- end,
- ["UNIT_NAME_UPDATE"] = function(frame)
- updateName(frame, frame.unit);
- end,
- ["UNIT_CONNECTION"] = function(frame)
- updateText(frame, frame.displayed);
- end,
- ["PLAYER_ROLES_ASSIGNED"] = function(frame)
- updateRole(frame, frame.unit);
- end,
- ["READY_CHECK"] = function(frame)
- updateReadyCheck(frame, frame.unit);
- end,
- ["RAID_TARGET_UPDATE"] = function(frame)
- updateRaidMarker(frame, frame.displayed);
- end,
- ["UPDATE_ALL_BARS"] = function(frame)
- updateRole(frame, frame.unit);
- updateVehicle(frame);
- updateMaxHealth(frame, frame.displayed);
- updateHealth(frame, frame.displayed);
- updateText(frame, frame.displayed);
- updateAuras(frame, frame.displayed);
- updateShield(frame, frame.displayed);
- updateHealPred(frame, frame.displayed);
- updateHealAbsorb(frame, frame.displayed);
- updateAggro(frame, frame.displayed);
- updateName(frame, frame.unit);
- updateReadyCheck(frame, frame.unit);
- updateRaidMarker(frame, frame.displayed);
- end,
-};
-eventFuncs["UNIT_HEALTH_FREQUENT"] = eventFuncs["UNIT_HEALTH"];
-eventFuncs["PLAYER_FLAGS_CHANGED"] = eventFuncs["UNIT_CONNECTION"];
-eventFuncs["READY_CHECK_CONFIRM"] = eventFuncs["READY_CHECK"];
-eventFuncs["READY_CHECK_FINISHED"] = eventFuncs["READY_CHECK"];
-eventFuncs["UNIT_ENTERED_VEHICLE"] = eventFuncs["UPDATE_ALL_BARS"];
-eventFuncs["UNIT_EXITED_VEHICLE"] = eventFuncs["UPDATE_ALL_BARS"];
-eventFuncs["UNIT_PET"] = eventFuncs["UPDATE_ALL_BARS"];
-eventFuncs["GROUP_ROSTER_UPDATE"] = eventFuncs["UPDATE_ALL_BARS"];
-eventFuncs["PLAYER_ENTERING_WORLD"] = eventFuncs["UPDATE_ALL_BARS"];
-eventFuncs["PLAYER_FOCUS_CHANGED"] = eventFuncs["UPDATE_ALL_BARS"];
-
-function M.UnitEvent(self, event)
- return eventFuncs[event](self);
-end
+++ /dev/null
--- Indicators.lua
-local pairs, ipairs = pairs, ipairs;
-local floor = math.floor;
-local GetTime = GetTime;
-local UnitExists = UnitExists;
-local UnitAura = UnitAura;
-local CreateFrame = CreateFrame;
-local UnitIsDeadOrGhost, UnitIsConnected = UnitIsDeadOrGhost, UnitIsConnected;
-local CTimerAfter = C_Timer.After;
-
-local Settings = OmaRFSettings;
-local majorAuras = Settings.MajorAuras;
-
-local watchedAuras = {};
-local updaters = {};
-local updating = {};
-local updateAuras;
-
-local M = {};
-OmaRFIndicators = M;
-M.Class = {};
-
-function M.SetupIndicators(frame, class)
- frame.indBase = CreateFrame("Frame", nil, frame);
- frame.indBase:SetAllPoints();
- frame.indBase:Hide();
- if M.Class[class] then
- watchedAuras = M.Class[class].Auras;
- frame.inds = M.Class[class].Setup(frame.indBase);
- else
- frame.inds = {};
- end
-
- frame.majorBase = CreateFrame("Frame", nil, frame);
- frame.majorBase:SetPoint("TOPLEFT", frame, "TOPLEFT", 4, -10);
- frame.majorBase:SetPoint("BOTTOMRIGHT");
- frame.majors = {};
- for i = 1,3 do
- local tex = frame.majorBase:CreateTexture(nil, "OVERLAY");
- tex = frame.majorBase:CreateTexture(nil, "OVERLAY");
- if i == 1 then tex:SetPoint("TOPLEFT", frame.majorBase, "TOPLEFT");
- else tex:SetPoint("TOPLEFT", frame.majors[i-1], "TOPRIGHT"); end
- tex:SetWidth(20);
- tex:SetHeight(20);
- tex:Hide();
- tex.text = frame.majorBase:CreateFontString(nil, "OVERLAY", "GameFontHighlight");
- tex.text:SetPoint("CENTER", tex, "BOTTOMRIGHT", -2, 2);
- tex.text:Hide();
- tex.stack = frame.majorBase:CreateFontString(nil, "OVERLAY", "GameFontHighlight");
- tex.stack:SetPoint("CENTER", tex, "TOPLEFT", 1, 0);
- tex.stack:Hide();
- tex.icon = true;
- frame.majors[i] = tex;
- end
-
- frame.throttle = function()
- frame.throttled = nil;
- if UnitExists(frame.displayed) then
- return updateAuras(frame, frame.displayed);
- end
- end;
-end
-
-local function remaining(text, expires, current)
- if expires == 0 then
- text:SetText("");
- return false;
- end
- local remain = expires - current;
- if remain > 8 then
- text:SetText("");
- else
- text:SetText(floor(remain+0.5));
- end
- return true;
-end
-
-local function updateIndicators(frame)
- local unit = frame.displayed;
- if not frame:IsShown() or not UnitIsConnected(unit) or UnitIsDeadOrGhost(unit) then
- updating[frame] = nil;
- return;
- end
-
- local needUpdate = false;
- local current = GetTime();
- for _, ind in pairs(frame.inds) do
- if ind.text and ind.text.expires ~= nil then
- needUpdate = remaining(ind.text, ind.text.expires, current) or needUpdate;
- end
- end
- for _, ind in pairs(frame.majors) do
- if ind.text and ind.text.expires ~= nil then
- needUpdate = remaining(ind.text, ind.text.expires, current) or needUpdate;
- end
- end
- if needUpdate then
- CTimerAfter(0.20, updaters[frame]);
- else
- updating[frame] = nil;
- end
-end
-
-local function showInd(ind, expires, current, count, icon)
- local needUpdate = false;
- if ind.icon then
- ind:SetTexture(icon);
- end
- if ind.text then
- needUpdate = remaining(ind.text, expires, current);
- ind.text.expires = expires;
- ind.text:Show();
- end
- if ind.stack and count > 1 then
- ind.stack:SetText(count);
- ind.stack:Show();
- end
- ind:Show();
- return needUpdate;
-end
-
-local function hideInd(ind)
- if ind.text then
- ind.text.expires = nil;
- ind.text:Hide();
- end
- if ind.stack then ind.stack:Hide() end
- ind:Hide();
-end
-
-function M.UpdateAuras(frame, unit)
- local current = GetTime();
- if frame.throttled then
- return;
- elseif frame.prevUpdate and current - frame.prevUpdate < 0.2 then
- frame.throttled = true;
- return CTimerAfter(0.2, frame.throttle);
- end
-
- frame.prevUpdate = current;
- for _, ind in pairs(frame.inds) do
- hideInd(ind);
- end
- local icon, count, expires, id;
- local showInds, needUpdate = false, false;
- local i = 1;
- while true do
- _, icon, count, _, _, expires, _, _, _, id = UnitAura(unit, i, "PLAYER HELPFUL");
- if not id then break end
- local pos = watchedAuras[id];
- if pos then
- needUpdate = showInd(frame.inds[pos], expires, current, count, icon) or needUpdate;
- showInds = true;
- end
- i = i + 1;
- end
-
- if showInds then
- frame.indBase:Show();
- if needUpdate and not updating[frame] then
- updating[frame] = true; -- race?
- -- create a function for updating the indicator
- local func = updaters[frame];
- if not func then
- func = function() updateIndicators(frame) end;
- updaters[frame] = func;
- end
- CTimerAfter(0.20, func);
- end
- else
- frame.indBase:Hide();
- end
-end
-updateAuras = M.UpdateAuras;
-
-function M.UpdateMajorAuras(frame, unit)
- for _, ind in pairs(frame.majors) do
- hideInd(ind);
- end
- if UnitIsDeadOrGhost(unit) then return end
- local name, icon, count, expires, id;
- local showMajors, needUpdate = false, false;
- local majorPos = 1;
- local alert = false; -- color the whole bar
- local current = GetTime();
- local i = 1;
- while true do
- name, icon, count, _, _, expires, _, _, _, id = UnitAura(unit, i, "HARMFUL");
- if not id or majorPos > 3 then break end
- local major = majorAuras[id] or majorAuras[name];
- if major then
- if not major.noicon then
- needUpdate = showInd(frame.majors[majorPos], expires, current, count, icon) or needUpdate;
- end
- if major.bar then alert = major.bar end
- showMajors = true;
- majorPos = majorPos + 1;
- end
- i = i + 1;
- end
-
- if showMajors then
- frame.majorBase:Show();
- if needUpdate and not updating[frame] then
- updating[frame] = true; -- race?
- -- create a function for updating the indicator
- local func = updaters[frame];
- if not func then
- func = function() updateIndicators(frame) end;
- updaters[frame] = func;
- end
- CTimerAfter(0.20, func);
- end
- else
- frame.majorBase:Hide();
- end
-
- return alert;
-end
+++ /dev/null
-## Interface: 80100
-## Title: Oma Raid Frame
-## Version: 1.0
-## Author: schyrio
-## Notes: My raid frames
-
-Settings.lua
-Indicators.lua
-DruidIndicators.lua
-PaladinIndicators.lua
-PriestIndicators.lua
-ShamanIndicators.lua
-Events.lua
-RaidFrame.lua
+++ /dev/null
--- PaladinIndicators.lua
-local indSize = OmaRFSettings.IndSize;
-local rhomb = "Interface\\AddOns\\OmaRF\\images\\rhomb";
-
-local M = {};
-OmaRFIndicators.Class["PALADIN"] = M;
-M.Auras = {
- [53563] = "TOPRIGHT", -- Beacon of Light
- [156910] = "TOPRIGHT", -- Beacon of Faith
- [200025] = "TOPRIGHT", -- Beacon of Virtue
-}
-
-function M.Setup(base)
- local inds = {};
- inds["TOPRIGHT"] = base:CreateTexture(nil, "OVERLAY");
- inds["TOPRIGHT"]:SetPoint("TOPRIGHT", base, "TOPRIGHT");
- inds["TOPRIGHT"]:SetWidth(indSize);
- inds["TOPRIGHT"]:SetHeight(indSize);
- inds["TOPRIGHT"]:SetTexture(rhomb);
- inds["TOPRIGHT"]:SetVertexColor(1, 0, 0);
- inds["TOPRIGHT"]:Hide();
- return inds;
-end
+++ /dev/null
--- PriestIndicators.lua
-local indSize = OmaRFSettings.IndSize;
-local rhomb = "Interface\\AddOns\\OmaRF\\images\\rhomb";
-
-local M = {};
-OmaRFIndicators.Class["PRIEST"] = M;
-M.Auras = {
- [194384] = "BOTTOMRIGHT", -- Atonement
-}
-
-function M.Setup(base)
- local inds = {};
- inds["BOTTOMRIGHT"] = base:CreateTexture(nil, "OVERLAY");
- inds["BOTTOMRIGHT"]:SetPoint("BOTTOMRIGHT", base, "BOTTOMRIGHT");
- inds["BOTTOMRIGHT"]:SetWidth(indSize);
- inds["BOTTOMRIGHT"]:SetHeight(indSize);
- inds["BOTTOMRIGHT"]:SetTexture(rhomb);
- inds["BOTTOMRIGHT"]:SetVertexColor(1, 0.8, 0);
- inds["BOTTOMRIGHT"]:Hide();
- inds["BOTTOMRIGHT"].text = base:CreateFontString(nil, "OVERLAY", "GameFontHighlight");
- inds["BOTTOMRIGHT"].text:SetPoint("BOTTOMRIGHT", inds["BOTTOMRIGHT"], "BOTTOMRIGHT");
- inds["BOTTOMRIGHT"].text:Hide();
- return inds;
-end
+++ /dev/null
--- RaidFrame.lua
-local _;
-local unpack, pairs = unpack, pairs;
-local format = string.format;
-local UnitInRange = UnitInRange;
-local InCombatLockdown = InCombatLockdown;
-local CreateFrame, RegisterStateDriver, RegisterUnitWatch = CreateFrame, RegisterStateDriver, RegisterUnitWatch;
-local CTimerAfter = C_Timer.After;
-local STANDARD_TEXT_FONT = STANDARD_TEXT_FONT;
-local GameTooltip = GameTooltip;
-local GameTooltip_SetDefaultAnchor = GameTooltip_SetDefaultAnchor;
-
-local registerEvents = OmaRFEvents.RegisterEvents;
-local registerUnitEvents = OmaRFEvents.RegisterUnitEvents;
-local unitEvent = OmaRFEvents.UnitEvent;
-local setupIndicators = OmaRFIndicators.SetupIndicators;
-
-local Settings = OmaRFSettings;
-local baseColor = Settings.BaseColor;
-local bgColor = Settings.BgColor;
-local healthColor = Settings.HealthColor;
-local shieldColor = Settings.ShieldColor;
-local shieldhlColor = Settings.ShieldhlColor;
-local healpredColor = Settings.HealpredColor;
-local healabsorbColor = Settings.HealabsorbColor;
-local width, height = Settings.Width, Settings.Height;
--- placeholders with visible values when error happens
-local anchorX, anchorY = 10, 10;
-local attributes = {};
-
-local CFrame = CreateFrame("Frame", "OmaRFFrame", UIParent);
-local inheritedFrames = "SecureUnitButtonTemplate,SecureHandlerStateTemplate";
-local barTexture = "Interface\\AddOns\\OmaRF\\images\\minimalist";
-local class = nil;
-local party = {};
-local raid = {};
-local updaters = {};
-
-local M = {};
-OmaRaidFrame = M;
-
-local function unitUpdate(frame)
- -- there's no in/out of range event, have to check each frame
- -- from FrameXML/CompactUnitFrame.lua
- if frame.updating then
- local inRange, checked = UnitInRange(frame.displayed);
- if checked and not inRange then
- frame:SetAlpha(0.55);
- else
- frame:SetAlpha(1);
- end
- CTimerAfter(0.25, updaters[frame]);
- end
-end
-
-local function frameShow(frame)
- registerEvents(frame);
- registerUnitEvents(frame);
- frame.updating = true;
- CTimerAfter(0.25, updaters[frame]);
- unitEvent(frame, "UPDATE_ALL_BARS");
-end
-
-local function frameHide(frame)
- frame:UnregisterAllEvents();
- frame.updating = nil;
-end
-
-local function showTooltip(secure)
- -- only show raid frame tooltips out of combat
- if not InCombatLockdown() then
- GameTooltip_SetDefaultAnchor(GameTooltip, secure);
- GameTooltip:SetUnit(secure:GetAttribute("unit"));
- end
-end
-
-local function hideTooltip(secure)
- if GameTooltip:IsOwned(secure) then GameTooltip:Hide() end
-end
-
-local function setupFrame(frame, secure, unit)
- secure:SetAttribute("unit", unit);
- frame:SetAttribute("unit", unit);
- frame.unit = unit;
- frame.displayed = unit;
- -- hide frame to get initial frameShow call
- frame:Hide();
- if unit == "player" then frame.vehicle = "vehicle"
- else frame.vehicle = unit.."pet" end
- -- create visuals
- secure:SetWidth(width+2);
- secure:SetHeight(height+2);
- frame:SetWidth(width+2);
- frame:SetHeight(height+2);
- frame.base = frame:CreateTexture(nil, "BACKGROUND");
- frame.base:SetAllPoints();
- frame.base:SetColorTexture(1, 1, 1);
- frame.base:SetVertexColor(unpack(baseColor));
- frame.background = frame:CreateTexture(nil, "BACKGROUND", nil, 1);
- frame.background:SetPoint("TOPLEFT", frame, "TOPLEFT", 1, -1);
- frame.background:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -1, 1);
- frame.background:SetColorTexture(unpack(bgColor));
- frame.health = frame:CreateTexture(nil, "BORDER");
- frame.health:SetTexture(barTexture);
- frame.health:SetPoint("TOPLEFT", frame.background, "TOPLEFT");
- frame.health:SetPoint("BOTTOMLEFT", frame.background, "BOTTOMLEFT");
- frame.health:SetVertexColor(unpack(healthColor));
- frame.shield = frame:CreateTexture(nil, "BORDER");
- frame.shield:SetPoint("TOPLEFT", frame.health, "TOPRIGHT");
- frame.shield:SetPoint("BOTTOMLEFT", frame.health, "BOTTOMRIGHT");
- frame.shield:SetTexture(barTexture);
- frame.shield:SetVertexColor(unpack(shieldColor));
- frame.shield:Hide();
- frame.shieldhl = frame:CreateTexture(nil, "ARTWORK");
- frame.shieldhl:SetPoint("TOPLEFT", frame.background, "TOPRIGHT", -1, 0);
- frame.shieldhl:SetPoint("BOTTOMRIGHT", frame.background, "BOTTOMRIGHT", 1, 0);
- frame.shieldhl:SetColorTexture(unpack(shieldhlColor));
- frame.shieldhl:Hide();
- frame.healpred = frame:CreateTexture(nil, "ARTWORK");
- frame.healpred:SetPoint("TOPLEFT", frame.health, "TOPRIGHT");
- frame.healpred:SetPoint("BOTTOMLEFT", frame.health, "BOTTOMRIGHT");
- frame.healpred:SetColorTexture(unpack(healpredColor));
- frame.healpred:Hide();
- frame.healabsorb = frame:CreateTexture(nil, "ARTWORK");
- frame.healabsorb:SetPoint("TOPRIGHT", frame.health, "TOPRIGHT");
- frame.healabsorb:SetPoint("BOTTOMRIGHT", frame.health, "BOTTOMRIGHT");
- frame.healabsorb:SetColorTexture(unpack(healabsorbColor));
- frame.healabsorb:Hide();
- frame.overlay = frame:CreateTexture(nil, "ARTWORK", nil, 1);
- frame.overlay:SetPoint("TOPLEFT", frame.background, "TOPLEFT");
- frame.overlay:SetPoint("BOTTOMRIGHT", frame.background, "BOTTOMRIGHT");
- frame.overlay:SetColorTexture(1, 1, 1);
- frame.overlay:Hide();
- frame.role = frame:CreateTexture(nil, "ARTWORK", nil, 2);
- frame.role:SetPoint("BOTTOMRIGHT", frame.background, "BOTTOMRIGHT", -2, 2);
- frame.role:SetPoint("TOPLEFT", frame.background, "BOTTOMRIGHT", -14, 14);
- frame.role:SetTexture("Interface\\LFGFRAME\\LFGROLE");
- frame.role:Hide();
- frame.name = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlight");
- frame.name:SetPoint("CENTER", frame.background, "CENTER", 0, 11);
- frame.text = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlight");
- frame.text:SetFont(STANDARD_TEXT_FONT, 13);
- frame.text:SetPoint("CENTER", frame.background, "CENTER", 0, -1);
- frame.text:Hide();
- frame.ready = frame:CreateTexture(nil, "OVERLAY");
- frame.ready:SetPoint("TOPLEFT", frame.background, "BOTTOMLEFT", 0, 14);
- frame.ready:SetPoint("BOTTOMRIGHT", frame.background, "BOTTOMLEFT", 14, 0);
- frame.ready:Hide();
- frame.targeticon = frame:CreateTexture(nil, "OVERLAY");
- frame.targeticon:SetPoint("CENTER", frame.background, "TOP");
- frame.targeticon:SetWidth(12);
- frame.targeticon:SetHeight(12);
- frame.targeticon:SetTexture("Interface\\TARGETINGFRAME\\UI-RaidTargetingIcons");
- frame.targeticon:Hide();
- -- set up indicators
- setupIndicators(frame, class);
- -- set scripts
- frame:SetScript("OnShow", frameShow);
- frame:SetScript("OnHide", frameHide);
- frame:SetScript("OnEvent", unitEvent);
- secure:SetScript("OnEnter", showTooltip);
- secure:SetScript("OnLeave", hideTooltip);
- -- set up periodic updates
- updaters[frame] = function() return unitUpdate(frame) end
- -- set attributes
- secure:RegisterForClicks("AnyDown");
- for attr, val in pairs(attributes) do
- secure:SetAttribute(attr, val);
- end
- -- rest give target and menu
- secure:SetAttribute("*type1", "target");
- secure:SetAttribute("*type2", "togglemenu");
-end
-
--- vehicle toggle from Shadowed Unit Frames
-local vehicletoggle = [=[
- local unit = self:GetAttribute("unit");
- if unit and newstate == "vehicle" and not UnitTargetsVehicleInRaidUI(unit) then
- self:SetAttribute("toggleForVehicle", false);
- else
- self:SetAttribute("toggleForVehicle", true);
- end
-]=]
-
-local function initializeParty(parent)
- local secure = CreateFrame("Button", "OmaPartySecure0", parent, inheritedFrames);
- local frame = CreateFrame("Frame", "OmaParty0", parent);
- local unit = "player";
- secure:SetPoint("TOPLEFT", parent, "TOPLEFT");
- frame:SetPoint("TOPLEFT", parent, "TOPLEFT");
- setupFrame(frame, secure, unit);
- RegisterStateDriver(frame, "visibility", "[@player,group:raid] hide; show");
- RegisterStateDriver(secure, "visibility", "[@player,group:raid] hide; show");
- RegisterStateDriver(secure, "vehicleui", "[vehicleui] vehicle; no");
- secure:SetAttribute("_onstate-vehicleui", vehicletoggle);
- party[0] = {secure=secure, frame=frame};
- for i = 1,4 do
- local secure = CreateFrame("Button", "OmaPartySecure"..i, parent, inheritedFrames);
- local frame = CreateFrame("Frame", "OmaParty"..i, parent);
- local unit = "party"..i;
- secure:SetPoint("TOPLEFT", party[i-1].secure, "TOPRIGHT");
- frame:SetPoint("TOPLEFT", party[i-1].frame, "TOPRIGHT");
- setupFrame(frame, secure, unit);
- local visible = format("[@%s,exists,group:raid] hide; [@%s,exists] show; hide", unit, unit);
- local vehicle = format("[@%s,unithasvehicleui] vehicle; no", unit);
- RegisterStateDriver(frame, "visibility", visible);
- RegisterStateDriver(secure, "visibility", visible);
- RegisterStateDriver(secure, "vehicleui", vehicle);
- secure:SetAttribute("_onstate-vehicleui", vehicletoggle);
- party[i] = {secure=secure, frame=frame};
- end
-end
-
-local function initializeRaid(parent)
- local secure = CreateFrame("Button", "OmaRaidSecure1", parent, inheritedFrames);
- local frame = CreateFrame("Frame", "OmaRaid1", parent);
- local unit = "raid1";
- secure:SetPoint("TOPLEFT", parent, "TOPLEFT");
- frame:SetPoint("TOPLEFT", parent, "TOPLEFT");
- setupFrame(frame, secure, unit);
- RegisterUnitWatch(frame);
- RegisterUnitWatch(secure);
- local vehicle = format("[@%s,unithasvehicleui] vehicle; no", unit);
- RegisterStateDriver(secure, "vehicleui", vehicle);
- secure:SetAttribute("_onstate-vehicleui", vehicletoggle);
- raid[1] = {secure=secure, frame=frame};
- for y = 1,7 do
- local i = y*5+1;
- local secure = CreateFrame("Button", "OmaRaidSecure"..i, parent, inheritedFrames);
- local frame = CreateFrame("Frame", "OmaRaid"..i, parent);
- local unit = "raid"..i;
- secure:SetPoint("TOPLEFT", raid[i-5].secure, "BOTTOMLEFT");
- frame:SetPoint("TOPLEFT", raid[i-5].frame, "BOTTOMLEFT");
- setupFrame(frame, secure, unit);
- RegisterUnitWatch(frame);
- RegisterUnitWatch(secure);
- local vehicle = format("[@%s,unithasvehicleui] vehicle; no", unit);
- RegisterStateDriver(secure, "vehicleui", vehicle);
- secure:SetAttribute("_onstate-vehicleui", vehicletoggle);
- raid[i] = {secure=secure, frame=frame};
- end
- for y = 0,7 do
- for x = 1,4 do
- local i = y*5+x+1;
- local secure = CreateFrame("Button", "OmaRaidSecure"..i, parent, inheritedFrames);
- local frame = CreateFrame("Frame", "OmaRaid"..i, parent);
- local unit = "raid"..i;
- secure:SetPoint("TOPLEFT", raid[i-1].secure, "TOPRIGHT");
- frame:SetPoint("TOPLEFT", raid[i-1].frame, "TOPRIGHT");
- setupFrame(frame, secure, unit);
- RegisterUnitWatch(frame);
- RegisterUnitWatch(secure);
- local vehicle = format("[@%s,unithasvehicleui] vehicle; no", unit);
- RegisterStateDriver(secure, "vehicleui", vehicle);
- secure:SetAttribute("_onstate-vehicleui", vehicletoggle);
- raid[i] = {secure=secure, frame=frame};
- end
- end
-end
-
-local function initializeFocus(parent)
- local secure = CreateFrame("Button", "OmaFocusSecure", parent, inheritedFrames);
- local frame = CreateFrame("Frame", "OmaFocus", parent);
- local unit = "focus";
- secure:SetPoint("BOTTOMLEFT", parent, "TOPLEFT");
- frame:SetPoint("BOTTOMLEFT", parent, "TOPLEFT");
- setupFrame(frame, secure, unit);
- RegisterUnitWatch(frame);
- RegisterUnitWatch(secure);
- local vehicle = format("[@%s,unithasvehicleui] vehicle; no", unit);
- RegisterStateDriver(secure, "vehicleui", vehicle);
- secure:SetAttribute("_onstate-vehicleui", vehicletoggle);
-end
-
-local function initialize()
- _, class = UnitClass("player");
- anchorX, anchorY = Settings.Character.AnchorX, Settings.Character.AnchorY;
- attributes = Settings.Character.Clickheal;
- CFrame:SetFrameStrata("LOW");
- CFrame:SetPoint("CENTER", nil, "CENTER", anchorX, anchorY);
- CFrame:SetHeight((height+2)*8);
- CFrame:SetWidth((width+2)*5);
- initializeParty(CFrame);
- initializeRaid(CFrame);
- initializeFocus(CFrame);
-end
-
--- hiding Blizzard frames somewhat based on ShadowedUF
-local function hideBlizzardRaidButton()
- if InCombatLockdown() then return end
- local manager = CompactRaidFrameManager;
- -- remove show and unlock buttons from manager
- manager.displayFrame.hiddenModeToggle:Hide();
- manager.displayFrame.lockedModeToggle:Hide();
-end
-
-local hidden = false;
-local function hideBlizzardRaid()
- if hidden then return end
- hidden = true;
- local function hide()
- if InCombatLockdown() then return end
- CompactRaidFrameContainer:Hide();
- local shown = CompactRaidFrameManager_GetSetting("IsShown");
- if shown and shown ~= "0" then
- CompactRaidFrameManager_SetSetting("IsShown", "0");
- end
- end
-
- CompactRaidFrameContainer:UnregisterAllEvents();
- -- there may still be frames created at startup getting events
- for i=1,MAX_RAID_MEMBERS do
- local frame = _G["CompactRaidFrame"..i];
- if not frame then break end
- frame:UnregisterAllEvents();
- end
- hooksecurefunc("CompactRaidFrameManager_UpdateShown", hide);
- hide();
- CompactRaidFrameContainer:HookScript("OnShow", hide);
- hooksecurefunc("CompactRaidFrameManager_UpdateOptionsFlowContainer", hideBlizzardRaidButton);
- hideBlizzardRaidButton();
-
- -- hide focus frame
- for _, frame in pairs({FocusFrame, FocusFrameToT, FocusFrameSpellBar}) do
- frame:UnregisterAllEvents();
- if frame.healthbar then frame.healthbar:UnregisterAllEvents() end
- if frame.manabar then frame.manabar:UnregisterAllEvents() end
- if frame.spellbar then frame.spellbar:UnregisterAllEvents() end
- if frame.powerBarAlt then frame.powerBarAlt:UnregisterAllEvents() end
- frame:Hide();
- end
-end
-
-CFrame:RegisterEvent("PLAYER_LOGIN");
-CFrame:RegisterEvent("PLAYER_REGEN_ENABLED");
-CFrame:SetScript("OnEvent", function(self, event, addon)
- if event == "PLAYER_REGEN_ENABLED" then
- -- if CompactRaidFrameManager_UpdateOptionsFlowContainer was called in combat
- -- couldn't hide the button
- hideBlizzardRaidButton();
- elseif event == "PLAYER_LOGIN" then
- OmaRFLoadChar();
- hideBlizzardRaid();
- initialize();
- end
-end);
+++ /dev/null
--- Settings.lua
-local rawget = rawget;
-
--- configurable settings
--- character specific settings
-local charDefaults = {
- AnchorX = 0,
- AnchorY = -330,
- Clickheal = {},
-};
-local chars = {
- ["Sylvanas"] = {
- ["Vildana"] = {
- AnchorX = 0,
- AnchorY = -330,
- Clickheal = {
- ["type1"] = "spell",
- ["type2"] = "spell",
- ["shift-type1"] = "spell",
- ["shift-type2"] = "spell",
- ["ctrl-type1"] = "spell",
- ["alt-type2"] = "spell",
- ["alt-shift-type1"] = "spell",
- ["alt-shift-type2"] = "spell",
- ["spell1"] = "Holy Light",
- ["spell2"] = "Bestow Faith",
- ["shift-spell1"] = "Flash of Light",
- ["shift-spell2"] = "Light of the Martyr",
- ["ctrl-spell1"] = "Cleanse",
- ["alt-spell2"] = "Lay on Hands",
- ["alt-shift-spell1"] = "Beacon of Light",
- ["alt-shift-spell2"] = "Beacon of Faith",
- },
- },
- },
- ["Stormreaver"] = {
- ["Vildan"] = {
- AnchorX = 0,
- AnchorY = -330,
- Clickheal = {
- ["type1"] = "spell",
- ["type2"] = "spell",
- ["shift-type1"] = "spell",
- ["shift-type2"] = "spell",
- ["ctrl-type1"] = "macro",
- ["alt-type2"] = "spell",
- ["alt-shift-type1"] = "spell",
- ["alt-shift-type2"] = "spell",
- ["spell1"] = "Holy Light",
- ["spell2"] = "Bestow Faith",
- ["shift-spell1"] = "Flash of Light",
- ["shift-spell2"] = "Light of the Martyr",
- ["ctrl-macro1"] = "Cleansing",
- ["alt-spell2"] = "Lay on Hands",
- ["alt-shift-spell1"] = "Beacon of Light",
- ["alt-shift-spell2"] = "Beacon of Faith",
- },
- },
- ["Gedren"] = {
- AnchorX = 0,
- AnchorY = -330,
- Clickheal = {
- ["type1"] = "spell",
- ["type2"] = "spell",
- ["shift-type1"] = "spell",
- ["shift-type2"] = "spell",
- ["ctrl-type1"] = "spell",
- ["alt-type2"] = "spell",
- ["spell1"] = "Healing Touch",
- ["spell2"] = "Lifebloom",
- ["shift-spell1"] = "Regrowth",
- ["shift-spell2"] = "Swiftmend",
- ["ctrl-spell1"] = "Nature's Cure",
- ["alt-spell2"] = "Rebirth",
- },
- },
- ["Gazden"] = {
- AnchorX = 0,
- AnchorY = -330,
- Clickheal = {
- ["type1"] = "spell",
- ["type2"] = "spell",
- ["shift-type1"] = "spell",
- ["ctrl-type1"] = "spell",
- ["spell1"] = "Healing Wave",
- ["spell2"] = "Chain Heal",
- ["shift-spell1"] = "Healing Surge",
- ["ctrl-spell1"] = "Purify Spirit",
- },
- },
- ["Gilden"] = {
- AnchorX = 0,
- AnchorY = -330,
- Clickheal = {
- ["type1"] = "spell",
- ["type2"] = "spell",
- ["shift-type1"] = "spell",
- ["shift-type2"] = "spell",
- ["ctrl-type1"] = "spell",
- ["spell1"] = "Power Word: Shield",
- ["spell2"] = "Penance",
- ["shift-spell1"] = "Shadow Mend",
- ["shift-spell2"] = "Shadow Covenant",
- ["ctrl-spell1"] = "Purify",
- },
- },
- ["Gedran"] = {
- AnchorX = 0,
- AnchorY = -330,
- Clickheal = {
- ["type1"] = "spell",
- --["type2"] = "macro",
- ["spell1"] = "Soulstone",
- --["macrotext2"] = "/tar [@mouseover]\n/click ExtraActionButton1\n/targetlasttarget",
- },
- },
- },
-};
-
--- account-wide settings
-local settings = {
- Width = 80,
- Height = 40,
- IndSize = 14,
- BaseColor = {0, 0, 0},
- BgColor = {0.7, 0.7, 0.7},
- HealthColor = {0.3, 0.3, 0.3},
- ShieldColor = {0, 0.7, 1},
- ShieldhlColor = {0.5, 0.8, 1},
- HealpredColor = {0.5, 0.6, 0.5},
- HealabsorbColor = {0.1, 0.1, 0.1},
- OverlayColorDispel = {1, 0.5, 0, 0.5},
- OverlayColorCharm = {0.8, 0, 1, 0.5},
- OverlayColorAlert = {1, 0, 0, 0.5},
- MajorAuras = {
- -- LEGION --
- -- Antorus
- ["Psychic Assault"] = {bar=false},
- ["Everburning Flames"] = {bar=false},
- ["Corrupt"] = {bar=false},
- ["Sleep Canister"] = {bar=false},
- ["Misery"] = {bar=true},
- ["Necrotic Embrace"] = {bar=false},
- ["Fulminating Pulse"] = {bar=false},
- ["Chilled Blood"] = {bar=false},
- ["Soulblight"] = {bar=false},
- ["Soulburst"] = {bar=false},
- ["Soulbomb"] = {bar=false},
- ["Shock Grenade"] = {bar=false},
- ["Acidic Web"] = {bar=false},
- ["Hungering Gloom"] = {bar=true},
- ["Empowered Pulse Grenade"] = {bar=false},
- ["Caustic Slime"] = {bar=false},
- ["Cloying Shadows"] = {bar=false},
- ["Conflagration"] = {bar=false},
- -- Trial of Valor
- ["Unholy Reckoning"] = {bar=false},
- -- Nighthold
- ["Carrion Plague"] = {bar=false},
- ["Soul Corrosion"] = {bar=false},
- -- Proving Grounds for testing
- ["Aqua Bomb"] = {bar=false},
- [25771] = {bar=false}, -- Forbearance (Paladin)
- -- Mythic+
- [209858] = {bar=false}, -- Necrotic Rot
- [240559] = {bar=false}, -- Grievous Wound
- [240443] = {bar=false}, -- Burst
- ["Dessication"] = {bar=false},
- ["Spit Gold"] = {bar=false},
- ["Severing Axe"] = {bar=false},
- ["Galvanize"] = {bar=false},
- ["Neurotoxin"] = {bar=false},
- [257908] = {bar=false}, -- Oiled Blade
- [268391] = {bar=false}, -- Mental Assault
- [272571] = {bar=false}, -- Choking Waters
- [268008] = {bar=false}, -- Snake Charm
- [260741] = {bar=false}, -- Jagged Nettles
- [280605] = {bar=false}, -- Brain Freeze
- [268797] = {bar=false}, -- Transmute to Goo
- [265889] = {bar=false}, -- Torch Strike
- [266209] = {bar=false}, -- Wicked Frenzy
- [258323] = {bar=false}, -- Infected Wound
- [262513] = {bar=false}, -- Azerite Heartseeker
- -- BATTLE FOR AZEROTH --
- -- Uldir
- ["Omega Vector"] = {bar={1, 0.5, 0.5, 0.5}, noicon=true},
- ["Gestate"] = {bar=false},
- ["Mutagenic Pathogen"] = {bar=false},
- ["Lingering Infection"] = {bar=false},
- ["Malodorous Miasma"] = {bar=false},
- ["Deadly Disease"] = {bar=false},
- ["Putrid Paroxysm"] = {bar=false},
- ["Plasma Discharge"] = {bar=false},
- ["Deathwish"] = {bar=false},
- [265360] = {bar=false}, -- Roiling Deceit
- [265662] = {bar=false}, -- Corruptor's Pact
- ["Void Lash"] = {bar=false},
- ["Enlarged Heart"] = {bar=false},
- ["Unleashed Shadow"] = {bar=false},
- ["Absorbed in Darkness"] = {bar=false},
- [264382] = {bar=false}, -- Eye Beam TODO
- ["Imminent Ruin"] = {bar=false},
- ["Shadow Barrage"] = {bar=false},
- },
-};
-OmaRFSettings = settings;
-
-function OmaRFLoadChar()
- local name, realm = UnitFullName("player");
- if chars[realm] and chars[realm][name] then
- settings.Character = chars[realm][name];
- else
- settings.Character = charDefaults;
- end
-end
+++ /dev/null
--- PaladinIndicators.lua
-local indSize = OmaRFSettings.IndSize;
-local rhomb = "Interface\\AddOns\\OmaRF\\images\\rhomb";
-
-local M = {};
-OmaRFIndicators.Class["SHAMAN"] = M;
-M.Auras = {
- [61295] = "TOPRIGHT", -- Riptide
-}
-
-function M.Setup(base)
- local inds = {};
- inds["TOPRIGHT"] = base:CreateTexture(nil, "OVERLAY");
- inds["TOPRIGHT"]:SetPoint("TOPRIGHT", base, "TOPRIGHT");
- inds["TOPRIGHT"]:SetWidth(indSize);
- inds["TOPRIGHT"]:SetHeight(indSize);
- inds["TOPRIGHT"]:SetTexture(rhomb);
- inds["TOPRIGHT"]:SetVertexColor(0, 0.5, 1);
- inds["TOPRIGHT"]:Hide();
- inds["TOPRIGHT"].text = base:CreateFontString(nil, "OVERLAY", "GameFontHighlight");
- inds["TOPRIGHT"].text:SetPoint("BOTTOMRIGHT", inds["TOPRIGHT"], "BOTTOMRIGHT");
- inds["TOPRIGHT"].text:Hide();
- return inds;
-end