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.

93 lines
3.6 KiB

--- ============================ HEADER ============================
-- HeroLib
local HL = HeroLib
local Cache = HeroCache
local Unit = HL.Unit
local Player = Unit.Player
local Pet = Unit.Pet
local Target = Unit.Target
local Spell = HL.Spell
local Item = HL.Item
-- HeroRotation
local HR = HeroRotation
-- Spells
local SpellFury = Spell.Warrior.Fury
local SpellArms = Spell.Warrior.Arms
local SpellProt = Spell.Warrior.Protection
-- Lua
--- ============================ CONTENT ============================
-- Arms, ID: 71
local ArmsOldSpellIsCastable
ArmsOldSpellIsCastable = HL.AddCoreOverride ("Spell.IsCastable",
function (self, BypassRecovery, Range, AoESpell, ThisUnit, Offset)
local BaseCheck = ArmsOldSpellIsCastable(self, BypassRecovery, Range, AoESpell, ThisUnit, Offset)
if self == SpellArms.Charge then
return BaseCheck and (self:Charges() >= 1 and (Player:AffectingCombat() and (not Target:IsInRange(8)) and Target:IsInRange(25) or not Player:AffectingCombat()))
else
return BaseCheck
end
end
, 71)
-- Fury, ID: 72
local FuryOldSpellIsCastable
FuryOldSpellIsCastable = HL.AddCoreOverride ("Spell.IsCastable",
function (self, BypassRecovery, Range, AoESpell, ThisUnit, Offset)
local BaseCheck = FuryOldSpellIsCastable(self, BypassRecovery, Range, AoESpell, ThisUnit, Offset)
if self == SpellFury.Charge then
return BaseCheck and (self:Charges() >= 1 and (Player:AffectingCombat() and (not Target:IsInRange(8)) and Target:IsInRange(25) or not Player:AffectingCombat()))
else
return BaseCheck
end
end
, 72)
local FuryOldSpellIsReady
FuryOldSpellIsReady = HL.AddCoreOverride ("Spell.IsReady",
function (self, Range, AoESpell, ThisUnit, BypassRecovery, Offset)
local BaseCheck = FuryOldSpellIsReady(self, Range, AoESpell, ThisUnit, BypassRecovery, Offset)
if self == SpellFury.Rampage then
if Player:PrevGCDP(1, SpellFury.Bladestorm) then
return self:IsCastable() and Player:Rage() >= self:Cost()
else
return BaseCheck
end
else
return BaseCheck
end
end
, 72)
-- Protection, ID: 73
local ProtOldSpellIsCastable
ProtOldSpellIsCastable = HL.AddCoreOverride ("Spell.IsCastable",
function (self, BypassRecovery, Range, AoESpell, ThisUnit, Offset)
local BaseCheck = ProtOldSpellIsCastable(self, BypassRecovery, Range, AoESpell, ThisUnit, Offset)
if self == SpellProt.Charge then
return BaseCheck and (self:Charges() >= 1 and (not Target:IsInRange(8)))
elseif self == SpellProt.HeroicThrow or self == SpellProt.TitanicThrow then
return BaseCheck and (not Target:IsInRange(8))
elseif self == SpellProt.Avatar then
return BaseCheck and (Player:BuffDown(SpellProt.AvatarBuff))
elseif self == SpellProt.Intervene then
return BaseCheck and (Player:IsInParty() or Player:IsInRaid())
else
return BaseCheck
end
end
, 73)
-- Example (Arcane Mage)
-- HL.AddCoreOverride ("Spell.IsCastableP",
-- function (self, Range, AoESpell, ThisUnit, BypassRecovery, Offset)
-- if Range then
-- local RangeUnit = ThisUnit or Target
-- return self:IsLearned() and self:CooldownRemainsP( BypassRecovery, Offset or "Auto") == 0 and RangeUnit:IsInRange( Range, AoESpell )
-- elseif self == SpellArcane.MarkofAluneth then
-- return self:IsLearned() and self:CooldownRemainsP( BypassRecovery, Offset or "Auto") == 0 and not Player:IsCasting(self)
-- else
-- return self:IsLearned() and self:CooldownRemainsP( BypassRecovery, Offset or "Auto") == 0
-- end
-- end
-- , 62)