|
|
|
@ -1,3 +1,5 @@ |
|
|
|
|
-- Talents: CYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAMbzy2MjxwMbMmZMmZGAAAAAAGzYYgFYb0QjNAwsNNDYbhZmGmZmxMWmxMYWGmFzMzMMjZYA |
|
|
|
|
|
|
|
|
|
local Tinkr, Bastion = ... |
|
|
|
|
|
|
|
|
|
local ElementalShamanModule = Bastion.Module:New('ElementalShaman') |
|
|
|
@ -30,6 +32,10 @@ local WindShear = SpellBook:GetSpell(57994) |
|
|
|
|
local Skyfury = SpellBook:GetSpell(462854) |
|
|
|
|
local LightningShield = SpellBook:GetSpell(192106) |
|
|
|
|
local EarthShield = SpellBook:GetSpell(974) |
|
|
|
|
local Tempest = SpellBook:GetSpell(454009) |
|
|
|
|
local NaturesSwiftness = SpellBook:GetSpell(378081) |
|
|
|
|
local HealingSurge = SpellBook:GetSpell(8004) |
|
|
|
|
local AncestralGuidance = SpellBook:GetSpell(108281) |
|
|
|
|
|
|
|
|
|
-- Buffs and Debuffs |
|
|
|
|
local MasterOfTheElements = SpellBook:GetSpell(260734) |
|
|
|
@ -117,6 +123,13 @@ DefaultAPL:AddSpell( |
|
|
|
|
end):SetTarget(BestTarget) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
DefaultAPL:AddSpell( |
|
|
|
|
Tempest:CastableIf(function(self) |
|
|
|
|
return BestTarget:Exists() and self:IsKnownAndUsable() and not Player:IsCastingOrChanneling() |
|
|
|
|
and Player:GetAuras():FindAny(MasterOfTheElements):IsUp() |
|
|
|
|
end):SetTarget(BestTarget) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
DefaultAPL:AddSpell( |
|
|
|
|
EarthShock:CastableIf(function(self) |
|
|
|
|
return BestTarget:Exists() and self:IsKnownAndUsable() and not Player:IsCastingOrChanneling() |
|
|
|
@ -170,6 +183,13 @@ OutOfCombatAPL:AddSpell( |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
-- AoE APL |
|
|
|
|
AoEAPL:AddSpell( |
|
|
|
|
Tempest:CastableIf(function(self) |
|
|
|
|
return BestTarget:Exists() and self:IsKnownAndUsable() and not Player:IsCastingOrChanneling() |
|
|
|
|
and ShouldAoE() |
|
|
|
|
end):SetTarget(BestTarget) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
AoEAPL:AddSpell( |
|
|
|
|
ChainLightning:CastableIf(function(self) |
|
|
|
|
return BestTarget:Exists() and self:IsKnownAndUsable() and not Player:IsCastingOrChanneling() |
|
|
|
@ -190,6 +210,13 @@ AoEAPL:AddSpell( |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
-- Cooldown APL |
|
|
|
|
CooldownAPL:AddSpell( |
|
|
|
|
AncestralGuidance:CastableIf(function(self) |
|
|
|
|
return self:IsKnownAndUsable() and not Player:IsCastingOrChanneling() |
|
|
|
|
and Player:GetPartyHPAround(40, 90) >= 3 |
|
|
|
|
end):SetTarget(Player) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
CooldownAPL:AddSpell( |
|
|
|
|
StormElemental:CastableIf(function(self) |
|
|
|
|
return self:IsKnownAndUsable() and not Player:IsCastingOrChanneling() and not Pet:Exists() |
|
|
|
@ -229,10 +256,19 @@ CooldownAPL:AddSpell( |
|
|
|
|
DefensiveAPL:AddSpell( |
|
|
|
|
AstralShift:CastableIf(function(self) |
|
|
|
|
return self:IsKnownAndUsable() and not Player:IsCastingOrChanneling() |
|
|
|
|
and Player:GetHP() < 50 |
|
|
|
|
and Player:GetHP() < 70 |
|
|
|
|
end):SetTarget(Player) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
DefensiveAPL:AddSpell( |
|
|
|
|
NaturesSwiftness:CastableIf(function(self) |
|
|
|
|
return self:IsKnownAndUsable() and not Player:IsCastingOrChanneling() |
|
|
|
|
and Player:GetHP() < 80 and HealingSurge:IsKnownAndUsable() |
|
|
|
|
end):SetTarget(Player):OnCast(function() |
|
|
|
|
HealingSurge:Cast(Player) |
|
|
|
|
end) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
-- Interrupt APL |
|
|
|
|
InterruptAPL:AddSpell( |
|
|
|
|
WindShear:CastableIf(function(self) |
|
|
|
|