From 77e329b557e1f5bd709d1060ef97526da9ef9649 Mon Sep 17 00:00:00 2001 From: Eucelia Date: Tue, 2 Jun 2026 23:01:26 -0700 Subject: [PATCH 1/4] Adds Fists of Stone base and fixes mod parsing" --- src/Data/Bases/gloves.lua | 14 ++++++++++++++ src/Data/ModCache.lua | 2 +- src/Modules/ModParser.lua | 2 ++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Data/Bases/gloves.lua b/src/Data/Bases/gloves.lua index 4b16d8de0e..f75ebd9de5 100644 --- a/src/Data/Bases/gloves.lua +++ b/src/Data/Bases/gloves.lua @@ -1980,4 +1980,18 @@ itemBases["Runemastered Grand Manchettes"] = { req = { level = 65, str = 32, dex = 32, int = 32, }, } +-- Custom base types not present in GGPK exports. +-- Needed so imported items can resolve their base correctly. +itemBases["Fists of Stone"] = { + type = "Gloves", + subType = "Armour", + quality = 20, + socketLimit = 3, + hidden = true, + tags = { armour = true, gloves = true, }, + implicitModTypes = { }, + armour = { Armour = 0, }, + req = { }, +} + diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 524bfaca78..a9551e600c 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -5578,7 +5578,7 @@ c["Has 2 Charm Slot"]={{[1]={flags=0,keywordFlags=0,name="CharmLimit",type="BASE c["Has 2 Charm Slots"]={{[1]={flags=0,keywordFlags=0,name="CharmLimit",type="BASE",value=2}},nil} c["Has 3 Charm Slot"]={{[1]={flags=0,keywordFlags=0,name="CharmLimit",type="BASE",value=3}},nil} c["Has 3 Charm Slots"]={{[1]={flags=0,keywordFlags=0,name="CharmLimit",type="BASE",value=3}},nil} -c["Has 4 Augment Sockets"]={nil,"Has 4 Augment Sockets "} +c["Has 4 Augment Sockets"]={{}," Augment Sockets "} c["Has no Attribute Requirements"]={{[1]={flags=0,keywordFlags=0,name="NoAttributeRequirements",type="FLAG",value=true}},nil} c["Hazards have 15% chance to rearm after they are triggered"]={{[1]={[1]={skillType=203,type="SkillType"},flags=0,keywordFlags=0,name="HazardRearmChance",type="BASE",value=15}},nil} c["Hazards have 5% chance to rearm after they are triggered"]={{[1]={[1]={skillType=203,type="SkillType"},flags=0,keywordFlags=0,name="HazardRearmChance",type="BASE",value=5}},nil} diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 301db66c28..8a44a4439e 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -1197,6 +1197,7 @@ local preFlagList = { ["^melee weapon damage"] = { flags = ModFlag.WeaponMelee }, ["^deal "] = { }, ["^causes "] = { }, + ["^has "] = { }, ["^arrows deal "] = { keywordFlags = KeywordFlag.Arrow }, ["^critical hits deal "] = { tag = { type = "Condition", var = "CriticalStrike" } }, ["^poisons you inflict with critical hits have "] = { keywordFlags = bor(KeywordFlag.Poison, KeywordFlag.MatchAll), tag = { type = "Condition", var = "CriticalStrike" } }, @@ -1453,6 +1454,7 @@ local modTagList = { ["per mana burn on you"] = { tag = { type = "Multiplier", var = "ManaBurnStacks" } }, ["per mana burn, up to a maximum of (%d+)%%"] = function(num) return { tag = { type = "Multiplier", var = "ManaBurnStacks", limit = tonumber(num), limitTotal = true } } end, ["per level"] = { tag = { type = "Multiplier", var = "Level" } }, + ["per player level"] = { tag = { type = "Multiplier", var = "Level" } }, ["per (%d+) player levels"] = function(num) return { tag = { type = "Multiplier", var = "Level", div = num } } end, ["per defiance"] = { tag = { type = "Multiplier", var = "Defiance" } }, ["per (%d+)%% (%a+) effect on enemy"] = function(num, _, effectName) return { tag = { type = "Multiplier", var = firstToUpper(effectName) .. "Effect", div = num, actor = "enemy" } } end, From 2eb05f80c998d005fb0d6a546a040d91db7d04b0 Mon Sep 17 00:00:00 2001 From: Eucelia Date: Tue, 2 Jun 2026 23:14:08 -0700 Subject: [PATCH 2/4] adjust type --- src/Data/Bases/gloves.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Data/Bases/gloves.lua b/src/Data/Bases/gloves.lua index f75ebd9de5..3f63d630f7 100644 --- a/src/Data/Bases/gloves.lua +++ b/src/Data/Bases/gloves.lua @@ -1984,13 +1984,13 @@ itemBases["Runemastered Grand Manchettes"] = { -- Needed so imported items can resolve their base correctly. itemBases["Fists of Stone"] = { type = "Gloves", - subType = "Armour", + subType = "Evasion/Energy Shield", quality = 20, socketLimit = 3, hidden = true, - tags = { armour = true, gloves = true, }, + tags = { armour = true, gloves = true, dex_int_armour = true, }, implicitModTypes = { }, - armour = { Armour = 0, }, + armour = { Evasion = 0, EnergyShield = 0, }, req = { }, } From 86543db28b365fc0ce1ad2c7e66723ecbc54eaf7 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Wed, 3 Jun 2026 23:07:07 +1000 Subject: [PATCH 3/4] Fix base export --- src/Data/Bases/gloves.lua | 23 ++++++++++++++++------- src/Export/Bases/gloves.txt | 5 +++++ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/Data/Bases/gloves.lua b/src/Data/Bases/gloves.lua index 3f63d630f7..f0e0a2db28 100644 --- a/src/Data/Bases/gloves.lua +++ b/src/Data/Bases/gloves.lua @@ -1980,18 +1980,27 @@ itemBases["Runemastered Grand Manchettes"] = { req = { level = 65, str = 32, dex = 32, int = 32, }, } --- Custom base types not present in GGPK exports. --- Needed so imported items can resolve their base correctly. + itemBases["Fists of Stone"] = { type = "Gloves", - subType = "Evasion/Energy Shield", quality = 20, + hidden = true, socketLimit = 3, + tags = { armour = true, default = true, dex_int_armour = true, gloves = true, }, + implicit = "Has +3 to Evasion Rating per player level\nHas +1 to maximum Energy Shield per player level", + implicitModTypes = { { }, { }, }, + armour = { }, + req = { }, +} +itemBases["Runeforged Fists of Stone"] = { + type = "Gloves", + quality = 20, hidden = true, - tags = { armour = true, gloves = true, dex_int_armour = true, }, - implicitModTypes = { }, - armour = { Evasion = 0, EnergyShield = 0, }, + socketLimit = 3, + tags = { armour = true, default = true, dex_int_armour = true, gloves = true, runeforged = true, }, + implicit = "Has +2 to Evasion Rating per player level\nHas +1 to maximum Energy Shield per player level\nHas +1 to maximum Runic Ward per player level", + implicitModTypes = { { }, { }, { }, }, + armour = { }, req = { }, } - diff --git a/src/Export/Bases/gloves.txt b/src/Export/Bases/gloves.txt index 871dbba6e0..1a897c4bc3 100644 --- a/src/Export/Bases/gloves.txt +++ b/src/Export/Bases/gloves.txt @@ -28,3 +28,8 @@ local itemBases = ... #subType #baseMatch BaseType Metadata/Items/Armours/Gloves/GlovesDemigods1 +#subType +#forceHide true +#baseMatch Metadata/Items/Armours/Gloves/FourGlovesDexIntAscendancy +#forceHide false + From 674aa68ed6f206574558c17ddc47867ce6c3c944 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Wed, 3 Jun 2026 23:09:52 +1000 Subject: [PATCH 4/4] Remove blank parse The mod is not supported and this parsing could also match other mods in the future that would be undesired --- src/Data/ModCache.lua | 2 +- src/Modules/ModParser.lua | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index a9551e600c..524bfaca78 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -5578,7 +5578,7 @@ c["Has 2 Charm Slot"]={{[1]={flags=0,keywordFlags=0,name="CharmLimit",type="BASE c["Has 2 Charm Slots"]={{[1]={flags=0,keywordFlags=0,name="CharmLimit",type="BASE",value=2}},nil} c["Has 3 Charm Slot"]={{[1]={flags=0,keywordFlags=0,name="CharmLimit",type="BASE",value=3}},nil} c["Has 3 Charm Slots"]={{[1]={flags=0,keywordFlags=0,name="CharmLimit",type="BASE",value=3}},nil} -c["Has 4 Augment Sockets"]={{}," Augment Sockets "} +c["Has 4 Augment Sockets"]={nil,"Has 4 Augment Sockets "} c["Has no Attribute Requirements"]={{[1]={flags=0,keywordFlags=0,name="NoAttributeRequirements",type="FLAG",value=true}},nil} c["Hazards have 15% chance to rearm after they are triggered"]={{[1]={[1]={skillType=203,type="SkillType"},flags=0,keywordFlags=0,name="HazardRearmChance",type="BASE",value=15}},nil} c["Hazards have 5% chance to rearm after they are triggered"]={{[1]={[1]={skillType=203,type="SkillType"},flags=0,keywordFlags=0,name="HazardRearmChance",type="BASE",value=5}},nil} diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 8a44a4439e..b9c09bc971 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -1197,7 +1197,6 @@ local preFlagList = { ["^melee weapon damage"] = { flags = ModFlag.WeaponMelee }, ["^deal "] = { }, ["^causes "] = { }, - ["^has "] = { }, ["^arrows deal "] = { keywordFlags = KeywordFlag.Arrow }, ["^critical hits deal "] = { tag = { type = "Condition", var = "CriticalStrike" } }, ["^poisons you inflict with critical hits have "] = { keywordFlags = bor(KeywordFlag.Poison, KeywordFlag.MatchAll), tag = { type = "Condition", var = "CriticalStrike" } },