Compare commits

..

7 Commits

Author SHA1 Message Date
shaga d057918a1d Remove dead atlasloot.net/atlasmod.com links 2026-08-19 00:51:11 +00:00
Spit 3c229608ca add missing greymane set items and correct droprates 2026-08-14 14:11:56 +03:00
Spit af9a2c0d34 use mods provided and extended functions for links if possible 2026-08-14 13:54:02 +03:00
Spit cb49ff182c remove some tooltip source lines 2026-08-14 13:31:17 +03:00
Spit e783939c9e use variable for tooltip maximum size 2026-08-14 13:28:10 +03:00
roby-brok 1ad4c1e2a6 Tooltip: don't crash on tooltips longer than 30 lines
AddSourceLine's line buffer is pre-built for exactly 30 entries, so any
item tooltip that exceeds that dies with

  Core\Tooltip.lua:56: attempt to index field '?' (a nil value)

on every hover, and the source line is never added. Easy to hit on
servers with long set lists in the tooltip plus a tooltip-extending
addon (StatCompare and friends) -- a 6-piece set block alone adds ~10
lines. Grow the buffer on demand instead; the clear/rebuild loops
already iterate whatever size the table has.
2026-08-14 13:28:10 +03:00
roby-brok b0f7f3bf44 toc: drop seven Core entries whose files no longer exist
Core\Sets.lua, Factions.lua, WorldEvents.lua, PvP.lua, Crafting.lua,
WorldBoss.lua and Dungeons.lua are listed in the toc but are not in the
repo (their content lives under Database\ since the overhaul), so every
login prints seven "Error loading" lines -- invisible with
scriptErrors=0, but there for anyone with Lua errors enabled.
2026-08-14 10:10:14 +01:00
4 changed files with 48 additions and 32 deletions
+1 -8
View File
@@ -3,7 +3,7 @@
## Notes: Shows possible loot from dungeon bosses and other sources. ## Notes: Shows possible loot from dungeon bosses and other sources.
## Author: Otari (overhaul/revamp, menu changes, bugfixes/updates), Lexie (Turtle WoW fixes/updates), Pepopo, MarcelineVQ (Kara40 loot), Shagu ## Author: Otari (overhaul/revamp, menu changes, bugfixes/updates), Lexie (Turtle WoW fixes/updates), Pepopo, MarcelineVQ (Kara40 loot), Shagu
## LegacyAuthor: Daviesh, Pompa (Turtle WoW World Bosses), Xerron (Turtle WoW World Bosses), Gurky (Turtle WoW 1.16/1.16.1 Dungeons) ## LegacyAuthor: Daviesh, Pompa (Turtle WoW World Bosses), Xerron (Turtle WoW World Bosses), Gurky (Turtle WoW 1.16/1.16.1 Dungeons)
## Version: 3.4.4 ## Version: 3.4.6
## SavedVariablesPerCharacter: AtlasLootCharDB ## SavedVariablesPerCharacter: AtlasLootCharDB
## OptionalDeps: Alphamap, AtlasLoader, LootLink, ItemSync, HewdropLib, Ace2, EquipCompare, EQCompare ## OptionalDeps: Alphamap, AtlasLoader, LootLink, ItemSync, HewdropLib, Ace2, EquipCompare, EQCompare
@@ -40,14 +40,7 @@ Database\Menus.lua
Core\ButtonRegistry.lua Core\ButtonRegistry.lua
Core\TextParsing.lua Core\TextParsing.lua
Core\Sets.lua
Core\Factions.lua
Core\WorldEvents.lua
Core\PvP.lua
Core\Crafting.lua
Core\WishList.lua Core\WishList.lua
Core\Search.lua Core\Search.lua
Core\WorldBoss.lua
Core\Dungeons.lua
Core\Tooltip.lua Core\Tooltip.lua
Core\AtlasLoot.xml Core\AtlasLoot.xml
+23 -5
View File
@@ -27,13 +27,22 @@ local WrappingLines = {
} }
local lines = {} local lines = {}
for i = 1, 30 do local maxLines = 30
for i = 1, maxLines do
lines[i] = {} lines[i] = {}
end end
local function AddSourceLine(tooltip, sourceStr) local function AddSourceLine(tooltip, sourceStr)
local name = tooltip:GetName() local name = tooltip:GetName()
local numLines = tooltip:NumLines() local numLines = tooltip:NumLines()
if numLines > maxLines then
-- the buffer is pre-built for 30 lines, but long set tooltips plus
-- tooltip-extending addons (StatCompare etc.) can exceed that
for i = maxLines + 1, numLines do lines[i] = {} end
maxLines = numLines
end
local left, right local left, right
local leftText, rightText local leftText, rightText
local leftR, leftG, leftB local leftR, leftG, leftB
@@ -69,7 +78,7 @@ local function AddSourceLine(tooltip, sourceStr)
tooltip:SetText(lines[1][1], lines[1][3], lines[1][4], lines[1][5], 1, false) tooltip:SetText(lines[1][1], lines[1][3], lines[1][4], lines[1][5], 1, false)
if numLines < 28 then if numLines < maxLines then
tooltip:AddLine(sourceStr) tooltip:AddLine(sourceStr)
elseif lines[2][1] then elseif lines[2][1] then
lines[2][1] = sourceStr.."\n"..lines[2][1] lines[2][1] = sourceStr.."\n"..lines[2][1]
@@ -99,7 +108,7 @@ local lastItemID, lastSourceStr
local function ExtendTooltip(tooltip) local function ExtendTooltip(tooltip)
if AtlasLootCharDB.ShowSource then if AtlasLootCharDB.ShowSource then
local itemID = tonumber(tooltip.itemID) local itemID = tonumber(tooltip.itemID)
if itemID and itemID ~= 51217 then -- 51217 Fashion Coin if itemID then
if itemID ~= lastItemID then if itemID ~= lastItemID then
lastItemID = itemID lastItemID = itemID
lastSourceStr = nil lastSourceStr = nil
@@ -229,7 +238,11 @@ local function HookTooltip(tooltip)
insideHook = true insideHook = true
original_SetInboxItem(self, mailID, attachmentIndex) original_SetInboxItem(self, mailID, attachmentIndex)
insideHook = false insideHook = false
self.itemID = GetItemIDByName(GetInboxItem(mailID)) if GetInboxItemLink then
self.itemID = IDFromLink(GetInboxItemLink(mailID, attachmentIndex))
else
self.itemID = GetItemIDByName(GetInboxItem(mailID, attachmentIndex))
end
ExtendTooltip(self) ExtendTooltip(self)
end end
@@ -282,7 +295,12 @@ local function HookTooltip(tooltip)
insideHook = true insideHook = true
original_SetAuctionSellItem(self) original_SetAuctionSellItem(self)
insideHook = false insideHook = false
self.itemID = tonumber(GetItemIDByName(GetAuctionSellItemInfo())) local name, texture, count, quality, canUse, price, maxStack, itemLink = GetAuctionSellItemInfo()
if itemLink then
self.itemID = IDFromLink(itemLink)
else
self.itemID = tonumber(GetItemIDByName(name))
end
ExtendTooltip(self) ExtendTooltip(self)
end end
+12 -9
View File
@@ -3620,16 +3620,19 @@ AtlasLoot_Data["AtlasLootItems"] = {
{ 61496, "INV_Crown_01", "=q1=The Greymane Crown", "=ds=#m3#", "100%" }, { 61496, "INV_Crown_01", "=q1=The Greymane Crown", "=ds=#m3#", "100%" },
}, },
GCTrash = { GCTrash = {
{ 61598, "INV_Bracer_13", "=q3=Wraps of the Pauper", "=ds=#s8#, #a1#", "0.0125%, 0.0338%" }, { 61598, "INV_Bracer_13", "=q3=Wraps of the Pauper", "=ds=#s8#, #a1#", "0.0125%" },
{ 61336, "INV_Gauntlets_32", "=q3=Knife Juggler Gloves", "=ds=#s9#, #a2#", "0.0125%, 0.0338%" }, { 61336, "INV_Gauntlets_32", "=q3=Knife Juggler Gloves", "=ds=#s9#, #a2#", "0.0125%" },
{ 61597, "INV_Pants_11", "=q3=Conspirator's Trickpockets", "=ds=#s11#, #a2#", "0.0125%, 0.0338%" }, { 61597, "INV_Pants_11", "=q3=Conspirator's Trickpockets", "=ds=#s11#, #a2#", "0.0125%" },
{ 61335, "INV_Shoulder_02", "=q3=Dragonbane Pauldrons", "=ds=#s3#, #a3#", "0.0125%, 0.0338%" }, { 61335, "INV_Shoulder_02", "=q3=Dragonbane Pauldrons", "=ds=#s3#, #a3#", "0.0125%" },
{ 61339, "inv_shoulder_22", "=q3=Pauldrons of the Justicar", "=ds=#s3#, #a4#", "0.0125%, 0.0338%" }, { 61339, "inv_shoulder_22", "=q3=Pauldrons of the Justicar", "=ds=#s3#, #a4#", "0.0125%" },
{ 61337, "INV_Relics_LibramofGrace", "=q3=Libram of the Justicar", "=ds=#s16#, #e18#", "0.0125%" },
{ 61338, "INV_Staff_28", "=q3=Staff of Ushered Ruination", "=ds=#h2#, #w9#", "0.0125%" },
{ 61596, "INV_Weapon_Halberd_09", "=q3=Defender's Glaive", "=ds=#h2#, #w7#", "0.0125%" },
{ 0, "", "", "" }, { 0, "", "", "" },
{ 61337, "INV_Relics_LibramofGrace", "=q3=Libram of the Justicar", "=ds=#s16#, #e18#", "0.0125%, 0.0338%" }, { 61376, "inv_gauntlets_22", "=q2=Greymane Gauntlets", "=ds=#s9#, #a4#", "0.08%" },
{ 0, "", "", "" }, { 61377, "inv_boots_plate_01", "=q2=Greymane Sabatons", "=ds=#s12#, #a4#", "0.08%" },
{ 61338, "INV_Staff_28", "=q3=Staff of Ushered Ruination", "=ds=#h2#, #w9#", "0.0125%, 0.0338%" }, { 61378, "inv_pants_04", "=q2=Greymane Legplates", "=ds=#s11#, #a4#", "0.08%" },
{ 61596, "INV_Weapon_Halberd_09", "=q3=Defender's Glaive", "=ds=#h2#, #w7#", "0.0125%, 0.0338%" }, { 61379, "inv_bracer_14", "=q2=Greymane Vambraces", "=ds=#s8#, #a4#", "0.08%" },
}, },
KCMarrowspike = { KCMarrowspike = {
{ 83441, "INV_chest_chain_15", "=q3=Splintercage Breastplate", "=ds=#s5#, #a4#", "18%" }, { 83441, "INV_chest_chain_15", "=q3=Splintercage Breastplate", "=ds=#s5#, #a4#", "18%" },
+12 -10
View File
@@ -5364,7 +5364,6 @@ AtlasLoot_Data["AtlasLootSources"] = {
[51046] = AL["Hateforge Quarry"].." - "..AL["Har'gesh Doomcaller"].." (25%)", [51046] = AL["Hateforge Quarry"].." - "..AL["Har'gesh Doomcaller"].." (25%)",
[51047] = AL["Hateforge Quarry"].." - "..AL["Har'gesh Doomcaller"].." (25%)", [51047] = AL["Hateforge Quarry"].." - "..AL["Har'gesh Doomcaller"].." (25%)",
[51048] = AL["Hateforge Quarry"].." - "..AL["Har'gesh Doomcaller"].." (25%)", [51048] = AL["Hateforge Quarry"].." - "..AL["Har'gesh Doomcaller"].." (25%)",
[51217] = AL["Stormwind Vault"].." - "..AL["Black Bride"].." (5%)",
[51249] = AL["Feast of Winter Veil"], [51249] = AL["Feast of Winter Veil"],
[51252] = AL["Wardens of Time"].." - "..AL["Exalted"], [51252] = AL["Wardens of Time"].." - "..AL["Exalted"],
[51256] = AL["Tailoring"].." ("..AL["Skill:"].." 75+)", [51256] = AL["Tailoring"].." ("..AL["Skill:"].." 75+)",
@@ -6171,11 +6170,11 @@ AtlasLoot_Data["AtlasLootSources"] = {
[61332] = AL["Gilneas City"].." - "..AL["Dustivan Blackcowl"].." (25%)", [61332] = AL["Gilneas City"].." - "..AL["Dustivan Blackcowl"].." (25%)",
[61333] = AL["Gilneas City"].." - "..AL["Dustivan Blackcowl"].." (25%)", [61333] = AL["Gilneas City"].." - "..AL["Dustivan Blackcowl"].." (25%)",
[61334] = AL["Gilneas City"].." - "..AL["Dustivan Blackcowl"].." (5%)", [61334] = AL["Gilneas City"].." - "..AL["Dustivan Blackcowl"].." (5%)",
[61335] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%, 0.0338%)", [61335] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%)",
[61336] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%, 0.0338%)", [61336] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%)",
[61337] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%, 0.0338%)", [61337] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%)",
[61338] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%, 0.0338%)", [61338] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%)",
[61339] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%, 0.0338%)", [61339] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%)",
[61352] = AL["Gilneas City"].." - "..AL["Genn Greymane"].." (100%)", [61352] = AL["Gilneas City"].." - "..AL["Genn Greymane"].." (100%)",
[61356] = AL["Leatherworking"].." ("..AL["Skill:"].." 300)", [61356] = AL["Leatherworking"].." ("..AL["Skill:"].." 300)",
[61357] = AL["Leatherworking"].." ("..AL["Skill:"].." 300)", [61357] = AL["Leatherworking"].." ("..AL["Skill:"].." 300)",
@@ -6282,9 +6281,9 @@ AtlasLoot_Data["AtlasLootSources"] = {
[61593] = AL["Stormwind Vault"].." - "..AL["Trash Mobs"].." (0.0013%)", [61593] = AL["Stormwind Vault"].." - "..AL["Trash Mobs"].." (0.0013%)",
[61594] = AL["Stormwind Vault"].." - "..AL["Trash Mobs"].." (0.0013%)", [61594] = AL["Stormwind Vault"].." - "..AL["Trash Mobs"].." (0.0013%)",
[61595] = AL["Stormwind Vault"].." - "..AL["Trash Mobs"].." (0.0013%)", [61595] = AL["Stormwind Vault"].." - "..AL["Trash Mobs"].." (0.0013%)",
[61596] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%, 0.0338%)", [61596] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%)",
[61597] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%, 0.0338%)", [61597] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%)",
[61598] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%, 0.0338%)", [61598] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.0125%)",
[61610] = AL["Duskskitter"].." (33%)", [61610] = AL["Duskskitter"].." (33%)",
[61611] = AL["Duskskitter"].." (33%)", [61611] = AL["Duskskitter"].." (33%)",
[61612] = AL["Duskskitter"].." (33%)", [61612] = AL["Duskskitter"].." (33%)",
@@ -6911,7 +6910,6 @@ AtlasLoot_Data["AtlasLootSources"] = {
[41569] = AL["Dragonmaw Retreat"].." - "..AL["Web Master Torkon"].." (20%)", [41569] = AL["Dragonmaw Retreat"].." - "..AL["Web Master Torkon"].." (20%)",
[41570] = AL["Dragonmaw Retreat"].." - "..AL["Web Master Torkon"].." (20%)", [41570] = AL["Dragonmaw Retreat"].." - "..AL["Web Master Torkon"].." (20%)",
[41874] = AL["Dragonmaw Retreat"].." - "..AL["Web Master Torkon"].." (100%)", [41874] = AL["Dragonmaw Retreat"].." - "..AL["Web Master Torkon"].." (100%)",
[30040] = AL["Dragonmaw Retreat"].." - "..AL["Web Master Torkon"].." (2.5%)",
[41578] = AL["Dragonmaw Retreat"].." - "..AL["Garlok Flamekeeper"].." (25%)", [41578] = AL["Dragonmaw Retreat"].." - "..AL["Garlok Flamekeeper"].." (25%)",
[41579] = AL["Dragonmaw Retreat"].." - "..AL["Garlok Flamekeeper"].." (25%)", [41579] = AL["Dragonmaw Retreat"].." - "..AL["Garlok Flamekeeper"].." (25%)",
[41580] = AL["Dragonmaw Retreat"].." - "..AL["Garlok Flamekeeper"].." (25%)", [41580] = AL["Dragonmaw Retreat"].." - "..AL["Garlok Flamekeeper"].." (25%)",
@@ -7321,4 +7319,8 @@ AtlasLoot_Data["AtlasLootSources"] = {
[54009] = AL["Poisons"].." ("..AL["Skill:"].." 1+)", [54009] = AL["Poisons"].." ("..AL["Skill:"].." 1+)",
[42202] = AL["Engineering"] .." ("..AL["Skill:"].." 300)", [42202] = AL["Engineering"] .." ("..AL["Skill:"].." 300)",
[33146] = AL["Engineering"] .." ("..AL["Skill:"].." 300)", [33146] = AL["Engineering"] .." ("..AL["Skill:"].." 300)",
[61376] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.08%)",
[61377] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.08%)",
[61378] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.08%)",
[61379] = AL["Gilneas City"].." - "..AL["Trash Mobs"].." (0.08%)",
} }