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/paladin_protection.lua

66 lines
2.0 KiB

local Tinkr, _Bastion = ...
---@type Bastion
local Bastion = _Bastion
local ProtModule = Bastion.Module:New('paladin_protection')
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 Consecrate = Bastion.SpellBook:GetSpell(26573)
local ConsecrateAura = Bastion.SpellBook:GetSpell(188370)
local Judgement = Bastion.SpellBook:GetSpell(275779)
---@return boolean
local function CombatRotation()
-- Cast Consecrate if an enemy is in range, and the player isnt moving.
if Consecrate:IsKnownAndUsable() and not Player:IsMoving() and not Player:GetAuras():FindMy(ConsecrateAura):IsUp() and Player:GetEnemies(10) >= 1 then
return Consecrate:Cast(Player)
end
if Judgement:IsKnownAndUsable() and Target:Exists() and not Player:IsCastingOrChanneling() and Judgement:IsInRange(Target) then
return Judgement:Cast(Target)
end
return false
end
---@return boolean
local function OutOfCombatRotation()
return false
end
local isRunning = false
ProtModule:Sync(function()
if not isRunning then
Bastion:Print('Prot Paladin Started')
isRunning = true
end
if not Player:IsAlive() then
return false
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
return CombatRotation()
else
-- Out Of Combat Rotation
return OutOfCombatRotation()
end
end)
Bastion:Register(ProtModule)