parent
5d6668d038
commit
510a724bc2
@ -0,0 +1,154 @@ |
|||||||
|
local Unlocker, Caffeine = ... |
||||||
|
|
||||||
|
local OpenFury = Caffeine.Module:New('OpenFury') |
||||||
|
|
||||||
|
-- Units |
||||||
|
local player = Caffeine.UnitManager:Get('player') |
||||||
|
local target = Caffeine.UnitManager:Get('target') |
||||||
|
local none = Caffeine.UnitManager:Get('none') |
||||||
|
|
||||||
|
-- Spells |
||||||
|
local battle_shout = Caffeine.Globals.SpellBook:GetSpell(6673) |
||||||
|
local berserker_stance = Caffeine.Globals.SpellBook:GetSpell(386196) |
||||||
|
local charge = Caffeine.Globals.SpellBook:GetSpell(100) |
||||||
|
local hamstring = Caffeine.Globals.SpellBook:GetSpell(1715) |
||||||
|
local heroic_leap = Caffeine.Globals.SpellBook:GetSpell(6544) |
||||||
|
local heroic_throw = Caffeine.Globals.SpellBook:GetSpell(57755) |
||||||
|
local impending_victory = Caffeine.Globals.SpellBook:GetSpell(202168) |
||||||
|
local pummel = Caffeine.Globals.SpellBook:GetSpell(6552) |
||||||
|
local rallying_cry = Caffeine.Globals.SpellBook:GetSpell(97462) |
||||||
|
local shield_block = Caffeine.Globals.SpellBook:GetSpell(2565) |
||||||
|
local shield_slam = Caffeine.Globals.SpellBook:GetSpell(23922) |
||||||
|
local slam = Caffeine.Globals.SpellBook:GetSpell(1464) |
||||||
|
local spell_reflection = Caffeine.Globals.SpellBook:GetSpell(23920) |
||||||
|
local taunt = Caffeine.Globals.SpellBook:GetSpell(355) |
||||||
|
local avatar = Caffeine.Globals.SpellBook:GetSpell(107574) |
||||||
|
local bloodthirst = Caffeine.Globals.SpellBook:GetSpell(23881) |
||||||
|
local defensive_stance = Caffeine.Globals.SpellBook:GetSpell(386208) |
||||||
|
local enraged_regeneration = Caffeine.Globals.SpellBook:GetSpell(184364) |
||||||
|
local execute = Caffeine.Globals.SpellBook:GetSpell(280735) |
||||||
|
local odyns_fury = Caffeine.Globals.SpellBook:GetSpell(385059) |
||||||
|
local raging_blow = Caffeine.Globals.SpellBook:GetSpell(85288) |
||||||
|
local rampage = Caffeine.Globals.SpellBook:GetSpell(184367) |
||||||
|
local recklessness = Caffeine.Globals.SpellBook:GetSpell(1719) |
||||||
|
local whirlwind = Caffeine.Globals.SpellBook:GetSpell(190411) |
||||||
|
local spear_of_bastion = Caffeine.Globals.SpellBook:GetSpell(376079) |
||||||
|
|
||||||
|
|
||||||
|
-- Auras |
||||||
|
local enrage_buff = Caffeine.Globals.SpellBook:GetSpell(184362) |
||||||
|
local whirlwind_buff = Caffeine.Globals.SpellBook:GetSpell(85739) |
||||||
|
|
||||||
|
-- APLs |
||||||
|
local default_apl = Caffeine.APL:New('default') |
||||||
|
|
||||||
|
--[[ |
||||||
|
Talents |
||||||
|
BgEAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAChIoEARQICEFIhIQkESSaJRSkgQkkEpEgkIJBAAABEE |
||||||
|
]] |
||||||
|
|
||||||
|
-- Whirlwind to maintain buff (if 2+ targets) |
||||||
|
default_apl:AddSpell( |
||||||
|
whirlwind:CastableIf(function(self) |
||||||
|
return self:IsKnownAndUsable() and not Player:GetAuras():FindMy(whirlwind_buff):IsUp() and Player:GetEnemies(8) > 1 |
||||||
|
end):SetTarget(None) |
||||||
|
) |
||||||
|
|
||||||
|
-- If not Enraged, use Rampage if available or use Bloodthirst |
||||||
|
default_apl:AddSpell( |
||||||
|
rampage:CastableIf(function(self) |
||||||
|
return self:IsKnownAndUsable() and not Player:GetAuras():FindMy(enrage_buff):IsUp() and Player:GetPower() >= 80 |
||||||
|
end):SetTarget(Target) |
||||||
|
) |
||||||
|
|
||||||
|
default_apl:AddSpell( |
||||||
|
bloodthirst:CastableIf(function(self) |
||||||
|
return self:IsKnownAndUsable() and not Player:GetAuras():FindMy(enrage_buff):IsUp() |
||||||
|
end):SetTarget(Target) |
||||||
|
) |
||||||
|
|
||||||
|
-- Recklessness/Avatar |
||||||
|
default_apl:AddSpell( |
||||||
|
recklessness:CastableIf(function(self) |
||||||
|
return self:IsKnownAndUsable() and Player:GetAuras():FindMy(enrage_buff):IsUp() |
||||||
|
end):SetTarget(None) |
||||||
|
) |
||||||
|
|
||||||
|
default_apl:AddSpell( |
||||||
|
avatar:CastableIf(function(self) |
||||||
|
return self:IsKnownAndUsable() and Player:GetAuras():FindMy(enrage_buff):IsUp() |
||||||
|
end):SetTarget(None) |
||||||
|
) |
||||||
|
|
||||||
|
-- Spear of Bastion while enraged on CD |
||||||
|
default_apl:AddSpell( |
||||||
|
spear_of_bastion:CastableIf(function(self) |
||||||
|
return self:IsKnownAndUsable() and Player:GetAuras():FindMy(enrage_buff):IsUp() |
||||||
|
end):SetTarget(None):OnCast(function(self) |
||||||
|
local loc = Caffeine.UnitManager:FindEnemiesCentroid(4, 20) |
||||||
|
self:Click(loc) |
||||||
|
end) |
||||||
|
) |
||||||
|
|
||||||
|
-- Odyn's Fury while enraged on CD |
||||||
|
default_apl:AddSpell( |
||||||
|
odyns_fury:CastableIf(function(self) |
||||||
|
return self:IsKnownAndUsable() and Player:GetAuras():FindMy(enrage_buff):IsUp() |
||||||
|
end):SetTarget(Target) |
||||||
|
) |
||||||
|
|
||||||
|
-- Rampage when available |
||||||
|
default_apl:AddSpell( |
||||||
|
rampage:CastableIf(function(self) |
||||||
|
return self:IsKnownAndUsable() and Player:GetPower() >= 80 |
||||||
|
end):SetTarget(Target) |
||||||
|
) |
||||||
|
|
||||||
|
-- Execute when able |
||||||
|
default_apl:AddSpell( |
||||||
|
execute:CastableIf(function(self) |
||||||
|
return self:IsKnownAndUsable() and Target:GetHP() <= 35 |
||||||
|
end):SetTarget(Target) |
||||||
|
) |
||||||
|
|
||||||
|
-- Raging Blow if available |
||||||
|
default_apl:AddSpell( |
||||||
|
raging_blow:CastableIf(function(self) |
||||||
|
return self:IsKnownAndUsable() |
||||||
|
end):SetTarget(Target) |
||||||
|
) |
||||||
|
|
||||||
|
-- Bloodthirst filler |
||||||
|
default_apl:AddSpell( |
||||||
|
bloodthirst:CastableIf(function(self) |
||||||
|
return self:IsKnownAndUsable() |
||||||
|
end):SetTarget(Target) |
||||||
|
) |
||||||
|
|
||||||
|
-- Whirlwind filler |
||||||
|
default_apl:AddSpell( |
||||||
|
whirlwind:CastableIf(function(self) |
||||||
|
return self:IsKnownAndUsable() |
||||||
|
end):SetTarget(None) |
||||||
|
) |
||||||
|
|
||||||
|
OpenFury:Sync(function() |
||||||
|
if not player:IsFacing(target) and target:Exists() and not target:IsDead() then |
||||||
|
Caffeine.Util:FaceUnit(target) |
||||||
|
end |
||||||
|
|
||||||
|
if not player:InMelee(target) and target:Exists() and not target:IsDead() and target:IsHostile() then |
||||||
|
local tx, ty, tz = ObjectPosition('target') |
||||||
|
local px, py, pz = ObjectPosition('player') |
||||||
|
if GetTime() - move_to_timer > 0.5 and FastDistance(px, py, pz, tx, ty, tz) > 5 then |
||||||
|
MoveTo(tx, ty, tz) |
||||||
|
move_to_timer = GetTime() |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
if player:IsAffectingCombat() and target:Exists() and target:IsHostile() and not target:IsDead() and player:IsFacing(target) then |
||||||
|
default_apl:Execute() |
||||||
|
end |
||||||
|
end) |
||||||
|
|
||||||
|
Caffeine:Register(OpenFury) |
Loading…
Reference in new issue