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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src/Classes/ItemDBControl.lua
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ local ItemDBClass = newClass("ItemDBControl", "ListControl", function(self, anch
self.controls.requirement = new("DropDownControl", {"LEFT",self.controls.sort,"BOTTOMLEFT"}, {0, 11, 179, 18}, { "Any requirements", "Current level", "Current attributes", "Current useable" }, function(index, value)
self.listBuildFlag = true
end)
self.controls.obtainable = new("DropDownControl", {"LEFT",self.controls.requirement,"RIGHT"}, {2, 0, 179, 18}, { "Obtainable", "Any source", "Unobtainable", "Vendor Recipe", "Upgraded", "Boss Item", "Corruption"}, function(index, value)
self.controls.obtainable = new("DropDownControl", { "LEFT", self.controls.requirement, "RIGHT" }, { 2, 0, 179, 18 }, { "Obtainable", "Any source", "Unobtainable", "Vendor Recipe", "Upgraded", "Boss Item", "Corruption", "Core drop pool" }, function(index, value)
self.listBuildFlag = true
end)
end
Expand Down Expand Up @@ -122,6 +122,8 @@ function ItemDBClass:DoesItemMatchFilters(item)
return false
elseif (self.controls.obtainable.selIndex == 7 and not (string.match(source, "Vaal Orb"))) then
return false
elseif (self.controls.obtainable.selIndex == 8) and item.source then
return false
end
end
if self.dbType == "UNIQUE" and self.controls.requirement.selIndex > 1 then
Expand Down
80 changes: 76 additions & 4 deletions src/Classes/ItemsTab.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2252,7 +2252,10 @@ function ItemsTabClass:UpdateAffixControl(control, item, affixType, outputTable,
if (#testSubject.modMagnitudeMods > 0) or (testSubject.catalyst and testSubject.catalyst > 0) then
local originalItem = testSubject:BuildRaw()
for _, subMod in ipairs(mod) do
local modLine = { line = subMod, modTags = mod.modTags, [mod.type] = true }
local modLine = { line = subMod, modTags = mod.modTags }
if mod.type then
modLine[mod.type] = true
end
t_insert(testSubject.explicitModLines, modLine)
end
testSubject:BuildAndParseRaw()
Expand All @@ -2265,7 +2268,10 @@ function ItemsTabClass:UpdateAffixControl(control, item, affixType, outputTable,
for _, line in ipairs(mod) do
local rangedLine = itemLib.applyRange(line, main.defaultItemAffixQuality or 0.5, 1, 1)
local modList, extra = modLib.parseMod(rangedLine)
local modLine = { line = line, modList = modList, extra = extra, modTags = mod.modTags, [mod.type] = true }
local modLine = { line = line, modList = modList, extra = extra, modTags = mod.modTags }
if mod.type then
modLine[mod.type] = true
end
t_insert(testSubject.explicitModLines, modLine)
end

Expand Down Expand Up @@ -2410,7 +2416,11 @@ function ItemsTabClass:AddModComparisonTooltip(tooltip, mod)
local newItem = new("Item", self.displayItem:BuildRaw())

for _, subMod in ipairs(mod) do
t_insert(newItem.explicitModLines, { line = checkLineForAllocates(subMod, self.build.spec.nodes), modTags = mod.modTags, [mod.type] = true })
local modLine = { line = checkLineForAllocates(subMod, self.build.spec.nodes), modTags = mod.modTags }
if mod.type then
modLine[mod.type] = true
end
t_insert(newItem.explicitModLines, modLine)
end

newItem:BuildAndParseRaw()
Expand Down Expand Up @@ -3914,9 +3924,59 @@ function ItemsTabClass:AddImplicitToDisplayItem()
return a.defaultOrder < b.defaultOrder
end)
end
elseif sourceId == "VESTIGIAL" then
for id, uniqueTitle in pairs(data.vestigialModMappings) do
local titleLower = uniqueTitle:lower()
local unique = main.uniqueDB.byTitle[titleLower]
if not unique
-- vestigial implicits can only end up on the same item type
or (unique.base.type ~= self.displayItem.type)
-- avoid adding the item's own mods as vestigial
or (self.displayItem.title:lower() == titleLower) then
goto vestigialContinue
end
local mod = copyTable(data.itemMods.Vestigial[id])
local modLabel = colorCodes.VESTIGIAL .. table.concat(mod, "/")
if not groupIndexes[mod.group] then
t_insert(modList, {})
t_insert(modGroups, {
label = modLabel,
mod = mod,
modListIndex = #modList,
defaultOrder = id,
uniqueTitle = uniqueTitle,
})
groupIndexes[mod.group] = #modGroups
end
t_insert(modList[groupIndexes[mod.group]], {
label = modLabel,
mod = mod,
type = "vestigial",
defaultOrder = id,
uniqueTitle = uniqueTitle,
})
::vestigialContinue::
end
for i, _ in pairs(modList) do
table.sort(modList[i], function(a, b)
return a.defaultOrder < b.defaultOrder
end)
end
end
setDefaultSortOrder()
end
local titleLower = self.displayItem.title and self.displayItem.title:lower()
local displayDBUnique = main.uniqueDB.byTitle[titleLower]
if self.displayItem.rarity == "UNIQUE" and displayDBUnique
and data.vestigialUniqueBaseTypes[self.displayItem.base.type]
-- the source field should mean that the item comes from a specific
-- mechanic, which usually means it is not in the core drop pool
and (not displayDBUnique.source
-- this is the only exception to the above, as it occasionally drops
-- instead of other body armours in legion
or titleLower == "stasis prison") then
t_insert(sourceList, { label = "Vestigial", sourceId = "VESTIGIAL" })
end
if (self.displayItem.rarity ~= "UNIQUE" and self.displayItem.rarity ~= "RELIC") and (self.displayItem.type == "Helmet" or self.displayItem.type == "Body Armour" or self.displayItem.type == "Gloves" or self.displayItem.type == "Boots") then
if self.displayItem.cleansing then
t_insert(sourceList, { label = "Searing Exarch", sourceId = "EXARCH" })
Expand Down Expand Up @@ -3949,9 +4009,15 @@ function ItemsTabClass:AddImplicitToDisplayItem()
end
return
end
elseif listMod.type == "vestigial" then
item.implicitModLines = {}
end
for _, line in ipairs(listMod.mod) do
t_insert(item.implicitModLines, { line = line, modTags = listMod.mod.modTags, [listMod.type] = true })
local modLine = { line = line, modTags = listMod.mod.modTags }
if listMod.type then
modLine[listMod.type] = true
end
t_insert(item.implicitModLines, modLine)
end
end
local function getSortValue(listMod, stat, calcFunc, slotName, useFullDPS)
Expand Down Expand Up @@ -4100,6 +4166,9 @@ function ItemsTabClass:AddImplicitToDisplayItem()
for _, line in ipairs(value.mod) do
tooltip:AddLine(16, "^7"..line)
end
if value.uniqueTitle then
tooltip:AddLine(16, "^7Source: " .. colorCodes.UNIQUE .. value.uniqueTitle .. "^7")
end
self:AddModComparisonTooltip(tooltip, value.mod)
end
end
Expand All @@ -4114,6 +4183,9 @@ function ItemsTabClass:AddImplicitToDisplayItem()
for _, line in ipairs(value.mod) do
tooltip:AddLine(16, "^7"..line)
end
if value.uniqueTitle then
tooltip:AddLine(16, "^7Source: " .. colorCodes.UNIQUE .. value.uniqueTitle .. "^7")
end
self:AddModComparisonTooltip(tooltip, value.mod)
end
end
Expand Down
6 changes: 3 additions & 3 deletions src/Data/ModCache.lua
Original file line number Diff line number Diff line change
Expand Up @@ -9307,6 +9307,8 @@ c["Grants Level 20 Doryani's Touch Skill"]={{[1]={flags=0,keywordFlags=0,name="E
c["Grants Level 20 Hatred Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="Hatred"}}},nil}
c["Grants Level 20 Illusory Warp Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="IllusoryWarp"}}},nil}
c["Grants Level 20 Misty Reflection Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="MistyReflection"}}},nil}
c["Grants Level 20 Petrification Statue Skill"]={nil,nil}
c["Grants Level 20 Petrification Statue Skill 250% increased Energy Shield"]={nil,nil}
c["Grants Level 20 Queen's Demand Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="QueensDemand"}}},nil}
c["Grants Level 20 Ravenous Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="Ravenous"}}},nil}
c["Grants Level 20 Savage Barnacle"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="BarnacleSnap"}}},nil}
Expand All @@ -9318,8 +9320,6 @@ c["Grants Level 20 Summon Bestial Rhoa Skill"]={{[1]={flags=0,keywordFlags=0,nam
c["Grants Level 20 Summon Bestial Snake Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="SummonBeastialSnake"}}},nil}
c["Grants Level 20 Summon Bestial Ursa Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="SummonBeastialUrsa"}}},nil}
c["Grants Level 20 Summon Doedre's Effigy Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="SummonDoedresEffigy"}}},nil}
c["Grants Level 20 Summon Petrification Statue Skill"]={nil,nil}
c["Grants Level 20 Summon Petrification Statue Skill 250% increased Energy Shield"]={nil,nil}
c["Grants Level 20 Summon Sentinel of Radiance Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="SummonSentinelOfRadiance"}}},nil}
c["Grants Level 20 Summon Shaper Memory"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="SummonShaperApparition"}}},nil}
c["Grants Level 20 Thirst for Blood Skill"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="ThirstForBlood"}}},nil}
Expand Down Expand Up @@ -11050,7 +11050,7 @@ c["Removes all but one Life on use Removed life is Regenerated as Energy Shield
c["Removes all mana"]={{[1]={flags=0,keywordFlags=0,name="Mana",type="MORE",value=-100}},nil}
c["Requires 8 Str, 8 Dex"]={nil,"Requires 8 Str, 8 Dex "}
c["Requires 8 Str, 8 Dex 40% increased Cast Speed"]={nil,"Requires 8 Str, 8 Dex 40% increased Cast Speed "}
c["Requires 8 Str, 8 Dex Implicits: 0"]={nil,"Requires 8 Str, 8 Dex Implicits: 0 "}
c["Requires 8 Str, 8 Dex Source: Fishing"]={nil,"Requires 8 Str, 8 Dex Source: Fishing "}
c["Requires Class Duelist"]={nil,"Requires Class Duelist "}
c["Requires Class Duelist Allocates Bane of Legends if you have the matching modifier on Forbidden Flame"]={nil,"Requires Class Duelist Allocates Bane of Legends if you have the matching modifier on Forbidden Flame "}
c["Requires Class Duelist Allocates Bane of Legends if you have the matching modifier on Forbidden Flesh"]={nil,"Requires Class Duelist Allocates Bane of Legends if you have the matching modifier on Forbidden Flesh "}
Expand Down
2 changes: 2 additions & 0 deletions src/Data/Uniques/body.lua
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ Having a placed Banner does not prevent you gaining Valour
Pragmatism
Colosseum Plate
League: Affliction
Source: unique{The King in the Mists} in the normal{Crux of Nothingness}
Requires Level 49, 134 Str
+12 to Level of Socketed Skill Gems
(80-120)% increased Armour
Expand Down Expand Up @@ -1157,6 +1158,7 @@ Gain a Power Charge for each Enemy you hit with a Critical Strike
Waxen Soul
Saint's Hauberk
League: Ritual
Source: Reward from Nameless Ritual, and rarely a regular Ritual
(10-20)% increased maximum Life
+(17-29)% to Chaos Resistance
Curse Skills cost Life instead of Mana
Expand Down
5 changes: 5 additions & 0 deletions src/Data/Uniques/boots.lua
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ Unwavering Stance
Redblade Tramplers
Ancient Greaves
League: Warbands
Source: Drops from Redblade Mercenary monsters
Variant: Pre 2.6.0
Variant: Current
Requires Level 46, 82 Str
Expand Down Expand Up @@ -612,6 +613,7 @@ Stun Threshold is based on 500% of your Mana instead of Life
Steppan Eard
Sorcerer Boots
League: Warbands
Source: Drops from Renegade Warband monsters
Variant: Pre 3.0.0
Variant: Current
Requires Level 67, 123 Int
Expand Down Expand Up @@ -784,6 +786,7 @@ Lose Adrenaline when you cease to be Flame-Touched
Gamblesprint
Hydrascale Boots
League: Affliction
Source: Reward from Ultimatum encounters
Requires Level 59, 56 Str, 56 Dex
+(30-40) to Dexterity
(100-150)% increased Armour and Evasion
Expand Down Expand Up @@ -951,6 +954,7 @@ Gain (10-20) Life per Enemy Killed
Brinerot Whalers
Trapper Boots
League: Warbands
Source: Drops from Brinerot Warband monsters
Variant: Pre 2.6.0
Variant: Pre 3.0.0
Variant: Current
Expand Down Expand Up @@ -1170,6 +1174,7 @@ Celestial Footprints
Olroth's Charge
Runic Sollerets
League: Expedition
Source: Drops from Expedition monsters
Requires Level 48, 37 Str, 37 Dex, 37 Int
(50-80)% increased Ward
(30-50)% slower Restoration of Ward
Expand Down
1 change: 1 addition & 0 deletions src/Data/Uniques/fishing.lua
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ Glows while in an Area containing a Unique Fish
Song of the Sirens
Fishing Rod
Requires 8 Str, 8 Dex
Source: Fishing
Implicits: 0
Siren Worm Bait
(50-60)% increased Rarity of Fish Caught
Expand Down
6 changes: 5 additions & 1 deletion src/Data/Uniques/gloves.lua
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ return {
Admiral's Arrogance
Antique Gauntlets
League: Settlers of Kalguur
Source: Drops from unique{Admiral Valerius} in normal{Shipping encounters}
Requires Level 39, 58 Str
(6-12)% increased Attack Speed
(100-140)% increased Armour
Expand Down Expand Up @@ -886,6 +887,7 @@ Chaos Skills have 20% chance to Ignite
Hand of Heresy
Martyr Gloves
League: Mercenaries of Trarthus
Source: Reward from Mercenary duel
Variant: Pre 3.28.0
Variant: Current
Requires Level 77, 70 Str, 70 Int
Expand Down Expand Up @@ -921,7 +923,6 @@ Unaffected by Shock while Leeching Energy Shield
Algor Mortis
Carnal Mitts
League: Delirium
Source: Drops from the Simulacrum Encounter
Requires Level 50, 39 Dex, 39 Int
+(50-70) to maximum Energy Shield
+(15-20)% to Cold and Lightning Resistances
Expand Down Expand Up @@ -1064,6 +1065,7 @@ Requires Level 5
]],[[
Malachai's Mark
Murder Mitts
Source: Drops from unique{Nightmare of the Depraved Trinity} in normal{Abomination Map}
Requires Level 67, 51 Dex, 51 Int
(80-100)% increased Evasion and Energy Shield
+(60-80) to maximum Life
Expand Down Expand Up @@ -1147,6 +1149,7 @@ Medved's Challenge
Runic Gauntlets
Requires Level 69, 38 Str, 38 Dex, 38 Int
League: Expedition
Source: Drops from Expedition monsters
800% increased Attribute Requirements
(30-50)% increased Ward
+(15-25)% to all Elemental Resistances
Expand All @@ -1159,6 +1162,7 @@ Variant: Pre 3.16.0
Variant: Pre 3.25.0
Variant: Current
League: Expedition
Source: Drops from Expedition monsters
Requires Level 48, 31 Str, 31 Dex, 31 Int
(33-48)% increased Ward
+(17-23)% to Chaos Resistance
Expand Down
8 changes: 7 additions & 1 deletion src/Data/Uniques/helmet.lua
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@
Kaom's Command
Siege Helmet
League: Settlers of Kalguur
Source: Kingsmarch Shipping to normal{Ngakanu} or normal{Te Onui}

Check warning on line 136 in src/Data/Uniques/helmet.lua

View workflow job for this annotation

GitHub Actions / spellcheck

Unknown word (Onui)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requires Level 48, 101 Str
+(60-80) to maximum Life
(25-35)% increased Warcry Speed
Expand Down Expand Up @@ -784,6 +785,7 @@
Variant: Pre 3.19.0
Variant: Pre 3.24.0
Variant: Current
Source: Drops from unique{Nightmare of Catarina} in normal{Ziggurat Map}
Requires Level: 34, 73 Int
{variant:3}Has 4 Abyssal Sockets
{variant:1,2}+2 to Level of Socketed Minion Gems
Expand Down Expand Up @@ -1028,6 +1030,7 @@
El'Abin's Visage
Fencer Helm
League: Crucible
Source: Drops from Crucible monsters
+(20-30) to Strength
+(20-30) to Dexterity
(80-120)% increased Armour and Evasion
Expand All @@ -1038,6 +1041,7 @@
The Trickster's Smile
Visored Sallet
League: Affliction
Source: Drops from Viridian Wildwood and Ritual monsters
Requires Level 23, 28 Str, 28 Dex
(60-100)% increased Armour and Evasion
Reflects 100 Cold Damage to Melee Attackers
Expand Down Expand Up @@ -1508,10 +1512,11 @@
Corrupted
]],[[
Gorgon's Gaze
Source: Drops from unique{Talin, Faithbreaker} in normal{Pillars of Arun}
Regicide Mask
Requires Level 52, 58 Dex, 58 Int
Implicits: 0
Grants Level 20 Summon Petrification Statue Skill
Grants Level 20 Petrification Statue Skill
(200-250)% increased Energy Shield
+(60-80) to maximum Life
(5-10)% increased Attack and Cast Speed
Expand Down Expand Up @@ -1714,6 +1719,7 @@
Faithguard
Runic Helm
League: Expedition
Source: Drops from Expedition monsters
Variant: Pre 3.19.0
Variant: Current
+(20-30) to Intelligence
Expand Down
4 changes: 4 additions & 0 deletions src/Data/Uniques/jewel.lua
Original file line number Diff line number Diff line change
Expand Up @@ -857,18 +857,21 @@ Radius: Medium
[[
Amanamu's Gaze
Ghastly Eye Jewel
Source: Drops from unique{Abyssal Liches} in normal{Abyssal Depths}
+(5-10) to all Attributes
Minions have +6% to Damage over Time Multiplier per
Ghastly Eye Jewel affecting you, up to a maximum of +30%
]],[[
Kurgal's Gaze
Hypnotic Eye Jewel
Source: Drops from unique{Abyssal Liches} in normal{Abyssal Depths}
+(10-20) to Intelligence
8% increased Effect of Arcane Surge on you per
Hypnotic Eye Jewel affecting you, up to a maximum of 40%
]],[[
Tecrod's Gaze
Murderous Eye Jewel
Source: Drops from unique{Abyssal Liches} in normal{Abyssal Depths}
Variant: Pre 3.21.0
Variant: Current
Requires Level 40
Expand All @@ -884,6 +887,7 @@ Requires Level 40
]],[[
Ulaman's Gaze
Searching Eye Jewel
Source: Drops from unique{Abyssal Liches} in normal{Abyssal Depths}
Requires Level 40
+(10-20) to Dexterity
Projectiles have 4% chance to be able to Chain when colliding with terrain per
Expand Down
1 change: 1 addition & 0 deletions src/Data/Uniques/quiver.lua
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@ Broadhead Arrow Quiver
Variant: Pre 3.17.0
Variant: Current
LevelReq: 52
Source: Labyrinth
Implicits: 2
{variant:2}(8-10)% increased Attack Speed
{variant:1}6 to 12 Added Physical Damage with Bow Attacks
Expand Down
Loading
Loading