Skip to content

Commit eec0f7b

Browse files
AnakiorLocalIdentity
andauthored
Add Facebreaker unique gloves support (#2097)
* Add Facebreaker unique gloves support * Auto-import Boss's Faces Broken count from character quest stats * Simplify quest import + add test Now uses the existing stat loop instead of its own Adds a test to make sure the import from an account works properly too * Make the gloves be a damage source vs added damage The gloves are meant to become the damage source instead of granting added damage. It was incorrectly adding the base unarmed damage to attackss Now also correctly interacts with hollow palm --------- Co-authored-by: LocalIdentity <localidentity2@gmail.com>
1 parent 2df5a74 commit eec0f7b

11 files changed

Lines changed: 236 additions & 3 deletions

File tree

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
-- Tests for Facebreaker-style gloves: empty-handed gloves that grant their own base
2+
-- weapon damage and let you attack as though using a One Hand Mace.
3+
describe("TestFacebreaker", function()
4+
before_each(function()
5+
newBuild()
6+
end)
7+
8+
teardown(function()
9+
-- newBuild() takes care of resetting everything in setup()
10+
end)
11+
12+
-- Physical variant (Facebreaker)
13+
local function equipFacebreaker()
14+
build.itemsTab:CreateDisplayItemFromRaw([[
15+
New Item
16+
Stocky Mitts
17+
Has 8 to 12 Physical damage, +3 to +4 per Boss's Face Broken
18+
Can Attack as though using a One Handed Mace while both of your hand slots are empty
19+
Unarmed Attacks that would use an Equipped One Hand Mace's damage use this Item's damage
20+
]])
21+
build.itemsTab:AddDisplayItem()
22+
runCallback("OnFrame")
23+
end
24+
25+
it("grants its base Physical damage to Unarmed attacks", function()
26+
equipFacebreaker()
27+
local weaponData1 = build.calcsTab.mainEnv.player.weaponData1
28+
assert.are.equals(8, weaponData1.FacebreakerPhysicalMin)
29+
assert.are.equals(12, weaponData1.FacebreakerPhysicalMax)
30+
end)
31+
32+
it("lets you attack as though using a One Hand Mace while unarmed", function()
33+
equipFacebreaker()
34+
local weaponData1 = build.calcsTab.mainEnv.player.weaponData1
35+
assert.is_true(weaponData1.asThoughUsing ~= nil and weaponData1.asThoughUsing["One Hand Mace"] == true)
36+
end)
37+
38+
it("scales its base damage per Boss's Face Broken", function()
39+
equipFacebreaker()
40+
build.configTab.input.configBossFaceBroken = 10
41+
build.configTab:BuildModList()
42+
runCallback("OnFrame")
43+
local weaponData1 = build.calcsTab.mainEnv.player.weaponData1
44+
-- 8 base + 3 per face broken * 10, 12 base + 4 per face broken * 10
45+
assert.are.equals(8 + 3 * 10, weaponData1.FacebreakerPhysicalMin)
46+
assert.are.equals(12 + 4 * 10, weaponData1.FacebreakerPhysicalMax)
47+
end)
48+
49+
it("matches the in-game resolved damage at 60 Boss's Faces Broken (188-252)", function()
50+
-- Real in-game Facebreaker shows "Physical Damage: 188-252" at 60 Boss's Faces Broken
51+
equipFacebreaker()
52+
build.configTab.input.configBossFaceBroken = 60
53+
build.configTab:BuildModList()
54+
runCallback("OnFrame")
55+
build.skillsTab:PasteSocketGroup("Boneshatter 1/0 1")
56+
runCallback("OnFrame")
57+
build.calcsTab:BuildOutput()
58+
runCallback("OnFrame")
59+
local mainHand = build.calcsTab.mainOutput.MainHand
60+
assert.are.equals(188, mainHand.PhysicalMinBase)
61+
assert.are.equals(252, mainHand.PhysicalMaxBase)
62+
end)
63+
64+
it("makes One Hand Mace skills usable unarmed and applies 'more Unarmed Damage per Strength' to them", function()
65+
build.itemsTab:CreateDisplayItemFromRaw([[
66+
New Item
67+
Stocky Mitts
68+
Has 8 to 12 Physical damage, +3 to +4 per Boss's Face Broken
69+
1% more Unarmed Damage per 5 Strength
70+
Can Attack as though using a One Handed Mace while both of your hand slots are empty
71+
Unarmed Attacks that would use an Equipped One Hand Mace's damage use this Item's damage
72+
]])
73+
build.itemsTab:AddDisplayItem()
74+
-- strip enemy Armour so the small base damage still resolves to a positive hit
75+
build.configTab.input.customMods = "Nearby Enemies have 100% less Armour"
76+
build.configTab:BuildModList()
77+
runCallback("OnFrame")
78+
-- Boneshatter requires a One/Two Hand Mace (no "None"): only usable unarmed thanks to Facebreaker
79+
build.skillsTab:PasteSocketGroup("Boneshatter 1/0 1")
80+
runCallback("OnFrame")
81+
build.calcsTab:BuildOutput()
82+
runCallback("OnFrame")
83+
local mainSkill = build.calcsTab.mainEnv.player.mainSkill
84+
assert.is_truthy(mainSkill)
85+
-- the Mace-only skill resolves to a real (unarmed) attack producing a positive hit
86+
assert.are.equals("Boneshatter", mainSkill.activeEffect.grantedEffect.name)
87+
assert.is_truthy(build.calcsTab.mainOutput.MainHand)
88+
assert.is_true(build.calcsTab.mainOutput.MainHand.AverageHit > 0)
89+
local modDB = build.calcsTab.mainEnv.player.modDB
90+
-- 'more Unarmed Damage per 5 Strength' applies to unarmed Hits (which is what Facebreaker mace attacks are)...
91+
assert.is_true(modDB:Sum("MORE", { flags = ModFlag.Unarmed + ModFlag.Hit }, "Damage") > 0)
92+
-- ...but not to actual weapon (e.g. Sword) Hits
93+
assert.are.equals(0, modDB:Sum("MORE", { flags = ModFlag.Sword + ModFlag.Hit }, "Damage"))
94+
end)
95+
96+
it("auto-imports the Boss's Faces Broken count from character quest stats", function()
97+
build.importTab:ImportQuestRewardConfig({ "57 [BrokenFace|Broken Boss Faces]" })
98+
assert.is_nil(build.configTab.input.configBossFaceBroken)
99+
assert.are.equals(57, build.configTab.placeholder.configBossFaceBroken)
100+
end)
101+
102+
it("supports the Fire damage variant", function()
103+
build.itemsTab:CreateDisplayItemFromRaw([[
104+
New Item
105+
Stocky Mitts
106+
Has 9 to 14 Fire damage, +3 to +5 per Boss's Face Broken
107+
Can Attack as though using a One Handed Mace while both of your hand slots are empty
108+
Unarmed Attacks that would use an Equipped One Hand Mace's damage use this Item's damage
109+
]])
110+
build.itemsTab:AddDisplayItem()
111+
runCallback("OnFrame")
112+
local weaponData1 = build.calcsTab.mainEnv.player.weaponData1
113+
assert.are.equals(9, weaponData1.FacebreakerFireMin)
114+
assert.are.equals(14, weaponData1.FacebreakerFireMax)
115+
end)
116+
117+
it("uses Facebreaker item damage instead of Hollow Palm added Physical damage for mace-compatible staff skills", function()
118+
equipFacebreaker()
119+
build.configTab.input.customMods = "Hollow Palm Technique"
120+
build.configTab:BuildModList()
121+
runCallback("OnFrame")
122+
build.skillsTab:PasteSocketGroup("Rain of Blades 1/0 1")
123+
runCallback("OnFrame")
124+
local skillModList = build.calcsTab.mainEnv.player.mainSkill.skillModList
125+
assert.are.equals(0, skillModList:Sum("BASE", { flags = ModFlag.Attack }, "PhysicalMin"))
126+
assert.are.equals(0, skillModList:Sum("BASE", { flags = ModFlag.Attack }, "PhysicalMax"))
127+
end)
128+
129+
it("keeps Hollow Palm added Physical damage for quarterstaff-only skills", function()
130+
equipFacebreaker()
131+
build.configTab.input.customMods = "Hollow Palm Technique"
132+
build.configTab:BuildModList()
133+
runCallback("OnFrame")
134+
build.skillsTab:PasteSocketGroup("Quarterstaff Strike 1/0 1")
135+
runCallback("OnFrame")
136+
local skillModList = build.calcsTab.mainEnv.player.mainSkill.skillModList
137+
assert.is_true(skillModList:Sum("BASE", { flags = ModFlag.Attack }, "PhysicalMin") > 0)
138+
assert.is_true(skillModList:Sum("BASE", { flags = ModFlag.Attack }, "PhysicalMax") > 0)
139+
end)
140+
end)

spec/System/TestImportTab_spec.lua

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,4 +159,29 @@ describe("ImportTab quest reward import", function()
159159
assert.are.equals(tribal.Options[1], input[tribalVar])
160160
assert.are.equals(seven.Options[3], input[sevenVar])
161161
end)
162+
163+
it("imports Boss's Faces Broken without affecting quest reward matching", function()
164+
local sevenVar, seven = findQuest("Seven Pillars")
165+
local input = importStats({
166+
"+20 to maximum Life",
167+
"5% increased maximum Life",
168+
"5% increased maximum Mana",
169+
"+100 to [Spirit|Spirit]",
170+
"30% increased [Charm] Effect Duration",
171+
"+5% to [Resistances|Fire Resistance]",
172+
"+15% to [Resistances|Cold Resistance]",
173+
"+15% to [Resistances|Lightning Resistance]",
174+
"30% increased Life Recovery from [Flask|Flasks]",
175+
"45% increased Global [Armour], [Evasion] and [EnergyShield|Energy Shield]",
176+
"25% increased [StunThreshold|Stun Threshold]",
177+
"+1 [Charm] Slot",
178+
"58 [BrokenFace|Broken Boss Faces]",
179+
})
180+
181+
assert.is_nil(input.configBossFaceBroken)
182+
assert.are.equals(58, build.configTab.placeholder.configBossFaceBroken)
183+
assert.are.equals(seven.Options[3], input[sevenVar])
184+
runCallback("OnFrame")
185+
assert.is_false(build.configTab.varControls.configBossFaceBroken.shown())
186+
end)
162187
end)

