| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -61,14 +61,14 @@ local InterruptTarget = Bastion.UnitManager:CreateCustomUnit('interrupttarget', | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    Bastion.UnitManager:EnumEnemies(function(unit) | 
					 | 
					 | 
					 | 
					    Bastion.UnitManager:EnumEnemies(function(unit) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if unit:IsAffectingCombat() and unit:GetDistance(Player) <= 40 and Player:CanSee(unit) | 
					 | 
					 | 
					 | 
					        if unit:IsAffectingCombat() and unit:GetDistance(Player) <= 40 and Player:CanSee(unit) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					           and unit:IsCasting() and unit:IsInterruptible() then | 
					 | 
					 | 
					 | 
					           and unit:IsCasting() and unit:IsInterruptible() then | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            local castPercentage = GetCastPercentage(unit) | 
					 | 
					 | 
					 | 
					            local castPercentage = unit:GetChannelOrCastPercentComplete() | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if castPercentage >= 30 and castPercentage <= 80 then | 
					 | 
					 | 
					 | 
					            if castPercentage >= 30 and castPercentage <= 80 then | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                target = unit | 
					 | 
					 | 
					 | 
					                target = unit | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                return true | 
					 | 
					 | 
					 | 
					                return true | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            end | 
					 | 
					 | 
					 | 
					            end | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        end | 
					 | 
					 | 
					 | 
					        end | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    end) | 
					 | 
					 | 
					 | 
					    end) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return target or BestTarget | 
					 | 
					 | 
					 | 
					    return target or Bastion.UnitManager:Get('none') | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					end) | 
					 | 
					 | 
					 | 
					end) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					local ExecuteTarget = Bastion.UnitManager:CreateCustomUnit('executetarget', function() | 
					 | 
					 | 
					 | 
					local ExecuteTarget = Bastion.UnitManager:CreateCustomUnit('executetarget', function() | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -355,16 +355,12 @@ PetAPL:AddSpell( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					-- Interrupt APL | 
					 | 
					 | 
					 | 
					-- Interrupt APL | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					InterruptAPL:AddSpell( | 
					 | 
					 | 
					 | 
					InterruptAPL:AddSpell( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    CounterShot:CastableIf(function(self) | 
					 | 
					 | 
					 | 
					    CounterShot:CastableIf(function(self) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if not BestTarget:Exists() or not self:IsKnownAndUsable() or Player:IsCastingOrChanneling() then | 
					 | 
					 | 
					 | 
					        local target = InterruptTarget | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            return false | 
					 | 
					 | 
					 | 
					        return target:Exists() and self:IsKnownAndUsable() and not Player:IsCastingOrChanneling() | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        end | 
					 | 
					 | 
					 | 
					            and target:IsCasting() and target:IsInterruptible() | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					         | 
					 | 
					 | 
					 | 
					            and target:GetChannelOrCastPercentComplete() >= 30 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if BestTarget:IsCasting() and BestTarget:IsInterruptible() then | 
					 | 
					 | 
					 | 
					            and target:GetChannelOrCastPercentComplete() <= 80 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            return ShouldInterrupt(BestTarget) | 
					 | 
					 | 
					 | 
					    end):SetTarget(InterruptTarget) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        end | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					         | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return false | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    end):SetTarget(BestTarget) | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					) | 
					 | 
					 | 
					 | 
					) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					-- Defensive APL | 
					 | 
					 | 
					 | 
					-- Defensive APL | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |