Code:
<?xml version="1.0" encoding="utf-8" ?><SHAMAN><Ability><Name>Autotarget Low Hp (No Mo)</Name><Default>false</Default><SpellID>0</SpellID><Actions></Actions><Lua>if UnitExists(&quot;target&quot;)
and UnitIsDead(&quot;target&quot;) == nil
and UnitIsFriend(&quot;player&quot;, &quot;target&quot;)
and UnitCanCooperate(&quot;player&quot;,&quot;target&quot;)
then PQR_CustomTarget = &quot;target&quot;
PQR_CustomTargetHP = 100 * UnitHealth(&quot;target&quot;) / UnitHealthMax(&quot;target&quot;)
else
PQR_CustomTarget = &quot;player&quot;
PQR_CustomTargetHP = 100 * UnitHealth(&quot;player&quot;) / UnitHealthMax(&quot;player&quot;)
local group = &quot;party&quot;
local members = GetNumPartyMembers()
lowhpmembers = 0
local lowest = 100
if GetNumRaidMembers() &gt; 0 then
group = &quot;raid&quot;
members = GetNumRaidMembers()
end
for i = 1, members, 1 do
local member = group..tostring(i)
local memberhp = 100 * UnitHealth(member) / UnitHealthMax(member)
if UnitInRange(member)
and UnitIsFriend(&quot;player&quot;, member)
and UnitIsDeadOrGhost(member) == nil then
if UnitGroupRolesAssigned(member) == &quot;TANK&quot; then memberhp = memberhp - 1 end
if UnitThreatSituation(member) == 3 then memberhp = memberhp - 3 end
if UnitBuffID(member, 974) ~= nil then memberhp = memberhp + 7 end
if memberhp &lt; 85 then lowhpmembers = lowhpmembers +1 end
if memberhp &lt; lowest then
PQR_CustomTarget = member
lowest = memberhp
PQR_CustomTargetHP = 100 * UnitHealth(PQR_CustomTarget) / UnitHealthMax(PQR_CustomTarget)
end
end
end
end</Lua><RecastDelay>0</RecastDelay><Target>Target</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>Auto Stop Casting</Name><Default>false</Default><SpellID>0</SpellID><Actions></Actions><Lua>local Spell = UnitCastingInfo(&quot;player&quot;)
if PQR_CustomTargetHP &gt; 96 then
if Spell == &quot;Greater Healing Wave&quot; or Spell == &quot;Healing Wave&quot; or Spell == &quot;Healing Surge&quot; then
SpellStopCasting()
end
end</Lua><RecastDelay>0</RecastDelay><Target>Player</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>EarthShield(Left Alt)</Name><Default>false</Default><SpellID>974</SpellID><Actions></Actions><Lua>if IsLeftAltKeyDown() and GetCurrentKeyBoardFocus() == nil then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Mouseover</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>EarthShield</Name><Default>false</Default><SpellID>974</SpellID><Actions></Actions><Lua>local EarthShieldTarget = nil
local EarthShieldTank = nil
local EarthShieldTarget = nil
local group = &quot;party&quot;
local members = GetNumPartyMembers()
if GetNumRaidMembers() &gt; 0 then
group = &quot;raid&quot;
members = GetNumRaidMembers()
end
if group == &quot;raid&quot; and UnitExists(&quot;focus&quot;) then EarthShieldTarget = &quot;focus&quot; end
if group == &quot;party&quot; then
for i = 1, members, 1 do
local member = group..tostring(i)
local EarthShield = UnitBuffID(member, 974)
if EarthShield ~= nil then EarthShieldTarget = member end
if UnitGroupRolesAssigned(member) == &quot;TANK&quot; and UnitIsDead(member) ~= 1 then
EarthShieldTank = member
EarthShieldTankTarget = 1
end
end
end
if EarthShieldTarget ~= nil then
local _, _, _, _, _, _, expire = UnitBuffID(EarthShieldTarget, 974)
expire = (expire - GetTime())
if expire &lt; 5 then
CastSpellByID(974, EarthShieldTarget)
end
end
if EarthShieldTankTarget and EarthShield == nil then
CastSpellByID(974, EarthShieldTank)
end</Lua><RecastDelay>100</RecastDelay><Target>Player</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>AT Smart Low HP NMO</Name><Default>false</Default><SpellID>0</SpellID><Actions></Actions><Lua>if not healinit then
function CalculateHP(t)
local incomingheal = 0
if UnitGetIncomingHeals(t) then incomingheal = UnitGetIncomingHeals(t) end
return 100 * ( UnitHealth(t) + incomingheal ) / UnitHealthMax(t)
end
function SafeTarget(t)
if IsSpellInRange(tostring(GetSpellInfo(635)),t) == 1
and UnitIsCharmed(t) == nil
and UnitIsDeadOrGhost(t) == nil
and UnitCanCooperate(&quot;player&quot;,t)
and PQR_IsOutOfSight(t) == false
then return true end
end
healinit = true
end
if SafeTarget(&quot;target&quot;) then
PQR_CustomTarget = &quot;target&quot;
PQR_CustomTargetHP = CalculateHP(&quot;target&quot;)
else
lowhpmembers = 0
PQR_CustomTarget = &quot;player&quot;
PQR_CustomTargetHP = CalculateHP(&quot;player&quot;)
local group = &quot;party&quot;
local members = GetNumPartyMembers()
if GetNumRaidMembers() &gt; 0 then group = &quot;raid&quot; members = GetNumRaidMembers() end
for i = 1, members, 1 do
local member = group..tostring(i)
local memberhp = CalculateHP(member)
if SafeTarget(member) then
if UnitGroupRolesAssigned(member) == &quot;TANK&quot; and UnitBuffID(member, 974) == nil then memberhp = memberhp - 1 else memberhp = memberhp + 3 end
if UnitThreatSituation(member) == 3 then memberhp = memberhp - 3 end
if memberhp &lt; 80 then lowhpmembers = lowhpmembers +1 end
if memberhp &lt; PQR_CustomTargetHP then
PQR_CustomTarget = member
PQR_CustomTargetHP = 100 * UnitHealth(PQR_CustomTarget) / UnitHealthMax(PQR_CustomTarget)
end
end
end
end</Lua><RecastDelay>0</RecastDelay><Target>Target</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>Nature&apos;s Swiftness</Name><Default>false</Default><SpellID>16188</SpellID><Actions></Actions><Lua>if PQR_CustomTargetHP &lt; 30 and lowhpmembers &gt;= 3 then
return true
end</Lua><RecastDelay>0</RecastDelay><Target>Custom</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>Mana Tide Totem</Name><Default>false</Default><SpellID>16190</SpellID><Actions></Actions><Lua>local myMana = 100 * UnitPower(&quot;player&quot;) / UnitPowerMax(&quot;player&quot;)
if myMana &lt; 65 then
return true
end</Lua><RecastDelay>0</RecastDelay><Target>Player</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>Riptide</Name><Default>false</Default><SpellID>61295</SpellID><Actions></Actions><Lua>if PQR_CustomTargetHP &lt; 90 then
return true
end</Lua><RecastDelay>0</RecastDelay><Target>Custom</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>Chain Heal</Name><Default>false</Default><SpellID>1064</SpellID><Actions></Actions><Lua>local myMana = 100 * UnitPower(&quot;player&quot;) / UnitPowerMax(&quot;player&quot;)
local CH = UnitBuffID(&quot;player&quot;, 1064)
if lowhpmembers &gt;= 2 and myMana &gt;20 and PQR_IsMoving(1) == false and CH == nil then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Custom</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>EarthLiving: Wep</Name><Default>false</Default><SpellID>51730</SpellID><Actions></Actions><Lua>local Elw = UnitBuffID(&quot;player&quot;, 51730)
if Elw == nil then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Player</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>WaterSheild</Name><Default>false</Default><SpellID>52127</SpellID><Actions></Actions><Lua>local Ws = UnitBuffID(&quot;player&quot;, 52127)
if Ws == nil then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Player</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>Spirit Link</Name><Default>false</Default><SpellID>98008</SpellID><Actions></Actions><Lua>local myMana = 100 * UnitPower(&quot;player&quot;) / UnitPowerMax(&quot;player&quot;)
local SL = UnitBuffID(&quot;player&quot;, 98008)
if lowhpmembers &gt;= 4 and myMana &gt;20 and SL == nil then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Target</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>Healing Surge</Name><Default>false</Default><SpellID>8004</SpellID><Actions></Actions><Lua>local TidalWaves = UnitBuffID(&quot;player&quot;, 51562, 51563, 51564)
if PQR_CustomTargetHP &lt; 28 and PQR_IsMoving(1) == false and PQR_IsCastingSpell(8004) == false then
return true
elseif PQR_CustomTargetHP &lt; 70 and PQR_IsMoving(.1) and Infusion ~= nil then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Custom</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>Greater Healing Wave</Name><Default>false</Default><SpellID>77472</SpellID><Actions></Actions><Lua>if PQR_CustomTargetHP &lt; 58 and PQR_IsMoving(1) == false and PQR_IsCastingSpell(77472) == false then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Custom</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>Healing Wave</Name><Default>false</Default><SpellID>331</SpellID><Actions></Actions><Lua>if PQR_CustomTargetHP &lt; 95 and PQR_IsMoving(1) == false and PQR_IsCastingSpell(331) == false then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Custom</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>Cleanse Spirit</Name><Default>false</Default><SpellID>51886</SpellID><Actions></Actions><Lua>if not DontDispel(PQR_CustomTarget)
local i = 1
local buff,_,_,count,bufftype,duration = UnitDebuff(PQR_CustomTarget, i)
while buff do
if (bufftype == &quot;Curse&quot; or bufftype == &quot;Magic&quot;)
and duration &gt; 6
and count ~= 1
and UnitIsFriend(&quot;player&quot;,PQR_CustomTarget)
and UnitIsUnit(priordispell, PQR_CustomTarget)
then return true end
i = i + 1;
buff,_,_,count,bufftype,duration = UnitDebuff(PQR_CustomTarget, i)
end
end</Lua><RecastDelay>0</RecastDelay><Target>Target</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>Cleanse Priority</Name><Default>false</Default><SpellID>0</SpellID><Actions></Actions><Lua>if not DontDispel(PQR_CustomTarget)
local i = 1
local buff,_,_,count,bufftype,duration = UnitDebuff(PQR_CustomTarget, i)
while buff do
if (bufftype == &quot;Curse&quot; or bufftype == &quot;Magic&quot;)
and duration &gt; 6
and count ~= 1
and UnitIsFriend(&quot;player&quot;,PQR_CustomTarget)
and UnitIsUnit(priordispell, PQR_CustomTarget)
then return true end
i = i + 1;
buff,_,_,count,bufftype,duration = UnitDebuff(PQR_CustomTarget, i)
end
end</Lua><RecastDelay>0</RecastDelay><Target>Target</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>-- sheuron special event--</Name><Default>false</Default><SpellID>0</SpellID><Actions></Actions><Lua>-- Avoid sudden death on Ultraxion
local fadingtime = select(7,UnitDebuffID(&quot;player&quot;,110070))
if fadingtime and fadingtime - GetTime() &lt; 1.3 then RunMacroText(&quot;/click ExtraActionButton1&quot;) end
-- Avoid Hour of Twilight on Ultraxion, Delete next 3 lines if you are working as tank
local channelSpell, _, _, _, _, endTime = UnitCastingInfo(&quot;boss1&quot;)
if channelSpell == GetSpellInfo(109417) and endTime/1000 - GetTime() &lt; 1.3
then RunMacroText(&quot;/click ExtraActionButton1&quot;) end
-- Try to aim on Darkmoon Faerie Cannon
local canontime = select(7,UnitBuffID(&quot;player&quot;,102116))
if canontime and canontime - GetTime() &lt; 1.15 then CancelUnitBuff(&quot;player&quot;,&quot;Magic Wings&quot;) end</Lua><RecastDelay>0</RecastDelay><Target>Target</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>Spirit Walk</Name><Default>false</Default><SpellID>79206</SpellID><Actions></Actions><Lua>if PQR_IsMoving == true and mytarget &lt;50 then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Player</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>Totems</Name><Default>false</Default><SpellID>0</SpellID><Actions></Actions><Lua>local DB = UnitBuffID(&quot;player&quot;,61316)
local AB = UnitBuffID(&quot;player&quot;,1459)
local _, WaterTotem = GetTotemInfo(3)
local _, FireTotem = GetTotemInfo(1)
local _, AirTotem = GetTotemInfo(4)
local _, EarthTotem = GetTotemInfo(2)
local MQ = UnitBuffID(&quot;player&quot;, 49868)
local MA = UnitBuffID(&quot;player&quot;, 24907)
local HP = UnitBuffID(&quot;player&quot;, 53290)
local IIT = UnitBuffID(&quot;player&quot;, 55610)
local DA = UnitBuffID(&quot;player&quot;, 465)
local ST = UnitBuffID(&quot;player&quot;, 8071)
local BoM = UnitBuffID(&quot;player&quot;, 19740)
local FI = UnitBuffID(&quot;player&quot;, 54424)
if FireTotem == &quot;&quot; and AirTotem == &quot;&quot; and EarthTotem == &quot;&quot; and WaterTotem == &quot;&quot; and incombat == 1 then
SilentCast(66842)
return true
end
if DB == nil and AB == nil then
SetMultiCastSpell (133,8227)
if FireTotem == &quot;&quot; and incombat == 1 then
SilentCast(8227)
return true
end
else
SetMultiCastSpell (133,3599)
if FireTotem == &quot;&quot; and incombat == 1 then
SilentCast(3599)
return true
end
end
if MQ == nil and MA == nil then
SetMultiCastSpell (136,3738)
if AirTotem == &quot;&quot; and incombat == 1 then
SilentCast(3738)
return true
end
else
if HP == nil and IIT == nil then
SetMultiCastSpell (136,8512)
if AirTotem == &quot;&quot; and incombat == 1 then
SilentCast(8512)
return true
end
end
end
if DA == nil then
SetMultiCastSpell (134,8071)
if EarthTotem == &quot;&quot; and incombat == 1 then
SilentCast(8071)
return true
end
else
SetMultiCastSpell (134,8075)
if EarthTotem == &quot;&quot; and incombat == 1 then
SilentCast(8075)
return true
end
end
if BoM == nil and FI == nil then
SetMultiCastSpell (135,5675)
if WaterTotem == &quot;&quot; and incombat == 1 then
SilentCast(5675)
return true
end
else
SetMultiCastSpell (135,5394)
if WaterTotem == &quot;&quot; and incombat == 1 then
SilentCast(5394)
return true
end
end</Lua><RecastDelay>0</RecastDelay><Target>Target</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability><Ability><Name>Lightning Bolt (Shift)</Name><Default>false</Default><SpellID>0</SpellID><Actions></Actions><Lua>local tt = UnitIsEnemy(&quot;player&quot;,targettoheal..&quot;target&quot;)
local SwG = UnitBuffID(&quot;player&quot;, 79206)
local lbtarget = nil
if moving == 0 and incombat ~= nil then
if UnitIsEnemy(&quot;player&quot;,&quot;target&quot;) then
lbtarget = &quot;target&quot;
else
for i = 1, members,1 do
local member = group..tostring(i)
if UnitInRange(member) and UnitGroupRolesAssigned(member) == &quot;TANK&quot; then
if UnitIsEnemy(&quot;player&quot;,member..&quot;target&quot;) then
lbtarget = member..&quot;target&quot;
end
end
end
end
end
if lbtarget ~= nil then
if UnitHasCC(lbtarget) == 0 then
SilentCast(403,lbtarget)
return true
end
end</Lua><RecastDelay>0</RecastDelay><Target>Custom</Target><CancelChannel>False</CancelChannel><LuaBefore></LuaBefore><LuaAfter></LuaAfter></Ability></SHAMAN>
Adikt_Restro_SHAMAN_Rotations: