Skip to content

Commit 56087a0

Browse files
author
LocalIdentity
committed
Spinehail
Also adds the condition check for link skills that you have a damageable minion
1 parent f03307e commit 56087a0

6 files changed

Lines changed: 29 additions & 13 deletions

File tree

src/Data/ModCache.lua

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
local c=...c["#% increased Cast Speed with Minion Skills"]={nil,"#% increased Cast Speed with Minion Skills "}
2-
c["#% increased Cast Speed with Minion Skills Minions are Aggressive"]={nil,"#% increased Cast Speed with Minion Skills Minions are Aggressive "}
3-
c["(10-15)% increased Energy Shield Recharge Rate"]={nil,"(10-15)% increased Energy Shield Recharge Rate "}
1+
local c=...c["(10-15)% increased Energy Shield Recharge Rate"]={nil,"(10-15)% increased Energy Shield Recharge Rate "}
42
c["(12-17)% increased Mana Regeneration Rate"]={nil,"(12-17)% increased Mana Regeneration Rate "}
53
c["(15-25)% increased Mana Regeneration Rate"]={nil,"(15-25)% increased Mana Regeneration Rate "}
64
c["(17-23)% increased maximum Mana"]={nil,"(17-23)% increased maximum Mana "}
@@ -4935,6 +4933,7 @@ c["40% increased Brand Attachment range"]={{[1]={flags=0,keywordFlags=0,name="Br
49354933
c["40% increased Brand Damage"]={{[1]={[1]={skillType=75,type="SkillType"},flags=0,keywordFlags=0,name="Damage",type="INC",value=40}},nil}
49364934
c["40% increased Cast Speed"]={{[1]={flags=16,keywordFlags=0,name="Speed",type="INC",value=40}},nil}
49374935
c["40% increased Cast Speed while Ignited"]={{[1]={[1]={type="Condition",var="Ignited"},flags=16,keywordFlags=0,name="Speed",type="INC",value=40}},nil}
4936+
c["40% increased Cast Speed with Minion Skills"]={{[1]={[1]={skillType=9,type="SkillType"},flags=16,keywordFlags=0,name="Speed",type="INC",value=40}},nil}
49384937
c["40% increased Chaos Damage"]={{[1]={flags=0,keywordFlags=0,name="ChaosDamage",type="INC",value=40}},nil}
49394938
c["40% increased Chaos Skill Effect Duration"]={{[1]={flags=0,keywordFlags=256,name="Duration",type="INC",value=40}},nil}
49404939
c["40% increased Charge Recovery"]={{[1]={flags=0,keywordFlags=0,name="FlaskChargeRecovery",type="INC",value=40}},nil}
@@ -7390,8 +7389,8 @@ c["Blind you inflict is Reflected to you 20% chance to gain a Frenzy Charge on H
73907389
c["Blink Arrow and Mirror Arrow have 100% increased Cooldown Recovery Rate"]={{[1]={[1]={includeTransfigured=true,skillNameList={[1]="Blink Arrow",[2]="Mirror Arrow"},type="SkillName"},flags=0,keywordFlags=0,name="CooldownRecovery",type="INC",value=100}},nil}
73917390
c["Blood Magic"]={{[1]={flags=0,keywordFlags=0,name="Keystone",type="LIST",value="Blood Magic"}},nil}
73927391
c["Bloodsoaked Blade"]={{[1]={flags=0,keywordFlags=0,name="Keystone",type="LIST",value="Bloodsoaked Blade"}},nil}
7393-
c["Bow Attacks Sacrifice a random Damageable Minion to fire 3 additional Arrow"]={nil,"Bow Attacks Sacrifice a random Damageable Minion to fire 3 additional Arrow "}
7394-
c["Bow Attacks Sacrifice a random Damageable Minion to fire 3 additional Arrow Increases and Reductions to Minion Damage also affect you"]={nil,"Bow Attacks Sacrifice a random Damageable Minion to fire 3 additional Arrow Increases and Reductions to Minion Damage also affect you "}
7392+
c["Bow Attacks Sacrifice a random Damageable Minion to fire 2 additional Arrow"]={{[1]={[1]={type="Condition",var="SacrificeMinionOnAttack"},[2]={type="Condition",var="HaveDamageableMinion"},flags=0,keywordFlags=0,name="ProjectileCount",type="BASE",value=2}},nil}
7393+
c["Bow Attacks Sacrifice a random Damageable Minion to fire 3 additional Arrow"]={{[1]={[1]={type="Condition",var="SacrificeMinionOnAttack"},[2]={type="Condition",var="HaveDamageableMinion"},flags=0,keywordFlags=0,name="ProjectileCount",type="BASE",value=3}},nil}
73957394
c["Bow Attacks fire 2 additional Arrows"]={{[1]={flags=131072,keywordFlags=0,name="ProjectileCount",type="BASE",value=2}},nil}
73967395
c["Bow Attacks fire 2 additional Arrows if you haven't Cast Dash recently"]={{[1]={[1]={neg=true,type="Condition",var="CastDashRecently"},flags=131072,keywordFlags=0,name="ProjectileCount",type="BASE",value=2}},nil}
73977396
c["Bow Attacks fire an additional Arrow"]={{[1]={flags=131072,keywordFlags=0,name="ProjectileCount",type="BASE",value=1}},nil}
@@ -8968,8 +8967,7 @@ c["Increases and Reductions to Light Radius also apply to Area of Effect at 50%
89688967
c["Increases and Reductions to Light Radius also apply to Damage"]={{[1]={flags=0,keywordFlags=0,name="LightRadiusAppliesToDamage",type="FLAG",value=true}},nil}
89698968
c["Increases and Reductions to Maximum Energy Shield instead apply to Ward"]={{[1]={flags=0,keywordFlags=0,name="EnergyShieldToWard",type="FLAG",value=true}},nil}
89708969
c["Increases and Reductions to Minion Attack Speed also affect you"]={{[1]={flags=0,keywordFlags=0,name="MinionAttackSpeedAppliesToPlayer",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="ImprovedMinionAttackSpeedAppliesToPlayer",type="MAX",value=100}},nil}
8971-
c["Increases and Reductions to Minion Cast Speed also affect you"]={nil,"Increases and Reductions to Minion Cast Speed also affect you "}
8972-
c["Increases and Reductions to Minion Cast Speed also affect you #% increased Cast Speed with Minion Skills"]={nil,"Increases and Reductions to Minion Cast Speed also affect you #% increased Cast Speed with Minion Skills "}
8970+
c["Increases and Reductions to Minion Cast Speed also affect you"]={{[1]={flags=0,keywordFlags=0,name="MinionCastSpeedAppliesToPlayer",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="ImprovedMinionCastSpeedAppliesToPlayer",type="MAX",value=100}},nil}
89738971
c["Increases and Reductions to Minion Damage also affect you"]={{[1]={flags=0,keywordFlags=0,name="MinionDamageAppliesToPlayer",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="ImprovedMinionDamageAppliesToPlayer",type="MAX",value=100}},nil}
89748972
c["Increases and Reductions to Minion Damage also affect you at 150% of their value"]={{[1]={flags=0,keywordFlags=0,name="MinionDamageAppliesToPlayer",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="ImprovedMinionDamageAppliesToPlayer",type="MAX",value=150}},nil}
89758973
c["Increases and Reductions to Projectile Speed also apply to Damage with Bows"]={{[1]={flags=0,keywordFlags=0,name="ProjectileSpeedAppliesToBowDamage",type="FLAG",value=true}},nil}
@@ -9125,7 +9123,7 @@ c["Limited to 1 Runegraft of the Soulwick"]={nil,"Limited to 1 Runegraft of the
91259123
c["Limited to 1 Runegraft of the Warp"]={nil,"Limited to 1 Runegraft of the Warp "}
91269124
c["Limited to 1 Runegraft of the Witchmark"]={nil,"Limited to 1 Runegraft of the Witchmark "}
91279125
c["Link Skills Link to 1 additional random target"]={nil,"Link Skills Link to 1 additional random target "}
9128-
c["Link Skills can target Damageable Minions"]={{[1]={flags=0,keywordFlags=0,name="Condition:CanLinkToMinions",type="FLAG",value=true}},nil}
9126+
c["Link Skills can target Damageable Minions"]={{[1]={[1]={type="Condition",var="HaveDamageableMinion"},flags=0,keywordFlags=0,name="Condition:CanLinkToMinions",type="FLAG",value=true}},nil}
91299127
c["Link Skills have 10% increased Cast Speed"]={{[1]={[1]={skillType=118,type="SkillType"},flags=16,keywordFlags=0,name="Speed",type="INC",value=10}},nil}
91309128
c["Link Skills have 13% increased Cast Speed"]={{[1]={[1]={skillType=118,type="SkillType"},flags=16,keywordFlags=0,name="Speed",type="INC",value=13}},nil}
91319129
c["Link Skills have 13% increased Skill Effect Duration"]={{[1]={[1]={skillType=118,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=13}},nil}

src/Data/Uniques/Special/New.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ Bow Attacks Sacrifice a random Damageable Minion to fire (1-3) additional Arrow
186186
{variant:1}Increases and Reductions to Minion Damage also affect you
187187
{variant:2}Increases and Reductions to Minion Attack Speed also affect you
188188
{variant:3}Increases and Reductions to Minion Cast Speed also affect you
189-
{variant:4}#% increased Cast Speed with Minion Skills
189+
{variant:4}(20-40)% increased Cast Speed with Minion Skills
190190
{variant:5}Minions are Aggressive
191191
{variant:6}+(365-400) to Armour and Evasion Rating
192192
{variant:7}+(365-400) to Evasion Rating

src/Modules/CalcOffence.lua

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -572,16 +572,25 @@ function calcs.offence(env, actor, activeSkill)
572572
end
573573
end
574574
if skillModList:Flag(nil, "MinionAttackSpeedAppliesToPlayer") then
575-
-- Minion Damage conversion from Spiritual Command
576-
local multiplier = (skillModList:Max(skillCfg, "ImprovedMinionAttackSpeedAppliesToPlayer") or 100) / 100
577575
-- Minion Attack Speed conversion from Spiritual Command
576+
local multiplier = (skillModList:Max(skillCfg, "ImprovedMinionAttackSpeedAppliesToPlayer") or 100) / 100
578577
for _, value in ipairs(skillModList:List(skillCfg, "MinionModifier")) do
579578
if value.mod.name == "Speed" and value.mod.type == "INC" and (value.mod.flags == 0 or band(value.mod.flags, ModFlag.Attack) ~= 0) then
580579
local modifiers = calcLib.getConvertedModTags(value.mod, multiplier, true)
581580
skillModList:NewMod("Speed", "INC", value.mod.value * multiplier, value.mod.source, ModFlag.Attack, value.mod.keywordFlags, unpack(modifiers))
582581
end
583582
end
584583
end
584+
if skillModList:Flag(nil, "MinionCastSpeedAppliesToPlayer") then
585+
-- Minion Cast Speed conversion from Spinehail
586+
local multiplier = (skillModList:Max(skillCfg, "ImprovedMinionAttackSpeedAppliesToPlayer") or 100) / 100
587+
for _, value in ipairs(skillModList:List(skillCfg, "MinionModifier")) do
588+
if value.mod.name == "Speed" and value.mod.type == "INC" and (value.mod.flags == 0 or band(value.mod.flags, ModFlag.Cast) ~= 0) then
589+
local modifiers = calcLib.getConvertedModTags(value.mod, multiplier, true)
590+
skillModList:NewMod("Speed", "INC", value.mod.value * multiplier, value.mod.source, ModFlag.Cast, value.mod.keywordFlags, unpack(modifiers))
591+
end
592+
end
593+
end
585594
if skillModList:Flag(nil, "SpellDamageAppliesToAttacks") then
586595
-- Spell Damage conversion from Crown of Eyes, Kinetic Bolt, and the Wandslinger notable
587596
local multiplier = (skillModList:Max(skillCfg, "ImprovedSpellDamageAppliesToAttacks") or 100) / 100

src/Modules/CalcPerform.lua

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1215,6 +1215,9 @@ function calcs.perform(env, skipEHP)
12151215
local limit = activeSkill.skillModList:Sum("BASE", nil, activeSkill.minion.minionData.limit)
12161216
output[activeSkill.minion.minionData.limit] = m_max(limit, output[activeSkill.minion.minionData.limit] or 0)
12171217
end
1218+
if activeSkill.skillTypes[SkillType.CreatesMinion] and not activeSkill.skillTypes[SkillType.MinionsAreUndamageable] then
1219+
modDB:NewMod("Condition:HaveDamageableMinion", "FLAG", true)
1220+
end
12181221
if env.mode_buffs and activeSkill.skillFlags.warcry then
12191222
if activeSkill.activeEffect.grantedEffect.name == "Rallying Cry" and not activeSkill.skillModList:Flag(nil, "CannotShareWarcryBuffs") and not modDB:Flag(nil, "RallyingActive") then
12201223
env.player.modDB:NewMod("RallyingExertMoreDamagePerAlly", "BASE", activeSkill.skillModList:Sum("BASE", env.player.mainSkill.skillCfg, "RallyingCryExertDamageBonus"))

src/Modules/ConfigOptions.lua

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,7 @@ return {
454454
{ var = "multiplierLinkedTargets", type = "count", label = "# of linked Targets:", ifSkill = { "Destructive Link", "Flame Link", "Intuitive Link", "Protective Link", "Soul Link", "Vampiric Link" }, apply = function(val, modList, enemyModList)
455455
modList:NewMod("Multiplier:LinkedTargets", "BASE", val, "Config")
456456
end },
457-
{ var = "linkedToMinion", type = "check", label = "Linked To Minion?", ifSkill = { "Destructive Link", "Flame Link", "Intuitive Link", "Protective Link", "Soul Link", "Vampiric Link" }, ifFlag = "Condition:CanLinkToMinions", apply = function(val, modList, enemyModList)
457+
{ var = "linkedToMinion", type = "check", label = "Linked To Minion?", ifSkill = { "Destructive Link", "Flame Link", "Intuitive Link", "Protective Link", "Soul Link", "Vampiric Link" }, ifFlag = "Condition:CanLinkToMinions", ifFlag = "Condition:HaveDamageableMinion", apply = function(val, modList, enemyModList)
458458
modList:NewMod("Condition:LinkedToMinion", "FLAG", true, "Config")
459459
end },
460460
{ var = "linkedSourceRate", type = "float", label = "Source rate for Intuitive Link", ifSkill = "Intuitive Link", apply = function(val, modList, enemyModList)
@@ -1397,6 +1397,9 @@ Huge sets the radius to 11.
13971397
{ var = "conditionSoulGainPrevention", type = "check", label = "Do you have Soul Gain Prevention?", ifCond = "SoulGainPrevention", apply = function(val, modList, enemyModList)
13981398
modList:NewMod("Condition:SoulGainPrevention", "FLAG", true, "Config", { type = "Condition", var = "Combat" })
13991399
end },
1400+
{ var = "conditionSacrificeMinion", type = "check", label = "Sacrifice Minion on Attack", ifCond = "SacrificeMinionOnAttack", ifFlag = "Condition:HaveDamageableMinion", defaultState = true, tooltip = "Each Attack is sacrificing a damage minion to grant you extra projectiles.", apply = function(val, modList, enemyModList)
1401+
modList:NewMod("Condition:SacrificeMinionOnAttack", "FLAG", true, "Config", { type = "Condition", var = "Combat" })
1402+
end },
14001403
{ var = "conditionUsedWarcryRecently", type = "check", label = "Have you used a Warcry Recently?", {ifFlag = "warcry", ifCond = "UsedWarcryRecently"}, implyCondList = {"UsedWarcryInPast8Seconds", "UsedSkillRecently"}, tooltip = "This also implies that you have used a Skill Recently.", apply = function(val, modList, enemyModList)
14011404
modList:NewMod("Condition:UsedWarcryRecently", "FLAG", true, "Config", { type = "Condition", var = "Combat" })
14021405
modList:NewMod("Condition:UsedWarcryInPast8Seconds", "FLAG", true, "Config", { type = "Condition", var = "Combat" })

src/Modules/ModParser.lua

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -945,6 +945,7 @@ local modFlagList = {
945945
["with herald skills"] = { tag = { type = "SkillType", skillType = SkillType.Herald } },
946946
["with hits from herald skills"] = { tag = { type = "SkillType", skillType = SkillType.Herald }, keywordFlags = KeywordFlag.Hit },
947947
["minion skills"] = { tag = { type = "SkillType", skillType = SkillType.Minion } },
948+
["with minion skills"] = { tag = { type = "SkillType", skillType = SkillType.Minion } },
948949
["of minion skills"] = { tag = { type = "SkillType", skillType = SkillType.Minion } },
949950
["link skills"] = { tag = { type = "SkillType", skillType = SkillType.Link } },
950951
["of link skills"] = { tag = { type = "SkillType", skillType = SkillType.Link } },
@@ -3081,6 +3082,7 @@ local specialModList = {
30813082
mod("ImprovedMinionDamageAppliesToPlayer", "MAX", num, { type = "SkillName", skillNameList = { "Dominating Blow", "Absolution" }, includeTransfigured = true })
30823083
} end,
30833084
["increases and reductions to minion attack speed also affects? you"] = { flag("MinionAttackSpeedAppliesToPlayer"), mod("ImprovedMinionAttackSpeedAppliesToPlayer", "MAX", 100) },
3085+
["increases and reductions to minion cast speed also affects? you"] = { flag("MinionCastSpeedAppliesToPlayer"), mod("ImprovedMinionCastSpeedAppliesToPlayer", "MAX", 100) },
30843086
["increases and reductions to cast speed apply to attack speed at (%d+)%% of their value"] = function(num) return { flag("CastSpeedAppliesToAttacks"), mod("ImprovedCastSpeedAppliesToAttacks", "MAX", num) } end,
30853087
["increases and reductions to cast speed apply to attack speed"] = function(num) return { flag("CastSpeedAppliesToAttacks"), mod("ImprovedCastSpeedAppliesToAttacks", "MAX", 100) } end,
30863088
["increases and reductions to spell damage also apply to attacks"] = { flag("SpellDamageAppliesToAttacks"), mod("ImprovedSpellDamageAppliesToAttacks", "MAX", 100) },
@@ -3884,7 +3886,7 @@ local specialModList = {
38843886
["your movement speed is equal to the highest movement speed among linked players"] = { flag("MovementSpeedEqualHighestLinkedPlayers", { type = "MultiplierThreshold", var = "LinkedTargets", threshold = 1 }), },
38853887
["(%d+)%% increased movement speed while you have at least two linked targets"] = function(num) return { mod("MovementSpeed", "INC", num, { type = "MultiplierThreshold", var = "LinkedTargets", threshold = 2 }) } end,
38863888
["link skills have (%d+)%% increased buff effect if you have linked to a target recently"] = function(num) return { mod("BuffEffect", "INC", num, { type = "SkillType", skillType = SkillType.Link }, { type = "Condition", var = "LinkedRecently" }) } end,
3887-
["link skills can target damageable minions"] = { flag("Condition:CanLinkToMinions") },
3889+
["link skills can target damageable minions"] = { flag("Condition:CanLinkToMinions", { type = "Condition", var = "HaveDamageableMinion"}) },
38883890
["curses are inflicted on you instead of linked targets"] = { mod("ExtraLinkEffect", "LIST", { mod = flag("CurseImmune"), }), },
38893891
["elemental ailments are inflicted on you instead of linked targets"] = { mod("ExtraLinkEffect", "LIST", { mod = flag("ElementalAilmentImmune") }) },
38903892
["non%-unique utility flasks you use apply to linked targets"] = { mod("ExtraLinkEffect", "LIST", { mod = mod("ParentNonUniqueFlasksAppliedToYou", "FLAG", true, { type = "GlobalEffect", effectType = "Global", unscalable = true } ), }) },
@@ -4144,6 +4146,7 @@ local specialModList = {
41444146
["modifiers to number of projectiles do not apply to fireball and rolling magma"] = { flag("NoAdditionalProjectiles", { type = "SkillName", skillNameList = { "Fireball", "Rolling Magma" } }) },
41454147
["attack skills fire an additional projectile while wielding a claw or dagger"] = { mod("ProjectileCount", "BASE", 1, nil, ModFlag.Attack, { type = "ModFlagOr", modFlags = bor(ModFlag.Claw, ModFlag.Dagger) }) },
41464148
["skills fire (%d+) additional projectiles for 4 seconds after you consume a total of 12 steel shards"] = function(num) return { mod("ProjectileCount", "BASE", num, { type = "Condition", var = "Consumed12SteelShardsRecently" }) } end,
4149+
["bow attacks sacrifice a random damageable minion to fire (%d+) additional arrows?"] = function(num) return { mod("ProjectileCount", "BASE", num, { type = "Condition", var = "SacrificeMinionOnAttack" }, { type = "Condition", var = "HaveDamageableMinion" }) } end,
41474150
["non%-projectile chaining lightning skills chain %+(%d+) times"] = function (num) return { mod("ChainCountMax", "BASE", num, { type = "SkillType", skillType = SkillType.Projectile, neg = true }, { type = "SkillType", skillType = SkillType.Chains }, { type = "SkillType", skillType = SkillType.Lightning }) } end,
41484151
["arrows gain damage as they travel farther, dealing up to (%d+)%% increased damage with hits to targets"] = function(num) return { mod("Damage", "INC", num, nil, bor(ModFlag.Bow, ModFlag.Hit), { type = "DistanceRamp", ramp = { {35,0},{70,1} } }) } end,
41494152
["arrows gain critical strike chance as they travel farther, up to (%d+)%% increased critical strike chance"] = function(num) return { mod("CritChance", "INC", num, nil, ModFlag.Bow, { type = "DistanceRamp", ramp = { {35,0},{70,1} } }) } end,

0 commit comments

Comments
 (0)