Bastion aims to serve as a highly performant, simplisitic, and expandable World of Warcraft data visualization framework.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Bastion/scripts/protpaladin.lua

75 lines
1.8 KiB

local Tinkr = ...
---@class Bastion
local Bastion = ...
local ProtModule = Bastion.Module:New('prot_paladin')
local Evaluator = Tinkr.Util.Evaluator
local Player = Bastion.UnitManager:Get('player')
local Target = Bastion.UnitManager:Get('target')
local CrusaderAura = Bastion.SpellBook:GetSpell(32223)
local DevoAura = Bastion.SpellBook:GetSpell(465)
local PlayerSelfWOGPercent = 40
local WOGTarget = Bastion.UnitManager:CreateCustomUnit('wogtarget', function(unit)
local lowest = nil
local lowestHP = math.huge
Bastion.UnitManager:EnumFriends(function(unit)
if unit:IsDead() then
return false
end
if Player:GetDistance(unit) > 40 then
return false
end
if not Player:CanSee(unit) then
return false
end
local hp = unit:GetHP()
if hp < lowestHP then
lowest = unit
lowestHP = hp
end
return false
end)
if not lowest or Player:GetHP() < lowest then
lowest = Player
end
return lowest
end)
local isRunning = false
ProtModule:Sync(function()
if not isRunning then
Bastion:Print('Prot Pally Started')
isRunning = true
end
-- Cast Crusader Aura if talented and the player is mounted.
if Player:IsMounted() and CrusaderAura:IsKnownAndUsable() and not Player:GetAuras():FindMy(CrusaderAura):IsUp() and not Player:IsCastingOrChanneling() then
return CrusaderAura:Cast(Player)
end
-- Cast Devo Aura if the player is not mounted.
if not Player:IsMounted() and DevoAura:IsKnownAndUsable() and not Player:GetAuras():FindMy(DevoAura):IsUp() and not Player:IsCastingOrChanneling() then
return DevoAura:Cast(Player)
end
if Player:IsAffectingCombat() then
-- Combat Rotation
else
-- Out Of Combat Rotation
end
end)
Bastion:Register(ProtModule)