From 4142a0fb44750999658e12f62c9cc7c470a3f3d7 Mon Sep 17 00:00:00 2001 From: Peechey Date: Mon, 13 Apr 2026 14:57:38 +0000 Subject: [PATCH 1/2] Apply changes from https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/9723 --- src/Data/ModCache.lua.rej | 19 +++++++++++++++++ src/Data/SkillStatMap.lua.rej | 11 ++++++++++ src/Modules/CalcOffence.lua | 2 +- src/Modules/CalcOffence.lua.rej | 38 +++++++++++++++++++++++++++++++++ src/Modules/ModParser.lua.rej | 25 ++++++++++++++++++++++ 5 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 src/Data/ModCache.lua.rej create mode 100644 src/Data/SkillStatMap.lua.rej create mode 100644 src/Modules/CalcOffence.lua.rej create mode 100644 src/Modules/ModParser.lua.rej diff --git a/src/Data/ModCache.lua.rej b/src/Data/ModCache.lua.rej new file mode 100644 index 000000000..4cc03f00f --- /dev/null +++ b/src/Data/ModCache.lua.rej @@ -0,0 +1,19 @@ +diff a/src/Data/ModCache.lua b/src/Data/ModCache.lua (rejected hunks) +@@ -8668,7 +8668,7 @@ c["Exposure you inflict applies at least -18% to the affected Resistance"]={{[1] + c["Extra Gore"]={{},nil} + c["Extra gore"]={{},nil} + c["Far Shot"]={{[1]={flags=0,keywordFlags=0,name="FarShot",type="FLAG",value=true}},nil} +-c["Final Repeat of Attack Skills deals 60% more Damage"]={{[1]={[1]={neg=true,skillTypeList={[1]=90},type="SkillType"},flags=1,keywordFlags=0,name="RepeatFinalDamage",type="MORE",value=60}},nil} ++c["Final Repeat of Attack Skills deals 60% more Damage"]={{[1]={flags=0,keywordFlags=65536,name="RepeatFinalDamage",type="MORE",value=60}},nil} + c["Final Repeat of Spells has 40% increased Area of Effect"]={{[1]={[1]={neg=true,type="Condition",var="CastOnFrostbolt"},[2]={type="Condition",varList={[1]="averageRepeat",[2]="alwaysFinalRepeat"}},flags=2,keywordFlags=0,name="RepeatFinalAreaOfEffect",type="INC",value=40}},nil} + c["Fire Exposure you inflict applies an extra -5% to Fire Resistance"]={{[1]={flags=0,keywordFlags=0,name="ExtraFireExposure",type="BASE",value=-5}},nil} + c["Fire Resistance is 75%"]={{[1]={flags=0,keywordFlags=0,name="FireResist",type="OVERRIDE",value=75}},nil} +@@ -10337,7 +10337,7 @@ c["Non-Damaging Elemental Ailments you inflict have 100% more Effect"]={{[1]={fl + c["Non-Damaging Elemental Ailments you inflict spread to nearby enemies within 2 metres"]={nil,"Non-Damaging Elemental Ailments you inflict spread to nearby enemies within 2 metres "} + c["Non-Damaging Elemental Ailments you inflict spread to nearby enemies within 2 metres Non-Damaging Elemental Ailments you inflict have 100% more Effect"]={nil,"Non-Damaging Elemental Ailments you inflict spread to nearby enemies within 2 metres Non-Damaging Elemental Ailments you inflict have 100% more Effect "} + c["Non-Exerted Attacks deal no Damage"]={nil,"Non-Exerted Attacks deal no Damage "} +-c["Non-Travel Attack Skills Repeat an additional Time"]={{[1]={[1]={neg=true,skillTypeList={[1]=90},type="SkillType"},[2]={type="Condition",varList={[1]="averageRepeat",[2]="alwaysFinalRepeat"}},flags=1,keywordFlags=0,name="RepeatCount",type="BASE",value=1}},nil} ++c["Non-Travel Attack Skills Repeat an additional Time"]={{[1]={[1]={neg=true,skillType=90,type="SkillType"},[2]={type="Condition",varList={[1]="averageRepeat",[2]="alwaysFinalRepeat"}},flags=0,keywordFlags=65536,name="RepeatCount",type="BASE",value=1}},nil} + c["Non-Unique Jewels cause Small and Notable Passive Skills in a Large Radius to"]={nil,"Non-Unique Jewels cause Small and Notable Passive Skills in a Large Radius to "} + c["Non-Unique Utility Flasks you Use apply to Linked Targets"]={{[1]={flags=0,keywordFlags=0,name="ExtraLinkEffect",type="LIST",value={mod={[1]={effectType="Global",type="GlobalEffect",unscalable=true},flags=0,keywordFlags=0,name="ParentNonUniqueFlasksAppliedToYou",type="FLAG",value=true}}}},nil} + c["Non-Vaal Strike Skills target 1 additional nearby Enemy"]={{[1]={[1]={skillType=25,type="SkillType"},[2]={neg=true,skillType=42,type="SkillType"},flags=0,keywordFlags=0,name="AdditionalStrikeTarget",type="BASE",value=1}},nil} diff --git a/src/Data/SkillStatMap.lua.rej b/src/Data/SkillStatMap.lua.rej new file mode 100644 index 000000000..fba5b2287 --- /dev/null +++ b/src/Data/SkillStatMap.lua.rej @@ -0,0 +1,11 @@ +diff a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua (rejected hunks) +@@ -295,6 +295,9 @@ return { + ["skill_repeat_count"] = { + mod("RepeatCount", "BASE", nil, 0, 0, { type = "SkillType", skillType = SkillType.Multicastable }), + }, ++["disable_skill_repeats"] = { ++ flag("CannotRepeat"), ++}, + ["display_skill_minions_level_is_corpse_level"] = { + skill("minionLevelIsEnemyLevel", true), + }, diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 7f237aa2f..fc69993fe 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -5631,7 +5631,7 @@ function calcs.offence(env, actor, activeSkill) if skillFlags.trap or skillFlags.mine then local preSpeed = output.TrapThrowingSpeed or output.MineLayingSpeed local cooldown = output.TrapCooldown or output.Cooldown - useSpeed = (cooldown and cooldown > 0 and 1 / cooldown or preSpeed) / repeats + useSpeed = (cooldown and cooldown > 0 and 1 / cooldown or preSpeed) timeType = skillFlags.trap and "trap throwing" or "mine laying" elseif skillFlags.totem then useSpeed = (output.Cooldown and output.Cooldown > 0 and (output.TotemPlacementSpeed > 0 and output.TotemPlacementSpeed or 1 / output.Cooldown) or output.TotemPlacementSpeed) / repeats diff --git a/src/Modules/CalcOffence.lua.rej b/src/Modules/CalcOffence.lua.rej new file mode 100644 index 000000000..2a6e20c1c --- /dev/null +++ b/src/Modules/CalcOffence.lua.rej @@ -0,0 +1,38 @@ +diff a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua (rejected hunks) +@@ -759,22 +759,17 @@ function calcs.offence(env, actor, activeSkill) + -- Applies DPS multiplier based on projectile count + skillData.dpsMultiplier = skillModList:Sum("BASE", skillCfg, "ProjectileCount") + end +- +- -- attack that are traps and mines can repeat with Fatal Flourish and deal 160% more damage +- local fatalFlourishAttackTrapOrMine = activeSkill.skillTypes[SkillType.Attack] and (activeSkill.skillTypes[SkillType.Trapped] or activeSkill.skillTypes[SkillType.RemoteMined]) ++ + local function repeatSkillTypesCheck(activeSkillTypes) +- if fatalFlourishAttackTrapOrMine or (activeSkillTypes[SkillType.RangedAttack] and (activeSkillTypes[SkillType.Trappable] or activeSkillTypes[SkillType.Mineable])) then +- return true +- end +- local excludeSkillTypes = { SkillType.SummonsTotem, SkillType.HasReservation, SkillType.Instant, SkillType.NonRepeatable, SkillType.CreatesMinion } ++ local excludeSkillTypes = { SkillType.Instant, SkillType.Channel, SkillType.Triggered, SkillType.Retaliation, SkillType.NonRepeatable } + for _, type in ipairs(excludeSkillTypes) do + if activeSkillTypes[type] then + return false + end + end +- return (activeSkillTypes[SkillType.Multicastable] or activeSkillTypes[SkillType.Multistrikeable]) ++ return not skillModList:Flag(nil, "CannotRepeat") and ((activeSkillTypes[SkillType.Attack] or activeSkillTypes[SkillType.Spell])) + end +- output.Repeats = 1 + (repeatSkillTypesCheck(activeSkill.skillTypes) and (skillModList:Sum("BASE", skillCfg, "RepeatCount") or 0) or 0) ++ output.Repeats = 1 + (repeatSkillTypesCheck(activeSkill.skillTypes) and skillModList:Sum("BASE", skillCfg, "RepeatCount") or 0) + if output.Repeats > 1 then + output.RepeatCount = output.Repeats + -- handle all the multipliers from Repeats +@@ -859,6 +852,9 @@ function calcs.offence(env, actor, activeSkill) + skillModList:NewMod("Damage", "MORE", (100 * output.Repeats + DamageFinalMoreValueTotal) / (1 + DamageFinalMoreValueTotal / 100) - 100, value.mod.source, value.mod.flags, value.mod.keywordFlags, unpack(value.mod)) + end + end ++ if skillFlags.trap or skillFlags.mine then ++ skillModList:NewMod("DPS", "MORE", (output.Repeats - 1) * 100, "Repeat Count") ++ end + end + end + if skillModList:Flag(nil, "WeaponPhysAppliesToSpells") then diff --git a/src/Modules/ModParser.lua.rej b/src/Modules/ModParser.lua.rej new file mode 100644 index 000000000..7217f2e5e --- /dev/null +++ b/src/Modules/ModParser.lua.rej @@ -0,0 +1,25 @@ +diff a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua (rejected hunks) +@@ -2398,14 +2398,6 @@ local specialModList = { + -- Exerted Attacks + ["exerted attacks deal (%d+)%% increased damage"] = function(num) return { mod("ExertIncrease", "INC", num, nil, ModFlag.Attack, 0) } end, + ["exerted attacks have (%d+)%% chance to deal double damage"] = function(num) return { mod("ExertDoubleDamageChance", "BASE", num, nil, ModFlag.Attack, 0) } end, +- -- Duelist (Fatal flourish) +- ["final repeat of attack skills deals (%d+)%% more damage"] = function(num) return { mod("RepeatFinalDamage", "MORE", num, nil, ModFlag.Attack, 0, +- { type = "SkillType", skillTypeList = { SkillType.Travel }, neg = true }), +- } end, +- ["non%-travel attack skills repeat an additional time"] = { mod("RepeatCount", "BASE", 1, nil, ModFlag.Attack, 0, +- { type = "SkillType", skillTypeList = { SkillType.Travel }, neg = true }, +- { type = "Condition", varList = {"averageRepeat", "alwaysFinalRepeat"} }) +- }, + -- Ascendant + ["grants (%d+) passive skill points?"] = function(num) return { mod("ExtraPoints", "BASE", num) } end, + ["can allocate passives from the %a+'s starting point"] = { }, +@@ -5496,6 +5488,8 @@ local specialModList = { + ["attacks you use yourself repeat an additional time"] = { + mod("RepeatCount", "BASE", 1, nil, ModFlag.Attack, 0, { type = "SkillType", neg = true, skillTypeList = { SkillType.SummonsTotem, SkillType.RemoteMined, SkillType.Trapped, SkillType.Triggered } }, { type = "Condition", neg = true, var = "usedByMirage" }, { type = "Condition", varList = { "averageRepeat", "alwaysFinalRepeat" } }), + }, ++ ["final repeat of attack skills deals (%d+)%% more damage"] = function(num) return { mod("RepeatFinalDamage", "MORE", num, nil, 0, KeywordFlag.Attack) } end, ++ ["non%-travel attack skills repeat an additional time"] = { mod("RepeatCount", "BASE", 1, nil, 0, KeywordFlag.Attack, { type = "SkillType", skillType = SkillType.Travel, neg = true }, { type = "Condition", varList = { "averageRepeat", "alwaysFinalRepeat" } }) }, + ["viper strike and pestilent strike deal (%d+)%% increased attack damage per frenzy charge"] = function(num) return { mod("Damage", "INC", num, nil, ModFlag.Attack, { type = "Multiplier", var = "FrenzyCharge" }, { type = "SkillName", skillNameList = { "Viper Strike", "Pestilent Strike" }, includeTransfigured = true }) } end, + ["shield charge and chain hook have (%d+)%% increased attack speed per (%d+) rampage kills"] = function(inc, _, num) return { mod("Speed", "INC", inc, nil, ModFlag.Attack, { type = "Multiplier", var = "Rampage", div = num, limit = 1000 / num, limitTotal = true }, { type = "SkillName", skillNameList = { "Shield Charge", "Chain Hook" }, includeTransfigured = true }) } end, + ["tectonic slam and infernal blow deal (%d+)%% increased attack damage per (%d+) armour"] = function(inc, _, num) return { mod("Damage", "INC", inc, nil, ModFlag.Attack, { type = "PerStat", stat = "Armour", div = num }, { type = "SkillName", skillNameList = { "Tectonic Slam", "Infernal Blow" }, includeTransfigured = true }) } end, From bd0fd6653a4cd5627b9238cc10082f7ee7b38991 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Sun, 26 Apr 2026 07:45:24 +1000 Subject: [PATCH 2/2] Fix conflicts --- src/Data/ModCache.lua.rej | 19 ----------------- src/Data/SkillStatMap.lua | 6 ++++++ src/Data/SkillStatMap.lua.rej | 11 ---------- src/Modules/CalcOffence.lua | 14 +++++++++++- src/Modules/CalcOffence.lua.rej | 38 --------------------------------- src/Modules/ModParser.lua | 5 ++--- src/Modules/ModParser.lua.rej | 25 ---------------------- 7 files changed, 21 insertions(+), 97 deletions(-) delete mode 100644 src/Data/ModCache.lua.rej delete mode 100644 src/Data/SkillStatMap.lua.rej delete mode 100644 src/Modules/CalcOffence.lua.rej delete mode 100644 src/Modules/ModParser.lua.rej diff --git a/src/Data/ModCache.lua.rej b/src/Data/ModCache.lua.rej deleted file mode 100644 index 4cc03f00f..000000000 --- a/src/Data/ModCache.lua.rej +++ /dev/null @@ -1,19 +0,0 @@ -diff a/src/Data/ModCache.lua b/src/Data/ModCache.lua (rejected hunks) -@@ -8668,7 +8668,7 @@ c["Exposure you inflict applies at least -18% to the affected Resistance"]={{[1] - c["Extra Gore"]={{},nil} - c["Extra gore"]={{},nil} - c["Far Shot"]={{[1]={flags=0,keywordFlags=0,name="FarShot",type="FLAG",value=true}},nil} --c["Final Repeat of Attack Skills deals 60% more Damage"]={{[1]={[1]={neg=true,skillTypeList={[1]=90},type="SkillType"},flags=1,keywordFlags=0,name="RepeatFinalDamage",type="MORE",value=60}},nil} -+c["Final Repeat of Attack Skills deals 60% more Damage"]={{[1]={flags=0,keywordFlags=65536,name="RepeatFinalDamage",type="MORE",value=60}},nil} - c["Final Repeat of Spells has 40% increased Area of Effect"]={{[1]={[1]={neg=true,type="Condition",var="CastOnFrostbolt"},[2]={type="Condition",varList={[1]="averageRepeat",[2]="alwaysFinalRepeat"}},flags=2,keywordFlags=0,name="RepeatFinalAreaOfEffect",type="INC",value=40}},nil} - c["Fire Exposure you inflict applies an extra -5% to Fire Resistance"]={{[1]={flags=0,keywordFlags=0,name="ExtraFireExposure",type="BASE",value=-5}},nil} - c["Fire Resistance is 75%"]={{[1]={flags=0,keywordFlags=0,name="FireResist",type="OVERRIDE",value=75}},nil} -@@ -10337,7 +10337,7 @@ c["Non-Damaging Elemental Ailments you inflict have 100% more Effect"]={{[1]={fl - c["Non-Damaging Elemental Ailments you inflict spread to nearby enemies within 2 metres"]={nil,"Non-Damaging Elemental Ailments you inflict spread to nearby enemies within 2 metres "} - c["Non-Damaging Elemental Ailments you inflict spread to nearby enemies within 2 metres Non-Damaging Elemental Ailments you inflict have 100% more Effect"]={nil,"Non-Damaging Elemental Ailments you inflict spread to nearby enemies within 2 metres Non-Damaging Elemental Ailments you inflict have 100% more Effect "} - c["Non-Exerted Attacks deal no Damage"]={nil,"Non-Exerted Attacks deal no Damage "} --c["Non-Travel Attack Skills Repeat an additional Time"]={{[1]={[1]={neg=true,skillTypeList={[1]=90},type="SkillType"},[2]={type="Condition",varList={[1]="averageRepeat",[2]="alwaysFinalRepeat"}},flags=1,keywordFlags=0,name="RepeatCount",type="BASE",value=1}},nil} -+c["Non-Travel Attack Skills Repeat an additional Time"]={{[1]={[1]={neg=true,skillType=90,type="SkillType"},[2]={type="Condition",varList={[1]="averageRepeat",[2]="alwaysFinalRepeat"}},flags=0,keywordFlags=65536,name="RepeatCount",type="BASE",value=1}},nil} - c["Non-Unique Jewels cause Small and Notable Passive Skills in a Large Radius to"]={nil,"Non-Unique Jewels cause Small and Notable Passive Skills in a Large Radius to "} - c["Non-Unique Utility Flasks you Use apply to Linked Targets"]={{[1]={flags=0,keywordFlags=0,name="ExtraLinkEffect",type="LIST",value={mod={[1]={effectType="Global",type="GlobalEffect",unscalable=true},flags=0,keywordFlags=0,name="ParentNonUniqueFlasksAppliedToYou",type="FLAG",value=true}}}},nil} - c["Non-Vaal Strike Skills target 1 additional nearby Enemy"]={{[1]={[1]={skillType=25,type="SkillType"},[2]={neg=true,skillType=42,type="SkillType"},flags=0,keywordFlags=0,name="AdditionalStrikeTarget",type="BASE",value=1}},nil} diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index 99a3e994c..1e2c80fc6 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -288,6 +288,12 @@ return { mod("RepeatCount", "BASE", nil, 0, 0, { type = "ModFlagOr", modFlags = bit.bor(ModFlag.WeaponMelee, ModFlag.Unarmed) }), mod("RepeatCount", "BASE", nil, 0, 0, { type = "SkillType", skillType = SkillType.RequiresShield }), }, +["skill_repeat_count"] = { + mod("RepeatCount", "BASE", nil, 0, 0, { type = "SkillType", skillType = SkillType.Multicastable }), +}, +["disable_skill_repeats"] = { + flag("CannotRepeat"), +}, ["display_skill_minions_level_is_corpse_level"] = { skill("minionLevelIsEnemyLevel", true), }, diff --git a/src/Data/SkillStatMap.lua.rej b/src/Data/SkillStatMap.lua.rej deleted file mode 100644 index fba5b2287..000000000 --- a/src/Data/SkillStatMap.lua.rej +++ /dev/null @@ -1,11 +0,0 @@ -diff a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua (rejected hunks) -@@ -295,6 +295,9 @@ return { - ["skill_repeat_count"] = { - mod("RepeatCount", "BASE", nil, 0, 0, { type = "SkillType", skillType = SkillType.Multicastable }), - }, -+["disable_skill_repeats"] = { -+ flag("CannotRepeat"), -+}, - ["display_skill_minions_level_is_corpse_level"] = { - skill("minionLevelIsEnemyLevel", true), - }, diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index fc69993fe..3e87cc8ac 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -919,7 +919,16 @@ function calcs.offence(env, actor, activeSkill) end end end - output.Repeats = 1 + (skillModList:Sum("BASE", skillCfg, "RepeatCount") or 0) + local function repeatSkillTypesCheck(activeSkillTypes) + local excludeSkillTypes = { SkillType.Instant, SkillType.Channel, SkillType.Triggered, SkillType.Retaliation, SkillType.NonRepeatable } + for _, type in ipairs(excludeSkillTypes) do + if activeSkillTypes[type] then + return false + end + end + return not skillModList:Flag(nil, "CannotRepeat") and ((activeSkillTypes[SkillType.Attack] or activeSkillTypes[SkillType.Spell])) + end + output.Repeats = 1 + (repeatSkillTypesCheck(activeSkill.skillTypes) and skillModList:Sum("BASE", skillCfg, "RepeatCount") or 0) if output.Repeats > 1 then output.RepeatCount = output.Repeats -- handle all the multipliers from Repeats @@ -1010,6 +1019,9 @@ function calcs.offence(env, actor, activeSkill) skillModList:NewMod("Damage", "MORE", (100 * output.Repeats + DamageFinalMoreValueTotal) / (1 + DamageFinalMoreValueTotal / 100) - 100, value.mod.source, value.mod.flags, value.mod.keywordFlags, unpack(value.mod)) end end + if skillFlags.trap or skillFlags.mine then + skillModList:NewMod("DPS", "MORE", (output.Repeats - 1) * 100, "Repeat Count") + end end end if skillData.gainPercentBaseWandDamageToSpells then diff --git a/src/Modules/CalcOffence.lua.rej b/src/Modules/CalcOffence.lua.rej deleted file mode 100644 index 2a6e20c1c..000000000 --- a/src/Modules/CalcOffence.lua.rej +++ /dev/null @@ -1,38 +0,0 @@ -diff a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua (rejected hunks) -@@ -759,22 +759,17 @@ function calcs.offence(env, actor, activeSkill) - -- Applies DPS multiplier based on projectile count - skillData.dpsMultiplier = skillModList:Sum("BASE", skillCfg, "ProjectileCount") - end -- -- -- attack that are traps and mines can repeat with Fatal Flourish and deal 160% more damage -- local fatalFlourishAttackTrapOrMine = activeSkill.skillTypes[SkillType.Attack] and (activeSkill.skillTypes[SkillType.Trapped] or activeSkill.skillTypes[SkillType.RemoteMined]) -+ - local function repeatSkillTypesCheck(activeSkillTypes) -- if fatalFlourishAttackTrapOrMine or (activeSkillTypes[SkillType.RangedAttack] and (activeSkillTypes[SkillType.Trappable] or activeSkillTypes[SkillType.Mineable])) then -- return true -- end -- local excludeSkillTypes = { SkillType.SummonsTotem, SkillType.HasReservation, SkillType.Instant, SkillType.NonRepeatable, SkillType.CreatesMinion } -+ local excludeSkillTypes = { SkillType.Instant, SkillType.Channel, SkillType.Triggered, SkillType.Retaliation, SkillType.NonRepeatable } - for _, type in ipairs(excludeSkillTypes) do - if activeSkillTypes[type] then - return false - end - end -- return (activeSkillTypes[SkillType.Multicastable] or activeSkillTypes[SkillType.Multistrikeable]) -+ return not skillModList:Flag(nil, "CannotRepeat") and ((activeSkillTypes[SkillType.Attack] or activeSkillTypes[SkillType.Spell])) - end -- output.Repeats = 1 + (repeatSkillTypesCheck(activeSkill.skillTypes) and (skillModList:Sum("BASE", skillCfg, "RepeatCount") or 0) or 0) -+ output.Repeats = 1 + (repeatSkillTypesCheck(activeSkill.skillTypes) and skillModList:Sum("BASE", skillCfg, "RepeatCount") or 0) - if output.Repeats > 1 then - output.RepeatCount = output.Repeats - -- handle all the multipliers from Repeats -@@ -859,6 +852,9 @@ function calcs.offence(env, actor, activeSkill) - skillModList:NewMod("Damage", "MORE", (100 * output.Repeats + DamageFinalMoreValueTotal) / (1 + DamageFinalMoreValueTotal / 100) - 100, value.mod.source, value.mod.flags, value.mod.keywordFlags, unpack(value.mod)) - end - end -+ if skillFlags.trap or skillFlags.mine then -+ skillModList:NewMod("DPS", "MORE", (output.Repeats - 1) * 100, "Repeat Count") -+ end - end - end - if skillModList:Flag(nil, "WeaponPhysAppliesToSpells") then diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 3feb3402a..d367435c1 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2616,9 +2616,6 @@ local specialModList = { -- Exerted Attacks ["exerted attacks deal (%d+)%% increased damage"] = function(num) return { mod("ExertIncrease", "INC", num, nil, ModFlag.Attack, 0) } end, ["exerted attacks have (%d+)%% chance to deal double damage"] = function(num) return { mod("ExertDoubleDamageChance", "BASE", num, nil, ModFlag.Attack, 0) } end, - -- Duelist (Fatal flourish) - ["final repeat of attack skills deals (%d+)%% more damage"] = function(num) return { mod("RepeatFinalDamage", "MORE", num, nil, ModFlag.Attack, 0) } end, - ["non%-travel attack skills repeat an additional time"] = { mod("RepeatCount", "BASE", 1, nil, ModFlag.Attack, 0, { type = "Condition", varList = {"averageRepeat", "alwaysFinalRepeat"} }) }, -- Leech Related ["life leech is instant"] = { mod("InstantLifeLeech", "BASE", 100), }, ["mana leech is instant"] = { mod("InstantManaLeech", "BASE", 100), }, @@ -5833,6 +5830,8 @@ local specialModList = { mod("PartialIgnoreEnemyPhysicalDamageReduction", "BASE", num), } end, ["hits ignore non%-negative elemental resistances of frozen enemies"] = { flag("IgnoreNonNegativeEleRes", { type = "ActorCondition", actor = "enemy", var = "Frozen" }) }, + ["final repeat of attack skills deals (%d+)%% more damage"] = function(num) return { mod("RepeatFinalDamage", "MORE", num, nil, ModFlag.Attack, 0) } end, + ["non%-travel attack skills repeat an additional time"] = { mod("RepeatCount", "BASE", 1, nil, ModFlag.Attack, 0, { type = "Condition", varList = {"averageRepeat", "alwaysFinalRepeat"} }) }, ["viper strike and pestilent strike deal (%d+)%% increased attack damage per frenzy charge"] = function(num) return { mod("Damage", "INC", num, nil, ModFlag.Attack, { type = "Multiplier", var = "FrenzyCharge" }, { type = "SkillName", skillNameList = { "Viper Strike", "Pestilent Strike" }, includeTransfigured = true }) } end, ["shield charge and chain hook have (%d+)%% increased attack speed per (%d+) rampage kills"] = function(inc, _, num) return { mod("Speed", "INC", inc, nil, ModFlag.Attack, { type = "Multiplier", var = "Rampage", div = num, limit = 1000 / num, limitTotal = true }, { type = "SkillName", skillNameList = { "Shield Charge", "Chain Hook" }, includeTransfigured = true }) } end, ["tectonic slam and infernal blow deal (%d+)%% increased attack damage per (%d+) armour"] = function(inc, _, num) return { mod("Damage", "INC", inc, nil, ModFlag.Attack, { type = "PerStat", stat = "Armour", div = num }, { type = "SkillName", skillNameList = { "Tectonic Slam", "Infernal Blow" }, includeTransfigured = true }) } end, diff --git a/src/Modules/ModParser.lua.rej b/src/Modules/ModParser.lua.rej deleted file mode 100644 index 7217f2e5e..000000000 --- a/src/Modules/ModParser.lua.rej +++ /dev/null @@ -1,25 +0,0 @@ -diff a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua (rejected hunks) -@@ -2398,14 +2398,6 @@ local specialModList = { - -- Exerted Attacks - ["exerted attacks deal (%d+)%% increased damage"] = function(num) return { mod("ExertIncrease", "INC", num, nil, ModFlag.Attack, 0) } end, - ["exerted attacks have (%d+)%% chance to deal double damage"] = function(num) return { mod("ExertDoubleDamageChance", "BASE", num, nil, ModFlag.Attack, 0) } end, -- -- Duelist (Fatal flourish) -- ["final repeat of attack skills deals (%d+)%% more damage"] = function(num) return { mod("RepeatFinalDamage", "MORE", num, nil, ModFlag.Attack, 0, -- { type = "SkillType", skillTypeList = { SkillType.Travel }, neg = true }), -- } end, -- ["non%-travel attack skills repeat an additional time"] = { mod("RepeatCount", "BASE", 1, nil, ModFlag.Attack, 0, -- { type = "SkillType", skillTypeList = { SkillType.Travel }, neg = true }, -- { type = "Condition", varList = {"averageRepeat", "alwaysFinalRepeat"} }) -- }, - -- Ascendant - ["grants (%d+) passive skill points?"] = function(num) return { mod("ExtraPoints", "BASE", num) } end, - ["can allocate passives from the %a+'s starting point"] = { }, -@@ -5496,6 +5488,8 @@ local specialModList = { - ["attacks you use yourself repeat an additional time"] = { - mod("RepeatCount", "BASE", 1, nil, ModFlag.Attack, 0, { type = "SkillType", neg = true, skillTypeList = { SkillType.SummonsTotem, SkillType.RemoteMined, SkillType.Trapped, SkillType.Triggered } }, { type = "Condition", neg = true, var = "usedByMirage" }, { type = "Condition", varList = { "averageRepeat", "alwaysFinalRepeat" } }), - }, -+ ["final repeat of attack skills deals (%d+)%% more damage"] = function(num) return { mod("RepeatFinalDamage", "MORE", num, nil, 0, KeywordFlag.Attack) } end, -+ ["non%-travel attack skills repeat an additional time"] = { mod("RepeatCount", "BASE", 1, nil, 0, KeywordFlag.Attack, { type = "SkillType", skillType = SkillType.Travel, neg = true }, { type = "Condition", varList = { "averageRepeat", "alwaysFinalRepeat" } }) }, - ["viper strike and pestilent strike deal (%d+)%% increased attack damage per frenzy charge"] = function(num) return { mod("Damage", "INC", num, nil, ModFlag.Attack, { type = "Multiplier", var = "FrenzyCharge" }, { type = "SkillName", skillNameList = { "Viper Strike", "Pestilent Strike" }, includeTransfigured = true }) } end, - ["shield charge and chain hook have (%d+)%% increased attack speed per (%d+) rampage kills"] = function(inc, _, num) return { mod("Speed", "INC", inc, nil, ModFlag.Attack, { type = "Multiplier", var = "Rampage", div = num, limit = 1000 / num, limitTotal = true }, { type = "SkillName", skillNameList = { "Shield Charge", "Chain Hook" }, includeTransfigured = true }) } end, - ["tectonic slam and infernal blow deal (%d+)%% increased attack damage per (%d+) armour"] = function(inc, _, num) return { mod("Damage", "INC", inc, nil, ModFlag.Attack, { type = "PerStat", stat = "Armour", div = num }, { type = "SkillName", skillNameList = { "Tectonic Slam", "Infernal Blow" }, includeTransfigured = true }) } end,