diff --git a/.luacheckrc b/.luacheckrc index 2e903fee..95792921 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -347,10 +347,10 @@ stds.ecs = { "C_Debug.GetMapDebugObjects", "C_Debug.TeleportToMapDebugObject", "C_Debug.TeleportToMapLocation", - "C_Engraving", "C_Engraving.GetRuneForEquipmentSlot", - "C_EventUtils", + "C_Engraving", "C_EventUtils.IsEventValid", + "C_EventUtils", "C_FriendList.AddFriend", "C_FriendList.AddIgnore", "C_FriendList.AddOrDelIgnore", @@ -570,11 +570,11 @@ stds.ecs = { "C_UIWidgetManager.GetTextureWithStateVisualizationInfo", "C_UIWidgetManager.GetTextWithStateWidgetVisualizationInfo", "C_UIWidgetManager.GetTopCenterWidgetSetID", - "C_UnitAuras", "C_UnitAuras.GetAuraDataByIndex", "C_UnitAuras.GetBuffDataByIndex", "C_UnitAuras.GetDebuffDataByIndex", "C_UnitAuras.GetPlayerAuraBySpellID", + "C_UnitAuras", "C_VideoOptions.GetGxAdapterInfo", "C_VoiceChat.ActivateChannel", "C_VoiceChat.BeginLocalCapture", @@ -819,6 +819,8 @@ stds.ecs = { "CR_HIT_RANGED", "CR_HIT_SPELL", "CR_PARRY", + "CR_RESILIENCE_CRIT_TAKEN", + "CR_RESILIENCE_PLAYER_DAMAGE_TAKEN", "CR_WEAPON_SKILL", "CreateFont", "CreateFrame", @@ -1196,6 +1198,7 @@ stds.ecs = { "GetMirrorTimerProgress", "GetModifiedClick", "GetModifiedClickAction", + "GetModResilienceDamageReduction", "GetMoney", "GetMonitorAspectRatio", "GetMonitorCount", diff --git a/Modules/Config/Config.lua b/Modules/Config/Config.lua index a0d2ac2a..8ef302f4 100755 --- a/Modules/Config/Config.lua +++ b/Modules/Config/Config.lua @@ -60,7 +60,7 @@ _GeneralTab = function() generalHeader = { type = "header", order = 1, - name = function() return i18n("General Settings") end, + name = function() return i18n("General settings") end, }, statsWindowClosedOnOpen = { type = "toggle", @@ -76,7 +76,7 @@ _GeneralTab = function() addColorsToStatTexts = { type = "toggle", order = 2, - name = function() return i18n("Colorize Stats") end, + name = function() return i18n("Colorize stats") end, desc = function() return i18n("Adds colors to the stats overview.") end, width = "full", get = function () return ExtendedCharacterStats.general.addColorsToStatTexts; end, @@ -111,7 +111,7 @@ _GeneralTab = function() showQualityColors = { type = "toggle", order = 3, - name = function() return i18n("Show Item Quality Colors") end, + name = function() return i18n("Show item quality colors") end, desc = function() return i18n("Shows/Hides the colored frames around equipped items.") end, width = "full", get = function () return ExtendedCharacterStats.general.showQualityColors; end, @@ -123,7 +123,7 @@ _GeneralTab = function() qualityColorsIntensity = { type = "range", order = 4, - name = function() return i18n("Quality Colors' Intensity") end, + name = function() return i18n("Quality colors' intensity") end, desc = function() return i18n("Changes the intensity of the colored frames' glow.") end, width = "double", min = 0.10, @@ -138,7 +138,7 @@ _GeneralTab = function() headerFontSize = { type = "range", order = 5, - name = function() return i18n("Header Font Size") end, + name = function() return i18n("Header font size") end, desc = function() return i18n("Changes the font size of the headers (e.g. Melee)") end, width = "double", min = 8, @@ -153,8 +153,8 @@ _GeneralTab = function() statFontSize = { type = "range", order = 6, - name = function() return i18n("Stat Font Size") end, - desc = function() return i18n("Changes the font size of the stat lines (e.g. Crit)") end, + name = function() return i18n("Stat font size") end, + desc = function() return i18n("Changes the font size of the stat lines (e.g. Crit.)") end, width = "double", min = 8, max = 18, @@ -168,7 +168,7 @@ _GeneralTab = function() windowWidth = { type = "range", order = 7, - name = function() return i18n("Window Width") end, + name = function() return i18n("Window width") end, desc = function() return i18n("Changes the width of the stats window") end, width = "double", min = 12, @@ -241,7 +241,7 @@ _StatsTab = function () statsHeader = { type = "header", order = 1, - name = function() return i18n("Stats Settings") end, + name = function() return i18n("Stats settings") end, }, generalGroup = _Config:LoadGeneralSection(), meleeGroup = _Config:LoadMeleeSection(), diff --git a/Modules/Config/DefenseSection.lua b/Modules/Config/DefenseSection.lua index 202a3a54..e42693ac 100755 --- a/Modules/Config/DefenseSection.lua +++ b/Modules/Config/DefenseSection.lua @@ -20,7 +20,7 @@ function _Config:LoadDefenseSection() showDefenseStats = { type = "toggle", order = 0, - name = function() return i18n("Show Defense Stats") end, + name = function() return i18n("Show defense stats") end, desc = function() return i18n("Shows/Hides all defense stats.") end, width = 1.5, get = function () return ExtendedCharacterStats.profile.defense.display; end, @@ -42,48 +42,64 @@ function _Config:LoadDefenseSection() Stats.RebuildStatInfos() end, }, - meleeCritReduction = { + resilienceRating = { type = "toggle", - order = 1.81, - name = function() return i18n("Melee Crit Reduction") end, - desc = function() return i18n("Shows/Hides the reduction percentage of being critically hit by melee attacks.") end, + order = 2, + name = function() return i18n("Resilience rating") end, + desc = function() return i18n("Shows/Hides the resilience rating.") end, + width = 1.5, + hidden = function() return ECS.IsClassic end, + disabled = function() return (not ExtendedCharacterStats.profile.defense.display); end, + get = function () return ExtendedCharacterStats.profile.defense.resilienceRating.display; end, + set = function (_, value) + ExtendedCharacterStats.profile.defense.resilienceRating.display = value + Stats.RebuildStatInfos() + end, + }, + resilience = { + type = "toggle", + order = 2.1, + name = function() return i18n("Resilience") end, + desc = function() return i18n("Shows/Hides the resilience damage reduction.") end, width = 1.5, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.defense.display); end, - get = function () return ExtendedCharacterStats.profile.defense.meleeCritReduction.display; end, + get = function () return ExtendedCharacterStats.profile.defense.resilience.display; end, set = function (_, value) - ExtendedCharacterStats.profile.defense.meleeCritReduction.display = value + ExtendedCharacterStats.profile.defense.resilience.display = value Stats.RebuildStatInfos() end, }, - rangedCritReduction = { + defenseRating = { type = "toggle", - order = 1.82, - name = function() return i18n("Ranged Crit Reduction") end, - desc = function() return i18n("Shows/Hides the reduction percentage of being critically hit by ranged attacks.") end, + order = 3, + name = function() return i18n("Defense rating") end, + desc = function() return i18n("Shows/Hides the defense rating.") end, width = 1.5, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.defense.display); end, - get = function () return ExtendedCharacterStats.profile.defense.rangedCritReduction.display; end, + get = function () return ExtendedCharacterStats.profile.defense.defenseRating.display; end, set = function (_, value) - ExtendedCharacterStats.profile.defense.rangedCritReduction.display = value + ExtendedCharacterStats.profile.defense.defenseRating.display = value Stats.RebuildStatInfos() end, }, - spellCritReduction = { + defense = { type = "toggle", - order = 1.83, - name = function() return i18n("Spell Crit Reduction") end, - desc = function() return i18n("Shows/Hides the reduction percentage of being critically hit by spells.") end, + order = 3.1, + name = function() return i18n("Defense") end, + desc = function() return i18n("Shows/Hides the defense value.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.defense.display); end, - get = function () return ExtendedCharacterStats.profile.defense.spellCritReduction.display; end, + get = function () return ExtendedCharacterStats.profile.defense.defense.display; end, set = function (_, value) - ExtendedCharacterStats.profile.defense.spellCritReduction.display = value + ExtendedCharacterStats.profile.defense.defense.display = value Stats.RebuildStatInfos() end, }, avoidance = { type = "toggle", - order = 1.85, + order = 4, name = function() return i18n("Avoidance") end, desc = function() return i18n("Shows/Hides the total avoidance.") end, width = 1.5, @@ -96,7 +112,7 @@ function _Config:LoadDefenseSection() }, avoidanceBoss = { type = "toggle", - order = 1.86, + order = 4.1, name = function() return i18n("Avoidance (Lvl +3)") end, desc = function() return i18n("Shows/Hides the total avoidance (Lvl +3).") end, width = 1.5, @@ -107,65 +123,51 @@ function _Config:LoadDefenseSection() Stats.RebuildStatInfos() end, }, - defenseRating = { + dodgeRating = { type = "toggle", - order = 1.9, - name = function() return i18n("Defense Rating") end, - desc = function() return i18n("Shows/Hides the defense rating.") end, + order = 5, + name = function() return i18n("Dodge rating") end, + desc = function() return i18n("Shows/Hides the dodge rating.") end, width = 1.5, hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.defense.display); end, - get = function () return ExtendedCharacterStats.profile.defense.defenseRating.display; end, + get = function () return ExtendedCharacterStats.profile.defense.dodgeRating.display; end, set = function (_, value) - ExtendedCharacterStats.profile.defense.defenseRating.display = value + ExtendedCharacterStats.profile.defense.dodgeRating.display = value Stats.RebuildStatInfos() end, }, - defense = { - type = "toggle", - order = 2, - name = function() return i18n("Defense") end, - desc = function() return i18n("Shows/Hides the defense value.") end, - width = 1.5, - disabled = function() return (not ExtendedCharacterStats.profile.defense.display); end, - get = function () return ExtendedCharacterStats.profile.defense.defense.display; end, - set = function (_, value) - ExtendedCharacterStats.profile.defense.defense.display = value - Stats.RebuildStatInfos() - end, - }, - blockChance = { + dodge = { type = "toggle", - order = 3, - name = function() return i18n("Block Chance") end, - desc = function() return i18n("Shows/Hides the block chance.") end, + order = 5.1, + name = function() return i18n("Dodge chance") end, + desc = function() return i18n("Shows/Hides the dodge chance.") end, width = 1.5, - hidden = function() return not IsSpellKnown(107) end, disabled = function() return (not ExtendedCharacterStats.profile.defense.display); end, - get = function () return ExtendedCharacterStats.profile.defense.blockChance.display; end, + get = function () return ExtendedCharacterStats.profile.defense.dodge.display; end, set = function (_, value) - ExtendedCharacterStats.profile.defense.blockChance.display = value + ExtendedCharacterStats.profile.defense.dodge.display = value Stats.RebuildStatInfos() end, }, - blockValue = { + parryRating = { type = "toggle", - order = 4, - name = function() return i18n("Block Value") end, - desc = function() return i18n("Shows/Hides the block value.") end, + order = 6, + name = function() return i18n("Parry rating") end, + desc = function() return i18n("Shows/Hides the parry rating.") end, width = 1.5, - hidden = function() return not DataUtils:CanBlock() end, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.defense.display); end, - get = function () return ExtendedCharacterStats.profile.defense.blockValue.display; end, + get = function () return ExtendedCharacterStats.profile.defense.parryRating.display; end, set = function (_, value) - ExtendedCharacterStats.profile.defense.blockValue.display = value + ExtendedCharacterStats.profile.defense.parryRating.display = value Stats.RebuildStatInfos() end, }, parry = { type = "toggle", - order = 5, - name = function() return i18n("Parry Chance") end, + order = 6.1, + name = function() return i18n("Parry chance") end, desc = function() return i18n("Shows/Hides the parry chance.") end, width = 1.5, hidden = function() return not DataUtils:CanParry() end, @@ -176,32 +178,119 @@ function _Config:LoadDefenseSection() Stats.RebuildStatInfos() end, }, - dodge = { - type = "toggle", - order = 6, - name = function() return i18n("Dodge Chance") end, - desc = function() return i18n("Shows/Hides the dodge chance.") end, - width = 1.5, - disabled = function() return (not ExtendedCharacterStats.profile.defense.display); end, - get = function () return ExtendedCharacterStats.profile.defense.dodge.display; end, - set = function (_, value) - ExtendedCharacterStats.profile.defense.dodge.display = value - Stats.RebuildStatInfos() - end, - }, - resilience = { - type = "toggle", + blockGroup = { + type = "group", order = 7, - name = function() return i18n("Resilience") end, - desc = function() return i18n("Shows/Hides the resilience value.") end, - width = 1.5, - hidden = function() return ECS.IsClassic end, - disabled = function() return (not ExtendedCharacterStats.profile.defense.display); end, - get = function () return ExtendedCharacterStats.profile.defense.resilienceRating.display; end, - set = function (_, value) - ExtendedCharacterStats.profile.defense.resilienceRating.display = value - Stats.RebuildStatInfos() - end, + inline = true, + name = function() return i18n("Block values") end, + hidden = function() return not DataUtils:CanBlock() end, + args = { + rating = { + type = "toggle", + order = 1, + name = function() return i18n("Block rating") end, + desc = function() return i18n("Shows/Hides the block rating.") end, + width = 1.5, + hidden = function() return ECS.IsClassic end, + disabled = function() + return (not ExtendedCharacterStats.profile.defense.display) or + (not ExtendedCharacterStats.profile.block.display) + end, + get = function () return ExtendedCharacterStats.profile.defense.block.rating.display; end, + set = function (_, value) + ExtendedCharacterStats.profile.defense.block.rating.display = value + Stats.RebuildStatInfos() + end, + }, + chance = { + type = "toggle", + order = 1.1, + name = function() return i18n("Block chance") end, + desc = function() return i18n("Shows/Hides the block chance.") end, + width = 1.5, + disabled = function() + return (not ExtendedCharacterStats.profile.defense.display) or + (not ExtendedCharacterStats.profile.block.display) + end, + get = function () return ExtendedCharacterStats.profile.defense.block.chance.display; end, + set = function (_, value) + ExtendedCharacterStats.profile.defense.block.chance.display = value + Stats.RebuildStatInfos() + end, + }, + amount = { + type = "toggle", + order = 1.2, + name = function() return i18n("Blocked amount") end, + desc = function() return i18n("Shows/Hides the blocked amount.") end, + width = 1.5, + disabled = function() + return (not ExtendedCharacterStats.profile.defense.display) or + (not ExtendedCharacterStats.profile.block.display) + end, + get = function () return ExtendedCharacterStats.profile.defense.block.amount.display; end, + set = function (_, value) + ExtendedCharacterStats.profile.defense.block.amount.display = value + Stats.RebuildStatInfos() + end, + }, + } + }, + critReductionGroup = { + type = "group", + order = 8, + inline = true, + name = function() return i18n("Crit. reduction values") end, + args = { + melee = { + type = "toggle", + order = 1, + name = function() return i18n("Melee crit. reduction") end, + desc = function() return i18n("Shows/Hides the reduction percentage of being critically hit by melee attacks.") end, + width = 1.5, + disabled = function() + return (not ExtendedCharacterStats.profile.defense.display) or + (not ExtendedCharacterStats.profile.critReduction.display) + end, + get = function () return ExtendedCharacterStats.profile.defense.critReduction.melee.display; end, + set = function (_, value) + ExtendedCharacterStats.profile.defense.critReduction.melee.display = value + Stats.RebuildStatInfos() + end, + }, + ranged = { + type = "toggle", + order = 1.1, + name = function() return i18n("Ranged crit. reduction") end, + desc = function() return i18n("Shows/Hides the reduction percentage of being critically hit by ranged attacks.") end, + width = 1.5, + disabled = function() + return (not ExtendedCharacterStats.profile.defense.display) or + (not ExtendedCharacterStats.profile.critReduction.display) + end, + get = function () return ExtendedCharacterStats.profile.defense.critReduction.ranged.display; end, + set = function (_, value) + ExtendedCharacterStats.profile.defense.critReduction.ranged.display = value + Stats.RebuildStatInfos() + end, + }, + spell = { + type = "toggle", + order = 1.2, + name = function() return i18n("Spell crit. reduction") end, + desc = function() return i18n("Shows/Hides the reduction percentage of being critically hit by spells.") end, + width = 1.5, + disabled = function() + return (not ExtendedCharacterStats.profile.defense.display) or + (not ExtendedCharacterStats.profile.critReduction.display) + end, + get = function () return ExtendedCharacterStats.profile.defense.critReduction.spell.display; end, + set = function (_, value) + ExtendedCharacterStats.profile.defense.critReduction.spell.display = value + Stats.RebuildStatInfos() + end, + }, + } }, }, } diff --git a/Modules/Config/GeneralSection.lua b/Modules/Config/GeneralSection.lua index 8adafb23..d0354e82 100644 --- a/Modules/Config/GeneralSection.lua +++ b/Modules/Config/GeneralSection.lua @@ -18,7 +18,7 @@ function _Config:LoadGeneralSection() showGeneralStats = { type = "toggle", order = 0, - name = function() return i18n("Show General Stats") end, + name = function() return i18n("Show general stats") end, desc = function() return i18n("Shows/Hides all general stats.") end, width = 1.5, get = function () return ExtendedCharacterStats.profile.general.display; end, @@ -30,7 +30,7 @@ function _Config:LoadGeneralSection() movementSpeed = { type = "toggle", order = 1, - name = function() return i18n("Show Movement Speed") end, + name = function() return i18n("Show movement speed") end, desc = function() return i18n("Shows/Hides the movement speed value.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.general.display); end, diff --git a/Modules/Config/ManaSection.lua b/Modules/Config/ManaSection.lua index d62c4f5c..8931aec3 100755 --- a/Modules/Config/ManaSection.lua +++ b/Modules/Config/ManaSection.lua @@ -19,7 +19,7 @@ function _Config:LoadManaSection() showManaStats = { type = "toggle", order = 0, - name = function() return i18n("Show Mana Stats") end, + name = function() return i18n("Show mana stats") end, desc = function() return i18n("Shows/Hides all mana stats.") end, width = 1.5, get = function () return ExtendedCharacterStats.profile.regen.display; end, diff --git a/Modules/Config/MeleeSection.lua b/Modules/Config/MeleeSection.lua index 65683234..4b8c5a48 100755 --- a/Modules/Config/MeleeSection.lua +++ b/Modules/Config/MeleeSection.lua @@ -18,7 +18,7 @@ function _Config:LoadMeleeSection() showMeleeStats = { type = "toggle", order = 0, - name = function() return i18n("Show Melee Stats") end, + name = function() return i18n("Show melee stats") end, desc = function() return i18n("Shows/Hides all melee stats.") end, width = 1.5, get = function () return ExtendedCharacterStats.profile.melee.display; end, @@ -30,7 +30,7 @@ function _Config:LoadMeleeSection() meleeAttackPower = { type = "toggle", order = 1, - name = function() return i18n("Melee Attack Power") end, + name = function() return i18n("Melee attack power") end, desc = function() return i18n("Shows/Hides the melee attack power value.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, @@ -40,11 +40,25 @@ function _Config:LoadMeleeSection() Stats.RebuildStatInfos() end, }, - meleeCrit = { + meleeCritRating = { type = "toggle", order = 2, - name = function() return i18n("Melee Crit") end, - desc = function() return i18n("Shows/Hides the melee crit chance.") end, + name = function() return i18n("Melee crit. rating") end, + desc = function() return i18n("Shows/Hides the melee crit. rating.") end, + width = 1.5, + hidden = function() return ECS.IsClassic end, + disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, + get = function () return ExtendedCharacterStats.profile.melee.critRating.display; end, + set = function (_, value) + ExtendedCharacterStats.profile.melee.critRating.display = value + Stats.RebuildStatInfos() + end, + }, + meleeCrit = { + type = "toggle", + order = 2.1, + name = function() return i18n("Melee crit.") end, + desc = function() return i18n("Shows/Hides the melee crit. chance.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, get = function () return ExtendedCharacterStats.profile.melee.crit.display; end, @@ -56,7 +70,7 @@ function _Config:LoadMeleeSection() penetration = { type = "toggle", order = 2.3, - name = function() return i18n("Armor Pen.") end, + name = function() return i18n("Armor pen.") end, desc = function() return i18n("Shows/Hides the armor penetration value.") end, width = 1.5, hidden = function() return ECS.IsClassic end, @@ -70,7 +84,7 @@ function _Config:LoadMeleeSection() penetrationRating = { type = "toggle", order = 2.4, - name = function() return i18n("Armor Pen. Rating") end, + name = function() return i18n("Armor pen. rating") end, desc = function() return i18n("Shows/Hides the armor penetration rating value.") end, width = 1.5, hidden = function() return not ECS.IsWotlk end, @@ -98,7 +112,7 @@ function _Config:LoadMeleeSection() expertiseRating = { type = "toggle", order = 2.6, - name = function() return i18n("Expertise Rating") end, + name = function() return i18n("Expertise rating") end, desc = function() return i18n("Shows/Hides the expertise rating.") end, width = 1.5, hidden = function() return ECS.IsClassic end, @@ -112,7 +126,7 @@ function _Config:LoadMeleeSection() hasteRating = { type = "toggle", order = 2.6, - name = function() return i18n("Haste Rating") end, + name = function() return i18n("Haste rating") end, desc = function() return i18n("Shows/Hides the melee haste rating.") end, width = 1.5, hidden = function() return ECS.IsClassic end, @@ -126,7 +140,7 @@ function _Config:LoadMeleeSection() hasteBonus = { type = "toggle", order = 2.7, - name = function() return i18n("Haste Bonus") end, + name = function() return i18n("Haste bonus") end, desc = function() return i18n("Shows/Hides the melee haste bonus value.") end, width = 1.5, hidden = function() return ECS.IsClassic end, @@ -140,7 +154,7 @@ function _Config:LoadMeleeSection() meleeHit = { type = "toggle", order = 3, - name = function() return i18n("Melee Hit") end, + name = function() return i18n("Melee hit") end, desc = function() return i18n("Shows/Hides all melee hit chance.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, @@ -154,12 +168,12 @@ function _Config:LoadMeleeSection() type = "group", order = 4, inline = true, - name = function() return i18n("Melee Hit Values") end, + name = function() return i18n("Melee hit values") end, args = { meleeHitRating = { type = "toggle", order = 1, - name = function() return i18n("Hit Rating") end, + name = function() return i18n("Hit rating") end, desc = function() return i18n("Shows/Hides the melee hit rating.") end, width = 1.5, hidden = function() return ECS.IsClassic end, @@ -176,7 +190,7 @@ function _Config:LoadMeleeSection() meleeHitBonus = { type = "toggle", order = 2, - name = function() return i18n("Hit Bonus") end, + name = function() return i18n("Hit bonus") end, desc = function() return i18n("Shows/Hides the melee hit bonus.") end, width = 1.5, disabled = function() @@ -192,7 +206,7 @@ function _Config:LoadMeleeSection() meleeMiss = { type = "toggle", order = 3, - name = function() return i18n("Miss Chance") end, + name = function() return i18n("Miss chance") end, desc = function() return i18n("Shows/Hides the melee miss chance against enemies on the same level.") end, width = 1.5, disabled = function() @@ -208,7 +222,7 @@ function _Config:LoadMeleeSection() meleeMissBoss = { type = "toggle", order = 4, - name = function() return i18n("Miss Chance Boss") end, + name = function() return i18n("Miss chance boss") end, desc = function() return i18n("Shows/Hides the melee miss chance against boss enemies (+3 Level).") end, width = 1.5, disabled = function() @@ -226,7 +240,7 @@ function _Config:LoadMeleeSection() glancingBlow = { type = "toggle", order = 5, - name = function() return i18n("Glancing Blow") end, + name = function() return i18n("Glancing blow") end, desc = function() return i18n("Shows/Hides all glancing blow stats") end, width = 1.5, hidden = function() return ECS.IsWotlk end, @@ -241,13 +255,13 @@ function _Config:LoadMeleeSection() type = "group", order = 6, inline = true, - name = function() return i18n("Melee Glance Values") end, + name = function() return i18n("Melee glance values") end, hidden = function() return ECS.IsWotlk end, args = { meleeGlance = { type = "toggle", order = 1, - name = function() return i18n("Glancing Blow Chance") end, + name = function() return i18n("Glancing blow chance") end, desc = function() return i18n("Shows/Hides the glancing chance against enemies on same level.") end, width = 1.5, disabled = function() @@ -263,7 +277,7 @@ function _Config:LoadMeleeSection() meleeGlanceBoss = { type = "toggle", order = 2, - name = function() return i18n("Glancing Blow Chance Boss") end, + name = function() return i18n("Glancing blow chance boss") end, desc = function() return i18n("Shows/Hides the glancing chance against boss enemies (+3 Level).") end, width = 1.5, disabled = function() @@ -279,7 +293,7 @@ function _Config:LoadMeleeSection() meleeGlanceDamage = { type = "toggle", order = 3, - name = function() return i18n("Glancing Blow Damage") end, + name = function() return i18n("Glancing blow damage") end, desc = function() return i18n("Shows/Hides the damage reduction against enemies on the same level.") end, width = 1.5, disabled = function() @@ -295,7 +309,7 @@ function _Config:LoadMeleeSection() meleeGlanceDamageBoss = { type = "toggle", order = 4, - name = function() return i18n("Glancing Blow Damage Boss") end, + name = function() return i18n("Glancing blow damage boss") end, desc = function() return i18n("Shows/Hides the damage reduction against boss enemies (+3 Level).") end, width = 1.5, disabled = function() @@ -313,7 +327,7 @@ function _Config:LoadMeleeSection() meleeAttackSpeed = { type = "toggle", order = 7, - name = function() return i18n("Attack Speed") end, + name = function() return i18n("Attack speed") end, desc = function() return i18n("Shows/Hides the melee attack speed.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, @@ -327,12 +341,12 @@ function _Config:LoadMeleeSection() type = "group", order = 8, inline = true, - name = function() return i18n("Attack Speed") end, + name = function() return i18n("Attack speed") end, args = { mainHand = { type = "toggle", order = 1, - name = function() return i18n("Main Hand") end, + name = function() return i18n("Main hand") end, desc = function() return i18n("Shows/Hides the attack speed of the main hand.") end, width = 1.5, disabled = function() @@ -348,7 +362,7 @@ function _Config:LoadMeleeSection() offHand = { type = "toggle", order = 2, - name = function() return i18n("Off Hand") end, + name = function() return i18n("Off hand") end, hidden = function() return not CanDualWield() end, desc = function() return i18n("Shows/Hides the attack speed of the off hand.") end, width = 1.5, diff --git a/Modules/Config/RangeSection.lua b/Modules/Config/RangeSection.lua index 56a5213f..87952765 100755 --- a/Modules/Config/RangeSection.lua +++ b/Modules/Config/RangeSection.lua @@ -19,7 +19,7 @@ function _Config:LoadRangeSection() showRangeStats = { type = "toggle", order = 0, - name = function() return i18n("Show Ranged Stats") end, + name = function() return i18n("Show ranged stats") end, desc = function() return i18n("Shows/Hides all ranged stats.") end, width = 1.5, get = function () return ExtendedCharacterStats.profile.ranged.display; end, @@ -31,7 +31,7 @@ function _Config:LoadRangeSection() rangedAttackPower = { type = "toggle", order = 1, - name = function() return i18n("Ranged Attack Power") end, + name = function() return i18n("Ranged attack power") end, desc = function() return i18n("Shows/Hides the ranged attack power value.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.ranged.display); end, @@ -41,11 +41,25 @@ function _Config:LoadRangeSection() Stats.RebuildStatInfos() end, }, - rangeCrit = { + rangedCritRating = { type = "toggle", order = 2, - name = function() return i18n("Ranged Crit") end, - desc = function() return i18n("Shows/Hides the ranged crit chance.") end, + name = function() return i18n("Ranged crit. rating") end, + desc = function() return i18n("Shows/Hides the ranged crit. rating.") end, + width = 1.5, + hidden = function() return ECS.IsClassic end, + disabled = function() return (not ExtendedCharacterStats.profile.ranged.display); end, + get = function () return ExtendedCharacterStats.profile.ranged.critRating.display; end, + set = function (_, value) + ExtendedCharacterStats.profile.ranged.critRating.display = value + Stats.RebuildStatInfos() + end, + }, + rangeCrit = { + type = "toggle", + order = 2.1, + name = function() return i18n("Ranged crit.") end, + desc = function() return i18n("Shows/Hides the ranged crit. chance.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.ranged.display); end, get = function () return ExtendedCharacterStats.profile.ranged.crit.display; end, @@ -57,9 +71,10 @@ function _Config:LoadRangeSection() penetration = { type = "toggle", order = 2.3, - name = function() return i18n("Armor Pen.") end, + name = function() return i18n("Armor pen.") end, desc = function() return i18n("Shows/Hides the armor penetration value.") end, width = 1.5, + hidden = function() return (not ECS.IsWotlk) end, disabled = function() return (not ExtendedCharacterStats.profile.ranged.display); end, get = function () return ExtendedCharacterStats.profile.ranged.penetration.display; end, set = function (_, value) @@ -70,7 +85,7 @@ function _Config:LoadRangeSection() penetrationRating = { type = "toggle", order = 2.4, - name = function() return i18n("Armor Pen. Rating") end, + name = function() return i18n("Armor pen. rating") end, desc = function() return i18n("Shows/Hides the armor penetration rating value.") end, width = 1.5, hidden = function() return (not ECS.IsWotlk) end, @@ -84,7 +99,7 @@ function _Config:LoadRangeSection() hasteRating = { type = "toggle", order = 2.6, - name = function() return i18n("Haste Rating") end, + name = function() return i18n("Haste rating") end, desc = function() return i18n("Shows/Hides the ranged haste rating.") end, width = 1.5, hidden = function() return ECS.IsClassic end, @@ -98,7 +113,7 @@ function _Config:LoadRangeSection() hasteBonus = { type = "toggle", order = 2.7, - name = function() return i18n("Haste Bonus") end, + name = function() return i18n("Haste bonus") end, desc = function() return i18n("Shows/Hides the ranged haste bonus value.") end, width = 1.5, hidden = function() return ECS.IsClassic end, @@ -112,7 +127,7 @@ function _Config:LoadRangeSection() rangedAttackSpeed = { type = "toggle", order = 3, - name = function() return i18n("Attack Speed") end, + name = function() return i18n("Attack speed") end, desc = function() return i18n("Shows/Hides the ranged attack speed.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.ranged.display); end, @@ -125,7 +140,7 @@ function _Config:LoadRangeSection() rangeHit = { type = "toggle", order = 4, - name = function() return i18n("Ranged Hit") end, + name = function() return i18n("Ranged hit") end, desc = function() return i18n("Shows/Hides all ranged hit chance.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.ranged.display); end, @@ -139,12 +154,12 @@ function _Config:LoadRangeSection() type = "group", order = 5, inline = true, - name = function() return i18n("Ranged Hit Values") end, + name = function() return i18n("Ranged hit values") end, args = { rangeHitRating = { type = "toggle", order = 1, - name = function() return i18n("Hit Rating") end, + name = function() return i18n("Hit rating") end, desc = function() return i18n("Shows/Hides the ranged hit rating.") end, width = 1.5, hidden = function() return ECS.IsClassic end, @@ -161,7 +176,7 @@ function _Config:LoadRangeSection() rangeHitBonus = { type = "toggle", order = 2, - name = function() return i18n("Hit Bonus") end, + name = function() return i18n("Hit bonus") end, desc = function() return i18n("Shows/Hides the ranged hit bonus.") end, width = 1.5, disabled = function() @@ -177,7 +192,7 @@ function _Config:LoadRangeSection() rangeMiss = { type = "toggle", order = 3, - name = function() return i18n("Miss Chance") end, + name = function() return i18n("Miss chance") end, desc = function() return i18n("Shows/Hides the ranged miss chance against enemies on the same level.") end, width = 1.5, disabled = function() @@ -193,7 +208,7 @@ function _Config:LoadRangeSection() rangeMissBoss = { type = "toggle", order = 4, - name = function() return i18n("Miss Chance Boss") end, + name = function() return i18n("Miss chance boss") end, desc = function() return i18n("Shows/Hides the ranged miss chance against boss enemies (+3 Level).") end, width = 1.5, disabled = function() diff --git a/Modules/Config/SpellSchoolsSection.lua b/Modules/Config/SpellSchoolsSection.lua index bc3b5881..a676f531 100644 --- a/Modules/Config/SpellSchoolsSection.lua +++ b/Modules/Config/SpellSchoolsSection.lua @@ -13,7 +13,7 @@ function _Config:SpellSchoolsSection() order = 6, inline = false, width = 2, - name = function() return i18n("Spell Schools") end, + name = function() return i18n("Spell schools") end, args = { arcane = { type = "toggle", diff --git a/Modules/Config/SpellSection.lua b/Modules/Config/SpellSection.lua index 3e971d7e..94284fb7 100755 --- a/Modules/Config/SpellSection.lua +++ b/Modules/Config/SpellSection.lua @@ -18,7 +18,7 @@ function _Config:LoadSpellSection() showSpellStats = { type = "toggle", order = 0, - name = function() return i18n("Show Spell Stats") end, + name = function() return i18n("Show spell stats") end, desc = function() return i18n("Shows/Hides all spell stats.") end, width = 1.5, get = function () return ExtendedCharacterStats.profile.spell.display; end, @@ -27,23 +27,10 @@ function _Config:LoadSpellSection() Stats.RebuildStatInfos() end, }, - spellCrit = { - type = "toggle", - order = 1, - name = function() return i18n("Spell Crit") end, - desc = function() return i18n("Shows/Hides the spell crit chance.") end, - width = 1.5, - disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, - get = function () return ExtendedCharacterStats.profile.spell.crit.display; end, - set = function (_, value) - ExtendedCharacterStats.profile.spell.crit.display = value - Stats.RebuildStatInfos() - end, - }, hasteRating = { type = "toggle", order = 2, - name = function() return i18n("Haste Rating") end, + name = function() return i18n("Haste rating") end, desc = function() return i18n("Shows/Hides the spell haste rating value.") end, width = 1.5, hidden = function() return ECS.IsClassic end, @@ -57,7 +44,7 @@ function _Config:LoadSpellSection() hasteBonus = { type = "toggle", order = 3, - name = function() return i18n("Haste Bonus") end, + name = function() return i18n("Haste bonus") end, desc = function() return i18n("Shows/Hides the spell haste bonus value.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, @@ -70,7 +57,7 @@ function _Config:LoadSpellSection() spellPenetration = { type = "toggle", order = 4, - name = function() return i18n("Spell Penetration") end, + name = function() return i18n("Spell penetration") end, desc = function() return i18n("Shows/Hides the spell penetration value.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, @@ -80,191 +67,227 @@ function _Config:LoadSpellSection() Stats.RebuildStatInfos() end, }, - spellHitGroup = { + spellPower = { type = "group", order = 5, inline = true, - name = function() return i18n("Spell Hit Values") end, + name = function() return i18n("Spell power") end, args = { - spellHitRating = { + bonusHealing = { type = "toggle", order = 1, - name = function() return i18n("Hit Rating") end, - desc = function() return i18n("Shows/Hides the spell hit rating.") end, + name = function() return i18n("Healing power") end, + desc = function() return i18n("Shows/Hides the healing power value.") end, width = 1.5, - hidden = function() return ECS.IsClassic end, - disabled = function() - return ((not ExtendedCharacterStats.profile.spell.display) or - (not ExtendedCharacterStats.profile.spell.hit.display)) - end, - get = function () return ExtendedCharacterStats.profile.spell.hit.rating.display; end, + disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, + get = function () return ExtendedCharacterStats.profile.spellBonus.bonusHealing.display; end, set = function (_, value) - ExtendedCharacterStats.profile.spell.hit.rating.display = value + ExtendedCharacterStats.profile.spellBonus.bonusHealing.display = value Stats.RebuildStatInfos() end, }, - spellHitBonus = { + arcane = { type = "toggle", order = 2, - name = function() return i18n("Hit Bonus") end, - desc = function() return i18n("Shows/Hides the spell hit bonus.") end, + name = function() return i18n("Arcane") end, + desc = function() return i18n("Shows/Hides the arcane damage value.") end, width = 1.5, - disabled = function() - return ((not ExtendedCharacterStats.profile.spell.display) or - (not ExtendedCharacterStats.profile.spell.hit.display)) - end, - get = function () return ExtendedCharacterStats.profile.spell.hit.bonus.display; end, + disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, + get = function () return ExtendedCharacterStats.profile.spellBonus.arcane.display; end, set = function (_, value) - ExtendedCharacterStats.profile.spell.hit.bonus.display = value + ExtendedCharacterStats.profile.spellBonus.arcane.display = value Stats.RebuildStatInfos() end, }, - spellMiss = { + fire = { type = "toggle", order = 3, - name = function() return i18n("Miss Chance") end, - desc = function() return i18n("Shows/Hides the spell miss chance against enemies on the same level.") end, + name = function() return i18n("Fire") end, + desc = function() return i18n("Shows/Hides the fire damage value.") end, width = 1.5, - disabled = function() - return ((not ExtendedCharacterStats.profile.spell.display) or - (not ExtendedCharacterStats.profile.spell.hit.display)) - end, - get = function () return ExtendedCharacterStats.profile.spell.hit.sameLevel.display; end, + disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, + get = function () return ExtendedCharacterStats.profile.spellBonus.fire.display; end, set = function (_, value) - ExtendedCharacterStats.profile.spell.hit.sameLevel.display = value + ExtendedCharacterStats.profile.spellBonus.fire.display = value Stats.RebuildStatInfos() end, }, - spellMissBoss = { + frost = { type = "toggle", order = 4, - name = function() return i18n("Miss Chance Boss") end, - desc = function() return i18n("Shows/Hides the spell miss chance against boss enemies (+3 Level).") end, + name = function() return i18n("Frost") end, + desc = function() return i18n("Shows/Hides the frost damage value.") end, width = 1.5, - disabled = function() - return ((not ExtendedCharacterStats.profile.spell.display) or - (not ExtendedCharacterStats.profile.spell.hit.display)) - end, - get = function () return ExtendedCharacterStats.profile.spell.hit.bossLevel.display; end, + disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, + get = function () return ExtendedCharacterStats.profile.spellBonus.frost.display; end, set = function (_, value) - ExtendedCharacterStats.profile.spell.hit.bossLevel.display = value + ExtendedCharacterStats.profile.spellBonus.frost.display = value Stats.RebuildStatInfos() end, }, - } - }, - spellPower = { - type = "group", - order = 6, - inline = true, - name = function() return i18n("Spell Power") end, - args = { - bonusHealing = { + holy = { type = "toggle", - order = 1, - name = function() return i18n("Healing Power") end, - desc = function() return i18n("Shows/Hides the healing power value.") end, + order = 5, + name = function() return i18n("Holy") end, + desc = function() return i18n("Shows/Hides the holy damage value.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, - get = function () return ExtendedCharacterStats.profile.spellBonus.bonusHealing.display; end, + get = function () return ExtendedCharacterStats.profile.spellBonus.holy.display; end, set = function (_, value) - ExtendedCharacterStats.profile.spellBonus.bonusHealing.display = value + ExtendedCharacterStats.profile.spellBonus.holy.display = value Stats.RebuildStatInfos() end, }, - arcaneDmg = { + nature = { type = "toggle", - order = 2, - name = function() return i18n("Arcane Damage") end, - desc = function() return i18n("Shows/Hides the arcane damage value.") end, + order = 6, + name = function() return i18n("Nature") end, + desc = function() return i18n("Shows/Hides the nature damage value.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, - get = function () return ExtendedCharacterStats.profile.spellBonus.arcaneDmg.display; end, + get = function () return ExtendedCharacterStats.profile.spellBonus.nature.display; end, set = function (_, value) - ExtendedCharacterStats.profile.spellBonus.arcaneDmg.display = value + ExtendedCharacterStats.profile.spellBonus.nature.display = value Stats.RebuildStatInfos() end, }, - fireDmg = { + physical = { type = "toggle", - order = 3, - name = function() return i18n("Fire Damage") end, - desc = function() return i18n("Shows/Hides the fire damage value.") end, + order = 7, + name = function() return i18n("Physical") end, + desc = function() return i18n("Shows/Hides the physical damage value.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, - get = function () return ExtendedCharacterStats.profile.spellBonus.fireDmg.display; end, + get = function () return ExtendedCharacterStats.profile.spellBonus.physical.display; end, set = function (_, value) - ExtendedCharacterStats.profile.spellBonus.fireDmg.display = value + ExtendedCharacterStats.profile.spellBonus.physical.display = value Stats.RebuildStatInfos() end, }, - frostDmg = { + shadow = { type = "toggle", - order = 4, - name = function() return i18n("Frost Damage") end, - desc = function() return i18n("Shows/Hides the frost damage value.") end, + order = 8, + name = function() return i18n("Shadow") end, + desc = function() return i18n("Shows/Hides the shadow damage value.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, - get = function () return ExtendedCharacterStats.profile.spellBonus.frostDmg.display; end, + get = function () return ExtendedCharacterStats.profile.spellBonus.shadow.display; end, set = function (_, value) - ExtendedCharacterStats.profile.spellBonus.frostDmg.display = value + ExtendedCharacterStats.profile.spellBonus.shadow.display = value Stats.RebuildStatInfos() end, }, - holyDmg = { + } + }, + spellCritGroup = { + type = "group", + order = 6, + inline = true, + name = function() return i18n("Spell crit. values") end, + args = { + spellCritRating = { type = "toggle", - order = 5, - name = function() return i18n("Holy Damage") end, - desc = function() return i18n("Shows/Hides the holy damage value.") end, + order = 1, + name = function() return i18n("Spell crit. rating") end, + desc = function() return i18n("Shows/Hides the spell crit. rating.") end, width = 1.5, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, - get = function () return ExtendedCharacterStats.profile.spellBonus.holyDmg.display; end, + get = function () return ExtendedCharacterStats.profile.spell.crit.rating.display; end, set = function (_, value) - ExtendedCharacterStats.profile.spellBonus.holyDmg.display = value + ExtendedCharacterStats.profile.spell.crit.rating.display = value Stats.RebuildStatInfos() end, }, - natureDmg = { + spellCrit = { type = "toggle", - order = 6, - name = function() return i18n("Nature Damage") end, - desc = function() return i18n("Shows/Hides the nature damage value.") end, + order = 1.1, + name = function() return i18n("Spell crit.") end, + desc = function() return i18n("Shows/Hides the spell crit. chance.") end, width = 1.5, disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, - get = function () return ExtendedCharacterStats.profile.spellBonus.natureDmg.display; end, + get = function () return ExtendedCharacterStats.profile.spell.crit.display; end, set = function (_, value) - ExtendedCharacterStats.profile.spellBonus.natureDmg.display = value + ExtendedCharacterStats.profile.spell.crit.display = value Stats.RebuildStatInfos() end, }, - physicalDmg = { + } + }, + spellHitGroup = { + type = "group", + order = 7, + inline = true, + name = function() return i18n("Spell hit values") end, + args = { + spellHitRating = { type = "toggle", - order = 7, - name = function() return i18n("Physical Damage") end, - desc = function() return i18n("Shows/Hides the physical damage value.") end, + order = 1, + name = function() return i18n("Hit rating") end, + desc = function() return i18n("Shows/Hides the spell hit rating.") end, width = 1.5, - disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, - get = function () return ExtendedCharacterStats.profile.spellBonus.physicalDmg.display; end, + hidden = function() return ECS.IsClassic end, + disabled = function() + return ((not ExtendedCharacterStats.profile.spell.display) or + (not ExtendedCharacterStats.profile.spell.hit.display)) + end, + get = function () return ExtendedCharacterStats.profile.spell.hit.rating.display; end, set = function (_, value) - ExtendedCharacterStats.profile.spellBonus.physicalDmg.display = value + ExtendedCharacterStats.profile.spell.hit.rating.display = value Stats.RebuildStatInfos() end, }, - shadowDmg = { + spellHitBonus = { type = "toggle", - order = 8, - name = function() return i18n("Shadow Damage") end, - desc = function() return i18n("Shows/Hides the shadow damage value.") end, + order = 2, + name = function() return i18n("Hit bonus") end, + desc = function() return i18n("Shows/Hides the spell hit bonus.") end, width = 1.5, - disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, - get = function () return ExtendedCharacterStats.profile.spellBonus.shadowDmg.display; end, + disabled = function() + return ((not ExtendedCharacterStats.profile.spell.display) or + (not ExtendedCharacterStats.profile.spell.hit.display)) + end, + get = function () return ExtendedCharacterStats.profile.spell.hit.bonus.display; end, + set = function (_, value) + ExtendedCharacterStats.profile.spell.hit.bonus.display = value + Stats.RebuildStatInfos() + end, + }, + spellMiss = { + type = "toggle", + order = 3, + name = function() return i18n("Miss chance") end, + desc = function() return i18n("Shows/Hides the spell miss chance against enemies on the same level.") end, + width = 1.5, + disabled = function() + return ((not ExtendedCharacterStats.profile.spell.display) or + (not ExtendedCharacterStats.profile.spell.miss.display)) + end, + get = function () return ExtendedCharacterStats.profile.spell.miss.display; end, + set = function (_, value) + ExtendedCharacterStats.profile.spell.miss.display = value + Stats.RebuildStatInfos() + end, + }, + spellMissBoss = { + type = "toggle", + order = 4, + name = function() return i18n("Miss chance boss") end, + desc = function() return i18n("Shows/Hides the spell miss chance against boss enemies (+3 Level).") end, + width = 1.5, + disabled = function() + return ((not ExtendedCharacterStats.profile.spell.display) or + (not ExtendedCharacterStats.profile.spell.missBoss.display)) + end, + get = function () return ExtendedCharacterStats.profile.spell.missBoss.display; end, set = function (_, value) - ExtendedCharacterStats.profile.spellBonus.shadowDmg.display = value + ExtendedCharacterStats.profile.spell.missBoss.display = value Stats.RebuildStatInfos() end, }, } - } + }, + }, } end diff --git a/Modules/Data/Data.lua b/Modules/Data/Data.lua index 4d1f3fe1..94b2cdaf 100755 --- a/Modules/Data/Data.lua +++ b/Modules/Data/Data.lua @@ -21,6 +21,7 @@ dataFunctionRefs = { ["MovementSpeed"] = function() return Data:GetMovementSpeed() end, -- Melee ["MeleeAttackPower"] = function() return Data:GetMeleeAttackPower() end, + ["MeleeCritRating"] = function() return ECS.IsClassic and 0 or Data:GetMeleeCritRating() end, ["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, @@ -43,6 +44,7 @@ dataFunctionRefs = { ["MeleeAttackSpeedOffHand"] = function() return Data:GetMeleeAttackSpeedOffHand() end, -- Ranged ["RangeAttackpower"] = function() return Data:GetRangeAttackPower() end, + ["RangedCritRating"] = function() return ECS.IsClassic and 0 or Data:GetRangedCritRating() end, ["RangedCritChance"] = function() return Data:RangedCrit() end, ["RangedHitRating"] = function() return ECS.IsClassic and 0 or Data:RangeHitRating() end, ["RangedHitBonus"] = function() return Data:RangeHitBonus() end, @@ -62,16 +64,21 @@ dataFunctionRefs = { ["AvoidanceBoss"] = function() return Data:GetAvoidance(enemyLevel) end, ["DefenseRating"] = function() return ECS.IsClassic and 0 or Data:GetDefenseRating() end, ["DefenseValue"] = function() return Data:GetDefenseValue() end, + ["DodgeRating"] = function() return ECS.IsClassic and 0 or Data:GetDodgeRating() end, ["DodgeChance"] = function() return Data:GetDodgeChance() end, + ["ParryRating"] = function() return ECS.IsClassic and 0 or Data:GetParryRating() end, ["ParryChance"] = function() return Data:GetParryChance() end, + ["BlockRating"] = function() return ECS.IsClassic and 0 or Data:GetBlockRating() end, ["BlockChance"] = function() return Data:GetBlockChance() end, ["BlockValue"] = function() return Data:GetBlockValue() end, - ["ResilienceValue"] = function() return ECS.IsClassic and 0 or Data:GetResilienceRating() end, + ["ResilienceRating"] = function() return ECS.IsClassic and 0 or Data:GetResilienceRating() end, + ["Resilience"] = function() return ECS.IsClassic and 0 or Data:GetResilience() end, -- Spell ["SpellHitRating"] = function() return ECS.IsClassic and 0 or Data:SpellHitRating() end, ["SpellHitBonus"] = function() return Data.SpellHitBonus(Data.HOLY_SCHOOL) end, ["SpellHitSameLevel"] = function() return Data:SpellMissChanceSameLevel(Data.HOLY_SCHOOL) end, ["SpellHitBossLevel"] = function() return Data:SpellMissChanceBossLevel(Data.HOLY_SCHOOL) end, + ["SpellCritRating"] = function() return ECS.IsClassic and 0 or Data:GetSpellCritRating() end, ["SpellCritChance"] = function() return Data:GetSpellCrit(Data.HOLY_SCHOOL) end, ["SpellHasteRating"] = function() return ECS.IsClassic and 0 or Data:GetSpellHasteRating() end, ["SpellHasteBonus"] = function() return Data:GetSpellHasteBonus() end, diff --git a/Modules/Data/Defense.lua b/Modules/Data/Defense.lua index f9511d57..44774029 100755 --- a/Modules/Data/Defense.lua +++ b/Modules/Data/Defense.lua @@ -27,6 +27,7 @@ function _Defense:GetCritReduction() local meleeCritReduction = 0 local rangedCritReduction = 0 local spellCritReduction = 0 + local critReducingFromResilience = 0 local i = 1 repeat local aura = C_UnitAuras.GetAuraDataByIndex("player", i, "HELPFUL") @@ -60,7 +61,9 @@ function _Defense:GetCritReduction() if critReductionFromDefense < 0 then critReductionFromDefense = 0 end - local critReducingFromResilience = GetCombatRatingBonus(15) + if CR_RESILIENCE_CRIT_TAKEN then + critReducingFromResilience = GetCombatRatingBonus(CR_RESILIENCE_CRIT_TAKEN) + end if classId == Data.DRUID then local coeff = ECS.IsWotlk and 2 or 1 @@ -219,7 +222,43 @@ end ---@return number function Data:GetResilienceRating() - return DataUtils:Round(GetCombatRating(15), 2) + local rating = 0 + if CR_RESILIENCE_PLAYER_DAMAGE_TAKEN then + rating = GetCombatRating(CR_RESILIENCE_PLAYER_DAMAGE_TAKEN) + end + return DataUtils:Round(rating, 2) +end + +---@return number +function Data:GetResilience() + return DataUtils:Round(GetModResilienceDamageReduction(), 2) +end + +---@return number +function Data:GetParryRating() + local rating = 0 + if CR_PARRY then + rating = GetCombatRating(CR_PARRY) + end + return DataUtils:Round(rating, 2) +end + +---@return number +function Data:GetDodgeRating() + local rating = 0 + if CR_DODGE then + rating = GetCombatRating(CR_DODGE) + end + return DataUtils:Round(rating, 2) +end + +---@return number +function Data:GetBlockRating() + local rating = 0 + if CR_BLOCK then + rating = GetCombatRating(CR_BLOCK) + end + return DataUtils:Round(rating, 2) end ---@return number diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index b10071c5..0925bd06 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -265,6 +265,15 @@ function Data:GetMeleeHasteRating() return DataUtils:Round(hasteRating, 0) end +---@return number +function Data:GetMeleeCritRating() + local critRating = 0 + if CR_CRIT_MELEE then + critRating = GetCombatRating(CR_CRIT_MELEE) + end + return DataUtils:Round(critRating, 0) +end + ---@return string function Data:GetMeleeHasteBonus() if (not CR_HASTE_MELEE) then diff --git a/Modules/Data/Ranged.lua b/Modules/Data/Ranged.lua index f53af9e1..ba9e3512 100755 --- a/Modules/Data/Ranged.lua +++ b/Modules/Data/Ranged.lua @@ -134,4 +134,13 @@ function Data.RangeMissChanceBossLevel() return DataUtils:Round(missChance, 2) .. "%" end +---@return number +function Data:GetRangedCritRating() + local critRating = 0 + if CR_CRIT_RANGED then + critRating = GetCombatRating(CR_CRIT_RANGED) + end + return DataUtils:Round(critRating, 0) +end + return Data diff --git a/Modules/Data/SpellCrit.lua b/Modules/Data/SpellCrit.lua index f787fdce..3ba05638 100755 --- a/Modules/Data/SpellCrit.lua +++ b/Modules/Data/SpellCrit.lua @@ -161,3 +161,12 @@ end function Data:GetSpellPenetration() return DataUtils:Round(GetSpellPenetration(), 2) end + +---@return number +function Data:GetSpellCritRating() + local critRating = 0 + if CR_CRIT_SPELL then + critRating = GetCombatRating(CR_CRIT_SPELL) + end + return DataUtils:Round(critRating, 0) +end \ No newline at end of file diff --git a/Modules/Migration.lua b/Modules/Migration.lua index 0f1bf19b..2b827b3f 100644 --- a/Modules/Migration.lua +++ b/Modules/Migration.lua @@ -15,6 +15,8 @@ function Migration:ToLatestProfileVersion(profileVersion) return end + local defaultProfile = Profile:GetDefaultProfile() + if profileVersion < 24 then ExtendedCharacterStats.profile.defense.resilienceRating = ExtendedCharacterStats.profile.defense.resilience ExtendedCharacterStats.profile.defense.resilience = nil @@ -22,4 +24,20 @@ function Migration:ToLatestProfileVersion(profileVersion) if profileVersion < 25 then ExtendedCharacterStats.profile.defense.resilience = nil end + if profileVersion < 25 then + ExtendedCharacterStats.profile.defense.resilience = ExtendedCharacterStats.profile.defense.resilience + ExtendedCharacterStats.profile.defense.resilienceRating = ExtendedCharacterStats.profile.defense.resilienceRating + ExtendedCharacterStats.profile.spell.miss = defaultProfile.profile.spell.miss + ExtendedCharacterStats.profile.defense.critReduction = defaultProfile.profile.defense.critReduction + ExtendedCharacterStats.profile.defense.blockRating = defaultProfile.profile.defense.blockRating + ExtendedCharacterStats.profile.melee.critRating = defaultProfile.profile.melee.critRating + ExtendedCharacterStats.profile.melee.penetration = defaultProfile.profile.melee.penetration + ExtendedCharacterStats.profile.melee.penetrationRating = defaultProfile.profile.melee.penetrationRating + ExtendedCharacterStats.profile.ranged.critRating = defaultProfile.profile.ranged.critRating + ExtendedCharacterStats.profile.ranged.penetration = defaultProfile.profile.ranged.penetration + ExtendedCharacterStats.profile.ranged.penetrationRating = defaultProfile.profile.ranged.penetrationRating + ExtendedCharacterStats.profile.spell.crit.rating = defaultProfile.profile.spell.crit.rating + ExtendedCharacterStats.profile.spell.penetration = defaultProfile.profile.spell.penetration + ExtendedCharacterStats.profile.spell.penetrationRating = defaultProfile.profile.spell.penetrationRating + end end diff --git a/Modules/Profile.lua b/Modules/Profile.lua index 2a2152fe..6a79b614 100755 --- a/Modules/Profile.lua +++ b/Modules/Profile.lua @@ -19,7 +19,11 @@ local function GetDefaultStatsProfile() refName = "GeneralHeader", text = "General", - movementSpeed = {display = true, refName = "MovementSpeed", text = "Movement Speed"}, + movementSpeed = { + display = true, + refName = "MovementSpeed", + text = "Movement speed" + }, }, melee = { @@ -66,7 +70,7 @@ local function GetDefaultStatsProfile() display = true, isSubGroup = true, refName = "GlanceChanceHeader", - text = "Glancing Blow", + text = "Glancing blow", sameLevel = { display = true, refName = "GlanceHitChanceSameLevel", @@ -99,28 +103,35 @@ local function GetDefaultStatsProfile() attackPower = { display = true, refName = "MeleeAttackPower", - text = "Attack Power", + text = "Attack power", textColor = colors.ATTACK_POWER_SECONDARY, statColor = colors.ATTACK_POWER_PRIMARY }, + critRating = { + display = true, + refName = "RangedCritRating", + text = "Crit. rating", + textColor = colors.CRIT_SECONDARY, + statColor = colors.CRIT_PRIMARY + }, crit = { display = true, refName = "MeleeCritChance", - text = "Crit Chance", + text = "Crit. chance", textColor = colors.CRIT_SECONDARY, statColor = colors.CRIT_PRIMARY }, penetration = { display = true, refName = "MeleeArmorPenetration", - text = "Armor Pen.", + text = "Armor pen.", textColor = colors.ATTACK_SPEED_SECONDARY, statColor = colors.ATTACK_SPEED_PRIMARY, }, penetrationRating = { display = true, refName = "MeleeArmorPenetrationRating", - text = "Armor Pen. Rating", + text = "Armor pen. rating", textColor = colors.ATTACK_SPEED_SECONDARY, statColor = colors.ATTACK_SPEED_PRIMARY, }, @@ -132,19 +143,19 @@ local function GetDefaultStatsProfile() expertiseRating = { display = true, refName = "ExpertiseRating", - text = "Expertise Rating" + text = "Expertise rating" }, hasteRating = { display = true, refName = "MeleeHasteRating", - text = "Haste Rating", + text = "Haste rating", textColor = colors.HASTE_RATING_SECONDARY, statColor = colors.HASTE_RATING_PRIMARY }, hasteBonus = { display = true, refName = "MeleeHasteBonus", - text = "Haste Bonus", + text = "Haste bonus", textColor = colors.HASTE_RATING_SECONDARY, statColor = colors.HASTE_RATING_PRIMARY }, @@ -152,19 +163,19 @@ local function GetDefaultStatsProfile() display = true, isSubGroup = true, refName = "MeleeAttackSpeedHeader", - text = "Attack Speed", + text = "Attack speed", mainHand = { display = true, refName = "MeleeAttackSpeedMainHand", - text = "Main Hand", + text = "Main hand", textColor = colors.ATTACK_SPEED_SECONDARY, statColor = colors.ATTACK_SPEED_PRIMARY }, offHand = { display = true, refName = "MeleeAttackSpeedOffHand", - text = "Off Hand", + text = "Off hand", textColor = colors.ATTACK_SPEED_SECONDARY, statColor = colors.ATTACK_SPEED_PRIMARY }, @@ -215,49 +226,56 @@ local function GetDefaultStatsProfile() attackPower = { display = true, refName = "RangeAttackpower", - text = "Attack Power", + text = "Attack power", textColor = colors.ATTACK_POWER_SECONDARY, statColor = colors.ATTACK_POWER_PRIMARY }, + critRating = { + display = true, + refName = "RangedCritRating", + text = "Crit. rating", + textColor = colors.CRIT_SECONDARY, + statColor = colors.CRIT_PRIMARY + }, crit = { display = true, refName = "RangedCritChance", - text = "Crit Chance", + text = "Crit. chance", textColor = colors.CRIT_SECONDARY, statColor = colors.CRIT_PRIMARY }, penetration = { display = true, refName = "RangedArmorPenetration", - text = "Armor Pen.", + text = "Armor pen.", textColor = colors.ATTACK_SPEED_SECONDARY, statColor = colors.ATTACK_SPEED_PRIMARY, }, penetrationRating = { display = true, refName = "RangedArmorPenetrationRating", - text = "Armor Pen. Rating", + text = "Armor pen. rating", textColor = colors.ATTACK_SPEED_SECONDARY, statColor = colors.ATTACK_SPEED_PRIMARY, }, hasteRating = { display = true, refName = "RangedHasteRating", - text = "Haste Rating", + text = "Haste rating", textColor = colors.HASTE_RATING_SECONDARY, statColor = colors.HASTE_RATING_PRIMARY }, hasteBonus = { display = true, refName = "RangedHasteBonus", - text = "Haste Bonus", + text = "Haste bonus", textColor = colors.HASTE_RATING_SECONDARY, statColor = colors.HASTE_RATING_PRIMARY }, attackSpeed = { display = true, refName = "RangedAttackSpeed", - text = "Attack Speed", + text = "Attack speed", textColor = colors.ATTACK_SPEED_SECONDARY, statColor = colors.ATTACK_SPEED_PRIMARY }, @@ -267,28 +285,105 @@ local function GetDefaultStatsProfile() display = true, refName = "DefenseHeader", text = "Defense", - - armor = {display = true, refName = "Armor", text = "Armor"}, - meleeCritReduction = {display = true, refName = "MeleeCritReduction", text = "Melee Crit Reduction"}, - rangedCritReduction = {display = true, refName = "RangedCritReduction", text = "Ranged Crit Reduction"}, - spellCritReduction = {display = true, refName = "SpellCritReduction", text = "Spell Crit Reduction"}, - avoidance = {display = true, refName = "Avoidance", text = "Avoidance"}, - avoidanceBoss = {display = true, refName = "AvoidanceBoss", text = "Avoidance (Lvl +3)"}, - defenseRating = { + armor = { display = true, - refName = "DefenseRating", - text = "Defense Rating" + refName = "Armor", + text = "Armor" }, - defense = {display = true, refName = "DefenseValue", text = "Defense"}, - blockChance = {display = true, refName = "BlockChance", text = "Block Chance"}, - blockValue = {display = true, refName = "BlockValue", text = "Block Value"}, - parry = {display = true, refName = "ParryChance", text = "Parry Chance"}, - dodge = {display = true, refName = "DodgeChance", text = "Dodge Chance"}, resilienceRating = { display = true, - refName = "ResilienceValue", + refName = "ResilienceRating", + text = "Resilience rating" + }, + resilience = { + display = true, + refName = "Resilience", text = "Resilience" }, + defenseRating = { + display = true, + refName = "DefenseRating", + text = "Defense rating" + }, + defense = { + display = true, + refName = "DefenseValue", + text = "Defense" + }, + avoidance = { + display = true, + refName = "Avoidance", + text = "Avoidance" + }, + avoidanceBoss = { + display = true, + refName = "AvoidanceBoss", + text = "Avoidance (Lvl +3)" + }, + dodgeRating = { + display = true, + refName = "DodgeRating", + text = "Dodge rating" + }, + dodge = { + display = true, + refName = "DodgeChance", + text = "Dodge chance" + }, + parryRating = { + display = true, + refName = "ParryRating", + text = "Parry rating" + }, + parry = { + display = true, + refName = "ParryChance", + text = "Parry chance" + }, + ---@type SubCategory + block = { + display = true, + isSubGroup = true, + refName = "BlockHeader", + text = "Block", + rating = { + display = true, + refName = "BlockRating", + text = "Rating" + }, + chance = { + display = true, + refName = "BlockChance", + text = "Chance" + }, + amount = { + display = true, + refName = "BlockValue", + text = "Amount" + }, + }, + ---@type SubCategory + critReduction = { + display = true, + isSubGroup = true, + refName = "CritReductionHeader", + text = "Crit. reduction", + melee = { + display = true, + refName = "MeleeCritReduction", + text = "Melee" + }, + ranged = { + display = true, + refName = "RangedCritReduction", + text = "Ranged" + }, + spell = { + display = true, + refName = "SpellCritReduction", + text = "Spell" + }, + }, }, regen = { @@ -370,175 +465,177 @@ local function GetDefaultStatsProfile() rating = { display = true, refName = "SpellHitRating", - text = "Hit Rating", + text = "Rating", textColor = colors.HIT_SECONDARY, statColor = colors.HIT_PRIMARY }, bonus = { display = true, refName = "SpellHitBonus", - text = "Hit Bonus", - textColor = colors.HIT_SECONDARY, - statColor = colors.HIT_PRIMARY - }, - sameLevel = { - display = true, - refName = "SpellHitSameLevel", - text = "Miss", - textColor = colors.HIT_SECONDARY, - statColor = colors.HIT_PRIMARY - }, - bossLevel = { - display = true, - refName = "SpellHitBossLevel", - text = "Miss (Lvl + 3)", + text = "Bonus", textColor = colors.HIT_SECONDARY, statColor = colors.HIT_PRIMARY }, arcaneHitBonus = { display = true, refName = "ArcaneHitBonus", - text = "Arcane Hit Bonus", - textColor = colors.ARCANE_SECONDARY, - statColor = colors.ARCANE_PRIMARY - }, - arcaneMissChance = { - display = true, - refName = "ArcaneMissChance", - text = "Arcane Miss", - textColor = colors.ARCANE_SECONDARY, - statColor = colors.ARCANE_PRIMARY - }, - arcaneMissChanceBoss = { - display = true, - refName = "ArcaneMissChanceBoss", - text = "Arcane Miss (Lvl + 3)", + text = "Arcane", textColor = colors.ARCANE_SECONDARY, statColor = colors.ARCANE_PRIMARY }, fireHitBonus = { display = true, refName = "FireHitBonus", - text = "Fire Hit Bonus", - textColor = colors.FIRE_SECONDARY, - statColor = colors.FIRE_PRIMARY - }, - fireMissChance = { - display = true, - refName = "FireMissChance", - text = "Fire Miss", - textColor = colors.FIRE_SECONDARY, - statColor = colors.FIRE_PRIMARY - }, - fireMissChanceBoss = { - display = true, - refName = "FireMissChanceBoss", - text = "Fire Miss (Lvl + 3)", + text = "Fire", textColor = colors.FIRE_SECONDARY, statColor = colors.FIRE_PRIMARY }, frostHitBonus = { display = true, refName = "FrostHitBonus", - text = "Frost Hit Bonus", - textColor = colors.FROST_SECONDARY, - statColor = colors.FROST_PRIMARY - }, - frostMissChance = { - display = true, - refName = "FrostMissChance", - text = "Frost Miss", - textColor = colors.FROST_SECONDARY, - statColor = colors.FROST_PRIMARY - }, - frostMissChanceBoss = { - display = true, - refName = "FrostMissChanceBoss", - text = "Frost Miss (Lvl + 3)", + text = "Frost", textColor = colors.FROST_SECONDARY, statColor = colors.FROST_PRIMARY }, holyHitBonus = { display = true, refName = "HolyHitBonus", - text = "Holy Hit Bonus", - textColor = colors.HOLY_SECONDARY, - statColor = colors.HOLY_PRIMARY - }, - holyMissChance = { - display = true, - refName = "HolyMissChance", - text = "Holy Miss", - textColor = colors.HOLY_SECONDARY, - statColor = colors.HOLY_PRIMARY - }, - holyMissChanceBoss = { - display = true, - refName = "HolyMissChanceBoss", - text = "Holy Miss (Lvl + 3)", + text = "Holy", textColor = colors.HOLY_SECONDARY, statColor = colors.HOLY_PRIMARY }, natureHitBonus = { display = true, refName = "NatureHitBonus", - text = "Nature Hit Bonus", - textColor = colors.NATURE_SECONDARY, - statColor = colors.NATURE_PRIMARY - }, - natureMissChance = { - display = true, - refName = "NatureMissChance", - text = "Nature Miss", - textColor = colors.NATURE_SECONDARY, - statColor = colors.NATURE_PRIMARY - }, - natureMissChanceBoss = { - display = true, - refName = "NatureMissChanceBoss", - text = "Nature Miss (Lvl + 3)", + text = "Nature", textColor = colors.NATURE_SECONDARY, statColor = colors.NATURE_PRIMARY }, physicalHitBonus = { display = true, refName = "PhysicalHitBonus", - text = "Physical Hit Bonus", + text = "Physical", textColor = colors.PHYSICAL_SECONDARY, statColor = colors.PHYSICAL_PRIMARY }, - physicalMissChance = { + shadowHitBonus = { display = true, - refName = "PhysicalMissChance", - text = "Physical Miss", - textColor = colors.PHYSICAL_SECONDARY, - statColor = colors.PHYSICAL_PRIMARY + refName = "ShadowHitBonus", + text = "Shadow", + textColor = colors.SHADOW_SECONDARY, + statColor = colors.SHADOW_PRIMARY }, - physicalMissChanceBoss = { + }, + ---@type SubCategory + miss = { + display = true, + isSubGroup = true, + refName = "SpellMissHeader", + text = "Miss", + + arcane = { display = true, - refName = "PhysicalMissChanceBoss", - text = "Physical Miss (Lvl + 3)", + refName = "ArcaneMissChance", + text = "Arcane", + textColor = colors.ARCANE_SECONDARY, + statColor = colors.ARCANE_PRIMARY + }, + fire = { + display = true, + refName = "FireMissChance", + text = "Fire", + textColor = colors.FIRE_SECONDARY, + statColor = colors.FIRE_PRIMARY + }, + frost = { + display = true, + refName = "FrostMissChance", + text = "Frost", + textColor = colors.FROST_SECONDARY, + statColor = colors.FROST_PRIMARY + }, + holy = { + display = true, + refName = "HolyMissChance", + text = "Holy", + textColor = colors.HOLY_SECONDARY, + statColor = colors.HOLY_PRIMARY + }, + nature = { + display = true, + refName = "NatureMissChance", + text = "Nature", + textColor = colors.NATURE_SECONDARY, + statColor = colors.NATURE_PRIMARY + }, + physical = { + display = true, + refName = "PhysicalMissChance", + text = "Physical", textColor = colors.PHYSICAL_SECONDARY, statColor = colors.PHYSICAL_PRIMARY }, - shadowHitBonus = { + shadow = { display = true, - refName = "ShadowHitBonus", - text = "Shadow Hit Bonus", + refName = "ShadowMissChance", + text = "Shadow", textColor = colors.SHADOW_SECONDARY, statColor = colors.SHADOW_PRIMARY }, - shadowMissChance = { + }, + ---@type SubCategory + missBoss = { + display = true, + isSubGroup = true, + refName = "SpellMissBossHeader", + text = "Miss (Lvl + 3)", + + arcane = { display = true, - refName = "ShadowMissChance", - text = "Shadow Miss", - textColor = colors.SHADOW_SECONDARY, - statColor = colors.SHADOW_PRIMARY + refName = "ArcaneMissChanceBoss", + text = "Arcane", + textColor = colors.ARCANE_SECONDARY, + statColor = colors.ARCANE_PRIMARY + }, + fire = { + display = true, + refName = "FireMissChanceBoss", + text = "Fire", + textColor = colors.FIRE_SECONDARY, + statColor = colors.FIRE_PRIMARY + }, + frost = { + display = true, + refName = "FrostMissChanceBoss", + text = "Frost", + textColor = colors.FROST_SECONDARY, + statColor = colors.FROST_PRIMARY + }, + holy = { + display = true, + refName = "HolyMissChanceBoss", + text = "Holy", + textColor = colors.HOLY_SECONDARY, + statColor = colors.HOLY_PRIMARY + }, + nature = { + display = true, + refName = "NatureMissChanceBoss", + text = "Nature", + textColor = colors.NATURE_SECONDARY, + statColor = colors.NATURE_PRIMARY + }, + physical = { + display = true, + refName = "PhysicalMissChanceBoss", + text = "Physical", + textColor = colors.PHYSICAL_SECONDARY, + statColor = colors.PHYSICAL_PRIMARY }, - shadowMissChanceBoss = { + shadow = { display = true, refName = "ShadowMissChanceBoss", - text = "Shadow Miss (Lvl + 3)", + text = "Shadow", textColor = colors.SHADOW_SECONDARY, statColor = colors.SHADOW_PRIMARY }, @@ -546,67 +643,80 @@ local function GetDefaultStatsProfile() hasteRating = { display = true, refName = "SpellHasteRating", - text = "Haste Rating", + text = "Haste rating", textColor = colors.HASTE_RATING_SECONDARY, statColor = colors.HASTE_RATING_PRIMARY }, hasteBonus = { display = true, refName = "SpellHasteBonus", - text = "Haste Bonus", + text = "Haste bonus", textColor = colors.HASTE_RATING_SECONDARY, statColor = colors.HASTE_RATING_PRIMARY }, - penetration = {display = true, refName = "SpellPenetration", text = "Penetration"}, - + penetration = { + display = true, + refName = "SpellPenetration", + text = "Penetration" + }, crit = { display = true, + isSubGroup = true, + refName = "SpellCritHeader", + text = "Crit.", + rating = { + display = true, + refName = "SpellCritRating", + text = "Rating", + textColor = colors.CRIT_SECONDARY, + statColor = colors.CRIT_PRIMARY + }, arcane = { display = true, refName = "ArcaneCritChance", - text = "Arcane Crit", + text = "Arcane", textColor = colors.ARCANE_SECONDARY, statColor = colors.ARCANE_PRIMARY }, fire = { display = true, refName = "FireCritChance", - text = "Fire Crit", + text = "Fire", textColor = colors.FIRE_SECONDARY, statColor = colors.FIRE_PRIMARY }, frost = { display = true, refName = "FrostCritChance", - text = "Frost Crit", + text = "Frost", textColor = colors.FROST_SECONDARY, statColor = colors.FROST_PRIMARY }, holy = { display = true, refName = "HolyCritChance", - text = "Holy Crit", + text = "Holy", textColor = colors.HOLY_SECONDARY, statColor = colors.HOLY_PRIMARY }, nature = { display = true, refName = "NatureCritChance", - text = "Nature Crit", + text = "Nature", textColor = colors.NATURE_SECONDARY, statColor = colors.NATURE_PRIMARY }, physical = { display = true, refName = "PhysicalCritChance", - text = "Physical Crit", + text = "Physical", textColor = colors.PHYSICAL_SECONDARY, statColor = colors.PHYSICAL_PRIMARY }, shadow = { display = true, refName = "ShadowCritChance", - text = "Shadow Crit", + text = "Shadow", textColor = colors.SHADOW_SECONDARY, statColor = colors.SHADOW_PRIMARY }, @@ -620,56 +730,56 @@ local function GetDefaultStatsProfile() bonusHealing = { display = true, refName = "BonusHealing", - text = "Healing Power", + text = "Healing power", textColor = colors.HEALING_SECONDARY, statColor = colors.HEALING_PRIMARY }, - arcaneDmg = { + arcane = { display = true, refName = "ArcaneDmg", - text = "Arcane Damage", + text = "Arcane", textColor = colors.ARCANE_SECONDARY, statColor = colors.ARCANE_PRIMARY }, - fireDmg = { + fire = { display = true, refName = "FireDmg", - text = "Fire Damage", + text = "Fire", textColor = colors.FIRE_SECONDARY, statColor = colors.FIRE_PRIMARY }, - frostDmg = { + frost = { display = true, refName = "FrostDmg", - text = "Frost Damage", + text = "Frost", textColor = colors.FROST_SECONDARY, statColor = colors.FROST_PRIMARY }, - holyDmg = { + holy = { display = true, refName = "HolyDmg", - text = "Holy Damage", + text = "Holy", textColor = colors.HOLY_SECONDARY, statColor = colors.HOLY_PRIMARY }, - natureDmg = { + nature = { display = true, refName = "NatureDmg", - text = "Nature Damage", + text = "Nature", textColor = colors.NATURE_SECONDARY, statColor = colors.NATURE_PRIMARY }, - physicalDmg = { + physical = { display = true, refName = "PhysicalDmg", - text = "Physical Damage", + text = "Physical", textColor = colors.PHYSICAL_SECONDARY, statColor = colors.PHYSICAL_PRIMARY }, - shadowDmg = { + shadow = { display = true, refName = "ShadowDmg", - text = "Shadow Damage", + text = "Shadow", textColor = colors.SHADOW_SECONDARY, statColor = colors.SHADOW_PRIMARY }, diff --git a/Modules/Stats.lua b/Modules/Stats.lua index acac2a0b..61007ad5 100755 --- a/Modules/Stats.lua +++ b/Modules/Stats.lua @@ -216,9 +216,10 @@ _CreateStatInfos = function() _CreateStatInfo( category, category.attackPower, + (not ECS.IsClassic) and category.critRating or nil, category.crit, ECS.IsWotlk and category.penetrationRating or nil, - (not ECS.IsClassic) and category.penetration or nil, + ECS.IsWotlk and category.penetration or nil, (not ECS.IsClassic) and category.expertiseRating or nil, (not ECS.IsClassic) and category.expertise or nil, (not ECS.IsClassic) and category.hasteRating or nil, @@ -252,9 +253,10 @@ _CreateStatInfos = function() _CreateStatInfo( category, category.attackPower, + (not ECS.IsClassic) and category.critRating or nil, category.crit, ECS.IsWotlk and category.penetrationRating or nil, - (not ECS.IsClassic) and category.penetration or nil, + ECS.IsWotlk and category.penetration or nil, (not ECS.IsClassic) and category.hasteRating or nil, (not ECS.IsClassic) and category.hasteBonus or nil, category.attackSpeed @@ -276,22 +278,35 @@ _CreateStatInfos = function() _CreateStatInfo( category, category.armor, - category.meleeCritReduction, - category.rangedCritReduction, - category.spellCritReduction, - category.avoidance, - category.avoidanceBoss, + (not ECS.IsClassic) and category.resilienceRating or nil, + (not ECS.IsClassic) and category.resilience or nil, (not ECS.IsClassic) and category.defenseRating or nil, category.defense, - (not ECS.IsClassic and DataUtils:CanBlock()) and category.blockRating or nil, - DataUtils:CanBlock() and category.blockChance or nil, - DataUtils:CanBlock() and category.blockValue or nil, - (not ECS.IsClassic and DataUtils:CanParry()) and category.parryRating or nil, - DataUtils:CanParry() and category.parry or nil, + category.avoidance, + category.avoidanceBoss, (not ECS.IsClassic) and category.dodgeRating or nil, category.dodge or nil, - (not ECS.IsClassic) and category.resilienceRating or nil + (not ECS.IsClassic and DataUtils:CanParry()) and category.parryRating or nil, + DataUtils:CanParry() and category.parry or nil ) + if category.display then + if DataUtils:CanBlock() then + category = category.block + _CreateStatInfo( + category, + (not ECS.IsClassic) and category.rating or nil, + category.chance, + category.value + ) + end + category = category.critReduction + _CreateStatInfo( + category, + category.melee, + category.ranged, + category.spell + ) + end if UnitHasMana("player") then category = profile.regen @@ -301,52 +316,76 @@ _CreateStatInfos = function() category = profile.spell local spellBonus = profile.spellBonus local spell = profile.spell - local spellCrit = spell.crit - local spellHit = spell.hit _CreateStatInfo( category, (not ECS.IsClassic) and category.hasteRating or nil, category.hasteBonus, (not ECS.IsClassic) and category.penetrationRating or nil, - (not ECS.IsClassic) and category.penetration or nil, + category.penetration, spellBonus.bonusHealing, - (not ECS.IsClassic) and spellHit.rating or nil, - spell.arcane.display and spellBonus.arcaneDmg or nil, - spell.arcane.display and spellCrit.display and spellCrit.arcane or nil, - spell.arcane.display and spellHit.bonus.display and spellHit.arcaneHitBonus or nil, - spell.arcane.display and spellHit.sameLevel.display and spellHit.arcaneMissChance or nil, - spell.arcane.display and spellHit.bossLevel.display and spellHit.arcaneMissChanceBoss or nil, - spell.fire.display and spellBonus.fireDmg or nil, - spell.fire.display and spellCrit.display and spellCrit.fire or nil, - spell.fire.display and spellHit.bonus.display and spellHit.fireHitBonus or nil, - spell.fire.display and spellHit.sameLevel.display and spellHit.fireMissChance or nil, - spell.fire.display and spellHit.bossLevel.display and spellHit.fireMissChanceBoss or nil, - spell.frost.display and spellBonus.frostDmg or nil, - spell.frost.display and spellCrit.display and spellCrit.frost or nil, - spell.frost.display and spellHit.bonus.display and spellHit.frostHitBonus or nil, - spell.frost.display and spellHit.sameLevel.display and spellHit.frostMissChance or nil, - spell.frost.display and spellHit.bossLevel.display and spellHit.frostMissChanceBoss or nil, - spell.holy.display and spellBonus.holyDmg or nil, - spell.holy.display and spellCrit.display and spellCrit.holy or nil, - spell.holy.display and spellHit.bonus.display and spellHit.holyHitBonus or nil, - spell.holy.display and spellHit.sameLevel.display and spellHit.holyMissChance or nil, - spell.holy.display and spellHit.bossLevel.display and spellHit.holyMissChanceBoss or nil, - spell.nature.display and spellBonus.natureDmg or nil, - spell.nature.display and spellCrit.display and spellCrit.nature or nil, - spell.nature.display and spellHit.bonus.display and spellHit.natureHitBonus or nil, - spell.nature.display and spellHit.sameLevel.display and spellHit.natureMissChance or nil, - spell.nature.display and spellHit.bossLevel.display and spellHit.natureMissChanceBoss or nil, - spell.physical.display and spellBonus.physicalDmg or nil, - spell.physical.display and spellCrit.display and spellCrit.physical or nil, - spell.physical.display and spellHit.bonus.display and spellHit.physicalHitBonus or nil, - spell.physical.display and spellHit.sameLevel.display and spellHit.physicalMissChance or nil, - spell.physical.display and spellHit.bossLevel.display and spellHit.physicalMissChanceBoss or nil, - spell.shadow.display and spellBonus.shadowDmg or nil, - spell.shadow.display and spellCrit.display and spellCrit.shadow or nil, - spell.shadow.display and spellHit.bonus.display and spellHit.shadowHitBonus or nil, - spell.shadow.display and spellHit.sameLevel.display and spellHit.shadowMissChance or nil, - spell.shadow.display and spellHit.bossLevel.display and spellHit.shadowMissChanceBoss or nil + spell.arcane.display and spellBonus.arcane or nil, + spell.fire.display and spellBonus.fire or nil, + spell.frost.display and spellBonus.frost or nil, + spell.holy.display and spellBonus.holy or nil, + spell.nature.display and spellBonus.nature or nil, + spell.physical.display and spellBonus.physical or nil, + spell.shadow.display and spellBonus.shadow or nil ) + if category.display then + local spellCrit = spell.crit + _CreateStatInfo( + category, + (not ECS.IsClassic) and spellCrit.rating or nil, + spell.arcane.display and spellCrit.display and spellCrit.arcane or nil, + spell.fire.display and spellCrit.display and spellCrit.fire or nil, + spell.frost.display and spellCrit.display and spellCrit.frost or nil, + spell.holy.display and spellCrit.display and spellCrit.holy or nil, + spell.nature.display and spellCrit.display and spellCrit.nature or nil, + spell.physical.display and spellCrit.display and spellCrit.physical or nil, + spell.shadow.display and spellCrit.display and spellCrit.shadow or nil + ) + local spellHit = spell.hit + category = spellHit + _CreateStatInfo( + category, + (not ECS.IsClassic) and spellHit.rating or nil, + spell.arcane.display and spellHit.bonus.display and spellHit.arcane or nil, + spell.fire.display and spellHit.bonus.display and spellHit.fire or nil, + spell.frost.display and spellHit.bonus.display and spellHit.frost or nil, + spell.holy.display and spellHit.bonus.display and spellHit.holy or nil, + spell.nature.display and spellHit.bonus.display and spellHit.nature or nil, + spell.physical.display and spellHit.bonus.display and spellHit.physical or nil, + spell.shadow.display and spellHit.bonus.display and spellHit.shadow or nil + ) + local spellMiss = spell.miss + if spellMiss.display then + category = spellMiss + _CreateStatInfo( + category, + spell.arcane.display and category.arcane or nil, + spell.fire.display and category.fire or nil, + spell.frost.display and category.frost or nil, + spell.holy.display and category.holy or nil, + spell.nature.display and category.nature or nil, + spell.physical.display and category.physical or nil, + spell.shadow.display and category.shadow or nil + ) + end + local spellMissBoss = spell.missBoss + if spellMissBoss.display then + category = spellMissBoss + _CreateStatInfo( + category, + spell.arcane.display and category.arcane or nil, + spell.fire.display and category.fire or nil, + spell.frost.display and category.frost or nil, + spell.holy.display and category.holy or nil, + spell.nature.display and category.nature or nil, + spell.physical.display and category.physical or nil, + spell.shadow.display and category.shadow or nil + ) + end + end end --- Creates a new header in the stats UI diff --git a/Modules/i18n/translations/CommandTranslations.lua b/Modules/i18n/translations/CommandTranslations.lua index 45e8820a..40b667ae 100644 --- a/Modules/i18n/translations/CommandTranslations.lua +++ b/Modules/i18n/translations/CommandTranslations.lua @@ -2,7 +2,7 @@ local i18n = ECSLoader:ImportModule("i18n") local commandTranslations = { - ["Available Commands"] = { + ["Available commands"] = { ["enUS"] = true, ["deDE"] = "Verfügbare Befehle", ["frFR"] = "Commandes disponibles", diff --git a/Modules/i18n/translations/ConfigTranslations/ConfigTranslations.lua b/Modules/i18n/translations/ConfigTranslations/ConfigTranslations.lua index a8b72073..99d00412 100644 --- a/Modules/i18n/translations/ConfigTranslations/ConfigTranslations.lua +++ b/Modules/i18n/translations/ConfigTranslations/ConfigTranslations.lua @@ -32,7 +32,7 @@ local configTranslations = { ["esMX"] = "Estadísticas", ["ptBR"] = "Estatísticas" }, - ["General Settings"] = { + ["General settings"] = { ["enUS"] = true, ["deDE"] = "Allgemeine Einstellungen", ["frFR"] = "Paramètres généraux", @@ -62,7 +62,7 @@ local configTranslations = { ["esMX"] = "Oculta la ventana de estadísticas cuando abriendo la información del personaje", ["ptBR"] = "Oculta as janelas de estatísticas ao abrir as informações do personagem" }, - ["Colorize Stats"] = { + ["Colorize stats"] = { ["enUS"] = true, ["deDE"] = "Werte färben", ["frFR"] = "Coloriser les statistiques", @@ -122,7 +122,7 @@ local configTranslations = { ["esMX"] = "Valores de estadísticas", ["ptBR"] = "Valores das estatísticas" }, - ["Show Item Quality Colors"] = { + ["Show item quality colors"] = { ["enUS"] = true, ["deDE"] = "Zeige Item Qualitätsfarben", ["frFR"] = "Affiche la couleur de rareté des objets", @@ -142,7 +142,7 @@ local configTranslations = { ["esMX"] = "Muestra/oculta los marcos coloreados alrededor de los objetos equipados", ["ptBR"] = "Mostra/oculta os quadros coloridos ao redor dos itens equipados" }, - ["Quality Colors' Intensity"] = { + ["Quality colors' intensity"] = { ["enUS"] = true, ["deDE"] = "Intensität der Qualitätsfarben", ["frFR"] = "Intensité des couleurs de qualité", @@ -162,7 +162,7 @@ local configTranslations = { ["esMX"] = "Cambia la intensidad del brillo de los marcos coloreados.", ["ptBR"] = "Altera a intensidade do brilho dos quadros coloridos." }, - ["Header Font Size"] = { + ["Header font size"] = { ["enUS"] = true, ["deDE"] = "Überschriften Schriftgröße", ["frFR"] = "Taille de la police d'entête", @@ -182,7 +182,7 @@ local configTranslations = { ["esMX"] = "Cambia el tamaño de fuente de los encabezados (p. ej., cuerpo a cuerpo)", ["ptBR"] = "Altera o tamanho da fonte dos cabeçalhos (por exemplo, corpo a corpo)" }, - ["Stat Font Size"] = { + ["Stat font size"] = { ["enUS"] = true, ["deDE"] = "Werte Schriftgröße", ["frFR"] = "Taille de la police des statistiques", @@ -192,17 +192,17 @@ local configTranslations = { ["esMX"] = "Tamaño de fuente de estadística", ["ptBR"] = "Tamanho da fonte das estatísticas" }, - ["Changes the font size of the stat lines (e.g. Crit)"] = { + ["Changes the font size of the stat lines (e.g. Crit.)"] = { ["enUS"] = true, ["deDE"] = "Ändert die Schriftgröße der Werte (z.B. Kritische Chance)", ["frFR"] = "Modifie la taille de la police des statistiques (ex. Critique)", ["zhCN"] = "更改统计行的字体大小 (例如:暴击)", - ["ruRU"] = "Изменяет размер шрифта характеристик (например, \"Крит\")", + ["ruRU"] = "Изменяет размер шрифта характеристик (например, \"Крит.\")", ["esES"] = "Cambia el tamaño de fuente de las líneas de estadísticas (p. ej., crítico)", ["esMX"] = "Cambia el tamaño de fuente de las líneas de estadísticas (p. ej., crítico)", ["ptBR"] = "Altera o tamanho da fonte das linhas de estatísticas (por exemplo, crítico)" }, - ["Window Width"] = { + ["Window width"] = { ["enUS"] = true, ["deDE"] = "Fensterbreite", ["frFR"] = "Largeur de fenêtre", @@ -232,7 +232,7 @@ local configTranslations = { ["esMX"] = "Idioma", ["ptBR"] = "Idioma" }, - ["Stats Settings"] = { + ["Stats settings"] = { ["enUS"] = true, ["deDE"] = "Werte Einstellungen", ["frFR"] = "Paramètres des statistiques", diff --git a/Modules/i18n/translations/ConfigTranslations/DefenseConfigTranslations.lua b/Modules/i18n/translations/ConfigTranslations/DefenseConfigTranslations.lua index 8d2a36cb..0ac92ab9 100644 --- a/Modules/i18n/translations/ConfigTranslations/DefenseConfigTranslations.lua +++ b/Modules/i18n/translations/ConfigTranslations/DefenseConfigTranslations.lua @@ -2,7 +2,7 @@ local i18n = ECSLoader:ImportModule("i18n") local defenseConfigTranslations = { - ["Melee Crit Reduction"] = { + ["Parry rating"] = { ["enUS"] = true, ["deDE"] = false, ["frFR"] = false, @@ -10,9 +10,9 @@ local defenseConfigTranslations = { ["ruRU"] = false, ["esES"] = false, ["esMX"] = false, - ["ptBR"] = false + ["ptBR"] = false, }, - ["Ranged Crit Reduction"] = { + ["Dodge rating"] = { ["enUS"] = true, ["deDE"] = false, ["frFR"] = false, @@ -20,9 +20,29 @@ local defenseConfigTranslations = { ["ruRU"] = false, ["esES"] = false, ["esMX"] = false, - ["ptBR"] = false + ["ptBR"] = false, + }, + ["Blocked amount"] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, + ["Resilience rating"] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, }, - ["Spell Crit Reduction"] = { + ["Crit. reduction values"] = { ["enUS"] = true, ["deDE"] = false, ["frFR"] = false, @@ -32,7 +52,7 @@ local defenseConfigTranslations = { ["esMX"] = false, ["ptBR"] = false }, - ["Show Defense Stats"] = { + ["Show defense stats"] = { ["enUS"] = true, ["deDE"] = "Verteidigungswerte anzeigen", ["frFR"] = "Afficher défense", @@ -122,15 +142,15 @@ local defenseConfigTranslations = { ["esMX"] = "Muestra/oculta la probababilidad de bloquear", ["ptBR"] = "Mostra/oculta a chance de bloquear" }, - ["Shows/Hides the block value."] = { + ["Shows/Hides the blocked amount."] = { ["enUS"] = true, - ["deDE"] = "Zeigt/Versteckt die Blockwertung.", - ["frFR"] = "Affiche/cache le score de blocage.", - ["zhCN"] = "显示/隐藏 格挡值", - ["ruRU"] = "Показать/скрыть значение рейтинга блокирования", - ["esES"] = "Muestra/oculta el valor de bloqueo", - ["esMX"] = "Muestra/oculta el valor de bloqueo", - ["ptBR"] = "Muestra/oculta o valor de bloqueio" + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, }, ["Shows/Hides the parry chance."] = { ["enUS"] = true, @@ -152,7 +172,7 @@ local defenseConfigTranslations = { ["esMX"] = "Muestra/oculta la probabilidad de esquivar", ["ptBR"] = "Mostra/oculta a chance de esquivar" }, - ["Shows/Hides the resilience value."] = { + ["Shows/Hides the resilience damage reduction."] = { ["enUS"] = true, ["deDE"] = "Zeigt/Versteckt den Abhärtungswert.", ["frFR"] = "Affiche/cache la valeur de résilience.", @@ -182,6 +202,46 @@ local defenseConfigTranslations = { ["esMX"] = false, ["ptBR"] = false }, + ["Shows/Hides the resilience rating."] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, + ["Shows/Hides the parry rating."] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, + ["Shows/Hides the dodge rating."] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, + ["Shows/Hides the block rating."] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, } for k, v in pairs(defenseConfigTranslations) do diff --git a/Modules/i18n/translations/ConfigTranslations/GeneralConfigTranslations.lua b/Modules/i18n/translations/ConfigTranslations/GeneralConfigTranslations.lua index 88bb1158..fdb9a963 100644 --- a/Modules/i18n/translations/ConfigTranslations/GeneralConfigTranslations.lua +++ b/Modules/i18n/translations/ConfigTranslations/GeneralConfigTranslations.lua @@ -2,7 +2,7 @@ local i18n = ECSLoader:ImportModule("i18n") local generalConfigTranslations = { - ["Show General Stats"] = { + ["Show general stats"] = { ["enUS"] = true, ["deDE"] = "Allgemeine Werte anzeigen", ["frFR"] = "Afficher les statistiques", @@ -22,7 +22,7 @@ local generalConfigTranslations = { ["esMX"] = "Muestra/oculta todas estadísticas generales", ["ptBR"] = "Mostra/oculta todas as estatísticas gerais" }, - ["Show Movement Speed"] = { + ["Show movement speed"] = { ["enUS"] = true, ["deDE"] = "Bewegungsgeschwindigkeit anzeigen", ["frFR"] = "Afficher la vitesse de déplacement", diff --git a/Modules/i18n/translations/ConfigTranslations/ManaConfigTranslations.lua b/Modules/i18n/translations/ConfigTranslations/ManaConfigTranslations.lua index 21443840..8a9db4bc 100644 --- a/Modules/i18n/translations/ConfigTranslations/ManaConfigTranslations.lua +++ b/Modules/i18n/translations/ConfigTranslations/ManaConfigTranslations.lua @@ -2,7 +2,7 @@ local i18n = ECSLoader:ImportModule("i18n") local manaConfigTranslations = { - ["Show Mana Stats"] = { + ["Show mana stats"] = { ["enUS"] = true, ["deDE"] = "Manawerte anzeigen", ["frFR"] = "Afficher mana", diff --git a/Modules/i18n/translations/ConfigTranslations/MeleeConfigTranslations.lua b/Modules/i18n/translations/ConfigTranslations/MeleeConfigTranslations.lua index 57db826a..dba3d4ea 100644 --- a/Modules/i18n/translations/ConfigTranslations/MeleeConfigTranslations.lua +++ b/Modules/i18n/translations/ConfigTranslations/MeleeConfigTranslations.lua @@ -2,7 +2,7 @@ local i18n = ECSLoader:ImportModule("i18n") local meleeConfigTranslations = { - ["Show Melee Stats"] = { + ["Show melee stats"] = { ["enUS"] = true, ["deDE"] = "Nahkampfwerte anzeigen", ["frFR"] = "Afficher mêlée", @@ -22,7 +22,7 @@ local meleeConfigTranslations = { ["esMX"] = "Muestra/oculta todas estadísticas cuerpo a cuerpo", ["ptBR"] = "Mostra/oculta todas as estatísticas corpo a corpo" }, - ["Melee Attack Power"] = { + ["Melee attack power"] = { ["enUS"] = true, ["deDE"] = "Nahkampf Angriffskraft", ["frFR"] = "Puissance d'attaque en mêlée", @@ -42,7 +42,7 @@ local meleeConfigTranslations = { ["esMX"] = "Muestra/oculta el valor de poder de ataque cuerpo a cuerpo", ["ptBR"] = "Mostra/oculta o valor de poder de ataque corpo a corpo" }, - ["Melee Crit"] = { + ["Melee crit."] = { ["enUS"] = true, ["deDE"] = "Nahkampf Kritisch", ["frFR"] = "Critique en mêlée", @@ -52,7 +52,7 @@ local meleeConfigTranslations = { ["esMX"] = "Probabilidad de golpe crítico", ["ptBR"] = "Chance de acerto crítico" }, - ["Shows/Hides the melee crit chance."] = { + ["Shows/Hides the melee crit. chance."] = { ["enUS"] = true, ["deDE"] = "Zeigt/Versteckt die Chance im Nahkampf kritisch zu treffen.", ["frFR"] = "Affiche/cache les chances d'infliger un coup critique en mêlée.", @@ -152,7 +152,7 @@ local meleeConfigTranslations = { ["esMX"] = "Muestra/oculta la velocidad de ataque de la mano izquierda", ["ptBR"] = "Mostra/oculta a velocidade de ataque da mão secundária" }, - ["Melee Hit"] = { + ["Melee hit"] = { ["enUS"] = true, ["deDE"] = "Nahkampf Trefferwertung", ["frFR"] = "Toucher en mêlée", @@ -162,7 +162,7 @@ local meleeConfigTranslations = { ["esMX"] = "Probabilidad de golpear", ["ptBR"] = "Chance de acerto" }, - ["Melee Hit Values"] = { + ["Melee hit values"] = { ["enUS"] = true, ["deDE"] = "Nahkampf Trefferwertung", ["frFR"] = "Valeurs de toucher en mêlée", @@ -182,7 +182,7 @@ local meleeConfigTranslations = { ["esMX"] = "Muestra/oculta la probabilidad de golpear", ["ptBR"] = "Mostra/oculta a chance de acerto" }, - ["Hit Rating"] = { + ["Hit rating"] = { ["enUS"] = true, ["deDE"] = "Trefferwertung", ["frFR"] = "Score de toucher", @@ -202,7 +202,7 @@ local meleeConfigTranslations = { ["esMX"] = "Muestra/oculta el índice de golpear", ["ptBR"] = "Mostra/oculta a taxa de acerto" }, - ["Hit Bonus"] = { + ["Hit bonus"] = { ["enUS"] = true, ["deDE"] = "Trefferwertungsbonus", ["frFR"] = "Bonus de toucher", @@ -222,7 +222,7 @@ local meleeConfigTranslations = { ["esMX"] = "Muestra/oculta el bonus de golpear", ["ptBR"] = "Mostra/oculta o bônus de acerto" }, - ["Miss Chance"] = { + ["Miss chance"] = { ["enUS"] = true, ["deDE"] = "Chance zu verfehlen", ["frFR"] = "Chances de rater", @@ -242,7 +242,7 @@ local meleeConfigTranslations = { ["esMX"] = "Muestra/oculta la probabilidad de fallo contra enemigos del mismo nivel", ["ptBR"] = "Mostra/oculta a chance de erro contra inimigos do mesmo nível" }, - ["Miss Chance Boss"] = { + ["Miss chance boss"] = { ["enUS"] = true, ["deDE"] = "Chance zu verfehlen (Boss)", ["frFR"] = "Chances de rater (Boss)", @@ -262,7 +262,7 @@ local meleeConfigTranslations = { ["esMX"] = "Muestra/oculta la probabilidad de fallo contra jefes (nivel +3)", ["ptBR"] = "Mostra/oculta a chance de erro contra chefes (nível +3)." }, - ["Glancing Blow Chance"] = { + ["Glancing blow chance"] = { ["enUS"] = true, ["deDE"] = "Streifschlagchance", ["frFR"] = "Chance de coup d'éraflure", @@ -282,7 +282,7 @@ local meleeConfigTranslations = { ["esMX"] = "Muestra/oculta la probabilidad de golpe de refilón contra enemigos del mismo nivel.", ["ptBR"] = "Mostra/oculta a chance de pancada de relance contra inimigos do mesmo nível." }, - ["Glancing Blow Chance Boss"] = { + ["Glancing blow chance boss"] = { ["enUS"] = true, ["deDE"] = "Streifschlagchance (Boss)", ["frFR"] = "Chance de coup d'éraflure (Boss)", @@ -302,7 +302,7 @@ local meleeConfigTranslations = { ["esMX"] = "Muestra/oculta la probabilidad de golpe de refilón contra jefes (nivel +3)", ["ptBR"] = "Mostra/oculta a chance de pancada de relance contra chefes (nível +3)." }, - ["Glancing Blow Damage"] = { + ["Glancing blow damage"] = { ["enUS"] = true, ["deDE"] = "Streifschlagschaden", ["frFR"] = "Dégâts du coup d'éraflure", @@ -322,7 +322,7 @@ local meleeConfigTranslations = { ["esMX"] = "Muestra/oculta el daño de golpe de refilón contra enemigos del mismo nivel.", ["ptBR"] = "Mostra/oculta o dano de pancada de relance contra inimigos do mesmo nível." }, - ["Glancing Blow Damage Boss"] = { + ["Glancing blow damage boss"] = { ["enUS"] = true, ["deDE"] = "Streifschlagschaden (Boss)", ["frFR"] = "Dégâts du coup d'éraflure (Boss)", @@ -342,7 +342,7 @@ local meleeConfigTranslations = { ["esMX"] = "Muestra/oculta el daño de golpe de refilón contra jefes (nivel +3)", ["ptBR"] = "Mostra/oculta o dano de pancada de relance contra chefes (nível +3)." }, - ["Melee Glance Values"] = { + ["Melee glance values"] = { ["enUS"] = true, ["deDE"] = "Nahkampf-Streifwerte", ["frFR"] = "Valeurs de coup d'éraflure en mêlée", @@ -361,7 +361,27 @@ local meleeConfigTranslations = { ["esES"] = "Muestra/oculta todas las estadísticas de golpes de refilón", ["esMX"] = "Muestra/oculta todas las estadísticas de golpes de refilón", ["ptBR"] = "Mostra/oculta todas as estatísticas de pancada de relance" - } + }, + ["Melee crit. rating"] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, + ["Shows/Hides the melee crit. rating."] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, } for k, v in pairs(meleeConfigTranslations) do diff --git a/Modules/i18n/translations/ConfigTranslations/RangedConfigTranslations.lua b/Modules/i18n/translations/ConfigTranslations/RangedConfigTranslations.lua index f8576871..f378285c 100644 --- a/Modules/i18n/translations/ConfigTranslations/RangedConfigTranslations.lua +++ b/Modules/i18n/translations/ConfigTranslations/RangedConfigTranslations.lua @@ -2,7 +2,7 @@ local i18n = ECSLoader:ImportModule("i18n") local rangedConfigTranslations = { - ["Show Ranged Stats"] = { + ["Show ranged stats"] = { ["enUS"] = true, ["deDE"] = "Fernkampfwerte anzeigen", ["frFR"] = "Afficher à distance", @@ -21,7 +21,7 @@ local rangedConfigTranslations = { ["esES"] = "Muestra/oculta todas estadísticas a distancia", ["esMX"] = "Muestra/oculta todas estadísticas a distancia" }, - ["Ranged Attack Power"] = { + ["Ranged attack power"] = { ["enUS"] = true, ["deDE"] = "Fernkampf Angriffskraft", ["frFR"] = "Puissance d'attaque à distance", @@ -41,7 +41,7 @@ local rangedConfigTranslations = { ["esMX"] = "Muestra/oculta el valor de poder de ataque a distancia", ["ptBR"] = "Mostra/oculta o valor de poder de ataque de longo alcance" }, - ["Ranged Crit"] = { + ["Ranged crit."] = { ["enUS"] = true, ["deDE"] = "Fernkampf Kritisch", ["frFR"] = "Critique à distance", @@ -51,7 +51,7 @@ local rangedConfigTranslations = { ["esMX"] = "Crítico a distancia", ["ptBR"] = "Crítico de longo alcance" }, - ["Shows/Hides the ranged crit chance."] = { + ["Shows/Hides the ranged crit. chance."] = { ["enUS"] = true, ["deDE"] = "Zeigt/Versteckt die Chance im Fernkampf kritisch zu treffen.", ["frFR"] = "Affiche/cache les chances de coup critique à distance.", @@ -91,7 +91,7 @@ local rangedConfigTranslations = { ["esMX"] = "Muestra/oculta la velocidad de ataque a distancia", ["ptBR"] = "Mostra/oculta a velocidade de ataque de longo alcance" }, - ["Ranged Hit"] = { + ["Ranged hit"] = { ["enUS"] = true, ["deDE"] = "Fernkampf Trefferwertung", ["frFR"] = "Toucher à distance", @@ -101,7 +101,7 @@ local rangedConfigTranslations = { ["esMX"] = "Probabilidad de golpear", ["ptBR"] = "Chance de acerto" }, - ["Ranged Hit Values"] = { + ["Ranged hit values"] = { ["enUS"] = true, ["deDE"] = "Fernkampf Trefferwertung", ["frFR"] = "Valeurs de toucher à distance", @@ -161,6 +161,26 @@ local rangedConfigTranslations = { ["esMX"] = "Muestra/oculta la probabilidad de fallo contra jefes (nivel +3)", ["ptBR"] = "Mostra/oculta a chance de erro contra chefes (nível +3)" }, + ["Ranged crit. rating"] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, + ["Shows/Hides the ranged crit. rating."] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, } for k, v in pairs(rangedConfigTranslations) do diff --git a/Modules/i18n/translations/ConfigTranslations/SpellConfigTranslations.lua b/Modules/i18n/translations/ConfigTranslations/SpellConfigTranslations.lua index 9fd59d06..0f235cfb 100644 --- a/Modules/i18n/translations/ConfigTranslations/SpellConfigTranslations.lua +++ b/Modules/i18n/translations/ConfigTranslations/SpellConfigTranslations.lua @@ -2,7 +2,7 @@ local i18n = ECSLoader:ImportModule("i18n") local spellConfigTranslations = { - ["Show Spell Stats"] = { + ["Show spell stats"] = { ["enUS"] = true, ["deDE"] = "Zauberwerte anzeigen", ["frFR"] = "Afficher sorts", @@ -22,7 +22,7 @@ local spellConfigTranslations = { ["esMX"] = "Muestra/oculta todas estadísticas de hechizos", ["ptBR"] = "Mostra/oculta todas as estatísticas de feitiços" }, - ["Spell Crit"] = { + ["Spell crit."] = { ["enUS"] = true, ["deDE"] = "Zauber Kritisch", ["frFR"] = "Critique des sorts", @@ -32,7 +32,7 @@ local spellConfigTranslations = { ["esMX"] = "Crítico con hechizos", ["ptBR"] = "Crítico com feitiços", }, - ["Shows/Hides the spell crit chance."] = { + ["Shows/Hides the spell crit. chance."] = { ["enUS"] = true, ["deDE"] = "Zeigt/Versteckt die Chance mit einem Zauber kritisch zu treffen.", ["frFR"] = "Affiche/cache les chances d'infliger un coup critique avec les sorts.", @@ -42,7 +42,7 @@ local spellConfigTranslations = { ["esMX"] = "Muestra/oculta la probabilidad de asestar un golpe crítico con hechizos", ["ptBR"] = "Mostra/oculta a chance de realizar acertos críticos com feitiços" }, - ["Spell Penetration"] = { + ["Spell penetration"] = { ["enUS"] = true, ["deDE"] = "Zauberdurchschlagskraft", ["frFR"] = "Pénétration des sorts", @@ -82,7 +82,7 @@ local spellConfigTranslations = { ["esMX"] = "Muestra/oculta el bonus de celeridad con hechizos", ["ptBR"] = "Mostra/oculta o bônus de de aceleração de feitiço" }, - ["Spell Hit Values"] = { + ["Spell hit values"] = { ["enUS"] = true, ["deDE"] = "Zauber Trefferwertung", ["frFR"] = "Toucher des sorts", @@ -132,7 +132,7 @@ local spellConfigTranslations = { ["esMX"] = "Muestra/oculta la probabilidad de fallo con hechizos contra jefes (nivel +3)", ["ptBR"] = "Mostra/oculta a chance de erro de feitiço contra inimigos chefes (nível +3)" }, - ["Spell Power"] = { + ["Spell power"] = { ["enUS"] = true, ["deDE"] = "Zauberkraft", ["frFR"] = "Puissance des sorts", @@ -222,6 +222,26 @@ local spellConfigTranslations = { ["esMX"] = "Muestra/oculta el valor de poder de sanación", ["ptBR"] = "Mostra/oculta o valor de poder de cura" }, + ["Spell crit. values"] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, + ["Shows/Hides the spell crit. rating."] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, } for k, v in pairs(spellConfigTranslations) do diff --git a/Modules/i18n/translations/ConfigTranslations/SpellSchoolsConfigTranslations.lua b/Modules/i18n/translations/ConfigTranslations/SpellSchoolsConfigTranslations.lua index 55c4a28c..0eb920cf 100644 --- a/Modules/i18n/translations/ConfigTranslations/SpellSchoolsConfigTranslations.lua +++ b/Modules/i18n/translations/ConfigTranslations/SpellSchoolsConfigTranslations.lua @@ -2,7 +2,7 @@ local i18n = ECSLoader:ImportModule("i18n") local spellSchoolsConfigTranslations = { - ["Spell Schools"] = { + ["Spell schools"] = { ["enUS"] = true, ["deDE"] = "Zauber Schulen", ["frFR"] = "Écoles de magie", diff --git a/Modules/i18n/translations/StatTranslations.lua b/Modules/i18n/translations/StatTranslations.lua index 6bf9140e..c5b0b200 100644 --- a/Modules/i18n/translations/StatTranslations.lua +++ b/Modules/i18n/translations/StatTranslations.lua @@ -12,7 +12,7 @@ local statTranslations = { ["esMX"] = true, ["ptBR"] = "Geral" }, - ["Movement Speed"] = { + ["Movement speed"] = { ["enUS"] = true, ["deDE"] = "Geschwindigkeit", ["frFR"] = "Vitesse de déplacement", @@ -32,7 +32,7 @@ local statTranslations = { ["esMX"] = "Cuerpo a cuerpo", ["ptBR"] = "Corpo a corpo" }, - ["Attack Power"] = { + ["Attack power"] = { ["enUS"] = true, ["deDE"] = "Angriffskraft", ["frFR"] = "Puissance d'attaque", @@ -42,7 +42,27 @@ local statTranslations = { ["esMX"] = "Poder de ataque", ["ptBR"] = "Poder de ataque" }, - ["Crit Chance"] = { + ["Melee crit. rating"] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, + ["Crit. rating"] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, + ["Crit. chance"] = { ["enUS"] = true, ["deDE"] = "Kritische Chance", ["frFR"] = "Chances de critique", @@ -52,7 +72,7 @@ local statTranslations = { ["esMX"] = "Probabilidad de golpe crítico", ["ptBR"] = "Chance de acerto crítico" }, - ["Armor Pen."] = { + ["Armor pen."] = { ["enUS"] = true, ["deDE"] = "Rüstungsdurchschlagskraft", ["frFR"] = "Pénétration d'armure", @@ -60,9 +80,9 @@ local statTranslations = { ["ruRU"] = "Проник. способ. броня", ["esES"] = "Penetración de armadura", ["esMX"] = "Penetración de armadura", - ["ptBR"] = "Penetração em Armadura" + ["ptBR"] = "Penetração em armadura" }, - ["Armor Pen. Rating"] = { + ["Armor pen. rating"] = { ["enUS"] = true, ["deDE"] = "Rüstungsdurchschlagwertung", ["frFR"] = "Score de pénétration d'armure", @@ -82,7 +102,7 @@ local statTranslations = { ["esMX"] = "Pericia", ["ptBR"] = "Aptidão" }, - ["Expertise Rating"] = { + ["Expertise rating"] = { ["enUS"] = true, ["deDE"] = "Waffenkundewertung", ["frFR"] = "Score d'expertise", @@ -142,7 +162,7 @@ local statTranslations = { ["esMX"] = "Fallo (Niv. + 3)", ["ptBR"] = "Erro (Nív. + 3)", }, - ["Glancing Blow"] = { + ["Glancing blow"] = { ["enUS"] = true, ["deDE"] = "Streifschlag", ["frFR"] = "Coup d'éraflure", @@ -192,7 +212,7 @@ local statTranslations = { ["esMX"] = "Daño (Niv. + 3)", ["ptBR"] = "Dano (Nív. + 3)" }, - ["Haste Rating"] = { + ["Haste rating"] = { ["enUS"] = true, ["deDE"] = "Tempowertung", ["frFR"] = "Score de hâte", @@ -202,7 +222,7 @@ local statTranslations = { ["esMX"] = "Índice de celeridad", ["ptBR"] = "Taxa de aceleração" }, - ["Haste Bonus"] = { + ["Haste bonus"] = { ["enUS"] = true, ["deDE"] = "Tempobonus", ["frFR"] = "Bonus de hâte", @@ -212,7 +232,7 @@ local statTranslations = { ["esMX"] = "Bonus de celeridad", ["ptBR"] = "Bônus de aceleração" }, - ["Attack Speed"] = { + ["Attack speed"] = { ["enUS"] = true, ["deDE"] = "Angriffstempo", ["frFR"] = "Vitesse d'attaque", @@ -222,7 +242,7 @@ local statTranslations = { ["esMX"] = "Velocidad de ataque", ["ptBR"] = "Velocidade de ataque" }, - ["Main Hand"] = { + ["Main hand"] = { ["enUS"] = true, ["deDE"] = "Waffenhand", ["frFR"] = "Main droite", @@ -232,7 +252,7 @@ local statTranslations = { ["esMX"] = "Mano derecha", ["ptBR"] = "Mão principal" }, - ["Off Hand"] = { + ["Off hand"] = { ["enUS"] = true, ["deDE"] = "Schildhand", ["frFR"] = "Main gauche", @@ -252,6 +272,16 @@ local statTranslations = { ["esMX"] = "A distancia", ["ptBR"] = "Longo alcance" }, + ["Ranged crit. rating"] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, ["Armor"] = { ["enUS"] = true, ["deDE"] = "Rüstung", @@ -262,26 +292,6 @@ local statTranslations = { ["esMX"] = "Armadura", ["ptBR"] = "Armadura" }, - ["Crit Immune"] = { - ["enUS"] = true, - ["deDE"] = "Krit. Immun", - ["frFR"] = "Immunisé des critiques", - ["zhCN"] = false, - ["ruRU"] = "Крит иммун", - ["esES"] = "Inmune Crít", - ["esMX"] = "Inmune Crít", - ["ptBR"] = "Imune a críticos" - }, - ["Crit Reduction"] = { - ["enUS"] = true, - ["deDE"] = "Krit. Reduzierung", - ["frFR"] = "Réduction des critiques", - ["zhCN"] = false, - ["ruRU"] = "Снижение крита", - ["esES"] = "Reducción de Crít", - ["esMX"] = "Reducción de Crít", - ["ptBR"] = "Redução de crítico" - }, ["Avoidance"] = { ["enUS"] = true, ["deDE"] = "Vermeidung", @@ -302,7 +312,7 @@ local statTranslations = { ["esMX"] = "Eludir (Niv. +3)", ["ptBR"] = "Evasiva (Nív. +3)" }, - ["Defense Rating"] = { + ["Defense rating"] = { ["enUS"] = true, ["deDE"] = "Verteidigungswertung", ["frFR"] = "Score de défense", @@ -322,27 +332,37 @@ local statTranslations = { ["esMX"] = "Defensa", ["ptBR"] = "Defesa" }, - ["Block Chance"] = { + ["Parry rating"] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, + ["Dodge rating"] = { ["enUS"] = true, - ["deDE"] = "Blockchance", - ["frFR"] = "Chances de bloquer", - ["zhCN"] = "格挡几率", - ["ruRU"] = "Шанс блока", - ["esES"] = "Probabilidad de bloquear", - ["esMX"] = "Probabilidad de bloquear", - ["ptBR"] = "Chance de bloquear" + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, }, - ["Block Value"] = { + ["Amount"] = { ["enUS"] = true, - ["deDE"] = "Blockwertung", - ["frFR"] = "Bloquer", - ["zhCN"] = "格挡值", - ["ruRU"] = "Блок", - ["esES"] = "Bloqueo", - ["esMX"] = "Bloqueo", - ["ptBR"] = "Bloqueio" + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, }, - ["Parry Chance"] = { + ["Parry chance"] = { ["enUS"] = true, ["deDE"] = "Parrierchance", ["frFR"] = "Chances de parer", @@ -352,7 +372,7 @@ local statTranslations = { ["esMX"] = "Probabilidad de parar", ["ptBR"] = "Chance de aparar" }, - ["Dodge Chance"] = { + ["Dodge chance"] = { ["enUS"] = true, ["deDE"] = "Ausweichchance", ["frFR"] = "Chances d'esquiver", @@ -362,6 +382,16 @@ local statTranslations = { ["esMX"] = "Probabilidad de esquivar", ["ptBR"] = "Chance de esquivar" }, + ["Resilience rating"] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, ["Resilience"] = { ["enUS"] = true, ["deDE"] = "Abhärtung", @@ -372,6 +402,16 @@ local statTranslations = { ["esMX"] = "Temple", ["ptBR"] = "Resiliência" }, + ["Crit. reduction"] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false + }, ["Mana"] = { ["enUS"] = true, ["deDE"] = true, @@ -442,6 +482,16 @@ local statTranslations = { ["esMX"] = "Hechizo", ["ptBR"] = "Feitiço" }, + ["Spell crit. rating"] = { + ["enUS"] = true, + ["deDE"] = false, + ["frFR"] = false, + ["zhCN"] = false, + ["ruRU"] = false, + ["esES"] = false, + ["esMX"] = false, + ["ptBR"] = false, + }, ["Penetration"] = { ["enUS"] = true, ["deDE"] = "Durchschlagskraft", @@ -452,7 +502,7 @@ local statTranslations = { ["esMX"] = "Penetración", ["ptBR"] = "Penetração" }, - ["Healing Power"] = { + ["Healing power"] = { ["enUS"] = true, ["deDE"] = "Heilungskraft", ["frFR"] = "Pouvoir de guérison", @@ -462,356 +512,6 @@ local statTranslations = { ["esMX"] = "Sanación", ["ptBR"] = "Poder de cura" }, - ["Arcane Damage"] = { - ["enUS"] = true, - ["deDE"] = "Arkanschaden", - ["frFR"] = "Dégats des arcanes", - ["zhCN"] = "奥术伤害", - ["ruRU"] = "Тайная магия", - ["esES"] = "Daño arcano", - ["esMX"] = "Daño arcano", - ["ptBR"] = "Dano arcano" - }, - ["Arcane Crit"] = { - ["enUS"] = true, - ["deDE"] = "Arkan Kritisch", - ["frFR"] = "Critique des arcanes", - ["zhCN"] = "奥术暴击", - ["ruRU"] = "Крит (ТМ)", - ["esES"] = "Crítico arcano", - ["esMX"] = "Crítico arcano", - ["ptBR"] = "Crítico arcano" - }, - ["Arcane Hit Bonus"] = { - ["enUS"] = true, - ["deDE"] = "Arkan Trefferchancebonus", - ["frFR"] = "Bonus de toucher des arcanes", - ["zhCN"] = "奥术命中加成", - ["ruRU"] = "Меткость (ТМ)", - ["esES"] = "Bonificación de golpe arcano", - ["esMX"] = "Bonificación de golpe arcano", - ["ptBR"] = "Bônus de acerto arcano" - }, - ["Arcane Miss"] = { - ["enUS"] = true, - ["deDE"] = "Arkan Verfehlen", - ["frFR"] = "Rater des arcanes", - ["zhCN"] = "奥术未命中", - ["ruRU"] = "Сопротивление (ТМ)", - ["esES"] = "Fallo arcano", - ["esMX"] = "Fallo arcano", - ["ptBR"] = "Erro arcano" - }, - ["Arcane Miss (Lvl + 3)"] = { - ["enUS"] = true, - ["deDE"] = "Arkan Verfehlen (Lvl + 3)", - ["frFR"] = "Rater des arcanes (Niv. + 3)", - ["zhCN"] = "奥术未命中(等级 + 3)", - ["ruRU"] = "Сопрот. (ТМ) (+3 ур.)", - ["esES"] = "Fallo arcano (Niv. + 3)", - ["esMX"] = "Fallo arcano (Niv. + 3)", - ["ptBR"] = "Erro arcano (Nív. + 3)" - }, - ["Fire Damage"] = { - ["enUS"] = true, - ["deDE"] = "Feuerschaden", - ["frFR"] = "Dégats du feu", - ["zhCN"] = "火焰伤害", - ["ruRU"] = "Огонь", - ["esES"] = "Daño de fuego", - ["esMX"] = "Daño de fuego", - ["ptBR"] = "Dano de fogo" - }, - ["Fire Crit"] = { - ["enUS"] = true, - ["deDE"] = "Feuer Kritisch", - ["frFR"] = "Critique du feu", - ["zhCN"] = "火焰暴击", - ["ruRU"] = "Крит (огонь)", - ["esES"] = "Crítico de fuego", - ["esMX"] = "Crítico de fuego", - ["ptBR"] = "Crítico de fogo" - }, - ["Fire Hit Bonus"] = { - ["enUS"] = true, - ["deDE"] = "Feuer Trefferchancebonus", - ["frFR"] = "Bonus de toucher du feu", - ["zhCN"] = "火焰命中加成", - ["ruRU"] = "Меткость (огонь)", - ["esES"] = "Bonificación de golpe de fuego", - ["esMX"] = "Bonificación de golpe de fuego", - ["ptBR"] = "Bônus de acerto de fogo" - }, - ["Fire Miss"] = { - ["enUS"] = true, - ["deDE"] = "Feuer Verfehlen", - ["frFR"] = "Rater du feu", - ["zhCN"] = "火焰未命中", - ["ruRU"] = "Сопротивление (огонь)", - ["esES"] = "Fallo de fuego", - ["esMX"] = "Fallo de fuego", - ["ptBR"] = "Erro de fogo" - }, - ["Fire Miss (Lvl + 3)"] = { - ["enUS"] = true, - ["deDE"] = "Feuer Verfehlen (Lvl + 3)", - ["frFR"] = "Rater du feu (Niv. + 3)", - ["zhCN"] = "火焰未命中(等级 + 3)", - ["ruRU"] = "Сопрот. (огонь) (+3 ур.)", - ["esES"] = "Fallo de fuego (Niv. + 3)", - ["esMX"] = "Fallo de fuego (Niv. + 3)", - ["ptBR"] = "Erro de fogo (Nív. + 3)" - }, - ["Frost Damage"] = { - ["enUS"] = true, - ["deDE"] = "Frostschaden", - ["frFR"] = "Dégats du givre", - ["zhCN"] = "冰霜伤害", - ["ruRU"] = "Лед", - ["esES"] = "Daño de escarcha", - ["esMX"] = "Daño de escarcha", - ["ptBR"] = "Dano de gelo" - }, - ["Frost Crit"] = { - ["enUS"] = true, - ["deDE"] = "Frost Kritisch", - ["frFR"] = "Critique du givre", - ["zhCN"] = "冰霜暴击", - ["ruRU"] = "Крит (лед)", - ["esES"] = "Crítico de escarcha", - ["esMX"] = "Crítico de escarcha", - ["ptBR"] = "Crítico de gelo" - }, - ["Frost Hit Bonus"] = { - ["enUS"] = true, - ["deDE"] = "Frost Trefferchancebonus", - ["frFR"] = "Bonus de toucher du givre", - ["zhCN"] = "冰霜命中加成", - ["ruRU"] = "Меткость (лед)", - ["esES"] = "Bonificación de golpe de escarcha", - ["esMX"] = "Bonificación de golpe de escarcha", - ["ptBR"] = "Bônus de acerto de gelo" - }, - ["Frost Miss"] = { - ["enUS"] = true, - ["deDE"] = "Frost Verfehlen", - ["frFR"] = "Rater du givre", - ["zhCN"] = "冰霜未命中", - ["ruRU"] = "Сопротивление (лед)", - ["esES"] = "Fallo de escarcha", - ["esMX"] = "Fallo de escarcha", - ["ptBR"] = "Erro de gelo" - }, - ["Frost Miss (Lvl + 3)"] = { - ["enUS"] = true, - ["deDE"] = "Frost Verfehlen (Lvl + 3)", - ["frFR"] = "Rater du givre (Niv. + 3)", - ["zhCN"] = "冰霜未命中(等级 + 3)", - ["ruRU"] = "Сопрот. (лед) (+3 ур.)", - ["esES"] = "Fallo de escarcha (Niv. + 3)", - ["esMX"] = "Fallo de escarcha (Niv. + 3)", - ["ptBR"] = "Erro de gelo (Nív. + 3)" - }, - ["Holy Damage"] = { - ["enUS"] = true, - ["deDE"] = "Heiligschaden", - ["frFR"] = "Dégats du sacré", - ["zhCN"] = "神圣伤害", - ["ruRU"] = "Свет", - ["esES"] = "Daño sagrado", - ["esMX"] = "Daño sagrado", - ["ptBR"] = "Dano sagrado" - }, - ["Holy Crit"] = { - ["enUS"] = true, - ["deDE"] = "Heilig Kritisch", - ["frFR"] = "Critique du sacré", - ["zhCN"] = "神圣暴击", - ["ruRU"] = "Крит (свет)", - ["esES"] = "Crítico sagrado", - ["esMX"] = "Crítico sagrado", - ["ptBR"] = "Crítico sagrado" - }, - ["Holy Hit Bonus"] = { - ["enUS"] = true, - ["deDE"] = "Heilig Trefferchancebonus", - ["frFR"] = "Bonus de toucher du sacré", - ["zhCN"] = "神圣命中加成", - ["ruRU"] = "Меткость (свет)", - ["esES"] = "Bonificación de golpe sagrado", - ["esMX"] = "Bonificación de golpe sagrado", - ["ptBR"] = "Bônus de acerto sagrado" - }, - ["Holy Miss"] = { - ["enUS"] = true, - ["deDE"] = "Heilig Verfehlen", - ["frFR"] = "Rater du sacré", - ["zhCN"] = "神圣未命中", - ["ruRU"] = "Сопротивление (свет)", - ["esES"] = "Fallo sagrado", - ["esMX"] = "Fallo sagrado", - ["ptBR"] = "Erro sagrado" - }, - ["Holy Miss (Lvl + 3)"] = { - ["enUS"] = true, - ["deDE"] = "Heilig Verfehlen (Lvl + 3)", - ["frFR"] = "Rater du sacré (Niv. + 3)", - ["zhCN"] = "神圣未命中(等级 + 3)", - ["ruRU"] = "Сопрот. (свет) (+3 ур.)", - ["esES"] = "Fallo sagrado (Niv. + 3)", - ["esMX"] = "Fallo sagrado (Niv. + 3)", - ["ptBR"] = "Erro sagrado (Nív. + 3)" - }, - ["Nature Damage"] = { - ["enUS"] = true, - ["deDE"] = "Naturschaden", - ["frFR"] = "Dégats de la nature", - ["zhCN"] = "自然伤害", - ["ruRU"] = "Природа", - ["esES"] = "Daño de la naturaleza", - ["esMX"] = "Daño de la naturaleza", - ["ptBR"] = "Dano de natureza" - }, - ["Nature Crit"] = { - ["enUS"] = true, - ["deDE"] = "Natur Kritisch", - ["frFR"] = "Critique de la nature", - ["zhCN"] = "自然暴击", - ["ruRU"] = "Крит (природа)", - ["esES"] = "Crítico de la naturaleza", - ["esMX"] = "Crítico de la naturaleza", - ["ptBR"] = "Crítico de natureza" - }, - ["Nature Hit Bonus"] = { - ["enUS"] = true, - ["deDE"] = "Natur Trefferchancebonus", - ["frFR"] = "Bonus de toucher de la nature", - ["zhCN"] = "自然命中加成", - ["ruRU"] = "Меткость (природа)", - ["esES"] = "Bonificación de golpe de la naturaleza", - ["esMX"] = "Bonificación de golpe de la naturaleza", - ["ptBR"] = "Bônus de acerto de natureza" - }, - ["Nature Miss"] = { - ["enUS"] = true, - ["deDE"] = "Natur Verfehlen", - ["frFR"] = "Rater de la nature", - ["zhCN"] = "自然未命中", - ["ruRU"] = "Сопротивление (природа)", - ["esES"] = "Fallo de la naturaleza", - ["esMX"] = "Fallo de la naturaleza", - ["ptBR"] = "Erro de natureza" - }, - ["Nature Miss (Lvl + 3)"] = { - ["enUS"] = true, - ["deDE"] = "Natur Verfehlen (Lvl + 3)", - ["frFR"] = "Rater de la nature (Niv. + 3)", - ["zhCN"] = "自然未命中(等级 + 3)", - ["ruRU"] = "Сопрот. (природа) (+3 ур.)", - ["esES"] = "Fallo de la naturaleza (Niv. + 3)", - ["esMX"] = "Fallo de la naturaleza (Niv. + 3)", - ["ptBR"] = "Erro de natureza (Nív. + 3)" - }, - ["Physical Damage"] = { - ["enUS"] = true, - ["deDE"] = "Physischer Schaden", - ["frFR"] = "Dégats physiques", - ["zhCN"] = "物理伤害", - ["ruRU"] = "Физ. урон", - ["esES"] = "Daño físico", - ["esMX"] = "Daño físico", - ["ptBR"] = "Dano físico" - }, - ["Physical Crit"] = { - ["enUS"] = true, - ["deDE"] = "Physisch Kritisch", - ["frFR"] = "Critique physique", - ["zhCN"] = "物理暴击", - ["ruRU"] = "Крит (физ.)", - ["esES"] = "Crítico físico", - ["esMX"] = "Crítico físico", - ["ptBR"] = "Crítico físico" - }, - ["Physical Hit Bonus"] = { - ["enUS"] = true, - ["deDE"] = "Physischer Trefferchancebonus", - ["frFR"] = "Bonus de toucher physique", - ["zhCN"] = "物理命中加成", - ["ruRU"] = "Меткость (физ.)", - ["esES"] = "Bonificación de golpe físico", - ["esMX"] = "Bonificación de golpe físico", - ["ptBR"] = "Bônus de acerto físico" - }, - ["Physical Miss"] = { - ["enUS"] = true, - ["deDE"] = "Physisch Verfehlen", - ["frFR"] = "Rater physique", - ["zhCN"] = "物理未命中", - ["ruRU"] = "Сопротивление (физ.)", - ["esES"] = "Fallo físico", - ["esMX"] = "Fallo físico", - ["ptBR"] = "Erro físico" - }, - ["Physical Miss (Lvl + 3)"] = { - ["enUS"] = true, - ["deDE"] = "Physisch Verfehlen (Lvl + 3)", - ["frFR"] = "Rater physique (Niv. + 3)", - ["zhCN"] = "物理未命中(等级 + 3)", - ["ruRU"] = "Сопрот. (физ.) (+3 ур.)", - ["esES"] = "Fallo físico (Niv. + 3)", - ["esMX"] = "Fallo físico (Niv. + 3)", - ["ptBR"] = "Erro físico (Nív. + 3)" - }, - ["Shadow Damage"] = { - ["enUS"] = true, - ["deDE"] = "Schattenschaden", - ["frFR"] = "Dégats des ombres", - ["zhCN"] = "暗影伤害", - ["ruRU"] = "Тьма", - ["esES"] = "Daño de las sombras", - ["esMX"] = "Daño de las sombras", - ["ptBR"] = "Dano de sombra" - }, - ["Shadow Crit"] = { - ["enUS"] = true, - ["deDE"] = "Schatten Kritisch", - ["frFR"] = "Critique des ombres", - ["zhCN"] = "暗影暴击", - ["ruRU"] = "Крит (тьма)", - ["esES"] = "Crítico de las sombras", - ["esMX"] = "Crítico de las sombras", - ["ptBR"] = "Crítico de sombra" - }, - ["Shadow Hit Bonus"] = { - ["enUS"] = true, - ["deDE"] = "Schatten Trefferchancebonus", - ["frFR"] = "Bonus de toucher des ombres", - ["zhCN"] = "暗影命中加成", - ["ruRU"] = "Меткость (тьма)", - ["esES"] = "Bonificación de golpe de las sombras", - ["esMX"] = "Bonificación de golpe de las sombras", - ["ptBR"] = "Bônus de acerto de sombra" - }, - ["Shadow Miss"] = { - ["enUS"] = true, - ["deDE"] = "Schatten Verfehlen", - ["frFR"] = "Rater des ombres", - ["zhCN"] = "暗影未命中", - ["ruRU"] = "Сопротивление (тьма)", - ["esES"] = "Fallo de las sombras", - ["esMX"] = "Fallo de las sombras", - ["ptBR"] = "Erro de sombra" - }, - ["Shadow Miss (Lvl + 3)"] = { - ["enUS"] = true, - ["deDE"] = "Schatten Verfehlen (Lvl + 3)", - ["frFR"] = "Rater des ombres (Niv. + 3)", - ["zhCN"] = "暗影未命中(等级 + 3)", - ["ruRU"] = "Сопрот. (тьма) (+3 ур.)", - ["esES"] = "Fallo de las sombras (Niv. + 3)", - ["esMX"] = "Fallo de las sombras (Niv. + 3)", - ["ptBR"] = "Erro de sombra (Nív. + 3)" - }, } for k, v in pairs(statTranslations) do