You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
464 lines
13 KiB
464 lines
13 KiB
|
2 years ago
|
VUHDO_MANUAL_ROLES = { };
|
||
|
|
local VUHDO_FIX_ROLES = { };
|
||
|
|
local VUHDO_INSPECTED_ROLES = { };
|
||
|
|
local VUHDO_DF_TOOL_ROLES = { };
|
||
|
|
local VUHDO_INSPECT_TIMEOUT = 5;
|
||
|
|
|
||
|
|
--local tPoints1, tPoints2, tPoints3, tRank;
|
||
|
|
VUHDO_NEXT_INSPECT_UNIT = nil;
|
||
|
|
VUHDO_NEXT_INSPECT_TIME_OUT = nil;
|
||
|
|
|
||
|
|
|
||
|
|
--------------------------------------------------------------
|
||
|
|
local twipe = table.wipe;
|
||
|
|
local CheckInteractDistance = CheckInteractDistance;
|
||
|
|
local UnitIsUnit = UnitIsUnit;
|
||
|
|
local NotifyInspect = NotifyInspect;
|
||
|
|
local GetSpecializationInfo = GetSpecializationInfo;
|
||
|
|
local ClearInspectPlayer = ClearInspectPlayer;
|
||
|
|
local UnitStat = UnitStat;
|
||
|
|
local UnitGroupRolesAssigned = UnitGroupRolesAssigned;
|
||
|
|
local UnitLevel = UnitLevel;
|
||
|
|
local UnitPowerType = UnitPowerType;
|
||
|
|
local VUHDO_isUnitInModel;
|
||
|
|
local pairs = pairs;
|
||
|
|
local _;
|
||
|
|
|
||
|
|
local VUHDO_MANUAL_ROLES;
|
||
|
|
local VUHDO_RAID_NAMES;
|
||
|
|
local VUHDO_RAID;
|
||
|
|
|
||
|
|
function VUHDO_roleCheckerInitLocalOverrides()
|
||
|
|
VUHDO_MANUAL_ROLES = _G["VUHDO_MANUAL_ROLES"];
|
||
|
|
VUHDO_RAID_NAMES = _G["VUHDO_RAID_NAMES"];
|
||
|
|
VUHDO_RAID = _G["VUHDO_RAID"];
|
||
|
|
VUHDO_isUnitInModel = _G["VUHDO_isUnitInModel"];
|
||
|
|
end
|
||
|
|
--------------------------------------------------------------
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
-- Reset if spec changed or slash command
|
||
|
|
function VUHDO_resetTalentScan(aUnit)
|
||
|
|
if VUHDO_PLAYER_RAID_ID == aUnit then aUnit = "player"; end
|
||
|
|
|
||
|
|
local tInfo = VUHDO_RAID[aUnit];
|
||
|
|
if tInfo then
|
||
|
|
VUHDO_INSPECTED_ROLES[tInfo["name"]] = nil;
|
||
|
|
VUHDO_FIX_ROLES[tInfo["name"]] = nil;
|
||
|
|
VUHDO_DF_TOOL_ROLES[tInfo["name"]] = nil;
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
--
|
||
|
|
function VUHDO_trimInspected()
|
||
|
|
for tName, _ in pairs(VUHDO_INSPECTED_ROLES) do
|
||
|
|
if not VUHDO_RAID_NAMES[tName] then
|
||
|
|
VUHDO_INSPECTED_ROLES[tName] = nil;
|
||
|
|
VUHDO_FIX_ROLES[tName] = nil;
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
-- If timeout after talent tree server request
|
||
|
|
function VUHDO_setRoleUndefined(aUnit)
|
||
|
|
local tInfo = VUHDO_RAID[aUnit];
|
||
|
|
if tInfo then VUHDO_INSPECTED_ROLES[tInfo["name"]] = nil; end
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
local VUHDO_CLASS_ROLES = {
|
||
|
|
[VUHDO_ID_ROGUES] = VUHDO_ID_MELEE_DAMAGE,
|
||
|
|
[VUHDO_ID_MAGES] = VUHDO_ID_RANGED_DAMAGE,
|
||
|
|
[VUHDO_ID_WARLOCKS] = VUHDO_ID_RANGED_DAMAGE,
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
--
|
||
|
|
local tInfo;
|
||
|
|
local tName;
|
||
|
|
local function VUHDO_shouldBeInspected(aUnit)
|
||
|
|
if "focus" == aUnit or "target" == aUnit then return false; end
|
||
|
|
|
||
|
|
tInfo = VUHDO_RAID[aUnit];
|
||
|
|
if tInfo["isPet"] or not tInfo["connected"] then return false; end
|
||
|
|
|
||
|
|
-- Determined by role or can't tell by talent trees (dk)?
|
||
|
|
if VUHDO_CLASS_ROLES[tInfo["classId"]] then -- VUHDO_ID_DEATH_KNIGHT, hat zwar keine feste Rolle, Talentb�ume bringen aber auch nichts
|
||
|
|
return false;
|
||
|
|
end
|
||
|
|
|
||
|
|
-- Already inspected or manually overridden?
|
||
|
|
-- or assigned tank or heal via dungeon finder? (in case of DPS inspect anyway)
|
||
|
|
tName = tInfo["name"];
|
||
|
|
if VUHDO_INSPECTED_ROLES[tName] or VUHDO_MANUAL_ROLES[tName]
|
||
|
|
or VUHDO_DF_TOOL_ROLES[tName] == 60 or VUHDO_DF_TOOL_ROLES[tName] == 63 then -- VUHDO_ID_MELEE_TANK -- VUHDO_ID_RANGED_HEAL
|
||
|
|
return false;
|
||
|
|
end
|
||
|
|
|
||
|
|
-- In inspect range?
|
||
|
|
return CheckInteractDistance(aUnit, 1);
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
--
|
||
|
|
function VUHDO_tryInspectNext()
|
||
|
|
for tUnit, _ in pairs(VUHDO_RAID) do
|
||
|
|
if VUHDO_shouldBeInspected(tUnit) then
|
||
|
|
VUHDO_NEXT_INSPECT_TIME_OUT = GetTime() + VUHDO_INSPECT_TIMEOUT;
|
||
|
|
VUHDO_NEXT_INSPECT_UNIT = tUnit;
|
||
|
|
|
||
|
|
if "player" == tUnit then VUHDO_inspectLockRole();
|
||
|
|
else NotifyInspect(tUnit); end
|
||
|
|
|
||
|
|
return;
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
--
|
||
|
|
local tActiveTree;
|
||
|
|
local tInfo;
|
||
|
|
local tClassId;
|
||
|
|
local tRole;
|
||
|
|
local tTreeId;
|
||
|
|
function VUHDO_inspectRole(aUnit)
|
||
|
|
tInfo = VUHDO_RAID[aUnit];
|
||
|
|
|
||
|
|
if not tInfo then
|
||
|
|
return VUHDO_ID_UNDEFINED;
|
||
|
|
end
|
||
|
|
|
||
|
|
if "player" == aUnit then
|
||
|
|
tActiveTree = GetSpecialization();
|
||
|
|
|
||
|
|
if not tActiveTree then
|
||
|
|
return VUHDO_ID_UNDEFINED;
|
||
|
|
end
|
||
|
|
|
||
|
|
tTreeId, _, _, _, _, tRole = GetSpecializationInfo(tActiveTree, false, false);
|
||
|
|
else
|
||
|
|
tTreeId = GetInspectSpecialization(aUnit);
|
||
|
|
tRole = GetSpecializationRoleByID(tTreeId);
|
||
|
|
end
|
||
|
|
|
||
|
|
if (tTreeId or 0) == 0 then
|
||
|
|
return VUHDO_ID_UNDEFINED;
|
||
|
|
end
|
||
|
|
|
||
|
|
if "HEALER" == tRole then
|
||
|
|
return VUHDO_ID_RANGED_HEAL;
|
||
|
|
elseif "TANK" == tRole then
|
||
|
|
return VUHDO_ID_MELEE_TANK;
|
||
|
|
elseif "DAMAGER" == tRole then
|
||
|
|
tClassId = tInfo["classId"];
|
||
|
|
|
||
|
|
if VUHDO_ID_WARRIORS == tClassId
|
||
|
|
or VUHDO_ID_ROGUES == tClassId
|
||
|
|
or VUHDO_ID_PALADINS == tClassId
|
||
|
|
or VUHDO_ID_MONKS == tClassId
|
||
|
|
or VUHDO_ID_DEATH_KNIGHT == tClassId
|
||
|
|
or VUHDO_ID_DEMON_HUNTERS == tClassId then
|
||
|
|
return VUHDO_ID_MELEE_DAMAGE;
|
||
|
|
elseif VUHDO_ID_SHAMANS == tClassId then
|
||
|
|
if 263 == tTreeId then -- Enhancement
|
||
|
|
return VUHDO_ID_MELEE_DAMAGE;
|
||
|
|
else -- 2
|
||
|
|
return VUHDO_ID_RANGED_DAMAGE;
|
||
|
|
end
|
||
|
|
elseif VUHDO_ID_DRUIDS == tClassId then
|
||
|
|
if 103 == tTreeId then -- Feral
|
||
|
|
return VUHDO_ID_MELEE_DAMAGE;
|
||
|
|
else -- 2
|
||
|
|
return VUHDO_ID_RANGED_DAMAGE;
|
||
|
|
end
|
||
|
|
elseif VUHDO_ID_HUNTERS == tClassId then
|
||
|
|
if 255 == tTreeId then -- Survival
|
||
|
|
return VUHDO_ID_MELEE_DAMAGE;
|
||
|
|
else
|
||
|
|
return VUHDO_ID_RANGED_DAMAGE;
|
||
|
|
end
|
||
|
|
else -- e.g. Evoker Devastation
|
||
|
|
return VUHDO_ID_RANGED_DAMAGE;
|
||
|
|
end
|
||
|
|
else
|
||
|
|
return VUHDO_ID_UNDEFINED;
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
--
|
||
|
|
local tActiveTree;
|
||
|
|
local tIsInspect;
|
||
|
|
local tInfo;
|
||
|
|
local tClassId;
|
||
|
|
local tRole;
|
||
|
|
local tTreeId;
|
||
|
|
function VUHDO_inspectLockRole()
|
||
|
|
tInfo = VUHDO_RAID[VUHDO_NEXT_INSPECT_UNIT];
|
||
|
|
|
||
|
|
if not tInfo then
|
||
|
|
VUHDO_NEXT_INSPECT_UNIT = nil;
|
||
|
|
return;
|
||
|
|
end
|
||
|
|
|
||
|
|
if "player" == VUHDO_NEXT_INSPECT_UNIT then
|
||
|
|
tActiveTree = GetSpecialization();
|
||
|
|
|
||
|
|
if not tActiveTree then
|
||
|
|
VUHDO_INSPECTED_ROLES[tInfo["name"]] = VUHDO_ID_UNDEFINED;
|
||
|
|
VUHDO_NEXT_INSPECT_UNIT = nil;
|
||
|
|
return;
|
||
|
|
end
|
||
|
|
|
||
|
|
tTreeId, _, _, _, _, tRole = GetSpecializationInfo(tActiveTree, false, false);
|
||
|
|
else
|
||
|
|
tTreeId = GetInspectSpecialization(VUHDO_NEXT_INSPECT_UNIT);
|
||
|
|
tRole = GetSpecializationRoleByID(tTreeId);
|
||
|
|
end
|
||
|
|
|
||
|
|
if (tTreeId or 0) == 0 then
|
||
|
|
ClearInspectPlayer();
|
||
|
|
|
||
|
|
VUHDO_NEXT_INSPECT_UNIT = nil;
|
||
|
|
VUHDO_INSPECTED_ROLES[tInfo["name"]] = VUHDO_ID_UNDEFINED;
|
||
|
|
|
||
|
|
return;
|
||
|
|
end
|
||
|
|
|
||
|
|
--VUHDO_xMsg(VUHDO_NEXT_INSPECT_UNIT, tTreeId);
|
||
|
|
|
||
|
|
VUHDO_INSPECTED_ROLES[tInfo["name"]] = VUHDO_inspectRole(VUHDO_NEXT_INSPECT_UNIT);
|
||
|
|
|
||
|
|
ClearInspectPlayer();
|
||
|
|
VUHDO_NEXT_INSPECT_UNIT = nil;
|
||
|
|
VUHDO_normalRaidReload();
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
--
|
||
|
|
local tDfRole, tOldRole, tReturnRole, tName;
|
||
|
|
local function VUHDO_determineDfToolRole(anInfo)
|
||
|
|
tName = anInfo["name"];
|
||
|
|
tOldRole = VUHDO_DF_TOOL_ROLES[tName];
|
||
|
|
tDfRole = UnitGroupRolesAssigned(anInfo["unit"]);
|
||
|
|
|
||
|
|
if "NONE" == tDfRole then
|
||
|
|
VUHDO_DF_TOOL_ROLES[tName] = nil;
|
||
|
|
tReturnRole = nil;
|
||
|
|
elseif "TANK" == tDfRole then
|
||
|
|
VUHDO_DF_TOOL_ROLES[tName] = 60; -- VUHDO_ID_MELEE_TANK
|
||
|
|
tReturnRole = 60; -- VUHDO_ID_MELEE_TANK
|
||
|
|
elseif "HEALER" == tDfRole then
|
||
|
|
VUHDO_DF_TOOL_ROLES[tName] = 63; -- VUHDO_ID_RANGED_HEAL
|
||
|
|
tReturnRole = 63; -- VUHDO_ID_RANGED_HEAL
|
||
|
|
elseif "DAMAGER" == tDfRole then
|
||
|
|
if anInfo["classId"] == VUHDO_ID_WARRIORS
|
||
|
|
or anInfo["classId"] == VUHDO_ID_PALADINS
|
||
|
|
or anInfo["classId"] == VUHDO_ID_DEATH_KNIGHT
|
||
|
|
or anInfo["classId"] == VUHDO_ID_MONKS
|
||
|
|
or anInfo["classId"] == VUHDO_ID_DEMON_HUNTERS
|
||
|
|
or anInfo["classId"] == VUHDO_ID_ROGUES
|
||
|
|
or (anInfo["classId"] == VUHDO_ID_SHAMANS
|
||
|
|
and UnitStat(anInfo["unit"], 2) > UnitStat(anInfo["unit"], 4))
|
||
|
|
or (anInfo["classId"] == VUHDO_ID_DRUIDS
|
||
|
|
and not UnitPowerType(anInfo["unit"]) == VUHDO_UNIT_POWER_LUNAR_POWER) then
|
||
|
|
VUHDO_DF_TOOL_ROLES[tName] = VUHDO_ID_MELEE_DAMAGE;
|
||
|
|
tReturnRole = VUHDO_ID_MELEE_DAMAGE;
|
||
|
|
elseif anInfo["classId"] == VUHDO_ID_PRIESTS
|
||
|
|
or anInfo["classId"] == VUHDO_ID_WARLOCKS
|
||
|
|
or anInfo["classId"] == VUHDO_ID_MAGES
|
||
|
|
or anInfo["classId"] == VUHDO_ID_SHAMANS
|
||
|
|
or anInfo["classId"] == VUHDO_ID_DRUIDS
|
||
|
|
or anInfo["classId"] == VUHDO_ID_EVOKERS then
|
||
|
|
VUHDO_DF_TOOL_ROLES[tName] = VUHDO_ID_RANGED_DAMAGE;
|
||
|
|
tReturnRole = VUHDO_ID_RANGED_DAMAGE;
|
||
|
|
else -- Hunters default to ranged but requires inspect to determine spec ID so no return
|
||
|
|
VUHDO_DF_TOOL_ROLES[tName] = VUHDO_ID_RANGED_DAMAGE;
|
||
|
|
tReturnRole = nil;
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if tOldRole ~= VUHDO_DF_TOOL_ROLES[tName] then
|
||
|
|
VUHDO_normalRaidReload();
|
||
|
|
end
|
||
|
|
|
||
|
|
return tReturnRole;
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
--
|
||
|
|
local tName;
|
||
|
|
local tInfo;
|
||
|
|
local tDefense;
|
||
|
|
local tPowerType;
|
||
|
|
local tBuffExist;
|
||
|
|
local tFixRole;
|
||
|
|
local tIntellect, tStrength, tAgility;
|
||
|
|
local tClassId, tClassRole, tName;
|
||
|
|
local tLevel;
|
||
|
|
local tRole;
|
||
|
|
function VUHDO_determineRole(aUnit)
|
||
|
|
tInfo = VUHDO_RAID[aUnit];
|
||
|
|
if not tInfo or tInfo["isPet"] then return nil; end
|
||
|
|
|
||
|
|
-- Role determined by non-hybrid class?
|
||
|
|
tClassId = tInfo["classId"];
|
||
|
|
tClassRole = VUHDO_CLASS_ROLES[tClassId];
|
||
|
|
if tClassRole then
|
||
|
|
return tClassRole;
|
||
|
|
end
|
||
|
|
|
||
|
|
tName = tInfo["name"];
|
||
|
|
-- Manual role override oder dungeon finder role?
|
||
|
|
tFixRole = VUHDO_MANUAL_ROLES[tName] or VUHDO_determineDfToolRole(tInfo);
|
||
|
|
if tFixRole then
|
||
|
|
return tFixRole;
|
||
|
|
end
|
||
|
|
|
||
|
|
-- Assigned for MT?
|
||
|
|
if VUHDO_isUnitInModel(aUnit, 41) then -- VUHDO_ID_MAINTANKS
|
||
|
|
return 60; -- VUHDO_ID_MELEE_TANK
|
||
|
|
end
|
||
|
|
|
||
|
|
-- Talent tree inspected?
|
||
|
|
if (VUHDO_INSPECTED_ROLES[tName] or VUHDO_ID_UNDEFINED) ~= VUHDO_ID_UNDEFINED then
|
||
|
|
return VUHDO_INSPECTED_ROLES[tName];
|
||
|
|
end
|
||
|
|
|
||
|
|
-- Talent tree immediately inspectable?
|
||
|
|
tRole = VUHDO_inspectRole(aUnit);
|
||
|
|
|
||
|
|
if (tRole or VUHDO_ID_UNDEFINED) ~= VUHDO_ID_UNDEFINED then
|
||
|
|
return tRole;
|
||
|
|
end
|
||
|
|
|
||
|
|
-- Estimated role fixed?
|
||
|
|
if VUHDO_FIX_ROLES[tName] then
|
||
|
|
return VUHDO_FIX_ROLES[tName];
|
||
|
|
end
|
||
|
|
|
||
|
|
if 29 == tClassId then -- VUHDO_ID_DEATH_KNIGHT
|
||
|
|
tBuffExist = VUHDO_unitBuff(aUnit, VUHDO_SPELL_ID.BUFF_BLOOD_PRESENCE);
|
||
|
|
if tBuffExist then
|
||
|
|
--VUHDO_FIX_ROLES[tName] = 60; -- VUHDO_ID_MELEE_TANK
|
||
|
|
return 60; -- VUHDO_ID_MELEE_TANK
|
||
|
|
else
|
||
|
|
VUHDO_FIX_ROLES[tName] = 61; -- VUHDO_ID_MELEE_DAMAGE
|
||
|
|
return 61; -- VUHDO_ID_MELEE_DAMAGE
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif 28 == tClassId then -- VUHDO_ID_PRIESTS
|
||
|
|
tPowerType = UnitPowerType(aUnit);
|
||
|
|
if VUHDO_UNIT_POWER_INSANITY == tPowerType then
|
||
|
|
VUHDO_FIX_ROLES[tName] = 62; -- VUHDO_ID_RANGED_DAMAGE
|
||
|
|
return 62; -- VUHDO_ID_RANGED_DAMAGE
|
||
|
|
else
|
||
|
|
return 63; -- VUHDO_ID_RANGED_HEAL
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif 20 == tClassId then -- VUHDO_ID_WARRIORS
|
||
|
|
if (0 > 2) then -- FIXME: need replacement for UnitDefense check
|
||
|
|
return 60; -- VUHDO_ID_MELEE_TANK
|
||
|
|
else
|
||
|
|
return 61; -- VUHDO_ID_MELEE_DAMAGE
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif 27 == tClassId then -- VUHDO_ID_DRUIDS
|
||
|
|
tPowerType = UnitPowerType(aUnit);
|
||
|
|
if VUHDO_UNIT_POWER_MANA == tPowerType then
|
||
|
|
return 63; -- VUHDO_ID_RANGED_HEAL
|
||
|
|
elseif VUHDO_UNIT_POWER_LUNAR_POWER == tPowerType then
|
||
|
|
VUHDO_FIX_ROLES[tName] = 62; -- VUHDO_ID_RANGED_DAMAGE
|
||
|
|
return 62; -- VUHDO_ID_RANGED_DAMAGE
|
||
|
|
elseif VUHDO_UNIT_POWER_RAGE == tPowerType then
|
||
|
|
VUHDO_FIX_ROLES[tName] = 60; -- VUHDO_ID_MELEE_TANK
|
||
|
|
return 60; -- VUHDO_ID_MELEE_TANK
|
||
|
|
elseif VUHDO_UNIT_POWER_ENERGY == tPowerType then
|
||
|
|
VUHDO_FIX_ROLES[tName] = 61; -- VUHDO_ID_MELEE_DAMAGE
|
||
|
|
return 61; -- VUHDO_ID_MELEE_DAMAGE
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif 23 == tClassId then -- VUHDO_ID_PALADINS
|
||
|
|
if 0 > 2 then -- FIXME: need replacement for UnitDefense check
|
||
|
|
return 60; -- VUHDO_ID_MELEE_TANK
|
||
|
|
else
|
||
|
|
tIntellect = UnitStat(aUnit, 4);
|
||
|
|
tStrength = UnitStat(aUnit, 1);
|
||
|
|
|
||
|
|
if tIntellect > tStrength then
|
||
|
|
return 63; -- VUHDO_ID_RANGED_HEAL
|
||
|
|
else
|
||
|
|
return 61; -- VUHDO_ID_MELEE_DAMAGE
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif 26 == tClassId then -- VUHDO_ID_SHAMANS
|
||
|
|
tIntellect = UnitStat(aUnit, 4);
|
||
|
|
tAgility = UnitStat(aUnit, 2);
|
||
|
|
|
||
|
|
if tAgility > tIntellect then
|
||
|
|
return 61; -- VUHDO_ID_MELEE_DAMAGE
|
||
|
|
else
|
||
|
|
tPowerType = UnitPowerType(aUnit);
|
||
|
|
if VUHDO_UNIT_POWER_MAELSTROM == tPowerType then -- VUHDO_ID_RANGED_DAMAGE
|
||
|
|
return 62; -- VUHDO_ID_RANGED_DAMAGE
|
||
|
|
else
|
||
|
|
return 63; -- VUHDO_ID_RANGED_HEAL
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif 31 == tClassId then -- VUHDO_ID_DEMON_HUNTERS
|
||
|
|
tPowerType = UnitPowerType(aUnit);
|
||
|
|
if VUHDO_UNIT_POWER_PAIN == tPowerType then
|
||
|
|
return 60; -- VUHDO_ID_MELEE_TANK
|
||
|
|
else
|
||
|
|
return 61; -- VUHDO_ID_MELEE_DAMAGE
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif 22 == tClassId then -- VUHDO_ID_HUNTERS
|
||
|
|
if UnitPowerMax(aUnit) == 100 then -- Survival
|
||
|
|
return 61; -- VUHDO_ID_MELEE_DAMAGE
|
||
|
|
else
|
||
|
|
return 62; -- VUHDO_ID_RANGED_DAMAGE
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif 30 == tClassId then -- VUHDO_ID_MONKS
|
||
|
|
tPowerType = UnitPowerType(aUnit);
|
||
|
|
|
||
|
|
if VUHDO_UNIT_POWER_MANA == tPowerType then
|
||
|
|
return 63; -- VUHDO_ID_RANGED_HEAL
|
||
|
|
elseif VUHDO_UNIT_POWER_ENERGY == tPowerType then
|
||
|
|
if UnitPowerMax(aUnit, VUHDO_UNIT_POWER_CHI) > 4 then -- WW Monks have 5 Chi (6 w/ Ascension)
|
||
|
|
return 61; -- VUHDO_ID_MELEE_DAMAGE
|
||
|
|
else
|
||
|
|
return 60; -- VUHDO_ID_MELEE_TANK
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif 32 == tClassId then -- VUHDO_ID_EVOKERS
|
||
|
|
-- FIXME: at max level does Devastation still have this low cap?
|
||
|
|
if UnitPowerMax(aUnit) == 10000 then
|
||
|
|
return 62; -- VUHDO_ID_RANGED_DAMAGE
|
||
|
|
else
|
||
|
|
return 63; -- VUHDO_ID_RANGED_HEAL
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
return nil;
|
||
|
|
end
|
||
|
|
|