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,