|
|
@ -1,7 +1,7 @@ |
|
|
|
local Tinkr, Bastion = ... |
|
|
|
local Tinkr, Bastion = ... |
|
|
|
|
|
|
|
|
|
|
|
-- Core |
|
|
|
-- Core |
|
|
|
local AssassinationModule = Bastion.Module:New('Rogue_Assassination_PvE_WOTLK') |
|
|
|
local AssassinationModule = Bastion.Module:New('assa') |
|
|
|
local Player = Bastion.UnitManager:Get('player') |
|
|
|
local Player = Bastion.UnitManager:Get('player') |
|
|
|
local Target = Bastion.UnitManager:Get('target') |
|
|
|
local Target = Bastion.UnitManager:Get('target') |
|
|
|
local Focus = Bastion.UnitManager:Get('focus') |
|
|
|
local Focus = Bastion.UnitManager:Get('focus') |
|
|
@ -29,25 +29,25 @@ Draw:Sync(function(draw) |
|
|
|
end) |
|
|
|
end) |
|
|
|
|
|
|
|
|
|
|
|
-- SpellBook |
|
|
|
-- SpellBook |
|
|
|
local SliceAndDice = Bastion.SpellBook:GetSpell(6774) |
|
|
|
local SliceAndDice = Bastion.SpellBook:GetSpell(6774) |
|
|
|
local Rupture = Bastion.SpellBook:GetSpell(48672) |
|
|
|
local Rupture = Bastion.SpellBook:GetSpell(48672) |
|
|
|
local HungerForBloodAura = Bastion.SpellBook:GetSpell(63848) |
|
|
|
local HungerForBloodAura = Bastion.SpellBook:GetSpell(63848) |
|
|
|
local HungerForBlood = Bastion.SpellBook:GetSpell(51662) |
|
|
|
local HungerForBlood = Bastion.SpellBook:GetSpell(51662) |
|
|
|
local Vanish = Bastion.SpellBook:GetSpell(26889) |
|
|
|
local Vanish = Bastion.SpellBook:GetSpell(26889) |
|
|
|
local Overkill = Bastion.SpellBook:GetSpell(58427) |
|
|
|
local Overkill = Bastion.SpellBook:GetSpell(58427) |
|
|
|
local ColdBlood = Bastion.SpellBook:GetSpell(14177) |
|
|
|
local ColdBlood = Bastion.SpellBook:GetSpell(14177) |
|
|
|
local Envenom = Bastion.SpellBook:GetSpell(57993) |
|
|
|
local Envenom = Bastion.SpellBook:GetSpell(57993) |
|
|
|
local Mutilate = Bastion.SpellBook:GetSpell(48666) |
|
|
|
local Mutilate = Bastion.SpellBook:GetSpell(48666) |
|
|
|
local TricksOfTheTrade = Bastion.SpellBook:GetSpell(57934) |
|
|
|
local TricksOfTheTrade = Bastion.SpellBook:GetSpell(57934) |
|
|
|
local FanOfKnives = Bastion.SpellBook:GetSpell(51723) |
|
|
|
local FanOfKnives = Bastion.SpellBook:GetSpell(51723) |
|
|
|
local Kick = Bastion.SpellBook:GetSpell(1766) |
|
|
|
local Kick = Bastion.SpellBook:GetSpell(1766) |
|
|
|
|
|
|
|
|
|
|
|
-- Items |
|
|
|
-- Items |
|
|
|
local PotionOfSpeed = Bastion.ItemBook:GetItem(40211) |
|
|
|
local PotionOfSpeed = Bastion.ItemBook:GetItem(40211) |
|
|
|
|
|
|
|
|
|
|
|
-- APLs |
|
|
|
-- APLs |
|
|
|
local PreCombatAPL = Bastion.APL:New('precombat') |
|
|
|
local PreCombatAPL = Bastion.APL:New('precombat') |
|
|
|
local DefaultAPL = Bastion.APL:New('default') |
|
|
|
local DefaultAPL = Bastion.APL:New('default') |
|
|
|
|
|
|
|
|
|
|
|
-- actions.precombat+=/tricks_of_the_trade,if=group |
|
|
|
-- actions.precombat+=/tricks_of_the_trade,if=group |
|
|
|
PreCombatAPL:AddSpell( |
|
|
|
PreCombatAPL:AddSpell( |
|
|
@ -59,14 +59,22 @@ PreCombatAPL:AddSpell( |
|
|
|
-- actions.precombat+=/potion |
|
|
|
-- actions.precombat+=/potion |
|
|
|
PreCombatAPL:AddItem( |
|
|
|
PreCombatAPL:AddItem( |
|
|
|
PotionOfSpeed:UsableIf(function(self) |
|
|
|
PotionOfSpeed:UsableIf(function(self) |
|
|
|
return Target:Exists() and self:IsUsable() and Target:IsBoss() and Target:IsAffectingCombat() |
|
|
|
return Target:Exists() and self:IsUsable() and Target:IsBoss() and Target:IsAffectingCombat() and |
|
|
|
|
|
|
|
Player:CanAttack(Target) |
|
|
|
end):SetTarget(Player) |
|
|
|
end):SetTarget(Player) |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- actions.precombat+=/mutilate,if=combo_points.deficit>1 |
|
|
|
|
|
|
|
PreCombatAPL:AddSpell( |
|
|
|
|
|
|
|
Mutilate:CastableIf(function(self) |
|
|
|
|
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and self:IsInRange(Target) and Target:IsAffectingCombat() |
|
|
|
|
|
|
|
end):SetTarget(Target) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
-- actions+=/kick |
|
|
|
-- actions+=/kick |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
Kick:CastableIf(function(self) |
|
|
|
Kick:CastableIf(function(self) |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and self:IsInRange(Target) and Target:IsCastingOrChanneling() |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and self:IsInRange(Target) and Target:IsInterruptible() |
|
|
|
end):SetTarget(Target) |
|
|
|
end):SetTarget(Target) |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
@ -77,59 +85,69 @@ DefaultAPL:AddSpell( |
|
|
|
end):SetTarget(Target) |
|
|
|
end):SetTarget(Target) |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
-- actions+=/fan_of_knives,if=active_enemies> 3 |
|
|
|
-- actions+=/fan_of_knives,if=active_enemies> 6 |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
FanOfKnives:CastableIf(function(self) |
|
|
|
FanOfKnives:CastableIf(function(self) |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and Player:GetEnemies(10) >= 3 |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and Player:GetEnemies(10) > 6 |
|
|
|
end):SetTarget(Target) |
|
|
|
end):SetTarget(Target) |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
-- actions+=/hunger_for_blood,if=buff.hunger_for_blood.down |
|
|
|
-- actions+=/hunger_for_blood,if=buff.hunger_for_blood.down |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
HungerForBlood:CastableIf(function(self) |
|
|
|
HungerForBlood:CastableIf(function(self) |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and self:IsInRange(Target) and (not Player:GetAuras():FindMy(HungerForBloodAura):IsUp() or Player:GetAuras():FindMy(HungerForBloodAura):GetRemainingTime() < 5) |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and self:IsInRange(Target) and |
|
|
|
|
|
|
|
not Player:GetAuras():FindMy(HungerForBloodAura):IsUp() or |
|
|
|
|
|
|
|
Player:GetAuras():FindMy(HungerForBloodAura):GetRemainingTime() < 5 |
|
|
|
end):SetTarget(Target) |
|
|
|
end):SetTarget(Target) |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
-- actions+=/rupture,if=talent.hunger_for_blood.enabled&buff.hunger_for_blood.down |
|
|
|
-- actions+=/rupture,if=talent.hunger_for_blood.enabled&buff.hunger_for_blood.down |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
Rupture:CastableIf(function(self) |
|
|
|
Rupture:CastableIf(function(self) |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and self:IsInRange(Target) and not Player:GetAuras():FindMy(HungerForBloodAura):IsUp() |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and self:IsInRange(Target) and |
|
|
|
|
|
|
|
not Player:GetAuras():FindMy(HungerForBloodAura):IsUp() or |
|
|
|
|
|
|
|
Player:GetAuras():FindMy(HungerForBloodAura):GetRemainingTime() < 5 |
|
|
|
end):SetTarget(Target) |
|
|
|
end):SetTarget(Target) |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
-- actions+=/vanish,if=talent.overkill.enabled&buff.overkill.down |
|
|
|
-- actions+=/vanish,if=talent.overkill.enabled&buff.overkill.down |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
Vanish:CastableIf(function(self) |
|
|
|
Vanish:CastableIf(function(self) |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and self:IsInRange(Target) and Target:IsBoss() and not Player:GetAuras():FindMy(Overkill):IsUp() |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and self:IsInRange(Target) and Target:IsBoss() and |
|
|
|
|
|
|
|
not Player:GetAuras():FindMy(Overkill):IsUp() |
|
|
|
end):SetTarget(Target) |
|
|
|
end):SetTarget(Target) |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
-- actions+=/tricks_of_the_trade,if=group |
|
|
|
|
|
|
|
DefaultAPL:AddSpell( |
|
|
|
|
|
|
|
TricksOfTheTrade:CastableIf(function(self) |
|
|
|
|
|
|
|
return Focus:Exists() and self:IsInRange(Focus) and self:IsKnownAndUsable() and Focus:IsAffectingCombat() |
|
|
|
|
|
|
|
end):SetTarget(Focus) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- actions+=/cold_blood,if=combo_points.deficit=0 |
|
|
|
-- actions+=/cold_blood,if=combo_points.deficit=0 |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
ColdBlood:CastableIf(function(self) |
|
|
|
ColdBlood:CastableIf(function(self) |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and self:IsInRange(Target) and Target:IsBoss() and Player:GetComboPointsDeficit(Target) < 2 and not Player:GetAuras():FindMy(Envenom):IsUp() |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and self:IsInRange(Target) and |
|
|
|
|
|
|
|
Target:IsBoss() and |
|
|
|
|
|
|
|
Player:GetComboPointsDeficit(Target) < 2 and not Player:GetAuras():FindMy(Envenom):IsUp() |
|
|
|
end):SetTarget(Target) |
|
|
|
end):SetTarget(Target) |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
-- actions+=/envenom,if=combo_points.deficit<2&(debuff.envenom.down|energy.time_to_max<debuff.envenom.remains) |
|
|
|
-- actions+=/envenom,if=combo_points.deficit<2&(debuff.envenom.down|energy.time_to_max<debuff.envenom.remains) |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
Envenom:CastableIf(function(self) |
|
|
|
Envenom:CastableIf(function(self) |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and self:IsInRange(Target) and Player:GetComboPointsDeficit(Target) < 2 and not Player:GetAuras():FindMy(Envenom):IsUp() and Player:GetPowerDeficit() < 35 |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and self:IsInRange(Target) |
|
|
|
|
|
|
|
and (Player:GetAuras():FindMy(SliceAndDice):GetRemainingTime() < 4 |
|
|
|
|
|
|
|
or (Player:GetComboPointsDeficit(Target) < 2 and not Player:GetAuras():FindMy(Envenom):IsUp())) |
|
|
|
end):SetTarget(Target) |
|
|
|
end):SetTarget(Target) |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- actions+=/tricks_of_the_trade,if=group |
|
|
|
|
|
|
|
DefaultAPL:AddSpell( |
|
|
|
|
|
|
|
TricksOfTheTrade:CastableIf(function(self) |
|
|
|
|
|
|
|
return Focus:Exists() and self:IsInRange(Focus) and self:IsKnownAndUsable() and Focus:IsAffectingCombat() |
|
|
|
|
|
|
|
end):SetTarget(Focus) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
-- actions+=/mutilate,if=combo_points.deficit>1 |
|
|
|
-- actions+=/mutilate,if=combo_points.deficit>1 |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
DefaultAPL:AddSpell( |
|
|
|
Mutilate:CastableIf(function(self) |
|
|
|
Mutilate:CastableIf(function(self) |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and self:IsInRange(Target) and Player:GetComboPointsDeficit(Target) > 1 |
|
|
|
return Target:Exists() and self:IsKnownAndUsable() and self:IsInRange(Target) and |
|
|
|
|
|
|
|
Player:GetComboPointsDeficit(Target) > 1 |
|
|
|
end):SetTarget(Target) |
|
|
|
end):SetTarget(Target) |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
@ -147,30 +165,3 @@ AssassinationModule:Sync(function() |
|
|
|
Draw:Enable() |
|
|
|
Draw:Enable() |
|
|
|
end) |
|
|
|
end) |
|
|
|
Bastion:Register(AssassinationModule) |
|
|
|
Bastion:Register(AssassinationModule) |
|
|
|
|
|
|
|
|
|
|
|
--[[ |
|
|
|
|
|
|
|
## Assassination Rogue |
|
|
|
|
|
|
|
## 16 October 2022 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
actions.precombat+=/tricks_of_the_trade,if=group |
|
|
|
|
|
|
|
actions.precombat+=/potion |
|
|
|
|
|
|
|
actions.precombat+=/stealth |
|
|
|
|
|
|
|
actions.precombat+=/garrote,if=solo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
actions+=/kick |
|
|
|
|
|
|
|
actions+=/slice_and_dice,if=buff.slice_and_dice.down |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
actions+=/adrenaline_rush,if=active_enemies>1 |
|
|
|
|
|
|
|
actions+=/blade_flurry,if=active_enemies>1 |
|
|
|
|
|
|
|
actions+=/fan_of_knives,if=active_enemies>1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
actions+=/rupture,if=talent.hunger_for_blood.enabled&buff.hunger_for_blood.down&debuff.garrote.down |
|
|
|
|
|
|
|
actions+=/hunger_for_blood,if=buff.hunger_for_blood.down |
|
|
|
|
|
|
|
actions+=/shadowmeld,if=talent.overkill.enabled&buff.overkill.down |
|
|
|
|
|
|
|
actions+=/vanish,if=talent.overkill.enabled&buff.overkill.down |
|
|
|
|
|
|
|
actions+=/tricks_of_the_trade,if=group |
|
|
|
|
|
|
|
actions+=/envenom,if=combo_points.deficit=0&buff.cold_blood.up |
|
|
|
|
|
|
|
actions+=/cold_blood,if=combo_points.deficit=0 |
|
|
|
|
|
|
|
actions+=/envenom,if=combo_points.deficit<2&(debuff.envenom.down|energy.time_to_max<debuff.envenom.remains) |
|
|
|
|
|
|
|
actions+=/mutilate,if=combo_points.deficit>0 |
|
|
|
|
|
|
|
--]] |
|
|
|
|