diff --git a/.luacheckrc b/.luacheckrc index 2e903fee..1d0a266d 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -17,6 +17,7 @@ stds.ecs = { read_globals = {}, -- these globals can only be accessed. globals = { "----> GlobalAPI", + -- keep-sorted start case=no "AbandonQuest", "AbandonSkill", "AcceptAreaSpiritHeal", @@ -117,8 +118,8 @@ stds.ecs = { "C_ActionBar.IsEnabledAutoCastPetAction", "C_ActionBar.IsOnBarOrSpecialBar", "C_ActionBar.ToggleAutoCastPetAction", - "C_AddOns.GetAddOnInfo", "C_AddOns", + "C_AddOns.GetAddOnInfo", "C_AreaPoiInfo.GetAreaPOIForMap", "C_AreaPoiInfo.GetAreaPOIInfo", "C_AreaPoiInfo.IsAreaPOITimed", @@ -135,6 +136,7 @@ stds.ecs = { "C_CharacterServices.SetAutomaticBoostCharacter", "C_CharacterServicesPublic.ShouldSeeControlPopup", "C_ChatBubbles.GetAllChatBubbles", + "C_ChatInfo", "C_ChatInfo.GetChannelRosterInfo", "C_ChatInfo.GetNumActiveChannels", "C_ChatInfo.GetRegisteredAddonMessagePrefixes", @@ -145,7 +147,6 @@ stds.ecs = { "C_ChatInfo.ReportServerLag", "C_ChatInfo.SendAddonMessage", "C_ChatInfo.SendAddonMessageLogged", - "C_ChatInfo", "C_Club.AcceptInvitation", "C_Club.AddClubStreamChatChannel", "C_Club.AdvanceStreamViewMarker", @@ -389,6 +390,7 @@ stds.ecs = { "C_GuildInfo.RemoveFromGuild", "C_GuildInfo.SetGuildRankOrder", "C_GuildInfo.SetNote", + "C_Item", "C_Item.DoesItemExist", "C_Item.DoesItemExistByID", "C_Item.GetCurrentItemLevel", @@ -411,7 +413,6 @@ stds.ecs = { "C_Item.RequestLoadItemData", "C_Item.RequestLoadItemDataByID", "C_Item.UnlockItem", - "C_Item", "C_KeyBindings.GetCustomBindingType", "C_LootHistory.CanMasterLoot", "C_LootHistory.GetExpiration", @@ -424,6 +425,7 @@ stds.ecs = { "C_LossOfControl.GetNumEvents", "C_Mail.HasInboxMoney", "C_Mail.IsCommandPending", + "C_Map", "C_Map.GetAreaInfo", "C_Map.GetBestMapForUnit", "C_Map.GetBountySetIDForMap", @@ -449,10 +451,9 @@ stds.ecs = { "C_Map.GetWorldPosFromMapPos", "C_Map.MapHasArt", "C_Map.RequestPreloadMap", - "C_Map", + "C_MapExplorationInfo", "C_MapExplorationInfo.GetExploredAreaIDsAtPosition", "C_MapExplorationInfo.GetExploredMapTextures", - "C_MapExplorationInfo", "C_MerchantFrame.GetBuybackItemID", "C_ModelInfo.AddActiveModelScene", "C_ModelInfo.AddActiveModelSceneActor", @@ -462,6 +463,7 @@ stds.ecs = { "C_ModelInfo.GetModelSceneActorInfoByID", "C_ModelInfo.GetModelSceneCameraInfoByID", "C_ModelInfo.GetModelSceneInfoByID", + "C_NamePlate", "C_NamePlate.GetNamePlateEnemyClickThrough", "C_NamePlate.GetNamePlateEnemyPreferredClickInsets", "C_NamePlate.GetNamePlateEnemySize", @@ -485,16 +487,15 @@ stds.ecs = { "C_NamePlate.SetNamePlateSelfPreferredClickInsets", "C_NamePlate.SetNamePlateSelfSize", "C_NamePlate.SetTargetClampingInsets", - "C_NamePlate", "C_NewItems.ClearAll", "C_NewItems.IsNewItem", "C_NewItems.RemoveNewItem", + "C_PaperDollInfo", "C_PaperDollInfo.GetArmorEffectiveness", "C_PaperDollInfo.GetArmorEffectivenessAgainstTarget", "C_PaperDollInfo.GetMinItemLevel", "C_PaperDollInfo.OffhandHasShield", "C_PaperDollInfo.OffhandHasWeapon", - "C_PaperDollInfo", "C_PartyInfo.GetActiveCategories", "C_PartyInfo.GetInviteConfirmationInvalidQueues", "C_PlayerInfo.GetClass", @@ -507,13 +508,13 @@ stds.ecs = { "C_ProductChoice.GetProducts", "C_ProductChoice.MakeSelection", "C_PvP.IsPVPMap", + "C_QuestLog", "C_QuestLog.GetMaxNumQuests", "C_QuestLog.GetMaxNumQuestsCanAccept", "C_QuestLog.GetQuestInfo", "C_QuestLog.GetQuestObjectives", "C_QuestLog.IsOnQuest", "C_QuestLog.ShouldShowQuestRewards", - "C_QuestLog", "C_RecruitAFriend.CheckEmailEnabled", "C_RecruitAFriend.GetRecruitInfo", "C_RecruitAFriend.IsSendingEnabled", @@ -544,15 +545,15 @@ stds.ecs = { "C_Spell.DoesSpellExist", "C_Spell.IsSpellDataCached", "C_Spell.RequestLoadSpellData", - "C_SpellBook.IsSpellKnown", "C_SpellBook", + "C_SpellBook.IsSpellKnown", "C_StorePublic.DoesGroupHavePurchaseableProducts", "C_StorePublic.IsDisabledByParentalControls", "C_StorePublic.IsEnabled", "C_TaxiMap.GetAllTaxiNodes", "C_TaxiMap.GetTaxiNodesForMap", - "C_Timer.After", "C_Timer", + "C_Timer.After", "C_UI.Reload", "C_UIWidgetManager.GetAllWidgetsBySetID", "C_UIWidgetManager.GetBelowMinimapWidgetSetID", @@ -804,22 +805,6 @@ stds.ecs = { "ConvertToParty", "ConvertToRaid", "CopyToClipboard", - "CR_ARMOR_PENETRATION", - "CR_BLOCK", - "CR_CRIT_MELEE", - "CR_CRIT_RANGED", - "CR_CRIT_SPELL", - "CR_DEFENSE_SKILL", - "CR_DODGE", - "CR_EXPERTISE", - "CR_HASTE_MELEE", - "CR_HASTE_RANGED", - "CR_HASTE_SPELL", - "CR_HIT_MELEE", - "CR_HIT_RANGED", - "CR_HIT_SPELL", - "CR_PARRY", - "CR_WEAPON_SKILL", "CreateFont", "CreateFrame", "CreateMacro", @@ -2268,14 +2253,16 @@ stds.ecs = { "UseHearthstone", "UseInventoryItem", "UseItemByName", + -- keep-sorted end "----------------------------------------------------->LUA API", - "bit", + -- keep-sorted start case=no "abs", "acos", "asin", "assert", "atan", "atan2", + "bit", "bit.arshift", "bit.band", "bit.bnot", @@ -2415,7 +2402,9 @@ stds.ecs = { "unpack", "wipe", "xpcall", + -- keep-sorted end "------------------------------------------------------> FRAMES", + -- keep-sorted start case=no "ActionBarActionEventsFrame", "ActionBarButtonEventsFrame", "ActionBarController", @@ -2474,7 +2463,6 @@ stds.ecs = { "ChatConfigFrame", "ChatEdit_GetActiveWindow", "ChatEdit_InsertLink", - "ChatFrame_AddMessageEventFilter", "ChatFrame1", "ChatFrame10", "ChatFrame10EditBox", @@ -2503,6 +2491,7 @@ stds.ecs = { "ChatFrame9", "ChatFrame9EditBox", "ChatFrame9Tab", + "ChatFrame_AddMessageEventFilter", "ChatFrameChannelButton", "ChatFrameMenuButton", "ChatMenu", @@ -2537,6 +2526,22 @@ stds.ecs = { "ContainerFrame7", "ContainerFrame8", "ContainerFrame9", + "CR_ARMOR_PENETRATION", + "CR_BLOCK", + "CR_CRIT_MELEE", + "CR_CRIT_RANGED", + "CR_CRIT_SPELL", + "CR_DEFENSE_SKILL", + "CR_DODGE", + "CR_EXPERTISE", + "CR_HASTE_MELEE", + "CR_HASTE_RANGED", + "CR_HASTE_SPELL", + "CR_HIT_MELEE", + "CR_HIT_RANGED", + "CR_HIT_SPELL", + "CR_PARRY", + "CR_WEAPON_SKILL", "CraftFrame", "CreateChannelPopup", "DEFAULT_CHAT_FRAME", @@ -2547,6 +2552,8 @@ stds.ecs = { "DurabilityFrame", "EmbeddedItemTooltip", "EngravingFrame", + "EQUIPPED_FIRST", + "EQUIPPED_LAST", "EventTraceFrame", "FauxScrollFrame_GetOffset", "FlightMapFrame", @@ -2696,11 +2703,11 @@ stds.ecs = { "SpellBookFrame", "StackSplitFrame", "STANDARD_TEXT_FONT", - "StaticPopup_Show", "StaticPopup1", "StaticPopup2", "StaticPopup3", "StaticPopup4", + "StaticPopup_Show", "StaticPopupDialogs", "StatsFrame", "StopwatchFrame", @@ -2752,7 +2759,9 @@ stds.ecs = { "WorldMapTooltip", "WorldStateScoreFrame", "ZoneTextFrame", + -- keep-sorted end "-----------------------------------------------------> Blizzard Data", + -- keep-sorted start case=no "CALENDAR_FULLDATE_MONTH_NAMES", "CALENDAR_WEEKDAY_NAMES", "QUEST_ITEMS_NEEDED", @@ -2765,19 +2774,27 @@ stds.ecs = { "WOW_PROJECT_ID", "WOW_PROJECT_MAINLINE", "WOW_PROJECT_WRATH_CLASSIC", + -- keep-sorted end "-----------------------------------------------------> Enums", + -- keep-sorted start case=no "LE_EXPANSION_BURNING_CRUSADE", + -- keep-sorted end "-----------------------------------------------------> GlobalStrings", + -- keep-sorted start case=no "CLOSE", "DEFENSE", + -- keep-sorted end "-----------------------------------------------------> External Addons", + -- keep-sorted start case=no "LeaPlusDB", "LibStub", "OutfitterButton", "OutfitterButtonFrame", "OutfitterFrame", "PawnInitialize", + -- keep-sorted end "-----------------------------------------------------> Project Specific", + -- keep-sorted start case=no "assert.are_same", "assert.is_nil", "assert.spy", @@ -2791,6 +2808,7 @@ stds.ecs = { "SLASH_ECS1", "SlashCmdList", "spy", + -- keep-sorted end } } std = "max+ecs" diff --git a/Modules/Config/MeleeSection.lua b/Modules/Config/MeleeSection.lua index 65683234..5d7406c4 100755 --- a/Modules/Config/MeleeSection.lua +++ b/Modules/Config/MeleeSection.lua @@ -87,7 +87,7 @@ function _Config:LoadMeleeSection() name = function() return i18n("Expertise") end, desc = function() return i18n("Shows/Hides the expertise value.") end, width = 1.5, - hidden = function() return ECS.IsClassic end, + hidden = function() return ECS.IsClassic and (not ECS.IsSoD) end, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, get = function () return ExtendedCharacterStats.profile.melee.expertise.display; end, set = function (_, value) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index 7f424a18..e2cf77e0 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -424,6 +424,7 @@ Data.Aura = { }, } Data.Enchant = { + -- keep-sorted start block=yes case=no BlockValue = { [2583] = 15, -- Presence of Might [2653] = 18, -- Enchant Shield - Tough Shield @@ -432,7 +433,10 @@ Data.Enchant = { [7633] = 15, -- Presence of Valor }, Ids = { + -- keep-sorted start + ANIMALISTIC_EXPERTISE = 7875, -- Your melee attacks have 5% less chance to be Dodged or Parried. BIZNICK_SCOPE = 2523, -- 3% Hit from Biznicks 247x128 Accurascope + -- keep-sorted end }, MP5 = { [2381] = 10, -- Enchant Chest - Greater Mana Restoration @@ -458,6 +462,7 @@ Data.Enchant = { [3836] = 8, -- Master's Inscription of the Crag [7099] = 12, -- Blackfathom Mana Oil. This effect only applies within Blackfathom Deeps. }, + -- keep-sorted end } Data.Gem = { MP5 = { @@ -521,127 +526,346 @@ Data.Gem = { }, } Data.Item = { + -- keep-sorted start block=yes case=no + IncreaseExpertise = { + -- keep-sorted start numeric=yes + [233376] = 1, -- Conqueror's Spaulders + [233397] = 1, -- Avenger's Breastplate + [233401] = 1, -- Avenger's Pauldrons + [233412] = 1, -- Genesis Helm + [233413] = 1, -- Genesis Shoulderpads + [233415] = 1, -- Genesis Vest + [233442] = 1, -- Sickle of Unyielding Strength + [233579] = 1, -- Gloves of Enforcement + [233582] = 1, -- Gauntlets of Steadfast Determination + [233585] = 1, -- Ancient Qiraji Ripper + [233600] = 1, -- Ring of the Qiraji Fury + [233612] = 1, -- Qiraji Execution Bracers + [233614] = 2, -- Royal Qiraji Belt + [233618] = 1, -- Gloves of the Hidden Temple + [233634] = 1, -- Death's Sting + [233635] = 1, -- Belt of Never-ending Agony + [233637] = 1, -- Gauntlets of Annihilation + [233640] = 2, -- Dark Edge of Insanity + [233642] = 1, -- Mark of C'Thun + [233651] = 1, -- Conqueror's Cuirass + [233658] = 1, -- Conqueror's Pauldrons + [233659] = 1, -- Deathdealer's Chestguard + [233661] = 1, -- Deathdealer's Visor + [233662] = 1, -- Deathdealer's Pants + [233663] = 1, -- Deathdealer's Pauldrons + [233665] = 1, -- Striker's Treads + [233666] = 1, -- Striker's Visor + [233668] = 1, -- Striker's Spaulders + [233689] = 1, -- Avenger's Spaulders + [233692] = 1, -- Avenger's Great Helm + [233693] = 1, -- Avenger's Chestguard + [233699] = 1, -- Stormcaller's Breastplate + [233700] = 1, -- Stormcaller's Crown + [233711] = 1, -- Genesis Armor + [233992] = 1, -- Lodestone of Retaliation + [234650] = 1, -- Ancient Qiraji Ripper + [234748] = 1, -- Deeprock Bracers + [234984] = 1, -- Death's Sting + [234985] = 2, -- Dark Edge of Insanity + [235005] = 1, -- Sickle of Unyielding Strength + [235888] = 1, -- Clobberclub + [236005] = 1, -- Dreadnaught Breastplate + [236006] = 1, -- Dreadnaught Legplates + [236007] = 1, -- Dreadnaught Helmet + [236008] = 1, -- Dreadnaught Pauldrons + [236009] = 1, -- Dreadnaught Sabatons + [236010] = 1, -- Dreadnaught Gauntlets + [236011] = 1, -- Dreadnaught Waistguard + [236012] = 1, -- Dreadnaught Bracers + [236013] = 1, -- Ring of the Dreadnaught + [236016] = 1, -- Dreadnaught Horns + [236019] = 1, -- Dreadnaught Grips + [236020] = 1, -- Dreadnaught Belt + [236021] = 1, -- Dreadnaught Wrists + [236022] = 1, -- Band of the Dreadnaught + [236023] = 1, -- Bonescythe Breastplate + [236026] = 1, -- Bonescythe Pauldrons + [236029] = 1, -- Bonescythe Waistguard + [236030] = 1, -- Bonescythe Bracers + [236031] = 1, -- Bonescythe Ring + [236032] = 1, -- Bonescythe Belt + [236033] = 1, -- Bonescythe Treads + [236034] = 1, -- Bonescythe Band + [236035] = 1, -- Bonescythe Mantle + [236036] = 1, -- Bonescythe Leggings + [236037] = 1, -- Bonescythe Mask + [236038] = 1, -- Bonescythe Grips + [236039] = 1, -- Bonescythe Chestguard + [236040] = 1, -- Bonescythe Wristguards + [236050] = 1, -- Cryptstalker Vambraces + [236051] = 1, -- Cryptstalker Belt + [236052] = 1, -- Cryptstalker Pauldrons + [236054] = 1, -- Cryptstalker Visor + [236055] = 1, -- Cryptstalker Gauntlets + [236056] = 1, -- Band of the Cryptstalker + [236124] = 1, -- Redemption Vambraces + [236125] = 1, -- Redemption Belt + [236128] = 1, -- Redemption Helmet + [236129] = 1, -- Redemption Gloves + [236130] = 1, -- Band of Redemption + [236133] = 1, -- Redemption Bracers + [236134] = 1, -- Redemption Waistguard + [236135] = 1, -- Redemption Pauldrons + [236136] = 1, -- Redemption Legplates + [236137] = 1, -- Redemption Crown + [236138] = 1, -- Redemption Gauntlets + [236139] = 1, -- Loop of Redemption + [236140] = 1, -- Redemption Sabatons + [236141] = 1, -- Redemption Chestguard + [236170] = 1, -- Earthshatter Vambraces + [236171] = 1, -- Earthshatter Bel,t + [236172] = 1, -- Earthshatter Epaulets + [236174] = 1, -- Earthshatter Helmet + [236175] = 1, -- Earthshatter Grips + [236176] = 1, -- Signet of the Earthshatterer + [236201] = 1, -- Dreamwalker Bracers + [236202] = 1, -- Dreamwalker Waistguard + [236203] = 1, -- Dreamwalker Pauldrons + [236204] = 1, -- Dreamwalker Leggings + [236205] = 1, -- Dreamwalker Headdress + [236206] = 1, -- Dreamwalker Gauntlets + [236207] = 1, -- Loop of the Dreamwalker + [236208] = 1, -- Dreamwalker Sabatons + [236209] = 1, -- Dreamwalker Armor + [236210] = 1, -- Dreamwalker Wraps + [236211] = 1, -- Dreamwalker Sash + [236212] = 1, -- Dreamwalker Shoulderpads + [236215] = 1, -- Dreamwalker Grips + [236216] = 1, -- Signet of the Dreamwalker + [236218] = 1, -- Dreamwalker Vest + [236222] = 1, -- Ghoul Skin Tunic + [236255] = 1, -- Wristguards of Vengeance + [236260] = 1, -- Icebane Pauldrons + [236262] = 1, -- Polar Shoulder Pads + [236263] = 1, -- Widow's Remorse + [236293] = 1, -- Toxin Injector + [236300] = 2, -- Gluth's Missing Collar + [236304] = 1, -- Plated Abomination Ribcage + [236306] = 1, -- The Castigator + [236309] = 1, -- Girdle of the Mentor + [236311] = 1, -- Signet of the Fallen Defender + [236319] = 1, -- Leggings of Apocalypse + [236339] = 1, -- Gressil, Dawn of Ruin + [236341] = 1, -- The Hungering Cold + [237275] = 1, -- Icebane Helmet + [237512] = 1, -- Blade of Inquisition + [238273] = 1, -- Scarlet Infiltrator's Shoulderpads + [238274] = 1, -- Scarlet Infiltrator's Vest + [238278] = 1, -- Scarlet Infiltrator's Trousers + [238290] = 1, -- Scarlet Soldier's Chestplate + [238294] = 1, -- Scarlet Soldier's Legplates + [238961] = 1, -- Caladbolg + [239060] = 1, -- Will of the Mountain + [239301] = 2, -- Corrupted Ashbringer + [239514] = 1, -- Lightbreaker Grips + [239517] = 1, -- Lightbreaker Greathelm + [239519] = 1, -- Lightbreaker Cuirass + [239520] = 1, -- Lightbreaker Bracers + [239521] = 1, -- Lightbreaker Waistguard + [239522] = 1, -- Lightbreaker Gauntlets + [239523] = 1, -- Lightbreaker Sabatons + [239524] = 1, -- Lightbreaker Pauldrons + [239525] = 1, -- Lightbreaker Helmet + [239526] = 1, -- Lightbreaker Legplates + [239527] = 1, -- Lightbreaker Breastplate + [239531] = 1, -- Dawnstalker Gauntlets + [239535] = 1, -- Dawnstalker Belt + [239536] = 1, -- Dawnstalker Vambraces + [239547] = 1, -- Duskwraith Wristguards + [239548] = 1, -- Duskwraith Chestguard + [239549] = 1, -- Duskwraith Grips + [239550] = 1, -- Duskwraith Mask + [239551] = 1, -- Duskwraith Leggings + [239552] = 1, -- Duskwraith Mantle + [239553] = 1, -- Duskwraith Treads + [239554] = 1, -- Duskwraith Belt + [239555] = 1, -- Duskwraith Bracers + [239556] = 1, -- Duskwraith Waistguard + [239559] = 1, -- Duskwraith Pauldrons + [240023] = 1, -- Inquisition Vambraces + [240024] = 1, -- Inquisition Belt + [240025] = 1, -- Inquisition Shoulderplates + [240027] = 1, -- Inquisition Helmet + [240028] = 1, -- Inquisition Gloves + [240030] = 1, -- Inquisition Breastplate + [240031] = 1, -- Inquisition Bracers + [240032] = 1, -- Inquisition Waistguard + [240033] = 1, -- Inquisition Pauldrons + [240034] = 1, -- Inquisition Legplates + [240035] = 1, -- Inquisition Crown + [240036] = 1, -- Inquisition Gauntlets + [240037] = 1, -- Inquisition Sabatons + [240038] = 1, -- Inquisition Chestguard + [240060] = 1, -- Waywatcher Wraps + [240061] = 1, -- Waywatcher Sash + [240063] = 1, -- Waywatcher Trousers + [240065] = 1, -- Waywatcher Grips + [240066] = 1, -- Waywatcher Stompers + [240076] = 1, -- Waywatcher Bracers + [240077] = 1, -- Waywatcher Waistguard + [240078] = 1, -- Waywatcher Pauldrons + [240079] = 1, -- Waywatcher Leggings + [240080] = 1, -- Waywatcher Headdress + [240081] = 2, -- Waywatcher Gauntlets + [240083] = 1, -- Waywatcher Armor + [240131] = 2, -- Soulcrusher Helmet + [240135] = 1, -- Soulcrusher Epaulets + [240136] = 2, -- Soulcrusher Belt + [240841] = 2, -- High Commander's Guard + [240842] = 2, -- Scarlet Rotbringer + [240850] = 1, -- Lightfist Hammer + [240922] = 1, -- Deception + [240923] = 1, -- Duplicity + [241022] = 1, -- Dawnbringer's Cloak + [241027] = 1, -- Shield Warden's Guard + [241038] = 2, -- Sir Dornel's Didgeridoo + [241074] = 1, -- Helm of the Red Crusade + [241162] = 2, -- Sunblessed Leathers + [241164] = 1, -- Scrapped Argent Leathers + [241166] = 1, -- Dawnstripped Bands + [241172] = 1, -- Caldoran's Locked Gauntlets + [241178] = 1, -- Stalwart Pain Plate + [241180] = 1, -- Lightscale Leggings + [241185] = 1, -- Bear Training Boots + [241187] = 2, -- Crimson Wartreads + [244460] = 1, -- Caladbolg + [246055] = 1, -- Inquisition Grips + [246056] = 1, -- Inquisition Armbraces + [246059] = 1, -- Inquisition Cord + [246060] = 1, -- Inquisition Cuirass + [246061] = 1, -- Inquisition Epaulets + [246062] = 1, -- Inquisition Faceguard + -- keep-sorted end + }, IsTimeworn = { - [233496] = true, - [233505] = true, - [233506] = true, - [233514] = true, - [233516] = true, - [233517] = true, - [233518] = true, - [233520] = true, - [233521] = true, - [233522] = true, - [233523] = true, - [233559] = true, - [233560] = true, - [233561] = true, - [233563] = true, - [233564] = true, - [233566] = true, - [233567] = true, - [233568] = true, - [233573] = true, - [233574] = true, - [233575] = true, - [233577] = true, - [233578] = true, - [233579] = true, - [233582] = true, - [233583] = true, - [233584] = true, - [233590] = true, - [233591] = true, - [233592] = true, - [233593] = true, - [233594] = true, - [233595] = true, - [233598] = true, - [233603] = true, - [233604] = true, - [233607] = true, - [233608] = true, - [233610] = true, - [233611] = true, - [233612] = true, - [233613] = true, - [233614] = true, - [233617] = true, - [233618] = true, - [233619] = true, - [233622] = true, - [233623] = true, - [233624] = true, - [233625] = true, - [233631] = true, - [233632] = true, - [233633] = true, - [233635] = true, - [233637] = true, - [233644] = true, - [233645] = true, - [233646] = true, - [234062] = true, - [234063] = true, - [234064] = true, - [234065] = true, - [234066] = true, - [234068] = true, - [234069] = true, - [234070] = true, - [234071] = true, - [234072] = true, - [234073] = true, - [234075] = true, - [234077] = true, - [234078] = true, - [234081] = true, - [234082] = true, - [234084] = true, - [234087] = true, - [234088] = true, - [234090] = true, - [234091] = true, - [234093] = true, - [234094] = true, - [234095] = true, - [234098] = true, - [234099] = true, - [234100] = true, - [234102] = true, - [234103] = true, - [234105] = true, - [234106] = true, - [234107] = true, - [234108] = true, - [234109] = true, - [234110] = true, - [234111] = true, - [234114] = true, - [234117] = true, - [234120] = true, - [234123] = true, - [234146] = true, - [234147] = true, - [234148] = true, - [234149] = true, - [234150] = true, - [234156] = true, - [234157] = true, - [234161] = true, - [234162] = true, - [234163] = true, - [234164] = true, - [234165] = true, - [234166] = true, - [234167] = true, - [234168] = true, - [234171] = true, - [234173] = true, - [234174] = true, - [234962] = true, - [234963] = true, - [235047] = true, + -- keep-sorted start numeric=yes + [233496] = true, -- Barrage Shoulders + [233505] = true, -- Leggings of Immersion + [233506] = true, -- Beetle Scaled Wristguards + [233514] = true, -- Boots of the Unwavering Will + [233516] = true, -- Breastplate of Annihilation + [233517] = true, -- Boots of the Redeemed Prophecy + [233518] = true, -- Boots of the Fallen Prophet + [233520] = true, -- Robes of the Triumvirate + [233521] = true, -- Ternary Mantle + [233522] = true, -- Guise of the Devourer + [233523] = true, -- Triad Girdle + [233559] = true, -- Gloves of Ebru + [233560] = true, -- Ooze-ridden Gauntlets + [233561] = true, -- Boots of the Fallen Hero + [233563] = true, -- Mantle of Phrenic Power + [233564] = true, -- Bile-Covered Gauntlets + [233566] = true, -- Mantle of the Desert's Fury + [233567] = true, -- Mantle of the Desert Crusade + [233568] = true, -- Vest of Swift Execution + [233573] = true, -- Recomposed Boots + [233574] = true, -- Leggings of the Festering Swarm + [233575] = true, -- Robes of the Battleguard + [233577] = true, -- Thick Qirajihide Belt + [233578] = true, -- Creeping Vine Helm + [233579] = true, -- Gloves of Enforcement + [233582] = true, -- Gauntlets of Steadfast Determination + [233583] = true, -- Legplates of Blazing Light + [233584] = true, -- Scaled Leggings of Qiraji Fury + [233590] = true, -- Hive Tunneler's Boots + [233591] = true, -- Silithid Carapace Chestguard + [233592] = true, -- Mantle of Wicked Revenge + [233593] = true, -- Pauldrons of the Unrelenting + [233594] = true, -- Robes of the Guardian Saint + [233595] = true, -- Scaled Sand Reaver Leggings + [233598] = true, -- Slime-coated Leggings + [233603] = true, -- Gauntlets of the Righteous Champion + [233604] = true, -- Gauntlets of Kalimdor + [233607] = true, -- Gloves of the Messiah + [233608] = true, -- Wasphide Gauntlets + [233610] = true, -- Hive Defiler Wristguards + [233611] = true, -- Boots of Epiphany + [233612] = true, -- Qiraji Execution Bracers + [233613] = true, --Vek'lor's Gloves of Devastation + [233614] = true, -- Royal Qiraji Belt + [233617] = true, -- Bracelets of Royal Redemption + [233618] = true, -- Gloves of the Hidden Temple + [233619] = true, -- Regenerating Belt of Vek'nilash + [233622] = true, -- Grasp of the Fallen Emperor + [233623] = true, -- Belt of the Fallen Emperor + [233624] = true, -- Don Rigoberto's Lost Hat + [233625] = true, -- Burrower Bracers + [233631] = true, -- Dark Storm Gauntlets + [233632] = true, -- Grasp of the Old God + [233633] = true, -- Eyestalk Waist Cord + [233635] = true, -- Belt of Never-ending Agony + [233637] = true, -- Gauntlets of Annihilation + [233644] = true, -- Garb of Royal Ascension + [233645] = true, -- Gloves of the Immortal + [233646] = true, -- Gloves of the Redeemed Prophecy + [234062] = true, -- Vestments of the Shifting Sands + [234063] = true, -- Belt of the Sand Reaver + [234064] = true, -- Belt of the Inquisition + [234065] = true, -- Sand Reaver Wristguards + [234066] = true, -- Toughened Silithid Hide Gloves + [234068] = true, -- Boots of the Vanguard + [234069] = true, -- Boots of the Qiraji General + [234070] = true, -- Bracers of Qiraji Command + [234071] = true, -- Legplates of the Qiraji Command + [234072] = true, -- Southwind's Grasp + [234073] = true, -- Dustwind Turban + [234075] = true, -- Gauntlets of the Immovable + [234077] = true, -- Thick Silithid Chestguard + [234078] = true, -- Chitinous Shoulderguards + [234081] = true, -- Gauntlets of Southwind + [234082] = true, -- Mantle of Maz'Nadir + [234084] = true, -- Southwind Helm + [234087] = true, -- Obsidian Scaled Leggings + [234088] = true, -- Legplates of the Destroyer + [234090] = true, -- Gloves of the Swarm + [234091] = true, -- Slimy Scaled Gauntlets + [234093] = true, -- Quicksand Waders + [234094] = true, -- Scaled Bracers of the Gorger + [234095] = true, -- Slime Kickers + [234098] = true, -- Boots of the Desert Protector + [234099] = true, -- Boots of the Fiery Sands + [234100] = true, -- Helm of Regrowth + [234102] = true, -- Scaled Silithid Gauntlets + [234103] = true, -- Bracers of Brutality + [234105] = true, -- Gauntlets of New Life + [234106] = true, -- Gloves of Dark Wisdom + [234107] = true, -- Helm of Domination + [234108] = true, -- Leggings of the Black Blizzard + [234109] = true, -- Mantle of the Horusath + [234110] = true, -- Ossirian's Binding + [234111] = true, -- Runic Stone Shoulders + [234114] = true, -- Shackles of the Unscarred + [234117] = true, -- Treads of the Wandering Nomad + [234120] = true, -- Helm of the Holy Avenger + [234123] = true, -- Coif of Elemental Fury + [234146] = true, -- Acid Inscribed Greaves + [234147] = true, -- Ancient Corroded Leggings + [234148] = true, -- Dragonbone Wristguards + [234149] = true, -- Dragonspur Wraps + [234150] = true, -- Gloves of Delusional Power + [234156] = true, -- Boots of the Endless Moor + [234157] = true, -- Circlet of Restless Dreams + [234161] = true, -- Belt of the Dark Bog + [234162] = true, -- Black Bark Wristbands + [234163] = true, -- Dark Heart Pants + [234164] = true, -- Deviate Growth Cap + [234165] = true, -- Gauntlets of the Shining Light + [234166] = true, -- Malignant Footguards + [234167] = true, -- Boots of Fright + [234168] = true, -- Mendicant's Slippers + [234171] = true, -- Unnatural Leather Spaulders + [234173] = true, -- Leggings of the Demented Mind + [234174] = true, -- Acid Inscribed Pauldrons + [234962] = true, -- Jade Inlaid Vestments + [234963] = true, -- Strangely Glyphed Legplates + [235047] = true, -- Gloves of the Fallen Prophet + -- keep-sorted end }, SpellHaste = { [235874] = 2, @@ -778,6 +1002,15 @@ Data.Item = { [242315] = 3, [242317] = 3, }, + TimewornExpertise = { + -- keep-sorted start numeric=yes + [234018] = 1, -- Signet Ring of the Bronze Dragonflight + [234022] = 1, -- Signet Ring of the Bronze Dragonflight + [234027] = 1, -- Signet Ring of the Bronze Dragonflight + [234031] = 1, -- Signet Ring of the Bronze Dragonflight + [234035] = 1, -- Signet Ring of the Bronze Dragonflight + -- keep-sorted end + }, TimewornSpellHaste = { [234016] = 2, [234020] = 2, @@ -785,20 +1018,30 @@ Data.Item = { [234028] = 2, [234032] = 2, }, + -- keep-sorted end } Data.setNames = { + -- keep-sorted start AUGURS_REGALIA = "Augur's Regalia", BLOODSOUL_EMBRACE = "Bloodsoul Embrace", + BONESCYTHE_LEATHERS = "Bonescythe Leathers", DAWN_OF_TRANSCENDENCE = "Dawn of Transcendence", + DREADNOUGHTS_BATTLEGEAR = "Dreadnought's Battlegear", + DREAMWALKER_GUARDIAN = "Dreamwalker Guardian", FEL_IRON_CHAIN = "Fel Iron Chain", FREETHINKERS_ARMOR = "Freethinker's Armor", GREEN_DRAGON_MAIL = "Green Dragon Mail", HARUSPEXS_GARB = "Haruspex's Garb", LIVING_GREEN_DRAGON_MAIL = "Living Green Dragon Mail", + PLAGUEHEART_STITCHINGS = "Plagueheart Stitchings", PRIMAL_MOONCLOTH = "Primal Mooncloth", + REDEMPTION_BULWARK = "Redemption Bulwark", STORMRAGE_RAIMENT = "Stormrage Raiment", + SYMBOLS_OF_UNENDING_LIFE = "Symbols of Unending Life", TEN_STORMS = "The Ten Storms", THE_EARTHSHATTERER = "The Earthshatterer", + THE_EARTHSHATTERERS_RESOLVE = "The Earthshatterer Resolve", VESTMENTS_OF_TRANSCENDENCE = "Vestments of Transcendence", WINDHAWK_ARMOR = "Windhawk Armor", + -- keep-sorted end } diff --git a/Modules/Data/ItemSets.lua b/Modules/Data/ItemSets.lua index 7e07ffed..856a431e 100755 --- a/Modules/Data/ItemSets.lua +++ b/Modules/Data/ItemSets.lua @@ -5,6 +5,7 @@ local _, _, classId = UnitClass("player") local setNames = Data.setNames local itemSets = { + -- keep-sorted start block=yes [setNames.AUGURS_REGALIA] = { [19609] = true, [19828] = true, @@ -17,6 +18,19 @@ local itemSets = { [19691] = true, [19692] = true, }, + [setNames.BONESCYTHE_LEATHERS] = { + -- keep-sorted start numeric=yes + [236032] = true, + [236033] = true, + [236034] = true, + [236035] = true, + [236036] = true, + [236037] = true, + [236038] = true, + [236039] = true, + [236040] = true, + -- keep-sorted end + }, [setNames.DAWN_OF_TRANSCENDENCE] = { [231155] = true, [231156] = true, @@ -27,6 +41,32 @@ local itemSets = { [231161] = true, [231162] = true, }, + [setNames.DREADNOUGHTS_BATTLEGEAR] = { + -- keep-sorted start numeric=yes + [236005] = true, + [246006] = true, + [236007] = true, + [236008] = true, + [236009] = true, + [236010] = true, + [236011] = true, + [236012] = true, + [236013] = true, + -- keep-sorted end + }, + [setNames.DREAMWALKER_GUARDIAN] = { + -- keep-sorted start numeric=yes + [236201] = true, + [236202] = true, + [236203] = true, + [236204] = true, + [236205] = true, + [236206] = true, + [236207] = true, + [236208] = true, + [236209] = true, + -- keep-sorted end + }, [setNames.FEL_IRON_CHAIN] = { [23490] = true, [23491] = true, @@ -62,6 +102,32 @@ local itemSets = { [21874] = true, [21875] = true, }, + [setNames.PLAGUEHEART_STITCHINGS] = { + -- keep-sorted start numeric=yes + [236068] = true, + [236069] = true, + [236070] = true, + [236071] = true, + [236072] = true, + [236073] = true, + [236074] = true, + [236075] = true, + [236076] = true, + -- keep-sorted end + }, + [setNames.REDEMPTION_BULWARK] = { + -- keep-sorted start numeric=yes + [236133] = true, + [236134] = true, + [236135] = true, + [236136] = true, + [236137] = true, + [236138] = true, + [236139] = true, + [236140] = true, + [236141] = true, + -- keep-sorted end + }, [setNames.STORMRAGE_RAIMENT] = { [16897] = true, [16898] = true, @@ -72,6 +138,13 @@ local itemSets = { [16903] = true, [16904] = true, }, + [setNames.SYMBOLS_OF_UNENDING_LIFE] = { + -- keep-sorted start numeric=yes + [233417] = true, + [233418] = true, + [233419] = true, + -- keep-sorted end + }, [setNames.TEN_STORMS] = { [16943] = true, [16944] = true, @@ -83,15 +156,30 @@ local itemSets = { [16950] = true }, [setNames.THE_EARTHSHATTERER] = { - [22468] = true, - [22470] = true, - [22469] = true, - [22466] = true, + -- keep-sorted start numeric=yes + [22464] = true, [22465] = true, + [22466] = true, [22467] = true, - [22464] = true, + [22468] = true, + [22469] = true, + [22470] = true, [22471] = true, - [23065] = true + [23065] = true, + -- keep-sorted end + }, + [setNames.THE_EARTHSHATTERERS_RESOLVE] = { + -- keep-sorted start numeric=yes + [236160] = true, + [236162] = true, + [236163] = true, + [236164] = true, + [236165] = true, + [236166] = true, + [236167] = true, + [236168] = true, + [236169] = true, + -- keep-sorted end }, [setNames.VESTMENTS_OF_TRANSCENDENCE] = { [16919] = true, @@ -108,18 +196,31 @@ local itemSets = { [29523] = true, [29524] = true, }, - [setNames.GREEN_DRAGON_MAIL] = { - [15045] = true, - [15046] = true, - [20296] = true, - }, - [setNames.LIVING_GREEN_DRAGON_MAIL] = { - [227877] = true, - [227878] = true, - [227879] = true, - }, + -- keep-sorted end } +function Data:HasSetBonusIncreasedExpertise2() + if classId == Data.DRUID then + return Data:IsSetBonusActive(setNames.DREAMWALKER_GUARDIAN, 2) + elseif classId == Data.SHAMAN then + return Data:IsSetBonusActive(setNames.THE_EARTHSHATTERERS_RESOLVE, 2) + elseif classId == Data.PALADIN then + return Data:IsSetBonusActive(setNames.REDEMPTION_BULWARK, 2) + elseif classId == Data.ROGUE then + return Data:IsSetBonusActive(setNames.BONESCYTHE_LEATHERS, 2) + elseif classId == Data.WARLOCK then + return Data:IsSetBonusActive(setNames.PLAGUEHEART_STITCHINGS, 2) + elseif classId == Data.WARRIOR then + return Data:IsSetBonusActive(setNames.DREADNOUGHTS_BATTLEGEAR, 2) + end +end + +function Data:HasSetBonusIncreasedExpertise5() + if classId == Data.DRUID then + return Data:IsSetBonusActive(setNames.SYMBOLS_OF_UNENDING_LIFE, 3) + end +end + ---@return number function Data:GetSetBonusModifierMP5() local mod = 0 diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index 3cc30206..b172fda6 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -1,3 +1,11 @@ +-- keep-sorted start case=no +local EQUIPPED_FIRST = EQUIPPED_FIRST +local EQUIPPED_LAST = EQUIPPED_LAST +local GetInventoryItemID = GetInventoryItemID +local GetInventoryItemLink = GetInventoryItemLink +local IsSoD = ECS.IsSoD +-- keep-sorted end + ---@class Data local Data = ECSLoader:ImportModule("Data") ---@type DataUtils @@ -189,6 +197,26 @@ end ---@return number function Data:GetExpertise() local expertise, _ = GetExpertise() + + if IsSoD then + local timeworn = DataUtils:CountTimewornItems() + + for i = EQUIPPED_FIRST,EQUIPPED_LAST do + local id, _ = GetInventoryItemID("player", i) + expertise = expertise + (Data.Item.IncreaseExpertise[id] or 0) + expertise = expertise + timeworn * (Data.Item.TimewornExpertise[id] or 0) + if classId == Data.DRUID then + local itemLink = GetInventoryItemLink("player", i) + if itemLink then + local enchant = DataUtils:GetEnchantFromItemLink(itemLink) + if enchant and enchant == Data.Enchant.Ids.ANIMALISTIC_EXPERTISE then + expertise = expertise + 5 + end + end + end + end + end + return DataUtils:Round(expertise, 0) end @@ -249,4 +277,3 @@ function Data:GetMeleeHasteBonus() local hasteBonus = GetCombatRatingBonus(CR_HASTE_MELEE) return DataUtils:Round(hasteBonus, 2) .. "%" end - diff --git a/Modules/Migration.lua b/Modules/Migration.lua index 0f1bf19b..915517be 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,8 @@ function Migration:ToLatestProfileVersion(profileVersion) if profileVersion < 25 then ExtendedCharacterStats.profile.defense.resilience = nil end + if profileVersion < 26 then + ExtendedCharacterStats.profile.melee.expertise = defaultProfile.profile.melee.expertise + ExtendedCharacterStats.profile.melee.expertiseRating = defaultProfile.profile.melee.expertiseRating + end end diff --git a/Modules/Profile.lua b/Modules/Profile.lua index 2a2152fe..fda4c91f 100755 --- a/Modules/Profile.lua +++ b/Modules/Profile.lua @@ -6,7 +6,7 @@ local Utils = ECSLoader:ImportModule("Utils") ---@return number function Profile.GetProfileVersion() - return 25 + return 26 end ---@return ECSProfile diff --git a/Modules/Stats.lua b/Modules/Stats.lua index acac2a0b..7d3f7220 100755 --- a/Modules/Stats.lua +++ b/Modules/Stats.lua @@ -220,7 +220,7 @@ _CreateStatInfos = function() ECS.IsWotlk and category.penetrationRating or nil, (not ECS.IsClassic) and category.penetration or nil, (not ECS.IsClassic) and category.expertiseRating or nil, - (not ECS.IsClassic) and category.expertise or nil, + ((not ECS.IsClassic) or ECS.IsSoD) and category.expertise or nil, (not ECS.IsClassic) and category.hasteRating or nil, (not ECS.IsClassic) and category.hasteBonus or nil )