src/Classes/ImportTab.lua

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -656,9 +656,17 @@ function ImportTabClass:ImportQuestRewardConfig(questStats)
656656
end
657657

658658
local statTotals = {}
659+
local updated = false
659660
for _, stat in ipairs(questStats) do
660661
local key, value = statKey(stat)
661-
statTotals[key] = (statTotals[key] or 0) + value
662+
if key == "# broken boss faces" then
663+
if configTab.placeholder.configBossFaceBroken ~= value then
664+
configTab.placeholder.configBossFaceBroken = value
665+
updated = true
666+
end
667+
else
668+
statTotals[key] = (statTotals[key] or 0) + value
669+
end
662670
end
663671

664672
-- Stats shared by 3+ quests can't be split greedily (two +30 Spirit quests make 40/70 ambiguous),
@@ -703,7 +711,6 @@ function ImportTabClass:ImportQuestRewardConfig(questStats)
703711
return true
704712
end
705713

706-
local updated = false
707714
for _, quest in ipairs(data.questRewards) do
708715
if quest.useConfig == true then
709716
local var = "quest" .. quest.Description .. quest.Area .. quest.Info

src/Data/ModCache.lua

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ c["+(9-14)% to Fire Resistance"]={nil,"+(9-14)% to Fire Resistance "}
7878
c["+(9-14)% to Lightning Resistance"]={nil,"+(9-14)% to Lightning Resistance "}
7979
c["+0.15% to Thorns Critical Hit Chance"]={{[1]={flags=32,keywordFlags=0,name="CritChance",type="BASE",value=0.15}},nil}
8080
c["+0.2 metres to Melee Strike Range"]={{[1]={flags=0,keywordFlags=0,name="MeleeWeaponRangeMetre",type="BASE",value=0.2},[2]={flags=0,keywordFlags=0,name="UnarmedRangeMetre",type="BASE",value=0.2}},nil}
81+
c["+0.3 metres to Melee Strike Range while Unarmed"]={{[1]={[1]={type="Condition",var="Unarmed"},flags=0,keywordFlags=0,name="MeleeWeaponRangeMetre",type="BASE",value=0.3},[2]={[1]={type="Condition",var="Unarmed"},flags=0,keywordFlags=0,name="UnarmedRangeMetre",type="BASE",value=0.3}},nil}
8182
c["+0.4 metres to Melee Strike Range if you've dealt a Projectile Attack Hit in the past eight seconds"]={{[1]={[1]={type="Condition",var="HitProjectileRecently"},flags=0,keywordFlags=0,name="MeleeWeaponRangeMetre",type="BASE",value=0.4},[2]={[1]={type="Condition",var="HitProjectileRecently"},flags=0,keywordFlags=0,name="UnarmedRangeMetre",type="BASE",value=0.4}},nil}
8283
c["+0.5 metres to Dodge Roll distance while Surrounded"]={{}," metres to Dodge Roll distance "}
8384
c["+0.5 metres to Dodge Roll distance while Surrounded 10% increased Movement Speed while Surrounded"]={{[1]={[1]={type="Condition",var="Surrounded"},[2]={type="Condition",var="Surrounded"},flags=0,keywordFlags=0,name="MovementSpeed",type="BASE",value=0.5}}," metres to Dodge Roll distance 10% increased "}
@@ -89,6 +90,7 @@ c["+1 Ring Slot"]={{[1]={flags=0,keywordFlags=0,name="AdditionalRingSlot",type="
8990
c["+1 maximum stacks of Puppet Master"]={{}," maximum stacks of Puppet Master "}
9091
c["+1 metre to Dodge Roll distance"]={{}," metre to Dodge Roll distance "}
9192
c["+1 metre to Dodge Roll distance 50% increased Evasion Rating if you've Dodge Rolled Recently"]={{[1]={[1]={type="Condition",var="DodgeRolledRecently"},flags=0,keywordFlags=0,name="Evasion",type="BASE",value=1}}," metre to Dodge Roll distance 50% increased "}
93+
c["+1 to Armour per Strength"]={{[1]={[1]={stat="Str",type="PerStat"},flags=0,keywordFlags=0,name="Armour",type="BASE",value=1}},nil}
9294
c["+1 to Evasion Rating per 1 Item Armour on Equipped Gloves"]={{[1]={[1]={div=1,stat="ArmourOnGloves",type="PerStat"},flags=0,keywordFlags=0,name="Evasion",type="BASE",value=1}},nil}
9395
c["+1 to Evasion Rating per 1 Item Energy Shield on Equipped Helmet"]={{[1]={[1]={div=1,stat="EnergyShieldOnHelmet",type="PerStat"},flags=0,keywordFlags=0,name="Evasion",type="BASE",value=1}},nil}
9496
c["+1 to Level of all Chaos Skills"]={{[1]={flags=0,keywordFlags=0,name="GemProperty",type="LIST",value={key="level",keyOfScaledMod="value",keyword="chaos",value=1}}},nil}
@@ -983,6 +985,7 @@ c["1% increased Spirit Reservation Efficiency of Skills per 20 Tribute"]={{[1]={
983985
c["1% increased damage taken per 10 Tribute"]={{[1]={[1]={actor="parent",div=10,stat="Tribute",type="PerStat"},flags=0,keywordFlags=0,name="DamageTaken",type="INC",value=1}},nil}
984986
c["1% increased maximum Darkness per 1% Chaos Resistance"]={{[1]={[1]={div=1,stat="ChaosResist",type="PerStat"},flags=0,keywordFlags=0,name="Darkness",type="INC",value=1}},nil}
985987
c["1% increased maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type="INC",value=1}},nil}
988+
c["1% more Unarmed Damage per 5 Strength"]={{[1]={[1]={div=5,stat="Str",type="PerStat"},flags=16777220,keywordFlags=0,name="Damage",type="MORE",value=1}},nil}
986989
c["1% of Maximum Life Converted to Energy Shield per 20 Tribute"]={{[1]={[1]={actor="parent",div=20,stat="Tribute",type="PerStat"},flags=0,keywordFlags=0,name="LifeConvertToEnergyShield",type="BASE",value=1}},nil}
987990
c["1% of damage taken Recouped as Life per 10 Tribute"]={{[1]={[1]={actor="parent",div=10,stat="Tribute",type="PerStat"},flags=0,keywordFlags=0,name="LifeRecoup",type="BASE",value=1}},nil}
988991
c["1% of damage taken Recouped as Mana per 10 Tribute"]={{[1]={[1]={actor="parent",div=10,stat="Tribute",type="PerStat"},flags=0,keywordFlags=0,name="ManaRecoup",type="BASE",value=1}},nil}
@@ -3042,6 +3045,7 @@ c["50% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type
30423045
c["50% increased Spell damage for each 200 total Mana you have Spent Recently"]={{[1]={[1]={div=200,type="Multiplier",var="ManaSpentRecently"},flags=2,keywordFlags=0,name="Damage",type="INC",value=50}},nil}
30433046
c["50% increased Spirit"]={{[1]={flags=0,keywordFlags=0,name="Spirit",type="INC",value=50}},nil}
30443047
c["50% increased Strength Requirement"]={{[1]={flags=0,keywordFlags=0,name="StrRequirement",type="INC",value=50}},nil}
3048+
c["50% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=50}},nil}
30453049
c["50% increased Stun Threshold while Channelling"]={{[1]={[1]={type="Condition",var="Channelling"},flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=50}},nil}
30463050
c["50% increased Surrounded Area of Effect"]={{[1]={flags=0,keywordFlags=0,name="SurroundedArea",type="INC",value=50}},nil}
30473051
c["50% increased Thorns damage if you've consumed an Endurance Charge Recently"]={{[1]={[1]={limit=1,type="Multiplier",var="RemovableEnduranceCharge"},flags=32,keywordFlags=0,name="Damage",type="INC",value=50}},nil}
@@ -4691,6 +4695,7 @@ c["Can Allocate Passive Skills from the Sorceress's starting point"]={nil,"Can A
46914695
c["Can Allocate Passive Skills from the Sorceress's starting point Grants 4 Passive Skill Point"]={nil,"Can Allocate Passive Skills from the Sorceress's starting point Grants 4 Passive Skill Point "}
46924696
c["Can Allocate Passive Skills from the Warrior's starting point"]={nil,"Can Allocate Passive Skills from the Warrior's starting point "}
46934697
c["Can Allocate Passive Skills from the Warrior's starting point Grants 4 Passive Skill Point"]={nil,"Can Allocate Passive Skills from the Warrior's starting point Grants 4 Passive Skill Point "}
4698+
c["Can Attack as though using a One Handed Mace while both of your hand slots are empty"]={{[1]={flags=0,keywordFlags=0,name="CanAttackAsOneHandMaceUnarmed",type="FLAG",value=true}},nil}
46944699
c["Can Attack as though using a Quarterstaff while both of your hand slots are empty"]={nil,"Can Attack as though using a Quarterstaff while both of your hand slots are empty "}
46954700
c["Can Attack as though using a Quarterstaff while both of your hand slots are empty Unarmed Attacks that would use an Equipped Quarterstaff's damage have:"]={nil,"Can Attack as though using a Quarterstaff while both of your hand slots are empty Unarmed Attacks that would use an Equipped Quarterstaff's damage have: "}
46964701
c["Can Attack as though using a Quarterstaff while both of your hand slots are empty Unarmed Attacks that would use an Equipped Quarterstaff's damage have: Base Unarmed Physical damage replaced with damage based on their Skill Level"]={nil,"Can Attack as though using a Quarterstaff while both of your hand slots are empty Unarmed Attacks that would use an Equipped Quarterstaff's damage have: Base Unarmed Physical damage replaced with damage based on their Skill Level "}
@@ -5574,6 +5579,7 @@ c["Has 2 Charm Slots"]={{[1]={flags=0,keywordFlags=0,name="CharmLimit",type="BAS
55745579
c["Has 3 Charm Slot"]={{[1]={flags=0,keywordFlags=0,name="CharmLimit",type="BASE",value=3}},nil}
55755580
c["Has 3 Charm Slots"]={{[1]={flags=0,keywordFlags=0,name="CharmLimit",type="BASE",value=3}},nil}
55765581
c["Has 4 Augment Sockets"]={nil,"Has 4 Augment Sockets "}
5582+
c["Has 8 to 12 Physical damage, +3 to +4 per Boss's Face Broken"]={{[1]={flags=0,keywordFlags=0,name="FacebreakerPhysicalMin",type="BASE",value=8},[2]={flags=0,keywordFlags=0,name="FacebreakerPhysicalMax",type="BASE",value=12},[3]={[1]={type="Multiplier",var="BossFaceBroken"},flags=0,keywordFlags=0,name="FacebreakerPhysicalMin",type="BASE",value=3},[4]={[1]={type="Multiplier",var="BossFaceBroken"},flags=0,keywordFlags=0,name="FacebreakerPhysicalMax",type="BASE",value=4}},nil}
55775583
c["Has no Attribute Requirements"]={{[1]={flags=0,keywordFlags=0,name="NoAttributeRequirements",type="FLAG",value=true}},nil}
55785584
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}
55795585
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}
@@ -6412,6 +6418,7 @@ c["Trusted Kinship"]={{[1]={flags=0,keywordFlags=0,name="Keystone",type="LIST",v
64126418
c["Unaffected by Chill during Dodge Roll"]={nil,"Unaffected by Chill during Dodge Roll "}
64136419
c["Unaffected by Chill while Leeching Mana"]={{[1]={[1]={type="Condition",var="LeechingMana"},flags=0,keywordFlags=0,name="SelfChillEffect",type="MORE",value=-100}},nil}
64146420
c["Unaffected by Elemental Weakness"]={nil,"Unaffected by Elemental Weakness "}
6421+
c["Unarmed Attacks that would use an Equipped One Hand Mace's damage use this Item's damage"]={{[1]={flags=0,keywordFlags=0,name="UseFacebreakerItemDamage",type="FLAG",value=true}},nil}
64156422
c["Undead Minions have 25% less maximum Life"]={{[1]={[1]={skillType=127,type="SkillType"},flags=0,keywordFlags=0,name="MinionModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="Life",type="MORE",value=-25}}}},nil}
64166423
c["Unique Tamed Beasts are Possessed by random Azmeri Spirits, changing every 20 seconds"]={nil,"Unique Tamed Beasts are Possessed by random Azmeri Spirits, changing every 20 seconds "}
64176424
c["Unique Tamed Beasts have 30% increased movement speed"]={nil,"Unique Tamed Beasts have 30% increased movement speed "}

src/Data/Uniques/gloves.lua

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@ Critical Hits inflict Impale
2222
Critical Hits cannot Extract Impale
2323
(20-31) to (31-49) Physical Thorns damage
2424
]],[[
25+
Facebreaker
26+
Stocky Mitts
27+
Has 8 to 12 Physical damage, +3 to +4 per Boss's Face Broken
28+
(30-50)% increased Stun Buildup
29+
1% more Unarmed Damage per 5 Strength
30+
+0.3 metres to Melee Strike Range while Unarmed
31+
+1 to Armour per Strength
32+
Can Attack as though using a One Handed Mace while both of your hand slots are empty
33+
Unarmed Attacks that would use an Equipped One Hand Mace's damage use this Item's damage
34+
]],[[
2535
Hateforge
2636
Moulded Mitts
2737
Source: Drops from unique{Trialmaster} in normal{The Trial of Chaos}

src/Export/Uniques/gloves.lua

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,15 @@ UniqueImpaleOnCriticalHit1
2222
UniqueCriticalsCannotConsumeImpale1
2323
UniqueAttackerTakesDamage8
2424
]],[[
25+
Facebreaker
26+
Stocky Mitts
27+
UniqueBaseDamageOverrideForMaceAttacks1
28+
UniqueStunDamageIncrease1
29+
UniqueUnarmedAttackDamagePerXStrength1
30+
UnarmedStrikeRangeUnique1
31+
UniqueGainArmourEqualToStrength1
32+
UniqueOneHandMaceSkillsUsableUnarmed1
33+
]],[[
2534
Hateforge
2635
Moulded Mitts
2736
Source: Drops from unique{Trialmaster} in normal{The Trial of Chaos}

src/Modules/CalcActiveSkill.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -826,7 +826,7 @@ function calcs.buildActiveSkillModList(env, activeSkill)
826826
end
827827

828828
-- Hollow Palm Technique added phys for skills that would use Quarterstaff
829-
if activeSkill.actor.modDB.conditions.HollowPalm and ((activeEffect.grantedEffect.weaponTypes and activeEffect.grantedEffect.weaponTypes.Staff) or skillModList:Flag(activeSkill.skillCfg, "UseHollowPalmDamage")) then
829+
if activeSkill.actor.modDB.conditions.HollowPalm and not (skillModList:Flag(nil, "UseFacebreakerItemDamage") and activeEffect.grantedEffect.weaponTypes and activeEffect.grantedEffect.weaponTypes["One Hand Mace"]) and ((activeEffect.grantedEffect.weaponTypes and activeEffect.grantedEffect.weaponTypes.Staff) or skillModList:Flag(activeSkill.skillCfg, "UseHollowPalmDamage")) then
830830
local gemLevel = activeEffect.level
831831
local physMin = data.hollowPalmAddedPhys[gemLevel and gemLevel or 1][1]
832832
local physMax = data.hollowPalmAddedPhys[gemLevel and gemLevel or 1][2]

0 commit comments

Comments
 (0)