Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions Modules/Data/Constants.lua
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,18 @@ Data.Aura = {
[25894] = ((ECS.IsTBC or ECS.IsWotlk) and nil or 1), -- Greater Blessing of Wisdom rank 1
[25918] = ((ECS.IsTBC or ECS.IsWotlk) and nil or 1), -- Greater Blessing of Wisdom rank 2
},
ReduceTargetArmor = {
[37174] = (ECS.IsTBC and 1000 or nil), -- Perceived Weakness
[37482] = (ECS.IsTBC and 600 or nil), -- Exploited Weakness
[40477] = (ECS.IsTBC and 300 or nil), -- Forceful Strike
[42976] = (ECS.IsTBC and 400 or nil), -- Executioner
[43817] = (ECS.IsTBC and 1000 or nil), -- Focused Assault
[47216] = 1092, -- Piercing Fangs
[54678] = 50000, -- Brute Force
[461252] = 2000, -- Shadowflame Fury
[1231894] = 1000, -- Ferocity of the Crocolisk
[1231896] = 500, -- Brilliance of Mr. Bigglesworth
},
SpellCrit = {
[24907] = ((ECS.IsTBC or ECS.IsWotlk) and 5 or nil), -- Moonkin Aura
[29177] = 6, -- Elemental Devastation Rank 2
Expand Down
2 changes: 1 addition & 1 deletion Modules/Data/DataUtils.lua
Original file line number Diff line number Diff line change
Expand Up @@ -142,4 +142,4 @@ function DataUtils:GetSocketedGemsFromItemLink(itemLink)
return nil
end

return DataUtils
return DataUtils
81 changes: 81 additions & 0 deletions Modules/Data/General.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ local Data = ECSLoader:ImportModule("Data")
---@type DataUtils
local DataUtils = ECSLoader:ImportModule("DataUtils")

local _, _, classId = UnitClass("player")
local playerLevel = UnitLevel("player")

---@return string
function Data:GetMovementSpeed()
Expand All @@ -20,4 +22,83 @@ function Data:GetMovementSpeed()

currentSpeed = currentSpeed / 7 * 100
return DataUtils:Round(currentSpeed, 0) .. "%"
end

---@return string
function Data:GetArmorPenetrationFlat()
local armorPenetration = 0

if classId == Data.ROGUE and not ECS.IsWotlk then
if C_SpellBook.IsSpellKnown(14173) then -- Serrated Blades 3/3
armorPenetration = armorPenetration + playerLevel * 5
elseif C_SpellBook.IsSpellKnown(14172) then -- Serrated Blades 2/3
armorPenetration = armorPenetration + playerLevel * 3.4
elseif C_SpellBook.IsSpellKnown(14171) then -- Serrated Blades 1/3
armorPenetration = armorPenetration + playerLevel * 1.6
end
end

local i = 1
repeat
local aura = C_UnitAuras.GetBuffDataByIndex("player", i)
if aura and aura.spellId then
armorPenetration = armorPenetration + (Data.Aura.ReduceTargetArmor[aura.spellId] or 0)
if not ECS.IsWotlk then
if aura.spellId == 26481 then
armorPenetration = armorPenetration + 200 * aura.applications -- Insight of the Qiraji
elseif aura.spellId == 21153 then
armorPenetration = armorPenetration + 700 * aura.applications -- Bonereaver's Edge
elseif aura.spellId == 38307 then
armorPenetration = armorPenetration + 435 * aura.applications -- The Dark of Night
end
end
end
i = i + 1
until (not aura)

return DataUtils:Round(armorPenetration, 2) .. "%"
end

---@return string
function Data:GetArmorPenetrationPercentage()
local armorPenetration = GetArmorPenetration()

if ECS.IsWotlk then
if classId == Data.WARRIOR then
local _, isActive = GetShapeshiftFormInfo(1)
if isActive then
armorPenetration = armorPenetration + 10 -- 10% from Battle Stance
end
-- TODO: mace specialization
elseif classId == Data.ROGUE then
if C_SpellBook.IsSpellKnown(14173) then -- Serrated Blades 3/3
armorPenetration = armorPenetration + 9
elseif C_SpellBook.IsSpellKnown(14172) then -- Serrated Blades 2/3
armorPenetration = armorPenetration + 6
elseif C_SpellBook.IsSpellKnown(14171) then -- Serrated Blades 1/3
armorPenetration = armorPenetration + 3
end
-- TODO: mace specialization
elseif classId == Data.DEATHKNIGHT then
if C_SpellBook.IsSpellKnown(61278) then -- Blood Gorged 5/5
armorPenetration = armorPenetration + 10
elseif C_SpellBook.IsSpellKnown(61277) then -- Blood Gorged 4/5
armorPenetration = armorPenetration + 8
elseif C_SpellBook.IsSpellKnown(61276) then -- Blood Gorged 3/5
armorPenetration = armorPenetration + 6
elseif C_SpellBook.IsSpellKnown(61275) then -- Blood Gorged 2/5
armorPenetration = armorPenetration + 4
elseif C_SpellBook.IsSpellKnown(61274) then -- Blood Gorged 1/5
armorPenetration = armorPenetration + 2
end
end
end

return DataUtils:Round(armorPenetration, 2) .. "%"
end

---@return number
function Data:GetArmorPenetrationRating()
local armorPenetrationRating = GetCombatRating(CR_ARMOR_PENETRATION)
return DataUtils:Round(armorPenetrationRating, 0)
end
25 changes: 0 additions & 25 deletions Modules/Data/Melee.lua
Original file line number Diff line number Diff line change
Expand Up @@ -246,31 +246,6 @@ function Data:GetExpertiseRating()
return DataUtils:Round(expertiseRating, 0)
end

---@return string
function Data:GetArmorPenetration()
local armorPenetration = GetArmorPenetration()

if ECS.IsWotlk and classId == Data.WARRIOR then
local _, isActive = GetShapeshiftFormInfo(1)
if isActive then
armorPenetration = armorPenetration + 10 -- 10% from Battle Stance
end
end

if classId == Data.DEATHKNIGHT then
local _, _, _, _, points, _, _, _ = GetTalentInfo(1, 24)
armorPenetration = armorPenetration + points * 2 -- 0-10% Blood Gorged
end

return DataUtils:Round(armorPenetration, 2) .. "%"
end

---@return number
function Data:GetArmorPenetrationRating()
local armorPenetrationRating = GetCombatRating(CR_ARMOR_PENETRATION)
return DataUtils:Round(armorPenetrationRating, 0)
end

---@return number
function Data:GetMeleeHasteRating()
local hasteRating = GetCombatRating(CR_HASTE_MELEE)
Expand Down
Loading