Skip to content

Commit b632387

Browse files
LocalIdentityLocalIdentity
andauthored
Add support for Chaos Bloodline (#9070)
Adds support for all the nodes except the one that grants Sacrifice of Blood as it is a complex eHP affecting keystone Co-authored-by: LocalIdentity <localidentity2@gmail.com>
1 parent 17251cc commit b632387

5 files changed

Lines changed: 21 additions & 6 deletions

File tree

‎src/Data/ModCache.lua‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9946,7 +9946,7 @@ c["Non-Aura Curses you inflict are not removed from Dying Enemies Enemies near C
99469946
c["Non-Aura Hexes expire upon reaching 200% of base Effect Non-Aura Hexes gain 20% increased Effect per second"]={{[1]={[1]={actor="enemy",limit=200,limitTotal=true,type="Multiplier",var="CurseDurationExpired"},[2]={neg=true,skillType=43,type="SkillType"},[3]={skillType=108,type="SkillType"},flags=0,keywordFlags=0,name="CurseEffect",type="INC",value=20}},nil}
99479947
c["Non-Aura Hexes expire upon reaching 220% of base Effect"]={nil,"Non-Aura Hexes expire upon reaching 220% of base Effect "}
99489948
c["Non-Aura Hexes expire upon reaching 220% of base Effect Non-Aura Hexes gain 20% increased Effect per second"]={{[1]={[1]={actor="enemy",limit=220,limitTotal=true,type="Multiplier",var="CurseDurationExpired"},[2]={neg=true,skillType=43,type="SkillType"},[3]={skillType=108,type="SkillType"},flags=0,keywordFlags=0,name="CurseEffect",type="INC",value=20}},nil}
9949-
c["Non-Aura Vaal Skills require 25% reduced Souls Per Use during Effect"]={{[1]={[1]={type="Condition",var="UsingFlask"},[2]={neg=true,skillType=43,type="SkillType"},[3]={skillType=42,type="SkillType"},flags=0,keywordFlags=0,name="SoulCost",type="INC",value=-25}},nil}
9949+
c["Non-Aura Vaal Skills require 25% reduced Souls Per Use during Effect"]={{[1]={[1]={neg=true,skillType=43,type="SkillType"},[2]={type="Condition",var="UsingFlask"},flags=0,keywordFlags=512,name="SoulCost",type="INC",value=-25}},nil}
99509950
c["Non-Channelling Skills have -5 to Total Mana Cost while affected by Clarity"]={{[1]={[1]={neg=true,skillType=57,type="SkillType"},[2]={type="Condition",var="AffectedByClarity"},flags=0,keywordFlags=0,name="ManaCost",type="BASE",value=-5}},nil}
99519951
c["Non-Channelling Skills have -9 to Total Mana Cost"]={{[1]={[1]={neg=true,skillType=57,type="SkillType"},flags=0,keywordFlags=0,name="ManaCost",type="BASE",value=-9}},nil}
99529952
c["Non-Chilled Enemies you Poison are Chilled"]={nil,"Non-Chilled Enemies you Poison are Chilled "}

‎src/Modules/CalcActiveSkill.lua‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,9 @@ function calcs.buildActiveSkillModList(env, activeSkill)
508508
if level.storedUses then
509509
activeSkill.skillData.storedUses = level.storedUses
510510
end
511+
if level.vaalStoredUses then
512+
activeSkill.skillData.storedUses = activeSkill.skillData.storedUses or 0 + level.vaalStoredUses
513+
end
511514
end
512515
end
513516

@@ -550,6 +553,9 @@ function calcs.buildActiveSkillModList(env, activeSkill)
550553
if level.storedUses then
551554
activeSkill.skillData.storedUses = level.storedUses
552555
end
556+
if level.vaalStoredUses then
557+
activeSkill.skillData.storedUses = activeSkill.skillData.storedUses or 0 + level.vaalStoredUses
558+
end
553559
if level.soulPreventionDuration then
554560
activeSkill.skillData.soulPreventionDuration = level.soulPreventionDuration
555561
end

‎src/Modules/CalcOffence.lua‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1238,7 +1238,7 @@ function calcs.offence(env, actor, activeSkill)
12381238
end
12391239
if skillData.storedUses then
12401240
local baseUses = skillData.storedUses
1241-
local additionalUses = skillModList:Sum("BASE", skillCfg, "AdditionalCooldownUses")
1241+
local additionalUses = skillModList:Sum("BASE", skillCfg, "AdditionalCooldownUses", "AdditionalUses")
12421242
output.StoredUses = baseUses + additionalUses
12431243
if breakdown then
12441244
breakdown.StoredUses = { s_format("%d ^8(skill use%s)", baseUses, baseUses == 1 and "" or "s" ) }

‎src/Modules/CalcSections.lua‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -632,7 +632,7 @@ return {
632632
}, },
633633
{ label = "Stored Uses", haveOutput = "StoredUses", { format = "{output:StoredUses}",
634634
{ breakdown = "StoredUses" },
635-
{ modName = "AdditionalCooldownUses", cfg = "skill" },
635+
{ modName = { "AdditionalCooldownUses", "AdditionalUses" }, cfg = "skill" },
636636
}, },
637637
{ label = "Duration Mod", flag = "duration", { format = "x {4:output:DurationMod}",
638638
{ breakdown = "DurationMod" },

‎src/Modules/ModParser.lua‎

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ local modNameList = {
178178
["total mana cost of skills"] = "ManaCost",
179179
["life cost of skills"] = "LifeCost",
180180
["rage cost of skills"] = "RageCost",
181+
["souls per use"] = "SoulCost",
181182
["cost of"] = "Cost",
182183
["cost of skills"] = "Cost",
183184
["cost of attacks"] = { "Cost", tag = { type = "SkillType", skillType = SkillType.Attack } },
@@ -417,6 +418,7 @@ local modNameList = {
417418
["effect of auras on you"] = "AuraEffectOnSelf",
418419
["effect of auras on your minions"] = { "AuraEffectOnSelf", addToMinion = true },
419420
["effect of auras from mines"] = { "AuraEffect", keywordFlags = KeywordFlag.Mine },
421+
["effect of auras from your vaal skills"] = { "AuraEffect", keywordFlags = KeywordFlag.Vaal },
420422
["effect of consecrated ground you create"] = "ConsecratedGroundEffect",
421423
["curse effect"] = "CurseEffect",
422424
["effect of curses applied by bane"] = { "CurseEffect", tag = { type = "Condition", var = "AppliedByBane" } },
@@ -1128,6 +1130,8 @@ local preFlagList = {
11281130
["^fire spells [hd][ae][va][el] a? ?"] = { keywordFlags = KeywordFlag.Fire, flags = ModFlag.Spell },
11291131
["^chaos skills [hd][ae][va][el] a? ?"] = { keywordFlags = KeywordFlag.Chaos },
11301132
["^vaal skills [hd][ae][va][el] "] = { keywordFlags = KeywordFlag.Vaal },
1133+
["^vaal skills require "] = { keywordFlags = KeywordFlag.Vaal },
1134+
["^non%-aura vaal skills require "] = { keywordFlags = KeywordFlag.Vaal, tag = { type = "SkillType", skillType = SkillType.Aura, neg = true } },
11311135
["^brand skills [hd][ae][va][el] "] = { tag = { type = "SkillType", skillType = SkillType.Brand } },
11321136
["^channelling skills [hd][ae][va][el] "] = { tag = { type = "SkillType", skillType = SkillType.Channel } },
11331137
["^curse skills [hd][ae][va][el] "] = { keywordFlags = KeywordFlag.Curse },
@@ -1388,6 +1392,7 @@ local modTagList = {
13881392
["per (%d+) maximum mana"] = function(num) return { tag = { type = "PerStat", stat = "Mana", div = num } } end,
13891393
["per (%d+) maximum mana, up to (%d+)%%"] = function(num, _, limit) return { tag = { type = "PerStat", stat = "Mana", div = num, limit = tonumber(limit), limitTotal = true } } end,
13901394
["per (%d+) maximum mana, up to a maximum of (%d+)%%"] = function(num, _, limit) return { tag = { type = "PerStat", stat = "Mana", div = num, limit = tonumber(limit), limitTotal = true } } end,
1395+
["per soul required"] = { tag = { type = "PerStat", stat = "SoulCost" } },
13911396
["per (%d+) accuracy rating"] = function(num) return { tag = { type = "PerStat", stat = "Accuracy", div = num } } end,
13921397
["per (%d+)%% block chance"] = function(num) return { tag = { type = "PerStat", stat = "BlockChance", div = num } } end,
13931398
["per (%d+)%% chance to block on equipped shield"] = function(num) return { tag = { type = "PerStat", stat = "ShieldBlockChance", div = num } } end,
@@ -2101,11 +2106,9 @@ local specialModList = {
21012106
["spend life instead of mana for effects of skills"] = { },
21022107
["skills cost %+(%d+) rage"] = function(num) return { mod("RageCostBase", "BASE", num) } end,
21032108
["warcries cost %+(%d+)%% of life"] = function(num) return { mod("LifeCostBase", "BASE", 1, { type = "PercentStat", stat = "Life", percent = num, floor = true }) } end,
2104-
["non%-aura vaal skills require (%d+)%% reduced souls per use during effect"] = function(num) return { mod("SoulCost", "INC", -num, { type = "Condition", var = "UsingFlask" }, { type = "SkillType", skillType = SkillType.Aura, neg = true }, { type = "SkillType", skillType = SkillType.Vaal }) } end,
2105-
["non%-aura vaal skills require (%d+)%% reduced souls per use"] = function(num) return { mod("SoulCost", "INC", -num, { type = "SkillType", skillType = SkillType.Aura, neg = true }, { type = "SkillType", skillType = SkillType.Vaal }) } end,
2106-
["vaal skills require (%d+)%% reduced souls per use"] = function(num) return { mod("SoulCost", "INC", -num, { type = "SkillType", skillType = SkillType.Vaal }) } end,
21072109
["vaal skills used during effect have (%d+)%% reduced soul gain prevention duration"] = function(num) return { mod("SoulGainPreventionDuration", "INC", -num, { type = "Condition", var = "UsingFlask" }, { type = "SkillType", skillType = SkillType.Vaal }) } end,
21082110
["vaal volcanic fissure and vaal molten strike have (%d+)%% reduced soul gain prevention duration"] = function(num) return { mod("SoulGainPreventionDuration", "INC", -num, { type = "SkillName", skillNameList = { "Volcanic Fissure", "Molten Strike" }, includeTransfigured = true }, { type = "SkillType", skillType = SkillType.Vaal }) } end,
2111+
["vaal skills can store %+(%d+) uses?"] = function(num) return { mod("AdditionalUses", "BASE", num, { type = "SkillType", skillType = SkillType.Vaal }) } end,
21092112
["vaal attack skills cost rage instead of requiring souls to use"] = { flag("CostRageInsteadOfSouls", nil, ModFlag.Attack, { type = "SkillType", skillType = SkillType.Vaal }) },
21102113
["vaal attack skills you use yourself cost rage instead of requiring souls"] = { flag("CostRageInsteadOfSouls", nil, ModFlag.Attack, { type = "SkillType", skillType = SkillType.Vaal }) },
21112114
["you cannot gain rage during soul gain prevention"] = { mod("RageRegen", "MORE", -100, { type = "Condition", var = "SoulGainPrevention" }) },
@@ -2248,6 +2251,12 @@ local specialModList = {
22482251
["shepherd of souls"] = {
22492252
flag("ShepherdOfSouls")
22502253
},
2254+
["you have shepherd of souls if at least (%d+) corrupted items are equipped"] = function(num) return {
2255+
flag("ShepherdOfSouls", { type = "MultiplierThreshold", var = "CorruptedItem", threshold = num })
2256+
} end,
2257+
["you have everlasting sacrifice if at least (%d+) corrupted items are equipped"] = function(num) return {
2258+
flag("EverlastingSacrifice", { type = "MultiplierThreshold", var = "CorruptedItem", threshold = num })
2259+
} end,
22512260
["adds (%d+) to (%d+) attack physical damage to melee skills per (%d+) dexterity while you are unencumbered"] = function(_, min, max, dex) return { -- Hollow Palm 3 suffixes
22522261
mod("PhysicalMin", "BASE", tonumber(min), nil, ModFlag.Melee, KeywordFlag.Attack, { type = "PerStat", stat = "Dex", div = tonumber(dex) }, { type = "Condition", var = "Unencumbered" }),
22532262
mod("PhysicalMax", "BASE", tonumber(max), nil, ModFlag.Melee, KeywordFlag.Attack, { type = "PerStat", stat = "Dex", div = tonumber(dex) }, { type = "Condition", var = "Unencumbered" }),

0 commit comments

Comments
 (0)