forked from Bastion/Bastion
				
			
			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.
		
		
		
		
		
			
		
			
				
					
					
						
							66 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
	
	
							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)
 | 
						|
 |