|
|
|
|
--- ============================ 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 SpellDeva = Spell.Evoker.Devastation
|
|
|
|
|
local SpellAug = Spell.Evoker.Augmentation
|
|
|
|
|
-- Lua
|
|
|
|
|
-- API
|
|
|
|
|
local GetPowerRegenForPowerType = GetPowerRegenForPowerType
|
|
|
|
|
local EssencePowerType = Enum.PowerType.Essence
|
|
|
|
|
|
|
|
|
|
--- ============================ CONTENT ============================
|
|
|
|
|
-- Devastation, ID: 1467
|
|
|
|
|
local DevOldIsCastable
|
|
|
|
|
DevOldIsCastable = HL.AddCoreOverride ("Spell.IsCastable",
|
|
|
|
|
function (self, BypassRecovery, Range, AoESpell, ThisUnit, Offset)
|
|
|
|
|
local RangeOK = true
|
|
|
|
|
if Range then
|
|
|
|
|
local RangeUnit = ThisUnit or Target
|
|
|
|
|
RangeOK = RangeUnit:IsInRange( Range, AoESpell )
|
|
|
|
|
end
|
|
|
|
|
local BaseCheck = DevOldIsCastable(self, BypassRecovery, Range, AoESpell, ThisUnit, Offset)
|
|
|
|
|
if self == SpellDeva.Firestorm then
|
|
|
|
|
return BaseCheck and not Player:IsCasting(self)
|
|
|
|
|
elseif self == SpellDeva.TipTheScales then
|
|
|
|
|
return BaseCheck and not Player:BuffUp(self)
|
|
|
|
|
else
|
|
|
|
|
return BaseCheck
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
, 1467)
|
|
|
|
|
|
|
|
|
|
local DevOldIsMoving
|
|
|
|
|
DevOldIsMoving = HL.AddCoreOverride ("Player.IsMoving",
|
|
|
|
|
function(self)
|
|
|
|
|
local BaseCheck = DevOldIsMoving(self)
|
|
|
|
|
return BaseCheck and Player:BuffDown(SpellDeva.HoverBuff) and Player:BuffDown(SpellDeva.BurnoutBuff)
|
|
|
|
|
end
|
|
|
|
|
, 1467)
|
|
|
|
|
|
|
|
|
|
HL.AddCoreOverride ("Player.EssenceTimeToMax",
|
|
|
|
|
function()
|
|
|
|
|
local Deficit = Player:EssenceDeficit()
|
|
|
|
|
if Deficit == 0 then return 0; end
|
|
|
|
|
local Regen = GetPowerRegenForPowerType(EssencePowerType)
|
|
|
|
|
if not Regen or Regen < 0.2 then Regen = 0.2; end
|
|
|
|
|
local TimeToOneEssence = 1 / Regen
|
|
|
|
|
local LastUpdate = Cache.Persistent.Player.LastPowerUpdate
|
|
|
|
|
return Deficit * TimeToOneEssence - (GetTime() - LastUpdate)
|
|
|
|
|
end
|
|
|
|
|
, 1467)
|
|
|
|
|
|
|
|
|
|
HL.AddCoreOverride ("Player.EssenceTimeToX",
|
|
|
|
|
function(Amount)
|
|
|
|
|
local Essence = Player:Essence()
|
|
|
|
|
if Essence >= Amount then return 0; end
|
|
|
|
|
local Regen = GetPowerRegenForPowerType(EssencePowerType)
|
|
|
|
|
local TimeToOneEssence = 1 / Regen
|
|
|
|
|
local LastUpdate = Cache.Persistent.Player.LastPowerUpdate
|
|
|
|
|
return ((Amount - Essence) * TimeToOneEssence) - (GetTime() - LastUpdate)
|
|
|
|
|
end
|
|
|
|
|
, 1467)
|
|
|
|
|
|
|
|
|
|
-- Preservation, ID: 1468
|
|
|
|
|
|
|
|
|
|
-- Augmentation, ID: 1473
|
|
|
|
|
local AugOldIsCastable
|
|
|
|
|
AugOldIsCastable = HL.AddCoreOverride ("Spell.IsCastable",
|
|
|
|
|
function (self, BypassRecovery, Range, AoESpell, ThisUnit, Offset)
|
|
|
|
|
local RangeOK = true
|
|
|
|
|
if Range then
|
|
|
|
|
local RangeUnit = ThisUnit or Target
|
|
|
|
|
RangeOK = RangeUnit:IsInRange( Range, AoESpell )
|
|
|
|
|
end
|
|
|
|
|
local BaseCheck = AugOldIsCastable(self, BypassRecovery, Range, AoESpell, ThisUnit, Offset)
|
|
|
|
|
if self == SpellAug.TipTheScales or self == SpellAug.Upheaval or self == SpellAug.FireBreath then
|
|
|
|
|
return BaseCheck and not Player:BuffUp(self)
|
|
|
|
|
else
|
|
|
|
|
return BaseCheck
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
, 1473)
|
|
|
|
|
|
|
|
|
|
local AugOldIsReady
|
|
|
|
|
AugOldIsReady = HL.AddCoreOverride ("Spell.IsReady",
|
|
|
|
|
function (self, BypassRecovery, Range, AoESpell, ThisUnit, Offset)
|
|
|
|
|
local RangeOK = true
|
|
|
|
|
if Range then
|
|
|
|
|
local RangeUnit = ThisUnit or Target
|
|
|
|
|
RangeOK = RangeUnit:IsInRange( Range, AoESpell )
|
|
|
|
|
end
|
|
|
|
|
local BaseCheck = AugOldIsReady(self, BypassRecovery, Range, AoESpell, ThisUnit, Offset)
|
|
|
|
|
if self == SpellAug.Eruption then
|
|
|
|
|
return BaseCheck and Player:EssenceP() >= 2
|
|
|
|
|
elseif self == SpellAug.EbonMight then
|
|
|
|
|
return BaseCheck and not Player:IsCasting(self)
|
|
|
|
|
else
|
|
|
|
|
return BaseCheck
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
, 1473)
|
|
|
|
|
|
|
|
|
|
local AugOldIsMoving
|
|
|
|
|
AugOldIsMoving = HL.AddCoreOverride ("Player.IsMoving",
|
|
|
|
|
function(self)
|
|
|
|
|
local BaseCheck = AugOldIsMoving(self)
|
|
|
|
|
return BaseCheck and Player:BuffDown(SpellAug.HoverBuff)
|
|
|
|
|
end
|
|
|
|
|
, 1473)
|
|
|
|
|
|
|
|
|
|
local AugOldBuffRemains
|
|
|
|
|
AugOldBuffRemains = HL.AddCoreOverride ("Player.BuffRemains",
|
|
|
|
|
function(self, Spell, AnyCaster, Offset)
|
|
|
|
|
if Spell == SpellAug.EbonMightSelfBuff then
|
|
|
|
|
return self:IsCasting(SpellAug.EbonMight) and 10 or AugOldBuffRemains(self, Spell, AnyCaster, Offset)
|
|
|
|
|
else
|
|
|
|
|
return AugOldBuffRemains(self, Spell, AnyCaster, Offset)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
, 1473)
|
|
|
|
|
|
|
|
|
|
HL.AddCoreOverride ("Player.EssenceP",
|
|
|
|
|
function()
|
|
|
|
|
local Essence = Player:Essence()
|
|
|
|
|
if (not Player:IsCasting()) and not Player:IsChanneling() then
|
|
|
|
|
return Essence
|
|
|
|
|
else
|
|
|
|
|
if Player:IsCasting(SpellAug.Eruption) and Player:BuffDown(SpellAug.EssenceBurstBuff) then
|
|
|
|
|
return Essence - 2
|
|
|
|
|
else
|
|
|
|
|
return Essence
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
, 1473)
|
|
|
|
|
|
|
|
|
|
HL.AddCoreOverride ("Player.EssenceTimeToMax",
|
|
|
|
|
function()
|
|
|
|
|
local Deficit = Player:EssenceDeficit()
|
|
|
|
|
if Deficit == 0 then return 0; end
|
|
|
|
|
local Regen = GetPowerRegenForPowerType(EssencePowerType)
|
|
|
|
|
if not Regen or Regen < 0.2 then Regen = 0.2; end
|
|
|
|
|
local TimeToOneEssence = 1 / Regen
|
|
|
|
|
local LastUpdate = Cache.Persistent.Player.LastPowerUpdate
|
|
|
|
|
return Deficit * TimeToOneEssence - (GetTime() - LastUpdate)
|
|
|
|
|
end
|
|
|
|
|
, 1473)
|
|
|
|
|
|
|
|
|
|
HL.AddCoreOverride ("Player.EssenceTimeToX",
|
|
|
|
|
function(Amount)
|
|
|
|
|
local Essence = Player:Essence()
|
|
|
|
|
if Essence >= Amount then return 0; end
|
|
|
|
|
local Regen = GetPowerRegenForPowerType(EssencePowerType)
|
|
|
|
|
local TimeToOneEssence = 1 / Regen
|
|
|
|
|
local LastUpdate = Cache.Persistent.Player.LastPowerUpdate
|
|
|
|
|
return ((Amount - Essence) * TimeToOneEssence) - (GetTime() - LastUpdate)
|
|
|
|
|
end
|
|
|
|
|
, 1473)
|