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 @@ -351,6 +351,18 @@ Data.Aura = {
[25894] = (ECS.IsClassic and 1 or nil), -- Greater Blessing of Wisdom rank 1
[25918] = (ECS.IsClassic and 1 or nil), -- 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.IsClassic and nil or 5), -- Moonkin Aura
[29177] = 6, -- Elemental Devastation Rank 2
Expand Down
3 changes: 2 additions & 1 deletion Modules/Data/Data.lua
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ dataFunctionRefs = {
["MeleeCritChance"] = function() return Data:MeleeCrit() end,
["Expertise"] = function() return ECS.IsClassic and 0 or Data:GetExpertise() end,
["ExpertiseRating"] = function() return ECS.IsClassic and 0 or Data:GetExpertiseRating() end,
["MeleeArmorPenetration"] = function() return Data:GetArmorPenetration() end,
["MeleeArmorPenetrationFlat"] = function() return Data:GetArmorPenetrationFlat() end,
["MeleeArmorPenetrationPercentage"] = function() return ECS.IsWotlk and Data:GetArmorPenetrationPercentage() or 0 end,
["MeleeArmorPenetrationRating"] = function() return ECS.IsWotlk and Data:GetArmorPenetrationRating() or 0 end,
["MeleeHitRating"] = function() return ECS.IsClassic and 0 or Data:MeleeHitRating() end,
["MeleeHitBonus"] = function() return Data:MeleeHitBonus() end,
Expand Down
63 changes: 63 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,65 @@ function Data:GetMovementSpeed()

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

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

if classId == Data.ROGUE and not ECS.IsWotlk then
armorPenetration = armorPenetration + playerLevel * 5/3 * DataUtils:GetActiveTalentSpell({14171,14172,14173}) -- Serrated Blades
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 = 0

if ECS.IsWotlk then
armorPenetration = GetArmorPenetration()
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
armorPenetration = armorPenetration + 3 * DataUtils:GetActiveTalentSpell({14171,14172,14173}) -- Serrated Blades
-- TODO: mace specialization
elseif classId == Data.DEATHKNIGHT then
armorPenetration = armorPenetration + 2 * DataUtils:GetActiveTalentSpell({61274,61275,61276,61277,61278}) -- Blood Gorged
end
end

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

---@return number
function Data:GetArmorPenetrationRating()
local arpen = 0
if ECS.IsWotlk then
arpen = GetCombatRating(CR_ARMOR_PENETRATION)
end
return arpen
end
27 changes: 1 addition & 26 deletions Modules/Data/Melee.lua
Original file line number Diff line number Diff line change
Expand Up @@ -220,30 +220,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
armorPenetration = armorPenetration + 2 * DataUtils:GetActiveTalentSpell({61274,61275,61276,61277,61278}) -- 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 All @@ -254,5 +230,4 @@ end
function Data:GetMeleeHasteBonus()
local hasteBonus = GetCombatRatingBonus(CR_HASTE_MELEE)
return DataUtils:Round(hasteBonus, 2) .. "%"
end

end
Loading