parent
a595fe3b17
commit
8dd99552e9
@ -0,0 +1,154 @@ |
||||
local Tinkr, Bastion = ... |
||||
local FrostMageModule = Bastion.Module:New('FrostMage') |
||||
local Player = Bastion.UnitManager:Get('player') |
||||
local Target = Bastion.UnitManager:Get('target') |
||||
local SpellBook = Bastion.SpellBook:New() |
||||
|
||||
-- Spells |
||||
local Frostbolt = SpellBook:GetSpell(116) |
||||
local Flurry = SpellBook:GetSpell(44614) |
||||
local IceLance = SpellBook:GetSpell(30455) |
||||
local CometStorm = SpellBook:GetSpell(153595) |
||||
local GlacialSpike = SpellBook:GetSpell(199786) |
||||
local FrozenOrb = SpellBook:GetSpell(84714) |
||||
local ShiftingPower = SpellBook:GetSpell(382440) |
||||
local IcyVeins = SpellBook:GetSpell(12472) |
||||
local Blizzard = SpellBook:GetSpell(190356) |
||||
local IceNova = SpellBook:GetSpell(157997) |
||||
local ArcaneExplosion = SpellBook:GetSpell(1449) |
||||
|
||||
-- Buffs |
||||
local FingersOfFrost = SpellBook:GetSpell(112965) |
||||
local BrainFreeze = SpellBook:GetSpell(190446) |
||||
local WintersChill = SpellBook:GetSpell(228358) |
||||
local DeathsChill = SpellBook:GetSpell(305393) |
||||
|
||||
-- Create APLs |
||||
local DefaultAPL = Bastion.APL:New('default') |
||||
local AoEAPL = Bastion.APL:New('aoe') |
||||
local CooldownAPL = Bastion.APL:New('cooldown') |
||||
|
||||
-- Cooldown APL |
||||
CooldownAPL:AddSpell( |
||||
IcyVeins:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() |
||||
end):SetTarget(Player) |
||||
) |
||||
|
||||
-- Default (Single Target) APL |
||||
DefaultAPL:AddSpell( |
||||
CometStorm:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and Target:GetAuras():FindMy(WintersChill):IsUp() |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
DefaultAPL:AddSpell( |
||||
Flurry:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and (Player:GetAuras():FindMy(BrainFreeze):IsUp() or Player:GetComboPoints() == 4) |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
DefaultAPL:AddSpell( |
||||
GlacialSpike:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and (Target:GetAuras():FindMy(WintersChill):IsUp() or Player:GetComboPoints() == 5) |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
DefaultAPL:AddSpell( |
||||
FrozenOrb:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
DefaultAPL:AddSpell( |
||||
ShiftingPower:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and CometStorm:GetCooldownRemaining() > 10 and FrozenOrb:GetCooldownRemaining() > 10 |
||||
end):SetTarget(Player) |
||||
) |
||||
|
||||
DefaultAPL:AddSpell( |
||||
IceLance:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and (Target:GetAuras():FindMy(WintersChill):IsUp() or Player:GetAuras():FindMy(FingersOfFrost):IsUp()) |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
DefaultAPL:AddSpell( |
||||
Frostbolt:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
-- AoE APL |
||||
AoEAPL:AddSpell( |
||||
FrozenOrb:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
AoEAPL:AddSpell( |
||||
Blizzard:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
AoEAPL:AddSpell( |
||||
CometStorm:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and Player:GetAuras():FindMy(DeathsChill):GetCount() >= 12 |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
AoEAPL:AddSpell( |
||||
IceNova:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and GlacialSpike:GetTimeSinceLastCast() < 1.5 |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
AoEAPL:AddSpell( |
||||
ShiftingPower:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() |
||||
end):SetTarget(Player) |
||||
) |
||||
|
||||
AoEAPL:AddSpell( |
||||
GlacialSpike:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
AoEAPL:AddSpell( |
||||
Flurry:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
AoEAPL:AddSpell( |
||||
IceLance:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and Player:GetAuras():FindMy(FingersOfFrost):IsUp() |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
AoEAPL:AddSpell( |
||||
ArcaneExplosion:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() and Player:GetEnemies(10) >= 7 and Player:GetPP() > 30 |
||||
end):SetTarget(Player) |
||||
) |
||||
|
||||
AoEAPL:AddSpell( |
||||
Frostbolt:CastableIf(function(self) |
||||
return self:IsKnownAndUsable() |
||||
end):SetTarget(Target) |
||||
) |
||||
|
||||
FrostMageModule:Sync(function() |
||||
if not Player:IsAffectingCombat() then return end |
||||
|
||||
CooldownAPL:Execute() |
||||
|
||||
if Player:GetEnemies(10) > 2 then |
||||
AoEAPL:Execute() |
||||
else |
||||
DefaultAPL:Execute() |
||||
end |
||||
end) |
||||
|
||||
Bastion:Register(FrostMageModule) |
Loading…
Reference in new issue