Commit 8333f01f authored by Ivaria's avatar Ivaria
Browse files

Reintegrate the BFA branch into trunk

parent dad33128
## Interface: 70300
## Interface: 80000
## Title: VuhDo ['vu:du:]
## Author: Iza@Gilneas, humfras, Ivaria@Hyjal
## Version: 3.92
## Version: 3.93
## Notes: Raid Frames providing click-heal functionality, buff and debuff control, main tank management and much more
## SavedVariablesPerCharacter: VUHDO_CONFIG, VUHDO_PANEL_SETUP, VUHDO_SPELL_ASSIGNMENTS, VUHDO_HOSTILE_SPELL_ASSIGNMENTS, VUHDO_MM_SETTINGS, VUHDO_PLAYER_TARGETS, VUHDO_MAINTANK_NAMES, VUHDO_BUFF_SETTINGS, VUHDO_POWER_TYPE_COLORS, VUHDO_SPELLS_KEYBOARD, VUHDO_SPELL_CONFIG, VUHDO_BUFF_ORDER, VUHDO_SPEC_LAYOUTS, VUHDO_GROUP_SIZE, VUHDO_RAID, VUHDO_INDICATOR_CONFIG
## SavedVariables: VUHDO_DEFAULT_LAYOUT, VUHDO_DEFAULT_PROFILE, VUHDO_PROFILES, VUHDO_MANUAL_ROLES, VUHDO_SPELL_LAYOUTS, VUHDO_USER_CLASS_COLORS, VUHDO_DEBUFF_BLACKLIST, VUHDO_BOUQUETS, VUHDO_COMBAT_LOG_TRACE, VUHDO_GLOBAL_CONFIG, VUHDO_DEBUG
......
......@@ -407,12 +407,12 @@ function VUHDO_showDebuffTooltip(aDebuffIcon)
GameTooltip:SetOwner(aDebuffIcon, "ANCHOR_RIGHT", 0, 0);
end
if aDebuffIcon["debuffInfo"] then
if aDebuffIcon["debuffCnt"] then
if not GameTooltip:IsForbidden() then
if aDebuffIcon["isBuff"] then
GameTooltip:SetUnitBuff(tButton["raidid"], aDebuffIcon["debuffInfo"]);
GameTooltip:SetUnitBuff(tButton["raidid"], aDebuffIcon["debuffCnt"]);
else
GameTooltip:SetUnitDebuff(tButton["raidid"], aDebuffIcon["debuffInfo"]);
GameTooltip:SetUnitDebuff(tButton["raidid"], aDebuffIcon["debuffCnt"]);
end
end
end
......
......@@ -45,8 +45,8 @@ LoadAddOn("FuBarPlugin-3.0");
--
function VUHDO_initAddonMessages()
if not IsAddonMessagePrefixRegistered("CTRA") then RegisterAddonMessagePrefix("CTRA"); end
if not IsAddonMessagePrefixRegistered(VUHDO_COMMS_PREFIX) then RegisterAddonMessagePrefix(VUHDO_COMMS_PREFIX); end
if not C_ChatInfo.IsAddonMessagePrefixRegistered("CTRA") then C_ChatInfo.RegisterAddonMessagePrefix("CTRA"); end
if not C_ChatInfo.IsAddonMessagePrefixRegistered(VUHDO_COMMS_PREFIX) then C_ChatInfo.RegisterAddonMessagePrefix(VUHDO_COMMS_PREFIX); end
end
......
--
local UnitBuff = UnitBuff;
local UnitPower = UnitPower;
local UnitGetIncomingHeals = UnitGetIncomingHeals;
local pairs = pairs;
......@@ -205,9 +204,7 @@ local VUHDO_AOE_SPELLS = VUHDO_AOE_SPELLS;
--
local tAltPower;
local function VUHDO_getPlayerHealingMod()
if "PRIEST" == VUHDO_PLAYER_CLASS then
return 1 + (0.15 * (UnitBuff("player", VUHDO_SPELL_ID.CHAKRA_SANCTUARY) and 1 or 0));
elseif "PALADIN" == VUHDO_PLAYER_CLASS then
if "PALADIN" == VUHDO_PLAYER_CLASS then
tAltPower = UnitPower("player", 9);
if (tAltPower or 6) ~= 6 then
return 1 / (6 - tAltPower);
......
......@@ -157,7 +157,7 @@ local tSlot;
local tOldest;
local tTimestamp;
local tFrame, tIconInfo;
function VUHDO_addDebuffIcon(aUnit, anIcon, aName, anExpiry, aStacks, aDuration, anIsBuff, aSpellId)
function VUHDO_addDebuffIcon(aUnit, anIcon, aName, anExpiry, aStacks, aDuration, anIsBuff, aSpellId, aCnt)
if not VUHDO_DEBUFF_ICONS[aUnit] then
VUHDO_DEBUFF_ICONS[aUnit] = { };
end
......@@ -180,7 +180,7 @@ function VUHDO_addDebuffIcon(aUnit, anIcon, aName, anExpiry, aStacks, aDuration,
for _, tButton in pairs(VUHDO_getUnitButtonsSafe(aUnit)) do
VUHDO_animateDebuffIcon(tButton, tIconInfo, GetTime(), tSlot + 39, true, aUnit);
tFrame = VUHDO_getBarIconFrame(tButton, tSlot + 39);
tFrame["debuffInfo"], tFrame["isBuff"] = aName, anIsBuff;
tFrame["debuffInfo"], tFrame["isBuff"], tFrame["debuffCnt"] = aName, anIsBuff, aCnt;
end
tIconInfo[2] = GetTime();
......
......@@ -531,7 +531,7 @@ local function VUHDO_updateHots(aUnit, anInfo)
for tCnt = 1, huge do
if not tDebuffOffset then
tBuffName, _, tBuffIcon, tStacks, _, tDuration, tExpiry, tCaster, _, _, tSpellId = UnitBuff(aUnit, tCnt);
tBuffName, tBuffIcon, tStacks, _, tDuration, tExpiry, tCaster, _, _, tSpellId = UnitBuff(aUnit, tCnt);
if not tBuffIcon then
tDebuffOffset = tCnt - 1;
......@@ -539,7 +539,7 @@ local function VUHDO_updateHots(aUnit, anInfo)
end
if tDebuffOffset then -- Achtung kein elseif
tBuffName, _, tBuffIcon, tStacks, _, tDuration, tExpiry, tCaster, _, _, tSpellId = UnitDebuff(aUnit, tCnt - tDebuffOffset);
tBuffName, tBuffIcon, tStacks, _, tDuration, tExpiry, tCaster, _, _, tSpellId = UnitDebuff(aUnit, tCnt - tDebuffOffset);
if not tBuffIcon then
break;
......
......@@ -1180,7 +1180,7 @@ end
--
local tShieldLeft;
local function VUHDO_overflowCountValidator(anInfo, _)
tShieldLeft = select(17, UnitDebuff(anInfo["unit"], VUHDO_SPELL_ID.DEBUFF_OVERFLOW)) or 0;
tShieldLeft = select(16, VUHDO_unitAura(anInfo["unit"], VUHDO_SPELL_ID.DEBUFF_OVERFLOW)) or 0;
return tShieldLeft >= 1000, nil, -1, floor(tShieldLeft * 0.001 + 0.5), -1;
end
......
......@@ -21,64 +21,29 @@ VUHDO_GROUPS_BUFFS = {
local GROUP_ATK_POWER = {
VUHDO_SPELL_ID.BUFF_HORN_OF_WINTER,
VUHDO_SPELL_ID.BUFF_BATTLE_SHOUT,
VUHDO_SPELL_ID.BUFF_TRUESHOT_AURA
};
--[[local GROUP_ATK_SPEED = {
]] -- not needed yet
local GROUP_SPELL_POWER = {
VUHDO_SPELL_ID.BUFF_ARCANE_BRILLIANCE,
VUHDO_SPELL_ID.BUFF_DALARAN_BRILLIANCE,
VUHDO_SPELL_ID.STILL_WATER,
VUHDO_SPELL_ID.BUFF_DARK_INTENT,
VUHDO_SPELL_ID.BUFF_LONE_WOLF_SERPENT,
};
local GROUP_HASTE = { };
local GROUP_CRIT = {
VUHDO_SPELL_ID.LEADER_OF_THE_PACK,
VUHDO_SPELL_ID.TERRIFYING_ROAR,
VUHDO_SPELL_ID.FURIOUS_HOWL,
VUHDO_SPELL_ID.STILL_WATER,
VUHDO_SPELL_ID.BUFF_ARCANE_BRILLIANCE,
VUHDO_SPELL_ID.BUFF_DALARAN_BRILLIANCE,
VUHDO_SPELL_ID.BUFF_LEGACY_OF_THE_WHITE_TIGER,
VUHDO_SPELL_ID.BUFF_LONE_WOLF_RAPTOR,
};
local GROUP_CRIT = { };
local GROUP_MASTERY = {
VUHDO_SPELL_ID.BUFF_BLESSING_OF_MIGHT,
VUHDO_SPELL_ID.GRACE_OF_AIR,
VUHDO_SPELL_ID.SPIRIT_BEAST_BLESSING,
VUHDO_SPELL_ID.ROAR_OF_COURAGE,
VUHDO_SPELL_ID.BUFF_LONE_WOLF_CAT,
};
local GROUP_MASTERY = { };
local GROUP_STATS = { };
local GROUP_STATS = {
VUHDO_SPELL_ID.BUFF_BLESSING_OF_THE_KINGS,
VUHDO_SPELL_ID.BUFF_MARK_OF_THE_WILD,
VUHDO_SPELL_ID.BUFF_LEGACY_OF_THE_EMPEROR,
VUHDO_SPELL_ID.BUFF_LEGACY_OF_THE_WHITE_TIGER,
VUHDO_SPELL_ID.EMBRACE_OF_THE_SHALE_SPIDER,
VUHDO_SPELL_ID.BUFF_LONE_WOLF_PRIMATES,
}
local GROUP_SPELL_POWER = {
VUHDO_SPELL_ID.BUFF_ARCANE_BRILLIANCE,
};
local GROUP_STAM = {
VUHDO_SPELL_ID.BUFF_POWER_WORD_FORTITUDE,
VUHDO_SPELL_ID.BLOOD_PACT,
VUHDO_SPELL_ID.BUFF_COMMANDING_SHOUT,
VUHDO_SPELL_ID.QIRAJI_FORTITUDE,
VUHDO_SPELL_ID.BUFF_LONE_WOLF_BEAR,
};
local GROUP_HASTE = {
VUHDO_SPELL_ID.BUFF_LONE_WOLF_HYENA,
};
--
......@@ -89,10 +54,7 @@ VUHDO_CLASS_BUFFS = {
-- Priest
["PRIEST"] = {
[VUHDO_SPELL_ID.BUFF_POWER_WORD_FORTITUDE] = {
{ VUHDO_SPELL_ID.BUFF_POWER_WORD_FORTITUDE, VUHDO_BUFF_TARGET_RAID, GROUP_STAM },
},
[VUHDO_SPELL_ID.BUFF_FEAR_WARD] = {
{ VUHDO_SPELL_ID.BUFF_FEAR_WARD, VUHDO_BUFF_TARGET_UNIQUE },
{ VUHDO_SPELL_ID.BUFF_POWER_WORD_FORTITUDE, VUHDO_BUFF_TARGET_SELF, GROUP_STAM },
},
[VUHDO_SPELL_ID.BUFF_SHADOWFIEND] = {
{ VUHDO_SPELL_ID.BUFF_SHADOWFIEND, VUHDO_BUFF_TARGET_HOSTILE },
......@@ -109,35 +71,44 @@ VUHDO_CLASS_BUFFS = {
[VUHDO_SPELL_ID.PAIN_SUPPRESSION] = {
{ VUHDO_SPELL_ID.PAIN_SUPPRESSION, VUHDO_BUFF_TARGET_UNIQUE },
},
[VUHDO_SPELL_ID.BUFFC_CHAKRA] = {
{ VUHDO_SPELL_ID.CHAKRA_CHASITISE, VUHDO_BUFF_TARGET_SELF },
{ VUHDO_SPELL_ID.CHAKRA_SANCTUARY, VUHDO_BUFF_TARGET_SELF },
{ VUHDO_SPELL_ID.CHAKRA_SERENITY, VUHDO_BUFF_TARGET_SELF },
},
},
-- Shaman
["SHAMAN"] = {
[VUHDO_I18N_BUFFC_FIRE_TOTEM] = {
{ VUHDO_SPELL_ID.BUFF_SEARING_TOTEM, VUHDO_BUFF_TARGET_TOTEM },
[VUHDO_SPELL_ID.BUFF_FIRE_ELEMENTAL_TOTEM] = {
{ VUHDO_SPELL_ID.BUFF_FIRE_ELEMENTAL_TOTEM, VUHDO_BUFF_TARGET_TOTEM },
},
[VUHDO_SPELL_ID.BUFF_MAGMA_TOTEM] = {
{ VUHDO_SPELL_ID.BUFF_MAGMA_TOTEM, VUHDO_BUFF_TARGET_TOTEM },
},
[VUHDO_I18N_BUFFC_AIR_TOTEM] = {
[VUHDO_SPELL_ID.BUFF_GROUNDING_TOTEM] = {
{ VUHDO_SPELL_ID.BUFF_GROUNDING_TOTEM, VUHDO_BUFF_TARGET_TOTEM },
},
[VUHDO_SPELL_ID.BUFF_CAPACITOR_TOTEM] = {
{ VUHDO_SPELL_ID.BUFF_CAPACITOR_TOTEM, VUHDO_BUFF_TARGET_TOTEM },
},
[VUHDO_SPELL_ID.BUFF_SPIRIT_LINK_TOTEM] = {
{ VUHDO_SPELL_ID.BUFF_SPIRIT_LINK_TOTEM, VUHDO_BUFF_TARGET_TOTEM },
},
[VUHDO_SPELL_ID.BUFF_WINDWALK_TOTEM] = {
{ VUHDO_SPELL_ID.BUFF_WINDWALK_TOTEM, VUHDO_BUFF_TARGET_TOTEM },
},
[VUHDO_I18N_BUFFC_EARTH_TOTEM] = {
[VUHDO_SPELL_ID.BUFF_EARTHBIND_TOTEM] = {
{ VUHDO_SPELL_ID.BUFF_EARTHBIND_TOTEM, VUHDO_BUFF_TARGET_TOTEM },
},
[VUHDO_SPELL_ID.BUFF_EARTH_ELEMENTAL_TOTEM] = {
{ VUHDO_SPELL_ID.BUFF_EARTH_ELEMENTAL_TOTEM, VUHDO_BUFF_TARGET_TOTEM },
},
[VUHDO_SPELL_ID.BUFF_EARTHGRAB_TOTEM] = {
{ VUHDO_SPELL_ID.BUFF_EARTHGRAB_TOTEM, VUHDO_BUFF_TARGET_TOTEM },
{ VUHDO_SPELL_ID.BUFF_STONE_BULWARK_TOTEM, VUHDO_BUFF_TARGET_TOTEM },
},
[VUHDO_SPELL_ID.BUFF_TREMOR_TOTEM] = {
{ VUHDO_SPELL_ID.BUFF_TREMOR_TOTEM, VUHDO_BUFF_TARGET_TOTEM },
},
[VUHDO_I18N_BUFFC_WATER_TOTEM] = {
[VUHDO_SPELL_ID.BUFF_HEALING_STREAM_TOTEM] = {
{ VUHDO_SPELL_ID.BUFF_HEALING_STREAM_TOTEM, VUHDO_BUFF_TARGET_TOTEM },
},
[VUHDO_SPELL_ID.BUFF_HEALING_TIDE_TOTEM] = {
{ VUHDO_SPELL_ID.BUFF_HEALING_TIDE_TOTEM, VUHDO_BUFF_TARGET_TOTEM },
},
[VUHDO_SPELL_ID.BUFF_HEROISM] = {
......@@ -149,67 +120,43 @@ VUHDO_CLASS_BUFFS = {
[VUHDO_SPELL_ID.BUFF_EARTH_SHIELD] ={
{ VUHDO_SPELL_ID.BUFF_EARTH_SHIELD, VUHDO_BUFF_TARGET_UNIQUE },
},
[VUHDO_I18N_BUFFC_SHIELDS] = {
[VUHDO_SPELL_ID.BUFF_LIGHTNING_SHIELD] = {
{ VUHDO_SPELL_ID.BUFF_LIGHTNING_SHIELD, VUHDO_BUFF_TARGET_SELF },
{ VUHDO_SPELL_ID.BUFF_WATER_SHIELD, VUHDO_BUFF_TARGET_SELF },
},
[VUHDO_SPELL_ID.BUFF_ANCESTRAL_SWIFTNESS] = { -- 11
{ VUHDO_SPELL_ID.BUFF_ANCESTRAL_SWIFTNESS, VUHDO_BUFF_TARGET_SELF },
},
},
["PALADIN"] = {
[VUHDO_I18N_BUFFC_BLESSING] = {
{ VUHDO_SPELL_ID.BUFF_BLESSING_OF_THE_KINGS, VUHDO_BUFF_TARGET_RAID, GROUP_STATS },
{ VUHDO_SPELL_ID.BUFF_BLESSING_OF_MIGHT, VUHDO_BUFF_TARGET_RAID, GROUP_MASTERY },
},
[VUHDO_I18N_BUFFC_SEAL] = {
{ VUHDO_SPELL_ID.BUFF_SEAL_OF_RIGHTEOUSNESS, VUHDO_BUFF_TARGET_STANCE },
{ VUHDO_SPELL_ID.BUFF_SEAL_OF_JUSTICE, VUHDO_BUFF_TARGET_STANCE },
{ VUHDO_SPELL_ID.BUFF_SEAL_OF_INSIGHT, VUHDO_BUFF_TARGET_STANCE },
{ VUHDO_SPELL_ID.BUFF_SEAL_OF_TRUTH, VUHDO_BUFF_TARGET_STANCE },
{ VUHDO_SPELL_ID.BUFF_SEAL_OF_COMMAND, VUHDO_BUFF_TARGET_STANCE },
},
[VUHDO_SPELL_ID.BUFF_BEACON_OF_FAITH] = {
{ VUHDO_SPELL_ID.BUFF_BEACON_OF_FAITH, VUHDO_BUFF_TARGET_UNIQUE },
},
[VUHDO_SPELL_ID.BUFF_BEACON_OF_LIGHT] = {
{ VUHDO_SPELL_ID.BUFF_BEACON_OF_LIGHT, VUHDO_BUFF_TARGET_UNIQUE },
},
[VUHDO_SPELL_ID.BUFF_RIGHTEOUS_FURY] = {
{ VUHDO_SPELL_ID.BUFF_RIGHTEOUS_FURY, VUHDO_BUFF_TARGET_SELF },
[VUHDO_SPELL_ID.BUFF_GREATER_BLESSING_OF_KINGS] = {
{ VUHDO_SPELL_ID.BUFF_GREATER_BLESSING_OF_KINGS, VUHDO_BUFF_TARGET_UNIQUE },
},
[VUHDO_SPELL_ID.BUFF_GREATER_BLESSING_OF_WISDOM] = {
{ VUHDO_SPELL_ID.BUFF_GREATER_BLESSING_OF_WISDOM, VUHDO_BUFF_TARGET_UNIQUE },
},
},
["DRUID"] = {
[VUHDO_SPELL_ID.BUFF_MARK_OF_THE_WILD] = {
{ VUHDO_SPELL_ID.BUFF_MARK_OF_THE_WILD, VUHDO_BUFF_TARGET_RAID, GROUP_STATS },
},
["DRUID"] = {
-- TODO: what would be useful for Druids?
},
["WARLOCK"] = {
[VUHDO_SPELL_ID.BUFF_DARK_INTENT] = {
{ VUHDO_SPELL_ID.BUFF_DARK_INTENT, VUHDO_BUFF_TARGET_RAID, GROUP_SPELL_POWER },
},
[VUHDO_SPELL_ID.BUFF_GRIMOIR_OF_SACRIFICE] = {
{ VUHDO_SPELL_ID.BUFF_GRIMOIR_OF_SACRIFICE, VUHDO_BUFF_TARGET_SELF },
[VUHDO_SPELL_ID.BUFF_GRIMOIRE_OF_SACRIFICE] = {
{ VUHDO_SPELL_ID.BUFF_GRIMOIRE_OF_SACRIFICE, VUHDO_BUFF_TARGET_SELF },
},
},
["MAGE"] = {
[VUHDO_SPELL_ID.BUFF_ARCANE_BRILLIANCE] = {
{ VUHDO_SPELL_ID.BUFF_ARCANE_BRILLIANCE, VUHDO_BUFF_TARGET_RAID, GROUP_SPELL_POWER, GROUP_CRIT },
{ VUHDO_SPELL_ID.BUFF_DALARAN_BRILLIANCE, VUHDO_BUFF_TARGET_RAID, GROUP_SPELL_POWER, GROUP_CRIT },
{ VUHDO_SPELL_ID.BUFF_ARCANE_BRILLIANCE, VUHDO_BUFF_TARGET_SELF, GROUP_SPELL_POWER },
},
[VUHDO_SPELL_ID.BUFF_ICE_BLOCK] = {
{ VUHDO_SPELL_ID.BUFF_ICE_BLOCK, VUHDO_BUFF_TARGET_SELF },
},
[VUHDO_I18N_BUFFC_ARMOR_MAGE] = {
{ VUHDO_SPELL_ID.BUFF_FROST_ARMOR, VUHDO_BUFF_TARGET_SELF },
{ VUHDO_SPELL_ID.BUFF_MOLTEN_ARMOR, VUHDO_BUFF_TARGET_SELF },
{ VUHDO_SPELL_ID.BUFF_MAGE_ARMOR, VUHDO_BUFF_TARGET_SELF },
},
[VUHDO_SPELL_ID.BUFF_COMBUSTION] = {
{ VUHDO_SPELL_ID.BUFF_COMBUSTION, VUHDO_BUFF_TARGET_SELF },
},
......@@ -222,10 +169,8 @@ VUHDO_CLASS_BUFFS = {
[VUHDO_SPELL_ID.ICE_BARRIER] = {
{ VUHDO_SPELL_ID.ICE_BARRIER, VUHDO_BUFF_TARGET_SELF },
},
[VUHDO_SPELL_ID.INCANTERS_WARD] = {
{ VUHDO_SPELL_ID.INCANTERS_WARD, VUHDO_BUFF_TARGET_SELF },
--[[{ VUHDO_SPELL_ID.INVOCATION, VUHDO_BUFF_TARGET_SELF },
{ VUHDO_SPELL_ID.RUNE_OF_POWER, VUHDO_BUFF_TARGET_SELF },]]
[VUHDO_SPELL_ID.RUNE_OF_POWER] = {
{ VUHDO_SPELL_ID.RUNE_OF_POWER, VUHDO_BUFF_TARGET_SELF },
},
[VUHDO_SPELL_ID.TEMPORAL_SHIELD] = {
{ VUHDO_SPELL_ID.TEMPORAL_SHIELD, VUHDO_BUFF_TARGET_SELF },
......@@ -233,45 +178,36 @@ VUHDO_CLASS_BUFFS = {
},
["DEATHKNIGHT"] = {
[VUHDO_SPELL_ID.BUFF_HORN_OF_WINTER] = {
{ VUHDO_SPELL_ID.BUFF_HORN_OF_WINTER , VUHDO_BUFF_TARGET_SELF, GROUP_ATK_POWER },
},
[VUHDO_SPELL_ID.BUFF_BONE_SHIELD] = {
{ VUHDO_SPELL_ID.BUFF_BONE_SHIELD, VUHDO_BUFF_TARGET_SELF },
},
[VUHDO_BUFFC_PRESENCE] = {
{ VUHDO_SPELL_ID.BUFF_BLOOD_PRESENCE, VUHDO_BUFF_TARGET_SELF },
{ VUHDO_SPELL_ID.BUFF_FROST_PRESENCE, VUHDO_BUFF_TARGET_SELF },
{ VUHDO_SPELL_ID.BUFF_UNHOLY_PRESENCE, VUHDO_BUFF_TARGET_SELF },
},
-- TODO: what would be useful for DKs?
},
["WARRIOR"] = {
[VUHDO_I18N_BUFFC_SHOUT] = {
[VUHDO_SPELL_ID.BUFF_BATTLE_SHOUT] = {
{ VUHDO_SPELL_ID.BUFF_BATTLE_SHOUT, VUHDO_BUFF_TARGET_SELF, GROUP_ATK_POWER },
{ VUHDO_SPELL_ID.BUFF_COMMANDING_SHOUT, VUHDO_BUFF_TARGET_SELF, GROUP_STAM },
},
[VUHDO_SPELL_ID.BUFF_VIGILANCE] = {
{ VUHDO_SPELL_ID.BUFF_VIGILANCE, VUHDO_BUFF_TARGET_UNIQUE },
[VUHDO_SPELL_ID.BUFF_COMMANDING_SHOUT] = {
{ VUHDO_SPELL_ID.BUFF_COMMANDING_SHOUT, VUHDO_BUFF_TARGET_OWN_GROUP },
},
},
["HUNTER"] = {
[VUHDO_SPELL_ID.BUFF_TRUESHOT_AURA] = {
{ VUHDO_SPELL_ID.BUFF_TRUESHOT_AURA, VUHDO_BUFF_TARGET_SELF, GROUP_ATK_POWER },
[VUHDO_SPELL_ID.MISDIRECTION] = {
{ VUHDO_SPELL_ID.MISDIRECTION, VUHDO_BUFF_TARGET_UNIQUE },
},
[VUHDO_I18N_BUFFC_ASPECT] = {
{ VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_PACK, VUHDO_BUFF_TARGET_SELF },
{ VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_FOX, VUHDO_BUFF_TARGET_SELF },
[VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_CEETAH] = {
{ VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_CEETAH, VUHDO_BUFF_TARGET_SELF },
},
[VUHDO_SPELL_ID.BUFF_LONE_WOLF] = {
{ VUHDO_SPELL_ID.BUFF_LONE_WOLF_CAT, VUHDO_BUFF_TARGET_RAID, GROUP_MASTERY },
{ VUHDO_SPELL_ID.BUFF_LONE_WOLF_BEAR, VUHDO_BUFF_TARGET_RAID, GROUP_STAM },
{ VUHDO_SPELL_ID.BUFF_LONE_WOLF_RAPTOR, VUHDO_BUFF_TARGET_RAID, GROUP_CRIT },
{ VUHDO_SPELL_ID.BUFF_LONE_WOLF_HYENA, VUHDO_BUFF_TARGET_RAID, GROUP_HASTE },
{ VUHDO_SPELL_ID.BUFF_LONE_WOLF_SERPENT, VUHDO_BUFF_TARGET_RAID, GROUP_SPELL_POWER },
{ VUHDO_SPELL_ID.BUFF_LONE_WOLF_PRIMATES, VUHDO_BUFF_TARGET_RAID, GROUP_STATS },
[VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_CHAMELEON] = {
{ VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_CHAMELEON, VUHDO_BUFF_TARGET_SELF },
},
[VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_EAGLE] = {
{ VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_EAGLE, VUHDO_BUFF_TARGET_SELF },
},
[VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_TURTLE] = {
{ VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_TURTLE, VUHDO_BUFF_TARGET_SELF },
},
[VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_WILD] = {
{ VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_WILD, VUHDO_BUFF_TARGET_SELF },
},
},
......@@ -282,7 +218,6 @@ VUHDO_CLASS_BUFFS = {
[VUHDO_I18N_LETHAL_POISONS] = {
{ VUHDO_SPELL_ID.BUFF_DEADLY_POISON, VUHDO_BUFF_TARGET_SELF },
{ VUHDO_SPELL_ID.BUFF_WOUND_POISON, VUHDO_BUFF_TARGET_SELF },
-- { VUHDO_SPELL_ID.BUFF_INSTANT_POISON, VUHDO_BUFF_TARGET_SELF },
},
[VUHDO_I18N_NON_LETHAL_POISONS] = {
{ VUHDO_SPELL_ID.BUFF_CRIPPLING_POISON, VUHDO_BUFF_TARGET_SELF },
......@@ -291,17 +226,7 @@ VUHDO_CLASS_BUFFS = {
},
["MONK"] = {
[VUHDO_I18N_BUFFC_STANCE] = {
{ VUHDO_SPELL_ID.BUFF_STANCE_OF_THE_FIERCE_TIGER, VUHDO_BUFF_TARGET_STANCE },
{ VUHDO_SPELL_ID.BUFF_STANCE_OF_THE_STURDY_OX, VUHDO_BUFF_TARGET_STANCE },
{ VUHDO_SPELL_ID.BUFF_STANCE_OF_THE_WISE_SERPENT, VUHDO_BUFF_TARGET_STANCE },
},
[VUHDO_SPELL_ID.BUFF_LEGACY_OF_THE_EMPEROR] = {
{ VUHDO_SPELL_ID.BUFF_LEGACY_OF_THE_EMPEROR, VUHDO_BUFF_TARGET_RAID, GROUP_STATS },
},
[VUHDO_SPELL_ID.BUFF_LEGACY_OF_THE_WHITE_TIGER] = {
{ VUHDO_SPELL_ID.BUFF_LEGACY_OF_THE_WHITE_TIGER, VUHDO_BUFF_TARGET_RAID, GROUP_STATS, GROUP_CRIT },
},
-- TODO: What would be useful for Monks?
},
["DEMONHUNTER"] = {
......
......@@ -19,9 +19,7 @@ local VUHDO_LAST_COLORS = { };
--
VUHDO_BUFFS = { };
local VUHDO_BUFFS = VUHDO_BUFFS;
VUHDO_BUFF_SETTINGS = { };
--local VUHDO_BUFF_SETTINGS = VUHDO_BUFF_SETTINGS;
local VUHDO_CLICKED_BUFF = nil;
local VUHDO_CLICKED_TARGET = nil;
......@@ -45,7 +43,6 @@ local VUHDO_isInBattleground;
local VUHDO_brightenTextColor;
local VUHDO_isConfigDemoUsers;
local UnitBuff = UnitBuff;
local GetTotemInfo = GetTotemInfo;
local table = table;
local strsub = strsub;
......@@ -362,7 +359,7 @@ end
--
function VUHDO_initBuffsFromSpellBook()
local tSpellName, tSpellId, tIcon;
local tParentSpellName, tChildSpellName, tSpellId, tIcon;
-- Patch 6.0.2 broke the spell book for a certain class of spells which 'transform' into other spells
-- eg. Lightning Shield becomes Water Shield, Seal of Command becomes Seal of Truth
......@@ -371,18 +368,26 @@ function VUHDO_initBuffsFromSpellBook()
-- eg. GetSpellBookItemInfo("Lightning Shield") will return a spell ID only for Lightning Shield,
-- however when a Resto Shaman calls GetSpellInfo("Lightning Shield") it returns the correct
-- information for the derived spell Water Shield
VUHDO_BUFFS = { };
for _, tCateg in pairs(VUHDO_getPlayerClassBuffs()) do
for _, tCategSpells in pairs(tCateg) do
tSpellName = tCategSpells[1];
_, tSpellId = GetSpellBookItemInfo(tSpellName);
tParentSpellName = tCategSpells[1];
_, tSpellId = GetSpellBookItemInfo(tParentSpellName);
if tSpellId then
tSpellName, _, tIcon, _, _, _, tSpellId = GetSpellInfo(tSpellName);
VUHDO_BUFFS[tSpellName] = {
tChildSpellName, _, tIcon, _, _, _, tSpellId = GetSpellInfo(tParentSpellName);
VUHDO_BUFFS[tChildSpellName] = {
["icon"] = tIcon,
["id"] = tSpellId
};
VUHDO_CLASS_BUFFS_BY_TARGET_TYPE[tCategSpells[2]][tSpellName] = true;
if tChildSpellName ~= tParentSpellName then
VUHDO_BUFFS[tParentSpellName] = {
["icon"] = tIcon,
["id"] = tSpellId
};
end
VUHDO_CLASS_BUFFS_BY_TARGET_TYPE[tCategSpells[2]][tParentSpellName] = true;
end
end
end
......@@ -497,7 +502,7 @@ local function VUHDO_getMissingBuffs(aBuffInfo, someUnits, aCategSpec)
tInRange = (IsSpellInRange(aBuffInfo[1], tUnit) == 1) or tInfo["baseRange"];
tIsAvailable = tInfo["connected"] and not tInfo["dead"];
_, _, tTexture, tCount, _, tStart, tRest, _, _ = UnitBuff(tUnit, aBuffInfo[1]);
_, tTexture, tCount, _, tStart, tRest, _, _ = VUHDO_unitAura(tUnit, aBuffInfo[1]);
if not tTexture then
for tCnt = 3, 10 do
......@@ -505,7 +510,7 @@ local function VUHDO_getMissingBuffs(aBuffInfo, someUnits, aCategSpec)
if not tBuffGroup then break; end
for _, tSameGroupBuff in pairs(tBuffGroup) do
_, _, tTexture, tCount, _, tStart, tRest, _, _ = UnitBuff(tUnit, tSameGroupBuff);
_, tTexture, tCount, _, tStart, tRest, _, _ = VUHDO_unitAura(tUnit, tSameGroupBuff);
if tTexture then break; end
end
......
......@@ -7,10 +7,7 @@ local VUHDO_CLUSTER_BLACKLIST = { };
local VUHDO_RAID = {};
local sqrt = sqrt;
local GetPlayerMapPosition = GetPlayerMapPosition;
local CheckInteractDistance = CheckInteractDistance;
local GetMapInfo = GetMapInfo;
local GetCurrentMapDungeonLevel = GetCurrentMapDungeonLevel;
local WorldMapFrame = WorldMapFrame;
local GetMouseFocus = GetMouseFocus;
local pairs = pairs;
......@@ -152,14 +149,14 @@ local function VUHDO_determineDistanceBetween(aUnit, anotherUnit)
tIsValid = true;
-- as of patch 7.1 GetPlayerMapPosition() returns zero/nil inside certain zones
tX1, tY1 = GetPlayerMapPosition(aUnit);
tX1, tY1 = VUHDO_getUnitMapPosition(aUnit);
if not tX1 or (tX1 + tY1 <= 0) then
VUHDO_CLUSTER_BLACKLIST[aUnit] = true;
tIsValid = false;
end
-- as of patch 7.1 GetPlayerMapPosition() returns zero/nil inside certain zones
tX2, tY2 = GetPlayerMapPosition(anotherUnit);
tX2, tY2 = VUHDO_getUnitMapPosition(anotherUnit);
if not tX2 or (tX2 + tY2 <= 0) then
VUHDO_CLUSTER_BLACKLIST[anotherUnit] = true;
tIsValid = false;
......@@ -200,11 +197,12 @@ local tUnit, tInfo;
local tAnotherUnit, tAnotherInfo;
local tX, tY, tDeltaX, tDeltaY;
local tMaxX, tMaxY;
local tMapFileName, tDungeonLevels, tCurrLevel;
local tMapId, tMap, tMapFileName, tDungeonLevels, tCurrLevel;
local tCurrentZone;
local tNumRaid;
local tIndex = 0;
local tNumSamples, tNumIterations;
local tIsInInstance;
local VuhDoDummyStub = {
["GetName"] = function() return ""; end,
["IsForbidden"] = function() return false; end,
......@@ -212,6 +210,13 @@ local VuhDoDummyStub = {
function VUHDO_updateAllClusters()
-- as of patch 7.1 APIs related to unit position/distance do not function inside instances
tIsInInstance, _ = IsInInstance();
if tIsInInstance then
return;
end
-- @UGLY Carbonite workaround
local tFocusFrame = GetMouseFocus() or VuhDoDummyStub;
......@@ -226,14 +231,27 @@ function VUHDO_updateAllClusters()
return;
end
tX, tY = GetPlayerMapPosition("player");
-- TODO: is this needed anymore given 8.0.1 map changes?
--[[tX, tY = VUHDO_getUnitMapPosition("player");
if (tX or 0) + (tY or 0) <= 0 then
-- FIXME: calling WorldMapFrame:SetMapID produces strange results as of build 26567
VUHDO_setMapToCurrentZone();
end]]
-- In 8.0.1 Blizzard introduced new C_Map APIs
-- each map level has a unique map ID now
-- tMapFileName will now represent simply the map name
-- tCurrLevel will now represent the unique map ID
-- tDungeonLevels will still group all map IDs under the same map name (e.g. old map levels)
tMapId = C_Map.GetBestMapForUnit("player");
if tMapId then
tMap = C_Map.GetMapInfo(tMapId);
end
tMapFileName = (GetMapInfo()) or "*";
tCurrLevel = GetCurrentMapDungeonLevel() or 0;
tCurrentZone = tMapFileName .. tCurrLevel;
tMapFileName = tMap and tMap["name"] or "*";
tCurrLevel = tMap and tMap["mapID"] or 0;
tCurrentZone = tMapFileName .. tCurrLevel;
if VUHDO_LAST_ZONE ~= tCurrentZone then
VUHDO_clusterBuilderNewZone(VUHDO_LAST_ZONE, tCurrentZone);
......@@ -302,7 +320,6 @@ function VUHDO_updateAllClusters()
tDungeonLevels = VUHDO_MAP_FIX_WIDTH[tMapFileName];
if tDungeonLevels then
tMaxX = tDungeonLevels[tCurrLevel];
--VUHDO_Msg(GetCurrentMapDungeonLevel());
end
-- Otherwise get from heuristic database
......@@ -447,7 +464,7 @@ local function VUHDO_getRealPosition(aUnit)
if VUHDO_CLUSTER_BLACKLIST[aUnit] then return nil; end
if VUHDO_COORD_DELTAS[aUnit] then
tXCoord, tYCoord = GetPlayerMapPosition(aUnit);
tXCoord, tYCoord = VUHDO_getUnitMapPosition(aUnit);
if tXCoord and tYCoord then
return tXCoord * VUHDO_MAP_WIDTH, tYCoord * VUHDO_MAP_WIDTH / 1.5;
end
......@@ -587,3 +604,32 @@ function VUHDO_getUnitsInLinearCluster(aUnit, anArray, aRange, aMaxTargets, anIs
anArray[tCnt] = tDestCluster[tCnt];
end
end
--
local tVector2d;
local tMapId;
function VUHDO_getUnitMapPosition(aUnit)
if not aUnit then
return;
end
-- 8.0.1 build 26567 added restrictions (must be in player's party) on which unit IDs can be queried
tMapId = C_Map.GetBestMapForUnit(aUnit) or C_Map.GetBestMapForUnit("player");
if not tMapId then
return;
end
tVector2d = C_Map.GetPlayerMapPosition(tMapId, aUnit);
if tVector2d then
return tVector2d:GetXY();
else
return nil, nil;
end
end
......@@ -370,7 +370,6 @@ VUHDO_HEALING_HOTS = {
[VUHDO_SPELL_ID.GIFT_OF_THE_NAARU] = true,
-- Paladin
[VUHDO_SPELL_ID.BUFF_BEACON_OF_FAITH] = true,
[VUHDO_SPELL_ID.BUFF_BEACON_OF_INSIGHT] = true,
[VUHDO_SPELL_ID.BUFF_BEACON_OF_LIGHT] = true,
[VUHDO_SPELL_ID.FLASH_OF_LIGHT] = true,
[VUHDO_SPELL_ID.BUFF_STAY_OF_EXECUTION] = true,
......
......@@ -19,13 +19,9 @@ VUHDO_SPELL_ID.ANCESTRAL_SPIRIT = VUHDO_getSpellInfo(2008);
VUHDO_SPELL_ID.ANCESTRAL_VISION = VUHDO_getSpellInfo(212048);
VUHDO_SPELL_ID.ATONEMENT = VUHDO_getSpellInfo(194384);
VUHDO_SPELL_ID.BINDING_HEAL = VUHDO_getSpellInfo(32546);
VUHDO_SPELL_ID.BLOOD_PACT = VUHDO_getSpellInfo(166928);
VUHDO_SPELL_ID.CALL_OF_THE_ELEMENTS = VUHDO_getSpellInfo(66842);
VUHDO_SPELL_ID.CENARION_WARD = VUHDO_getSpellInfo(102352);
VUHDO_SPELL_ID.CHAIN_HEAL = VUHDO_getSpellInfo(1064);
VUHDO_SPELL_ID.CHAKRA_CHASITISE = VUHDO_getSpellInfo(81209);
VUHDO_SPELL_ID.CHAKRA_SANCTUARY = VUHDO_getSpellInfo(81206);
VUHDO_SPELL_ID.CHAKRA_SERENITY = VUHDO_getSpellInfo(81208);
VUHDO_SPELL_ID.CIRCLE_OF_HEALING = VUHDO_getSpellInfo(34861);
VUHDO_SPELL_ID.CLARITY_OF_WILL = VUHDO_getSpellInfo(152118);
VUHDO_SPELL_ID.CLEANSE_SPIRIT = VUHDO_getSpellInfo(51886);
......@@ -45,7 +41,6 @@ VUHDO_SPELL_ID.FROSTBOLT_VOLLEY = VUHDO_getSpellInfo(72905);
VUHDO_SPELL_ID.GIFT_OF_THE_NAARU = VUHDO_getSpellInfo(59547);
VUHDO_SPELL_ID.GENESIS = VUHDO_getSpellInfo(162359);
VUHDO_SPELL_ID.GERMINATION = VUHDO_getSpellInfo(155777);
VUHDO_SPELL_ID.GRACE = VUHDO_getSpellInfo(47517);
VUHDO_SPELL_ID.GUARDIAN_SPIRIT = VUHDO_getSpellInfo(47788);
VUHDO_SPELL_ID.HEAL = VUHDO_getSpellInfo(2060);
VUHDO_SPELL_ID.HEALING_TOUCH = VUHDO_getSpellInfo(5185);
......@@ -57,9 +52,7 @@ VUHDO_SPELL_ID.HOLY_SHOCK = VUHDO_getSpellInfo(20473);
VUHDO_SPELL_ID.HOLY_WORD_CHASTISE = VUHDO_getSpellInfo(88625); -- Segenswort: Zchtigung
VUHDO_SPELL_ID.HOLY_WORD_SANCTUARY = VUHDO_getSpellInfo(88686); -- Segenswort: Refugium
VUHDO_SPELL_ID.ICE_BARRIER = VUHDO_getSpellInfo(11426);
VUHDO_SPELL_ID.INCANTERS_WARD = VUHDO_getSpellInfo(1463);
VUHDO_SPELL_ID.INNERVATE = VUHDO_getSpellInfo(29166);
VUHDO_SPELL_ID.INVOCATION = VUHDO_getSpellInfo(114003);
VUHDO_SPELL_ID.LAY_ON_HANDS = VUHDO_getSpellInfo(633);
VUHDO_SPELL_ID.LIFEBLOOM = VUHDO_getSpellInfo(33763);
VUHDO_SPELL_ID.LIGHT_OF_DAWN = VUHDO_getSpellInfo(85222);
......@@ -104,7 +97,7 @@ VUHDO_SPELL_ID.SOULSTONE = VUHDO_getSpellInfo(20707);
VUHDO_SPELL_ID.SPELLSTEAL = VUHDO_getSpellInfo(30449);
VUHDO_SPELL_ID.SPRING_BLOSSOMS = VUHDO_getSpellInfo(207386);
VUHDO_SPELL_ID.SWIFTMEND = VUHDO_getSpellInfo(18562);
VUHDO_SPELL_ID.TEMPORAL_SHIELD = VUHDO_getSpellInfo(115610);
VUHDO_SPELL_ID.TEMPORAL_SHIELD = VUHDO_getSpellInfo(198111);
VUHDO_SPELL_ID.TIDAL_WAVES = VUHDO_getSpellInfo(51564);
VUHDO_SPELL_ID.TRAIL_OF_LIGHT = VUHDO_getSpellInfo(200128);
VUHDO_SPELL_ID.TRANQUILITY = VUHDO_getSpellInfo(740);
......@@ -130,18 +123,12 @@ VUHDO_SPELL_ID.ESSENCE_FONT = VUHDO_getSpellInfo(191840);
-- 3000 MASTERY (=>BOM)
VUHDO_SPELL_ID.GRACE_OF_AIR = VUHDO_getSpellInfo(116956);
VUHDO_SPELL_ID.SPIRIT_BEAST_BLESSING = VUHDO_getSpellInfo(128997);
VUHDO_SPELL_ID.ROAR_OF_COURAGE = VUHDO_getSpellInfo(93435);
-- 5% Stats (=>BOK, Motw, LotE)
VUHDO_SPELL_ID.EMBRACE_OF_THE_SHALE_SPIDER = VUHDO_getSpellInfo(90363);
-- 10% Stam (PWS, BloodPakt, Commanding shout)
VUHDO_SPELL_ID.QIRAJI_FORTITUDE = VUHDO_getSpellInfo(90364);
-- 10% Spell Power (Arcane, Dalaran)
VUHDO_SPELL_ID.STILL_WATER = VUHDO_getSpellInfo(126309);
-- 10% Atk speed (Unholy Aura)
--[[VUHDO_SPELL_ID.CRACKLING_HOWL = VUHDO_getSpellInfo(128432);
......@@ -158,12 +145,6 @@ VUHDO_SPELL_ID.UNLEASH_RAGE = VUHDO_getSpellInfo(30809);]]
elemental oath]]
-- 5% Crit (=> Legacy of the white Tiger)
VUHDO_SPELL_ID.LEADER_OF_THE_PACK = VUHDO_getSpellInfo(17007);
VUHDO_SPELL_ID.TERRIFYING_ROAR = VUHDO_getSpellInfo(90309);
--still water
VUHDO_SPELL_ID.FURIOUS_HOWL = VUHDO_getSpellInfo(24604);
--arcane brilliance
--Legacy of the white tiger
------------------
......@@ -172,7 +153,6 @@ VUHDO_SPELL_ID.FURIOUS_HOWL = VUHDO_getSpellInfo(24604);
-- Priest
VUHDO_SPELL_ID.BUFFC_CHAKRA = VUHDO_getSpellInfo(126172); -- MOP?
--------
-- Buffs
......@@ -181,7 +161,6 @@ VUHDO_SPELL_ID.BUFFC_CHAKRA = VUHDO_getSpellInfo(126172); -- MOP?
-- Priest
VUHDO_SPELL_ID.BUFF_POWER_WORD_FORTITUDE = VUHDO_getSpellInfo(13864);
VUHDO_SPELL_ID.BUFF_FEAR_WARD = VUHDO_getSpellInfo(6346);
VUHDO_SPELL_ID.BUFF_SHADOWFIEND = VUHDO_getSpellInfo(34433);
VUHDO_SPELL_ID.BUFF_POWER_INFUSION = VUHDO_getSpellInfo(10060);
VUHDO_SPELL_ID.BUFF_VAMPIRIC_EMBRACE = VUHDO_getSpellInfo(15286);
......@@ -190,52 +169,35 @@ VUHDO_SPELL_ID.BUFF_LEVITATE = VUHDO_getSpellInfo(1706);
-- Shaman
-- Fire
VUHDO_SPELL_ID.BUFF_SEARING_TOTEM = VUHDO_getSpellInfo(3599);
VUHDO_SPELL_ID.BUFF_FIRE_ELEMENTAL_TOTEM = VUHDO_getSpellInfo(2894);
VUHDO_SPELL_ID.BUFF_FIRE_ELEMENTAL_TOTEM = VUHDO_getSpellInfo(198067);
VUHDO_SPELL_ID.BUFF_MAGMA_TOTEM = VUHDO_getSpellInfo(8190);
-- Air
VUHDO_SPELL_ID.BUFF_WINDWALK_TOTEM = VUHDO_getSpellInfo(108273);
VUHDO_SPELL_ID.BUFF_CAPACITOR_TOTEM = VUHDO_getSpellInfo(108269);
VUHDO_SPELL_ID.BUFF_GROUNDING_TOTEM = VUHDO_getSpellInfo(8177);
VUHDO_SPELL_ID.BUFF_CAPACITOR_TOTEM = VUHDO_getSpellInfo(192058);
VUHDO_SPELL_ID.BUFF_GROUNDING_TOTEM = VUHDO_getSpellInfo(204336);
VUHDO_SPELL_ID.BUFF_SPIRIT_LINK_TOTEM = VUHDO_getSpellInfo(98008);
-- Earth
VUHDO_SPELL_ID.BUFF_STONE_BULWARK_TOTEM = VUHDO_getSpellInfo(108270);
VUHDO_SPELL_ID.BUFF_EARTHGRAB_TOTEM = VUHDO_getSpellInfo(51485);
VUHDO_SPELL_ID.BUFF_EARTHBIND_TOTEM = VUHDO_getSpellInfo(2484);
VUHDO_SPELL_ID.BUFF_EARTH_ELEMENTAL_TOTEM = VUHDO_getSpellInfo(2062);
VUHDO_SPELL_ID.BUFF_EARTH_ELEMENTAL_TOTEM = VUHDO_getSpellInfo(198103);
VUHDO_SPELL_ID.BUFF_TREMOR_TOTEM = VUHDO_getSpellInfo(8143);
-- Water
VUHDO_SPELL_ID.BUFF_HEALING_TIDE_TOTEM = VUHDO_getSpellInfo(108280);
VUHDO_SPELL_ID.BUFF_HEALING_STREAM_TOTEM = VUHDO_getSpellInfo(5394);
VUHDO_SPELL_ID.BUFF_HEROISM = VUHDO_getSpellInfo(32182);
VUHDO_SPELL_ID.BUFF_BLOODLUST = VUHDO_getSpellInfo(2825);
VUHDO_SPELL_ID.BUFF_EARTH_SHIELD = VUHDO_getSpellInfo(204288);
VUHDO_SPELL_ID.BUFF_LIGHTNING_SHIELD = VUHDO_getSpellInfo(324);
VUHDO_SPELL_ID.BUFF_WATER_SHIELD = VUHDO_getSpellInfo(52127);
VUHDO_SPELL_ID.BUFF_ANCESTRAL_SWIFTNESS = VUHDO_getSpellInfo(16188);
VUHDO_SPELL_ID.BUFF_LIGHTNING_SHIELD = VUHDO_getSpellInfo(192106);
-- Paladin
VUHDO_SPELL_ID.BUFF_BLESSING_OF_MIGHT = VUHDO_getSpellInfo(19740);
VUHDO_SPELL_ID.BUFF_BLESSING_OF_THE_KINGS = VUHDO_getSpellInfo(20217);
VUHDO_SPELL_ID.BUFF_RIGHTEOUS_FURY = VUHDO_getSpellInfo(25780);
VUHDO_SPELL_ID.BUFF_SEAL_OF_JUSTICE = VUHDO_getSpellInfo(20164);
VUHDO_SPELL_ID.BUFF_SEAL_OF_INSIGHT = VUHDO_getSpellInfo(20165);
VUHDO_SPELL_ID.BUFF_SEAL_OF_TRUTH = VUHDO_getSpellInfo(31801);
VUHDO_SPELL_ID.BUFF_SEAL_OF_RIGHTEOUSNESS = VUHDO_getSpellInfo(20154);
VUHDO_SPELL_ID.BUFF_SEAL_OF_COMMAND = VUHDO_getSpellInfo(105361);
VUHDO_SPELL_ID.BUFF_BEACON_OF_FAITH = VUHDO_getSpellInfo(156910);
VUHDO_SPELL_ID.BUFF_BEACON_OF_INSIGHT = VUHDO_getSpellInfo(157007);
VUHDO_SPELL_ID.BUFF_BEACON_OF_LIGHT = VUHDO_getSpellInfo(53563);
VUHDO_SPELL_ID.BUFF_STAY_OF_EXECUTION = VUHDO_getSpellInfo(114917);
VUHDO_SPELL_ID.BUFF_GREATER_BLESSING_OF_KINGS = VUHDO_getSpellInfo(203538);
VUHDO_SPELL_ID.BUFF_GREATER_BLESSING_OF_WISDOM = VUHDO_getSpellInfo(203539);
-- Druid
......@@ -243,74 +205,51 @@ VUHDO_SPELL_ID.BUFF_MARK_OF_THE_WILD = VUHDO_getSpellInfo(1126);
-- Warlock
VUHDO_SPELL_ID.BUFF_DARK_INTENT = VUHDO_getSpellInfo(109773);
VUHDO_SPELL_ID.BUFF_GRIMOIR_OF_SACRIFICE = VUHDO_getSpellInfo(108503);
VUHDO_SPELL_ID.BUFF_GRIMOIRE_OF_SACRIFICE = VUHDO_getSpellInfo(108503);
-- Mage
VUHDO_SPELL_ID.BUFF_ARCANE_BRILLIANCE = VUHDO_getSpellInfo(1459);
VUHDO_SPELL_ID.BUFF_ARCANE_INTELLECT = VUHDO_getSpellInfo(36880);
VUHDO_SPELL_ID.BUFF_DALARAN_BRILLIANCE = VUHDO_getSpellInfo(61316);
VUHDO_SPELL_ID.BUFF_ICE_BLOCK = VUHDO_getSpellInfo(45438);
VUHDO_SPELL_ID.BUFF_MOLTEN_ARMOR = VUHDO_getSpellInfo(30482);
VUHDO_SPELL_ID.BUFF_FROST_ARMOR = VUHDO_getSpellInfo(7302);
VUHDO_SPELL_ID.BUFF_MAGE_ARMOR = VUHDO_getSpellInfo(6117);
VUHDO_SPELL_ID.BUFF_COMBUSTION = VUHDO_getSpellInfo(11129);
VUHDO_SPELL_ID.BUFF_COMBUSTION = VUHDO_getSpellInfo(190319);
VUHDO_SPELL_ID.BUFF_SLOW_FALL = VUHDO_getSpellInfo(130);
VUHDO_SPELL_ID.BUFF_INVISIBILITY = VUHDO_getSpellInfo(66);
-- Death Knight
VUHDO_SPELL_ID.BUFF_HORN_OF_WINTER = VUHDO_getSpellInfo(57330);
VUHDO_SPELL_ID.BUFF_BONE_SHIELD = VUHDO_getSpellInfo(49222);
VUHDO_SPELL_ID.BUFF_BLOOD_PRESENCE = VUHDO_getSpellInfo(48263);
VUHDO_SPELL_ID.BUFF_FROST_PRESENCE = VUHDO_getSpellInfo(48266);
VUHDO_SPELL_ID.BUFF_UNHOLY_PRESENCE = VUHDO_getSpellInfo(48265);
-- Warrior
VUHDO_SPELL_ID.BUFF_BATTLE_SHOUT = VUHDO_getSpellInfo(6673);
VUHDO_SPELL_ID.BUFF_COMMANDING_SHOUT = VUHDO_getSpellInfo(469);
VUHDO_SPELL_ID.BUFF_COMMANDING_SHOUT = VUHDO_getSpellInfo(97462);
VUHDO_SPELL_ID.BUFF_VIGILANCE = VUHDO_getSpellInfo(114030); -- MOP
-- Hunter
VUHDO_SPELL_ID.BUFF_TRUESHOT_AURA = VUHDO_getSpellInfo(19506);
VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_CEETAH = VUHDO_getSpellInfo(186257);
VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_CHAMELEON = VUHDO_getSpellInfo(61648);
VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_EAGLE = VUHDO_getSpellInfo(186289);
VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_TURTLE = VUHDO_getSpellInfo(186265);
VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_WILD = VUHDO_getSpellInfo(193530);
VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_PACK = VUHDO_getSpellInfo(13159);
VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_FOX = VUHDO_getSpellInfo(172106)
VUHDO_SPELL_ID.BUFF_ASPECT_OF_THE_CEETAH = VUHDO_getSpellInfo(5118);
VUHDO_SPELL_ID.BUFF_LONE_WOLF = VUHDO_getSpellInfo(155228);
VUHDO_SPELL_ID.BUFF_LONE_WOLF_CAT = VUHDO_getSpellInfo(160198);
VUHDO_SPELL_ID.BUFF_LONE_WOLF_BEAR = VUHDO_getSpellInfo(160199);
VUHDO_SPELL_ID.BUFF_LONE_WOLF_RAPTOR = VUHDO_getSpellInfo(160200);
VUHDO_SPELL_ID.BUFF_LONE_WOLF_HYENA = VUHDO_getSpellInfo(160203);
VUHDO_SPELL_ID.BUFF_LONE_WOLF_SERPENT = VUHDO_getSpellInfo(160205);
VUHDO_SPELL_ID.BUFF_LONE_WOLF_PRIMATES = VUHDO_getSpellInfo(160206);
-- Rogue
VUHDO_SPELL_ID.BUFF_TRICKS_OF_THE_TRADE = VUHDO_getSpellInfo(57934);
VUHDO_SPELL_ID.BUFF_DEADLY_POISON = VUHDO_getSpellInfo(2823);
VUHDO_SPELL_ID.BUFF_WOUND_POISON = VUHDO_getSpellInfo(8679);
VUHDO_SPELL_ID.BUFF_INSTANT_POISON = VUHDO_getSpellInfo(157584);
VUHDO_SPELL_ID.BUFF_CRIPPLING_POISON = VUHDO_getSpellInfo(3408);
VUHDO_SPELL_ID.BUFF_LEECHING_POISON = VUHDO_getSpellInfo(108211);
VUHDO_SPELL_ID.BUFF_INTERNAL_BLEEDING = VUHDO_getSpellInfo(154904);
-- Monk
VUHDO_SPELL_ID.BUFF_STANCE_OF_THE_FIERCE_TIGER = VUHDO_getSpellInfo(103985);
VUHDO_SPELL_ID.BUFF_STANCE_OF_THE_STURDY_OX = VUHDO_getSpellInfo(115069);
VUHDO_SPELL_ID.BUFF_STANCE_OF_THE_WISE_SERPENT = VUHDO_getSpellInfo(115070);
VUHDO_SPELL_ID.BUFF_LEGACY_OF_THE_EMPEROR = VUHDO_getSpellInfo(115921);
VUHDO_SPELL_ID.BUFF_LEGACY_OF_THE_WHITE_TIGER = VUHDO_getSpellInfo(116781);
-- 6.2 Healer Legendary Ring
VUHDO_SPELL_ID.BUFF_ETHERALUS = VUHDO_getSpellInfo(187805);
-- "Global Cooldown" spell
VUHDO_SPELL_ID.GLOBAL_COOLDOWN = 61304;
......
......@@ -3,7 +3,7 @@
--
function VUHDO_sendCtraMessage(aMessage)
SendAddonMessage("CTRA", aMessage, VUHDO_getAddOnDistribution());
C_ChatInfo.SendAddonMessage("CTRA", aMessage, VUHDO_getAddOnDistribution());
end
......
......@@ -202,15 +202,15 @@ end
local tIconIndex = 0;
local tIconArray;
local tIconArrayDispenser = { };
local function VUHDO_getOrCreateIconArray(anIcon, aExpiry, aStacks, aDuration, anIsBuff, aSpellId)
local function VUHDO_getOrCreateIconArray(anIcon, aExpiry, aStacks, aDuration, anIsBuff, aSpellId, aCnt)
tIconIndex = tIconIndex + 1;
if #tIconArrayDispenser < tIconIndex then
tIconArray = { anIcon, aExpiry, aStacks, aDuration, anIsBuff, aSpellId };
tIconArray = { anIcon, aExpiry, aStacks, aDuration, anIsBuff, aSpellId, aCnt };
tIconArrayDispenser[tIconIndex] = tIconArray;
else
tIconArray = tIconArrayDispenser[tIconIndex];
tIconArray[1], tIconArray[2], tIconArray[3], tIconArray[4], tIconArray[5], tIconArray[6]
= anIcon, aExpiry, aStacks, aDuration, anIsBuff, aSpellId;
tIconArray[1], tIconArray[2], tIconArray[3], tIconArray[4], tIconArray[5], tIconArray[6], tIconArray[7]
= anIcon, aExpiry, aStacks, aDuration, anIsBuff, aSpellId, aCnt;
end
return tIconArray;
......@@ -298,7 +298,7 @@ function VUHDO_determineDebuff(aUnit)
tNow = GetTime();
for tCnt = 1, huge do
tName, _, tIcon, tStacks, tTypeString, tDuration, tExpiry, _, _, _, tSpellId, _, tIsBossDebuff = UnitDebuff(aUnit, tCnt, false);
tName, tIcon, tStacks, tTypeString, tDuration, tExpiry, _, _, _, tSpellId, _, tIsBossDebuff = UnitDebuff(aUnit, tCnt, false);
if not tIcon then break; end
tStacks = tStacks or 0;
......@@ -313,7 +313,7 @@ function VUHDO_determineDebuff(aUnit)
if sCurIcons[tName] then tStacks = tStacks + sCurIcons[tName][3]; end
if tDebuffConfig[2] then -- Icon?
sCurIcons[tName] = VUHDO_getOrCreateIconArray(tIcon, tExpiry, tStacks, tDuration, false, tSpellId);
sCurIcons[tName] = VUHDO_getOrCreateIconArray(tIcon, tExpiry, tStacks, tDuration, false, tSpellId, tCnt);
end
tType = VUHDO_DEBUFF_TYPES[tTypeString];
......@@ -337,7 +337,7 @@ function VUHDO_determineDebuff(aUnit)
if sIsUseDebuffIcon and (tIsBossDebuff or not sIsUseDebuffIconBossOnly)
and (sIsNotRemovableOnlyIcons or tAbility ~= nil) then
sCurIcons[tName] = VUHDO_getOrCreateIconArray(tIcon, tExpiry, tStacks, tDuration, false, tSpellId);
sCurIcons[tName] = VUHDO_getOrCreateIconArray(tIcon, tExpiry, tStacks, tDuration, false, tSpellId, tCnt);
sCurIsStandard = true;
end
......@@ -350,7 +350,7 @@ function VUHDO_determineDebuff(aUnit)
end
for tCnt = 1, huge do
tName, _, tIcon, tStacks, _, tDuration, tExpiry, _, _, _, tSpellId = UnitBuff(aUnit, tCnt);
tName, tIcon, tStacks, _, tDuration, tExpiry, _, _, _, tSpellId = UnitBuff(aUnit, tCnt);
if not tIcon then break; end
tDebuffConfig = VUHDO_CUSTOM_DEBUFF_CONFIG[tName] or VUHDO_CUSTOM_DEBUFF_CONFIG[tostring(tSpellId)] or sEmpty;
......@@ -360,7 +360,7 @@ function VUHDO_determineDebuff(aUnit)
end
if tDebuffConfig[2] then -- Set icon
sCurIcons[tName] = VUHDO_getOrCreateIconArray(tIcon, tExpiry, tStacks or 0, tDuration, true, tSpellId);
sCurIcons[tName] = VUHDO_getOrCreateIconArray(tIcon, tExpiry, tStacks or 0, tDuration, true, tSpellId, tCnt);
end
end
......@@ -372,7 +372,7 @@ function VUHDO_determineDebuff(aUnit)
-- tExpiry, tStacks, tIcon
VUHDO_UNIT_CUSTOM_DEBUFFS[aUnit][tName] = { tDebuffInfo[2], tDebuffInfo[3], tDebuffInfo[1] };
VUHDO_addDebuffIcon(aUnit, tDebuffInfo[1], tName, tDebuffInfo[2], tDebuffInfo[3], tDebuffInfo[4], tDebuffInfo[5], tDebuffInfo[6]);
VUHDO_addDebuffIcon(aUnit, tDebuffInfo[1], tName, tDebuffInfo[2], tDebuffInfo[3], tDebuffInfo[4], tDebuffInfo[5], tDebuffInfo[6], tDebuffInfo[7]);
if not VUHDO_IS_CONFIG and VUHDO_MAY_DEBUFF_ANIM then
-- the key used to store the debuff settings is either the debuff name or spell ID
......
This diff is collapsed.
......@@ -409,6 +409,9 @@ function VUHDO_OnEvent(_, anEvent, anArg1, anArg2, anArg3, anArg4, anArg5, anArg
--VUHDO_Msg(anEvent);
if "COMBAT_LOG_EVENT_UNFILTERED" == anEvent then
if VUHDO_VARIABLES_LOADED then
-- As of 8.x COMBAT_LOG_EVENT_UNFILTERED is now just an event with no arguments
anArg1, anArg2, anArg3, anArg4, anArg5, anArg6, anArg7, anArg8, anArg9, anArg10, anArg11, anArg12, anArg13, anArg14, anArg15, anArg16, anArg17 = CombatLogGetCurrentEventInfo();
-- SWING_DAMAGE - the amount of damage is the 12th arg
-- ENVIRONMENTAL_DAMAGE - the amount of damage is the 13th arg
-- for all other events with the _DAMAGE suffix the amount of damage is the 15th arg
......@@ -459,7 +462,7 @@ function VUHDO_OnEvent(_, anEvent, anArg1, anArg2, anArg3, anArg4, anArg5, anArg
VUHDO_updateBouquetsForEvent(anArg1, 9); -- VUHDO_UPDATE_ALT_POWER
end
elseif "UNIT_POWER" == anEvent or "UNIT_POWER_FREQUENT" == anEvent then
elseif "UNIT_POWER_UPDATE" == anEvent or "UNIT_POWER_FREQUENT" == anEvent then
if (VUHDO_RAID or tEmptyRaid)[anArg1] then
if "CHI" == anArg2 then
if "player" == anArg1 then VUHDO_updateBouquetsForEvent("player", 35); end -- VUHDO_UPDATE_CHI
......@@ -479,10 +482,10 @@ function VUHDO_OnEvent(_, anEvent, anArg1, anArg2, anArg3, anArg4, anArg5, anArg
end
elseif "UNIT_SPELLCAST_SUCCEEDED" == anEvent then
if (VUHDO_RAID or tEmptyRaid)[anArg1] then VUHDO_spellcastSucceeded(anArg1, anArg2); end
if (VUHDO_RAID or tEmptyRaid)[anArg1] then VUHDO_spellcastSucceeded(anArg1, anArg3); end
elseif "UNIT_SPELLCAST_SENT" == anEvent then
if VUHDO_VARIABLES_LOADED then VUHDO_spellcastSent(anArg1, anArg2, anArg3, anArg4); end
if VUHDO_VARIABLES_LOADED then VUHDO_spellcastSent(anArg1, anArg2, anArg4); end
elseif "UNIT_THREAT_SITUATION_UPDATE" == anEvent then
if VUHDO_VARIABLES_LOADED then VUHDO_updateThreat(anArg1); end
......@@ -539,7 +542,7 @@ function VUHDO_OnEvent(_, anEvent, anArg1, anArg2, anArg3, anArg4, anArg5, anArg
-- INSTANCE_ENCOUNTER_ENGAGE_UNIT fires when a boss unit is added to the UI
-- this is essentially the equivalent of GROUP_ROSTER_UPDATE for bosses/NPCs
elseif "GROUP_ROSTER_UPDATE" == anEvent or "INSTANCE_ENCOUNTER_ENGAGE_UNIT" == anEvent then
elseif "GROUP_ROSTER_UPDATE" == anEvent or "INSTANCE_ENCOUNTER_ENGAGE_UNIT" == anEvent or "UPDATE_ACTIVE_BATTLEFIELD" == anEvent then
--VUHDO_CURR_LAYOUT = VUHDO_SPEC_LAYOUTS["selected"];
--VUHDO_CURRENT_PROFILE = VUHDO_CONFIG["CURRENT_PROFILE"];
......@@ -579,6 +582,7 @@ function VUHDO_OnEvent(_, anEvent, anArg1, anArg2, anArg3, anArg4, anArg5, anArg
end
elseif "LEARNED_SPELL_IN_TAB" == anEvent then
-- FIXME: this event does not fire when spell is learned via talent change
if VUHDO_VARIABLES_LOADED then
VUHDO_initFromSpellbook();
VUHDO_registerAllBouquets(false);
......@@ -892,7 +896,7 @@ function VUHDO_updateGlobalToggles()
or VUHDO_isAnyoneInterstedIn(VUHDO_UPDATE_ALT_POWER)
or VUHDO_isAnyoneInterstedIn(VUHDO_UPDATE_OWN_HOLY_POWER)
or VUHDO_isAnyoneInterstedIn(VUHDO_UPDATE_CHI),
"UNIT_DISPLAYPOWER", "UNIT_MAXPOWER", "UNIT_POWER", "UNIT_POWER_FREQUENT"
"UNIT_DISPLAYPOWER", "UNIT_MAXPOWER", "UNIT_POWER_UPDATE", "UNIT_POWER_FREQUENT"
);
if VUHDO_isAnyoneInterstedIn(VUHDO_UPDATE_UNIT_TARGET) then
......@@ -1435,7 +1439,7 @@ local VUHDO_ALL_EVENTS = {
"UNIT_HEALTH", "UNIT_HEALTH_FREQUENT", "UNIT_MAXHEALTH",
"UNIT_AURA",
"UNIT_TARGET",
"GROUP_ROSTER_UPDATE", "INSTANCE_ENCOUNTER_ENGAGE_UNIT",
"GROUP_ROSTER_UPDATE", "INSTANCE_ENCOUNTER_ENGAGE_UNIT", "UPDATE_ACTIVE_BATTLEFIELD",
"UNIT_PET",
"UNIT_ENTERED_VEHICLE", "UNIT_EXITED_VEHICLE", "UNIT_EXITING_VEHICLE",
"CHAT_MSG_ADDON",
......@@ -1443,7 +1447,7 @@ local VUHDO_ALL_EVENTS = {
"LEARNED_SPELL_IN_TAB",
"PLAYER_FLAGS_CHANGED",
"PLAYER_LOGOUT",
"UNIT_DISPLAYPOWER", "UNIT_MAXPOWER", "UNIT_POWER",
"UNIT_DISPLAYPOWER", "UNIT_MAXPOWER", "UNIT_POWER_UPDATE",
"UNIT_SPELLCAST_SENT", "UNIT_SPELLCAST_SUCCEEDED",
"PARTY_MEMBER_ENABLE", "PARTY_MEMBER_DISABLE",
"COMBAT_LOG_EVENT_UNFILTERED",
......
......@@ -355,12 +355,13 @@ local VUHDO_BLIZZ_EVENTS = {
"UNIT_PET",
"UNIT_PHASE",
"UNIT_PORTRAIT_UPDATE",
"UNIT_POWER",
"UNIT_POWER_UPDATE",
"UNIT_POWER_BAR_HIDE",
"UNIT_POWER_BAR_SHOW",
"UNIT_POWER_FREQUENT",
"UNIT_TARGETABLE_CHANGED",
"UNIT_THREAT_SITUATION_UPDATE",
"UPDATE_ACTIVE_BATTLEFIELD",
"UPDATE_INSTANCE_INFO",
"UPDATE_SHAPESHIFT_FORM",
"UPDATE_STEALTH",
......@@ -382,7 +383,7 @@ local VUHDO_FIX_EVENTS = {
"UNIT_MAXHEALTH",
"UNIT_MAXPOWER",
"UNIT_PET",
"UNIT_POWER",
"UNIT_POWER_UPDATE",
"UNIT_POWER_FREQUENT",
"UNIT_THREAT_SITUATION_UPDATE",
};
......
......@@ -22,7 +22,6 @@ local GetMacroInfo = GetMacroInfo;
local GetSpellBookItemTexture = GetSpellBookItemTexture;
local UnitIsDeadOrGhost = UnitIsDeadOrGhost;
local gsub = gsub;
local UnitBuff = UnitBuff;
local GetCursorInfo = GetCursorInfo;
local GetShapeshiftForm = GetShapeshiftForm;
local InCombatLockdown = InCombatLockdown;
......@@ -204,7 +203,7 @@ local function VUHDO_setupHealButtonAttributes(aModiKey, aButtonId, anAction, aB
tUnit = aButton["raidid"];
if anIsTgButton or tUnit == "focus" or (tUnit == "target" and "dropdown" ~= anAction) then
if anIsTgButton or tUnit == "focus" or (tUnit == "target" and "dropdown" ~= anAction) or VUHDO_isBossUnit(tUnit) then
if not anIndex then
tSpellInfo = VUHDO_HOSTILE_SPELL_ASSIGNMENTS[VUHDO_KEYS_MODIFIER[aModiKey] .. aButtonId];
tHostSpell = tSpellInfo ~= nil and tSpellInfo[3] or "";
......
......@@ -154,7 +154,7 @@ local function VUHDO_setupStaticBuffPanel(aCategoryName, aBuffPanel, anIsPresent
tBuffSettings = VUHDO_BUFF_SETTINGS[aCategoryName];
local tEnableCheckButton = _G[aBuffPanel:GetName() .. "EnableCheckButton"];
tEnableCheckButton:SetChecked(tBuffSettings["enabled"] and anIsPresent);
tEnableCheckButton:SetChecked(tBuffSettings["enabled"]);
tEnableCheckButton:SetShown(anIsPresent);
VUHDO_lnfCheckButtonClicked(tEnableCheckButton);
......
......@@ -179,7 +179,7 @@ end
--
local function VUHDO_sendDirectMessage(aUnitName, aMessage)
SendAddonMessage(VUHDO_COMMS_PREFIX, aMessage, "WHISPER", aUnitName);
C_ChatInfo.SendAddonMessage(VUHDO_COMMS_PREFIX, aMessage, "WHISPER", aUnitName);
end
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment