Code:
function AdvancedTargeting(aCaster, aDMin, aDMax, aSpellId, aHitCount, aCastType)
local vplr
local iplr
local intPlrCount = 0
aDMin = math.pow(aDMin, 2)
aDMax = math.pow(aDMax, 2)
if (aCastType == 0) then
intPlrCount = 1
end
if (aHitCount == 0) then
local irPlrCount = aCaster:GetInRangePlayersCount()
intPlrCount = irPlrCount
end
if (aCaster == nil) then
print("AdvancedTargeting: Arguement #1 invalid: Unit expected got nil")
elseif (aCaster == 0) then
print("AdvancedTargeting: Arguement #1 invalid: Unit expected, got 0")
elseif (aDMin == nil) then
print("AdvancedTargeting: Arguement #2 invalid: value was nil")
elseif (aDMax == nil) then
print("AdvancedTargeting: Arguement #3 invalid: value was nil")
elseif (aSpellId == 0) then
print("AdvancedTargeting: Arguement #4 invalid: a value greater than or equal to 1 expected. current value is "..aSpellId)
elseif (aSpellId == nil) then
print("AdvancedTargeting: Arguement #4 invalid: value was nil")
elseif (aHitCount == nil) then
print("AdvancedTargeting: Arguement #5 invalid: value was nil")
elseif (aCastType == nil) then
print("AdvancedTargeting: Arguement #6 invalid: value was nil")
elseif (aCastType >= 2) then
print("AdvancedTargeting: Arguement #6 invalid: value was equal to "..aInstant.." 1 or 0 expected")
else
local tblInRangePlayers = aCaster:GetInRangePlayers()
for iplr, vplr in pairs(tblInRangePlayers) do
if (intPlrCount == aHitCount) then
break;
else
if aCaster:GetDistance(vplr) >= aDMin then
if aCaster:GetDistance(vplr) <= aDMax then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
end
end
end
end
end
end
Code:
function AdvancedTargeting(aCaster, aDMin, aDMax, aSpellId, aHitCount, aCastType, aHPMin, aHPMax, aTargetType)
local vplr
local iplr
local intPlrCount = 0
aDMin = math.pow(aDMin, 2)
aDMax = math.pow(aDMax, 2)
if (aCastType == 0) then
intPlrCount = 1
end
if (aHitCount == 0) then
local irPlrCount = aCaster:GetInRangePlayersCount()
intPlrCount = irPlrCount
end
if (aCaster == nil) then
print("AdvancedTargeting: Arguement #1 invalid: Unit expected got nil")
elseif (aCaster == 0) then
print("AdvancedTargeting: Arguement #1 invalid: Unit expected, got 0")
elseif (aDMin == nil) then
print("AdvancedTargeting: Arguement #2 invalid: value was nil")
elseif (aDMax == nil) then
print("AdvancedTargeting: Arguement #3 invalid: value was nil")
elseif (aSpellId == 0) then
print("AdvancedTargeting: Arguement #4 invalid: a value greater than or equal to 1 expected. current value is "..aSpellId)
elseif (aSpellId == nil) then
print("AdvancedTargeting: Arguement #4 invalid: value was nil")
elseif (aHitCount == nil) then
print("AdvancedTargeting: Arguement #5 invalid: value was nil")
elseif (aCastType == nil) then
print("AdvancedTargeting: Arguement #6 invalid: value was nil")
elseif (aCastType >= 2) then
print("AdvancedTargeting: Arguement #6 invalid: value was equal to "..aInstant.." 1 or 0 expected")
elseif (aHPMin == nil) then
print("AdvancedTargeting: Arguement #7 invalid: value was nil")
elseif (aHPMax == 0) then
aHPMax = 100
elseif (aHPMax == nil) then
print("AdvancedTargeting: Arguement #8 invalid: value was nil")
elseif (aTargetType == nil) then
print("AdvancedTargeting: Arguement #9 invalid: value was nil")
else
local tblInRangePlayers = aCaster:GetInRangePlayers()
for iplr, vplr in pairs(tblInRangePlayers) do
if (intPlrCount == aHitCount) then
break;
else
local hpPct = vplr:GetHealthPct()
local pRange = aCaster:GetDistance(vplr)
local pClass = vplr:GetPlayerClass()
if (pRange >= aDMin) then
if (pRange <= aDMax) then
if (hpPct >= aHPMin) then
if (hpPct <= aHPMax) then
if (aTargetType == 0) then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (aTargetType == 1) then
if (pClass == "Warrior") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (pClass == "Druid") then
if (vplr:HasAura(9634) == true) then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (vplr:HasAura(5487) == true) then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
end
end
elseif (aTargetType == 2) then
if (pClass == "Mage") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (pClass == "Hunter") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (pClass == "Priest") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (pClass == "Paladin") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (pClass == "Shaman") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (pClass == "Warlock") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (pClass == "Druid") then
if (vplr:HasAura(9634) == true) then
-- Is in Dire bear form, has no mana.
elseif (vplr:HasAura(5487) == true) then
-- Is in Bear form, has no mana.
elseif (vplr:HasAura(768) == true) then
-- Is in Cat form, has no mana.
else
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
end
end
elseif (aTargetType == 3) then
if (pClass == "Rogue") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (pClass == "Druid") then
if (vplr:HasAura(768) == true) then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
end
end
elseif (aTargetType == 4) then
if (pClass == "Deathknight") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
end
elseif (aTargetType == 5) then
if (pClass == "Priest") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (pClass == "Mage") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (pClass == "Warlock") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
end
elseif (aTargetType == 6) then
if (pClass == "Rogue") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (pClass == "Druid") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
end
elseif (aTargetType == 7) then
if (pClass == "Hunter") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (pClass == "Shaman") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
end
elseif (aTargetType == 8) then
if (pClass == "Deathknight") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (pClass == "Paladin") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
elseif (pClass == "Warrior") then
intPlrCount = intPlrCount + 1
aCaster:FullCastSpellOnTarget(aSpellId, vplr)
end
end
end
end
end
end
end
end
end
end