parent
6a07593eec
commit
4cb3ebd717
@ -0,0 +1,158 @@ |
||||
local Tinkr, Bastion = ... |
||||
local BeastMasteryModule = Bastion.Module:New('BeastMasteryHunter') |
||||
local Player = Bastion.UnitManager:Get('player') |
||||
local Target = Bastion.UnitManager:Get('target') |
||||
local Pet = Bastion.UnitManager:Get('pet') |
||||
local Focus = Bastion.UnitManager:Get('focus') |
||||
local SpellBook = Bastion.SpellBook:New() |
||||
|
||||
-- Spells |
||||
local KillCommand = SpellBook:GetSpell(34026) |
||||
local BarbedShot = SpellBook:GetSpell(217200) |
||||
local CobraShot = SpellBook:GetSpell(193455) |
||||
local MultiShot = SpellBook:GetSpell(2643) |
||||
local BeastCleave = SpellBook:GetSpell(115939) |
||||
local AspectOfTheWild = SpellBook:GetSpell(193530) |
||||
local BestialWrath = SpellBook:GetSpell(19574) |
||||
local Bloodshed = SpellBook:GetSpell(321530) |
||||
local DireBeast = SpellBook:GetSpell(120679) |
||||
local Barrage = SpellBook:GetSpell(120360) |
||||
local CounterShot = SpellBook:GetSpell(147362) |
||||
local Intimidation = SpellBook:GetSpell(19577) |
||||
local BindingShot = SpellBook:GetSpell(109248) |
||||
local FreezingTrap = SpellBook:GetSpell(187650) |
||||
local TarTrap = SpellBook:GetSpell(187698) |
||||
local Exhilaration = SpellBook:GetSpell(109304) |
||||
local FeignDeath = SpellBook:GetSpell(5384) |
||||
local TranquilizingShot = SpellBook:GetSpell(19801) |
||||
|
||||
-- Buffs |
||||
local FrenzyBuff = SpellBook:GetSpell(272790) |
||||
local BeastCleaveBuff = SpellBook:GetSpell(268877) |
||||
|
||||
-- Create APLs |
||||
local DefaultAPL = Bastion.APL:New('default') |
||||
local CooldownAPL = Bastion.APL:New('cooldown') |
||||
local AoEAPL = Bastion.APL:New('aoe') |
||||
local DefensiveAPL = Bastion.APL:New('defensive') |
||||
local UtilityAPL = Bastion.APL:New('utility') |
||||
|
||||
-- Utility APL |
||||
UtilityAPL:AddSpell( |
||||
CounterShot:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and (Target:IsCasting() and Target:IsInterruptible() or |
||||
(Focus:Exists() and Focus:IsCasting() and Focus:IsInterruptible())) |
||||
end):SetTarget(function() return Focus:Exists() and Focus:IsCasting() and Focus or Target end) |
||||
) |
||||
|
||||
UtilityAPL:AddSpell( |
||||
Intimidation:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and Target:IsCasting() and not Target:IsInterruptible() |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
UtilityAPL:AddSpell( |
||||
BindingShot:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and Player:GetEnemies(30) > 2 |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
UtilityAPL:AddSpell( |
||||
TarTrap:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and Player:GetEnemies(40) > 2 |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
UtilityAPL:AddSpell( |
||||
TranquilizingShot:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and Target:GetAuras():HasAnyStealableAura() |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
-- Defensive APL |
||||
DefensiveAPL:AddSpell( |
||||
Exhilaration:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and Player:GetHP() < 30 |
||||
end):SetTarget(Player) |
||||
) |
||||
|
||||
DefensiveAPL:AddSpell( |
||||
FeignDeath:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and Player:GetHP() < 15 |
||||
end):SetTarget(Player) |
||||
) |
||||
|
||||
-- Cooldown APL |
||||
CooldownAPL:AddSpell( |
||||
AspectOfTheWild:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() |
||||
end):SetTarget(Player) |
||||
) |
||||
|
||||
CooldownAPL:AddSpell( |
||||
BestialWrath:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() |
||||
end):SetTarget(Player) |
||||
) |
||||
|
||||
CooldownAPL:AddSpell( |
||||
Bloodshed:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
-- AoE APL |
||||
AoEAPL:AddSpell( |
||||
MultiShot:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and (not Pet:GetAuras():FindMy(BeastCleaveBuff):IsUp() or |
||||
Pet:GetAuras():FindMy(BeastCleaveBuff):GetRemainingTime() < 2) |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
AoEAPL:AddSpell( |
||||
Barrage:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and Player:GetEnemies(10) >= 3 |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
-- Default APL |
||||
DefaultAPL:AddSpell( |
||||
BarbedShot:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and |
||||
(Pet:GetAuras():FindMy(FrenzyBuff):GetRemainingTime() < 2 or self:GetCharges() == 2) |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
DefaultAPL:AddSpell( |
||||
KillCommand:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
DefaultAPL:AddSpell( |
||||
DireBeast:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
DefaultAPL:AddSpell( |
||||
CobraShot:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and Player:GetPower() > 70 and KillCommand:GetCooldownRemaining() > 2 |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
BeastMasteryModule:Sync(function() |
||||
if not Player:IsAffectingCombat() then return end |
||||
|
||||
UtilityAPL:Execute() |
||||
DefensiveAPL:Execute() |
||||
|
||||
if Player:GetEnemies(10) >= 3 then |
||||
AoEAPL:Execute() |
||||
end |
||||
|
||||
CooldownAPL:Execute() |
||||
DefaultAPL:Execute() |
||||
end) |
||||
|
||||
Bastion:Register(BeastMasteryModule) |
Loading…
Reference in new issue