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