Skip to content

Commit 339fb78

Browse files
authored
Merge branch 'PathOfBuildingCommunity:dev' into trade-mode-selection
2 parents a3426f0 + 5046395 commit 339fb78

81 files changed

Lines changed: 18007 additions & 24533 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

RELEASE.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,13 @@ Steps:
2727

2828
Updating data from the GGPK uses the PoB exporter (see CONTRIBUTING.md#exporting-ggpk-data-from-path-of-exile). Run each script in order, then check the differences in data to make sure nothing is missing that is expected.
2929

30+
## Trade query and mod weight updates
31+
32+
1. Delete `src/Data/QueryMods.lua`, then open the "Trade for these items" pane in PoB to re-generate it.
33+
2. In `src/Export/Scripts/ScriptResources`, there are several files that contain hardcoded mods. If a new mod is added to the game and we can't automatically get weights for it from the ggpk, we need to check the trade site.
34+
3. Search the corresponding ModX.lua file for `{ "default" }` to find mods that don't have any spawn weights.
35+
4. Search for those mods on the trade site to find what bases (if any) the mod needs to be added to in `ScriptResources`
36+
3037
## Skill tree updates
3138

3239
Skill tree updates require JSON data, usually released by GGG a few days before a new

src/Classes/GemSelectControl.lua

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -560,11 +560,11 @@ function GemSelectClass:AddGemTooltip(gemInstance)
560560
self.tooltip:AddSeparator(10)
561561
self:AddGrantedEffectInfo(gemInstance, additional)
562562
for _, statSet in ipairs(additional.statSets) do
563-
self:AddStatSetInfo(gemInstance, grantedEffect, statSet)
563+
self:AddStatSetInfo(gemInstance, additional, statSet)
564564
end
565565
else
566566
for _, statSet in ipairs(additional.statSets) do
567-
self:AddStatSetInfo(gemInstance, grantedEffect, statSet, true)
567+
self:AddStatSetInfo(gemInstance, additional, statSet, true)
568568
end
569569
end
570570
end
@@ -573,7 +573,7 @@ end
573573
function GemSelectClass:AddGrantedEffectInfo(gemInstance, grantedEffect, addReq)
574574
local displayInstance = gemInstance.displayEffect or gemInstance
575575
local grantedEffectLevel = grantedEffect.levels[displayInstance.level] or { }
576-
if gemInstance.gemData.Tier and not grantedEffect.isLineage then
576+
if gemInstance.gemData.Tier and not grantedEffect.isLineage and not grantedEffect.hidden then
577577
self.tooltip:AddLine(16, string.format("^x7F7F7FTier: ^7%d", gemInstance.gemData.Tier))
578578
end
579579
if addReq and not grantedEffect.support then
@@ -651,7 +651,7 @@ function GemSelectClass:AddGrantedEffectInfo(gemInstance, grantedEffect, addReq)
651651
if grantedEffectLevel.baseMultiplier then
652652
self.tooltip:AddLine(16, string.format("^x7F7F7FAttack Damage: ^7%g%% of base", grantedEffectLevel.baseMultiplier * 100))
653653
end
654-
else
654+
elseif not grantedEffect.hidden then
655655
if grantedEffect.castTime > 0 then
656656
self.tooltip:AddLine(16, string.format("^x7F7F7FCast Time: ^7%.2f sec", grantedEffect.castTime))
657657
else
@@ -661,7 +661,7 @@ function GemSelectClass:AddGrantedEffectInfo(gemInstance, grantedEffect, addReq)
661661
if grantedEffectLevel.critChance then
662662
self.tooltip:AddLine(16, string.format("^x7F7F7FCritical Hit Chance: ^7%.2f%%", grantedEffectLevel.critChance))
663663
end
664-
if gemInstance.gemData.weaponRequirements then
664+
if gemInstance.gemData.weaponRequirements and not grantedEffect.hidden then
665665
self.tooltip:AddLine(16, "^x7F7F7F Requires: ^7" .. gemInstance.gemData.weaponRequirements)
666666
end
667667
end

src/Classes/Item.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -809,7 +809,7 @@ function ItemClass:ParseRaw(raw, rarity, highQuality)
809809
local specificItemType = self.base.type:lower()
810810
for runeName, runeMods in pairs(data.itemMods.Runes) do
811811
local addModToGroupedRunes = function (modLine)
812-
local runeValue
812+
local runeValue = 1
813813
local runeStrippedModLine = modLine:gsub("(%d%.?%d*)", function(val)
814814
runeValue = val
815815
return "#"
@@ -835,7 +835,7 @@ function ItemClass:ParseRaw(raw, rarity, highQuality)
835835

836836
local remainingRunes = self.itemSocketCount
837837
for i, modLine in ipairs(self.runeModLines) do
838-
local value
838+
local value = 1
839839
local strippedModLine = modLine.line:gsub("(%d%.?%d*)", function(val)
840840
value = val
841841
return "#"

src/Classes/SkillsTab.lua

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -756,41 +756,53 @@ function SkillsTabClass:CreateGemSlot(index)
756756
end
757757
-- Function for both granted effect and secondary such as vaal
758758
local addQualityLines = function(qualityList, grantedEffect)
759-
tooltip:AddLine(18, colorCodes.GEM..grantedEffect.name)
760-
-- Hardcoded to use 20% quality instead of grabbing from gem, this is for consistency and so we always show something
761-
tooltip:AddLine(16, colorCodes.NORMAL.."At +20% Quality:")
762-
for k, qual in pairs(qualityList) do
763-
-- Do the stats one at a time because we're not guaranteed to get the descriptions in the same order we look at them here
764-
local stats = { }
765-
stats[qual[1]] = qual[2] * 20
766-
local descriptions = self.build.data.describeStats(stats, grantedEffect.statSets[1].statDescriptionScope)
767-
-- line may be nil if the value results in no line due to not being enough quality
768-
for _, line in ipairs(descriptions) do
769-
if line then
770-
-- Check if we have a handler for the mod in the gem's statMap or in the shared stat map for skills
771-
if grantedEffect.statSets[1].statMap[qual[1]] or self.build.data.skillStatMap[qual[1]] then
772-
tooltip:AddLine(16, colorCodes.MAGIC..line)
773-
else
774-
local line = colorCodes.UNSUPPORTED..line
775-
line = main.notSupportedModTooltips and (line .. main.notSupportedTooltipText) or line
776-
tooltip:AddLine(16, line)
759+
if #qualityList > 0 then
760+
if grantedEffect.name == "" then
761+
tooltip:AddLine(18, colorCodes.GEM..grantedEffect.statSets[1].label)
762+
else
763+
tooltip:AddLine(18, colorCodes.GEM..grantedEffect.name)
764+
end
765+
-- Hardcoded to use 20% quality instead of grabbing from gem, this is for consistency and so we always show something
766+
tooltip:AddLine(16, colorCodes.NORMAL.."At +20% Quality:")
767+
for k, qual in pairs(qualityList) do
768+
-- Do the stats one at a time because we're not guaranteed to get the descriptions in the same order we look at them here
769+
local stats = { }
770+
stats[qual[1]] = qual[2] * 20
771+
local descriptions = self.build.data.describeStats(stats, grantedEffect.statSets[1].statDescriptionScope, true)
772+
-- line may be nil if the value results in no line due to not being enough quality
773+
for _, line in ipairs(descriptions) do
774+
if line then
775+
-- Check if we have a handler for the mod in the gem's statMap or in the shared stat map for skills
776+
if grantedEffect.statSets[1].statMap[qual[1]] or self.build.data.skillStatMap[qual[1]] then
777+
tooltip:AddLine(16, colorCodes.MAGIC..line)
778+
else
779+
local line = colorCodes.UNSUPPORTED..line
780+
line = main.notSupportedModTooltips and (line .. main.notSupportedTooltipText) or line
781+
tooltip:AddLine(16, line)
782+
end
777783
end
778784
end
779785
end
780786
end
781787
end
782788
-- Check if there is a quality of this type for the effect
783-
if gemData and gemData.grantedEffect.qualityStats then
789+
-- Currently only checks the first 2 additionalGrantedEffects. Will need to fix if gems ever add more
790+
if gemData and gemData.grantedEffect.qualityStats and #gemData.grantedEffect.qualityStats > 0 then
784791
local qualityTable = gemData.grantedEffect.qualityStats
785792
addQualityLines(qualityTable, gemData.grantedEffect)
786793
end
787-
if gemData and gemData.secondaryGrantedEffect and gemData.secondaryGrantedEffect.qualityStats then
788-
local qualityTable = gemData.secondaryGrantedEffect.qualityStats
794+
if gemData and gemData.additionalGrantedEffects[1] and gemData.additionalGrantedEffects[1].qualityStats and #gemData.additionalGrantedEffects[1].qualityStats > 0 then
795+
local qualityTable = gemData.additionalGrantedEffects[1].qualityStats
796+
tooltip:AddSeparator(10)
797+
addQualityLines(qualityTable, gemData.additionalGrantedEffects[1])
798+
end
799+
if gemData and gemData.additionalGrantedEffects[2] and gemData.additionalGrantedEffects[2].qualityStats and #gemData.additionalGrantedEffects[2].qualityStats > 0 then
800+
local qualityTable = gemData.additionalGrantedEffects[2].qualityStats
789801
tooltip:AddSeparator(10)
790-
addQualityLines(qualityTable, gemData.secondaryGrantedEffect)
802+
addQualityLines(qualityTable, gemData.additionalGrantedEffects[2])
791803
end
792804
-- Add stat comparisons for hovered quality (based on set quality)
793-
if gemData and (gemData.grantedEffect.qualityStats or (gemData.secondaryGrantedEffect and gemData.secondaryGrantedEffect.qualityStats)) and self.displayGroup.gemList[index] then
805+
if gemData and (gemData.grantedEffect.qualityStats or (gemData.additionalGrantedEffects[1] and gemData.additionalGrantedEffects[1].qualityStats or gemData.additionalGrantedEffects[2] and gemData.additionalGrantedEffects[2].qualityStats)) and self.displayGroup.gemList[index] then
794806
local calcFunc, calcBase = self.build.calcsTab:GetMiscCalculator(self.build)
795807
if calcFunc then
796808
local storedQuality = self.displayGroup.gemList[index].quality

src/Data/Bases/bow.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ itemBases["Twin Bow"] = {
157157
tags = { two_hand_weapon = true, ranged = true, weapon = true, default = true, twohand = true, bow = true, },
158158
implicit = "Bow Attacks fire an additional Arrow",
159159
implicitModTypes = { { "attack" }, },
160-
weapon = { PhysicalMin = 29, PhysicalMax = 53, CritChanceBase = 5, AttackRateBase = 1.2, Range = 120, },
160+
weapon = { PhysicalMin = 32, PhysicalMax = 60, CritChanceBase = 5, AttackRateBase = 1.1, Range = 120, },
161161
req = { level = 54, dex = 96, },
162162
}
163163
itemBases["Adherent Bow"] = {

src/Data/Bases/shield.lua

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,9 @@ itemBases["Tawhoan Tower Shield"] = {
251251
quality = 20,
252252
socketLimit = 3,
253253
tags = { karui_basetype = true, str_armour = true, str_shield = true, armour = true, default = true, shield = true, },
254+
implicit = "Grants Skill: Level (1-20) Raise Shield",
254255
implicitModTypes = { },
255-
armour = { Armour = 197, MovementPenalty = 0.03, },
256+
armour = { BlockChance = 26, Armour = 197, MovementPenalty = 0.03, },
256257
req = { level = 80, str = 115, },
257258
}
258259
itemBases["Aged Tower Shield"] = {
@@ -360,8 +361,9 @@ itemBases["Tawhoan Tower Shield"] = {
360361
quality = 20,
361362
socketLimit = 3,
362363
tags = { karui_basetype = true, str_armour = true, str_shield = true, armour = true, default = true, shield = true, },
364+
implicit = "Grants Skill: Level (1-20) Raise Shield",
363365
implicitModTypes = { },
364-
armour = { Armour = 197, MovementPenalty = 0.03, },
366+
armour = { BlockChance = 26, Armour = 197, MovementPenalty = 0.03, },
365367
req = { level = 80, str = 115, },
366368
}
367369

@@ -613,8 +615,9 @@ itemBases["Desert Buckler"] = {
613615
quality = 20,
614616
socketLimit = 3,
615617
tags = { karui_basetype = true, buckler = true, dex_shield = true, dex_armour = true, armour = true, default = true, shield = true, },
618+
implicit = "Grants Skill: Level (1-20) Parry",
616619
implicitModTypes = { },
617-
armour = { Evasion = 144, },
620+
armour = { BlockChance = 20, Evasion = 144, },
618621
req = { level = 80, dex = 115, },
619622
}
620623
itemBases["Oak Buckler"] = {
@@ -722,8 +725,9 @@ itemBases["Desert Buckler"] = {
722725
quality = 20,
723726
socketLimit = 3,
724727
tags = { karui_basetype = true, buckler = true, dex_shield = true, dex_armour = true, armour = true, default = true, shield = true, },
728+
implicit = "Grants Skill: Level (1-20) Parry",
725729
implicitModTypes = { },
726-
armour = { Evasion = 144, },
730+
armour = { BlockChance = 20, Evasion = 144, },
727731
req = { level = 80, dex = 115, },
728732
}
729733

@@ -953,8 +957,9 @@ itemBases["Golden Targe"] = {
953957
quality = 20,
954958
socketLimit = 3,
955959
tags = { karui_basetype = true, str_dex_armour = true, str_dex_shield = true, armour = true, default = true, shield = true, },
960+
implicit = "Grants Skill: Level (1-20) Raise Shield",
956961
implicitModTypes = { },
957-
armour = { Armour = 109, Evasion = 99, MovementPenalty = 0.015, },
962+
armour = { BlockChance = 25, Armour = 109, Evasion = 99, MovementPenalty = 0.015, },
958963
req = { level = 80, str = 63, dex = 63, },
959964
}
960965
itemBases["Ironwood Targe"] = {
@@ -1062,8 +1067,9 @@ itemBases["Golden Targe"] = {
10621067
quality = 20,
10631068
socketLimit = 3,
10641069
tags = { karui_basetype = true, str_dex_armour = true, str_dex_shield = true, armour = true, default = true, shield = true, },
1070+
implicit = "Grants Skill: Level (1-20) Raise Shield",
10651071
implicitModTypes = { },
1066-
armour = { Armour = 109, Evasion = 99, MovementPenalty = 0.015, },
1072+
armour = { BlockChance = 25, Armour = 109, Evasion = 99, MovementPenalty = 0.015, },
10671073
req = { level = 80, str = 63, dex = 63, },
10681074
}
10691075

@@ -1293,8 +1299,9 @@ itemBases["Blacksteel Crest Shield"] = {
12931299
quality = 20,
12941300
socketLimit = 3,
12951301
tags = { karui_basetype = true, str_int_armour = true, str_int_shield = true, armour = true, default = true, shield = true, },
1302+
implicit = "Grants Skill: Level (1-20) Raise Shield",
12961303
implicitModTypes = { },
1297-
armour = { Armour = 109, EnergyShield = 37, MovementPenalty = 0.015, },
1304+
armour = { BlockChance = 25, Armour = 109, EnergyShield = 37, MovementPenalty = 0.015, },
12981305
req = { level = 80, str = 63, int = 63, },
12991306
}
13001307
itemBases["Painted Crest Shield"] = {
@@ -1402,8 +1409,9 @@ itemBases["Blacksteel Crest Shield"] = {
14021409
quality = 20,
14031410
socketLimit = 3,
14041411
tags = { karui_basetype = true, str_int_armour = true, str_int_shield = true, armour = true, default = true, shield = true, },
1412+
implicit = "Grants Skill: Level (1-20) Raise Shield",
14051413
implicitModTypes = { },
1406-
armour = { Armour = 109, EnergyShield = 37, MovementPenalty = 0.015, },
1414+
armour = { BlockChance = 25, Armour = 109, EnergyShield = 37, MovementPenalty = 0.015, },
14071415
req = { level = 80, str = 63, int = 63, },
14081416
}
14091417

src/Data/FlavourText.lua

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3112,6 +3112,14 @@ return {
31123112
},
31133113
},
31143114
[389] = {
3115+
id = "FourUniqueJewel11",
3116+
name = "Undying Hate",
3117+
text = {
3118+
"They believed themselves driven by necessity,",
3119+
"but that desperation made them monstrous.",
3120+
},
3121+
},
3122+
[390] = {
31153123
id = "FourUniqueJewel12",
31163124
name = "Heart of the Well",
31173125
text = {

src/Data/Gems.lua

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10039,14 +10039,15 @@ return {
1003910039
support = true,
1004010040
grants_active_skill = true,
1004110041
lineage = true,
10042+
spell = true,
1004210043
area = true,
1004310044
chaos = true,
1004410045
curse = true,
1004510046
hazard = true,
1004610047
},
1004710048
gemType = "Support",
1004810049
gemFamily = "Cursed Ground",
10049-
tagString = "Lineage, AoE, Chaos, Curse, Hazard",
10050+
tagString = "Lineage, Spell, AoE, Chaos, Curse, Hazard",
1005010051
reqStr = 0,
1005110052
reqDex = 0,
1005210053
reqInt = 100,

0 commit comments

Comments
 (0)