Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 2 additions & 6 deletions src/Data/ModCache.lua
Original file line number Diff line number Diff line change
Expand Up @@ -5903,13 +5903,9 @@ c["Remnants can be collected from 50% further away All Flames of Chayula that yo
c["Remnants can be collected from 50% further away All Flames of Chayula that you manifest are Purple"]={nil,"Remnants can be collected from 50% further away All Flames of Chayula that you manifest are Purple "}
c["Remnants can be collected from 50% further away All Flames of Chayula that you manifest are Red"]={nil,"Remnants can be collected from 50% further away All Flames of Chayula that you manifest are Red "}
c["Remnants can be collected from 50% further away Remnants you create reappear once, 3 seconds after being collected"]={nil,"Remnants can be collected from 50% further away Remnants you create reappear once, 3 seconds after being collected "}
c["Remnants have 10% increased effect"]={nil,"Remnants have 10% increased effect "}
c["Remnants have 10% increased effect"]={{[1]={flags=0,keywordFlags=0,name="RemnantEffect",type="INC",value=10}},nil}
c["Remnants have 2% increased effect per 10 Tribute"]={nil,"Remnants have 2% increased effect per 10 Tribute "}
c["Remnants have 50% increased effect"]={nil,"Remnants have 50% increased effect "}
c["Remnants have 50% increased effect Remnants can be collected from 50% further away"]={nil,"Remnants have 50% increased effect Remnants can be collected from 50% further away "}
c["Remnants have 50% increased effect Remnants can be collected from 50% further away All Flames of Chayula that you manifest are Blue"]={nil,"Remnants have 50% increased effect Remnants can be collected from 50% further away All Flames of Chayula that you manifest are Blue "}
c["Remnants have 50% increased effect Remnants can be collected from 50% further away All Flames of Chayula that you manifest are Purple"]={nil,"Remnants have 50% increased effect Remnants can be collected from 50% further away All Flames of Chayula that you manifest are Purple "}
c["Remnants have 50% increased effect Remnants can be collected from 50% further away All Flames of Chayula that you manifest are Red"]={nil,"Remnants have 50% increased effect Remnants can be collected from 50% further away All Flames of Chayula that you manifest are Red "}
c["Remnants have 50% increased effect"]={{[1]={flags=0,keywordFlags=0,name="RemnantEffect",type="INC",value=50}},nil}
c["Remnants you create reappear once, 3 seconds after being collected"]={nil,"Remnants you create reappear once, 3 seconds after being collected "}
c["Remove Ignite when you Warcry"]={nil,"Remove Ignite when you Warcry "}
c["Remove a Curse after Channelling for 2 seconds"]={nil,"Remove a Curse after Channelling for 2 seconds "}
Expand Down
19 changes: 19 additions & 0 deletions src/Data/SkillStatMap.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2820,6 +2820,25 @@ return {
["supported_minion_skill_gem_level_+"] = {
mod("SupportedGemProperty", "LIST", { keyword = "grants_active_skill", key = "level", value = nil }, 0, 0, { type = "SkillType", skillType = SkillType.Minion }),
},
-- Remnant stats
["remnant_effect_+%"] = {
mod("RemnantEffect", "INC", nil),
},
["life_remnants_gain_per_globe"] = {
mod("LifeGainPerRemnant", "BASE", nil),
},
["mana_remnants_mana_gain_per_globe"] = {
mod("ManaGainPerRemnant", "BASE", nil),
},
["breach_flame_life_leech_%"] = {
mod("BreachFlameLifeLeech", "BASE", nil),
},
["breach_flame_mana_leech_%"] = {
mod("BreachFlameManaLeech", "BASE", nil),
},
["breach_flame_chaos_addition_%"] = {
mod("BreachFlameChaosGain", "BASE", nil),
},
-- Display only
["quality_display_base_additional_arrows_is_gem"] = {
-- Display only
Expand Down
62 changes: 62 additions & 0 deletions src/Modules/CalcOffence.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1421,6 +1421,68 @@ function calcs.offence(env, actor, activeSkill)
breakdown.LinkEffectMod = breakdown.mod(skillModList, skillCfg, "LinkEffect", "BuffEffect")
end
end
if activeSkill.skillTypes[SkillType.GeneratesRemnants] then
local remnantEffectMod = calcLib.mod(skillModList, skillCfg, "RemnantEffect")
output.RemnantEffectMod = remnantEffectMod
if breakdown then
breakdown.RemnantEffectMod = breakdown.mod(skillModList, skillCfg, "RemnantEffect")
end
local baseLifeGain = skillModList:Sum("BASE", skillCfg, "LifeGainPerRemnant")
if baseLifeGain > 0 then
output.LifeGainPerRemnant = m_floor(baseLifeGain * remnantEffectMod)
if breakdown then
breakdown.LifeGainPerRemnant = {
s_format("%d ^8(base life per remnant)", baseLifeGain),
s_format("x %.2f ^8(remnant effect modifier)", remnantEffectMod),
s_format("= %d ^8(life per remnant)", output.LifeGainPerRemnant),
}
end
end
local baseManaGain = skillModList:Sum("BASE", skillCfg, "ManaGainPerRemnant")
if baseManaGain > 0 then
output.ManaGainPerRemnant = m_floor(baseManaGain * remnantEffectMod)
if breakdown then
breakdown.ManaGainPerRemnant = {
s_format("%d ^8(base mana per remnant)", baseManaGain),
s_format("x %.2f ^8(remnant effect modifier)", remnantEffectMod),
s_format("= %d ^8(mana per remnant)", output.ManaGainPerRemnant),
}
end
end
local baseChaosGainPerFlame = skillModList:Sum("BASE", skillCfg, "BreachFlameChaosGain")
if baseChaosGainPerFlame > 0 then
output.ChaosGainPerFlame = m_floor(baseChaosGainPerFlame * remnantEffectMod)
if breakdown then
breakdown.ChaosGainPerFlame = {
s_format("%d%% ^8(base chaos gain per flame)", baseChaosGainPerFlame),
s_format("x %.2f ^8(remnant effect modifier)", remnantEffectMod),
s_format("= %d%% ^8(damage gained as chaos per flame)", output.ChaosGainPerFlame),
}
end
end
local baseLifeLeech = skillModList:Sum("BASE", skillCfg, "BreachFlameLifeLeech")
if baseLifeLeech > 0 then
output.BreachFlameLifeLeech = m_floor(baseLifeLeech * remnantEffectMod)
if breakdown then
breakdown.BreachFlameLifeLeech = {
s_format("%d%% ^8(base life leech per flame)", baseLifeLeech),
s_format("x %.2f ^8(remnant effect modifier)", remnantEffectMod),
s_format("= %d%% ^8(life leech per flame)", output.BreachFlameLifeLeech),
}
end
end
local baseManaLeech = skillModList:Sum("BASE", skillCfg, "BreachFlameManaLeech")
if baseManaLeech > 0 then
output.BreachFlameManaLeech = m_floor(baseManaLeech * remnantEffectMod)
if breakdown then
breakdown.BreachFlameManaLeech = {
s_format("%d%% ^8(base mana leech per flame)", baseManaLeech),
s_format("x %.2f ^8(remnant effect modifier)", remnantEffectMod),
s_format("= %d%% ^8(mana leech per flame)", output.BreachFlameManaLeech),
}
end
end
end
if activeSkill.skillTypes[SkillType.IceCrystal] then
local IceCrystalLifeMod = calcLib.mod(skillModList, skillCfg, "IceCrystalLife")
local baseIceCrystal = skillModList:Sum("BASE", skillCfg, "IceCrystalLifeBase")
Expand Down
11 changes: 11 additions & 0 deletions src/Modules/CalcPerform.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1178,6 +1178,17 @@ function calcs.perform(env, skipEHP)
-- Set trigger time to 1 min in ms ( == 6000 ). Technically any large value would do.
activeSkill.skillData.triggerTime = 60 * 1000
end
-- Into the Breach: only purple flames get calculated
if activeSkill.activeEffect.grantedEffect.name == "Into the Breach" then
local purpleFlameCount = modDB:Sum("BASE", nil, "Multiplier:PurpleFlamesCount")
local baseChaosGain = activeSkill.skillModList:Sum("BASE", nil, "BreachFlameChaosGain")
if purpleFlameCount > 0 and baseChaosGain > 0 then
local remnantEffectMod = calcLib.mod(activeSkill.skillModList, nil, "RemnantEffect")
local doubled = modDB:Flag(nil, "BreachFlameEffectDoubled") and 2 or 1
local chaosGainPerFlame = m_floor(baseChaosGain * remnantEffectMod * doubled)
modDB:NewMod("DamageGainAsChaos", "BASE", chaosGainPerFlame * purpleFlameCount, "Into the Breach", { type = "GlobalEffect", effectType = "Buff" })
end
end
-- The Saviour
if activeSkill.activeEffect.grantedEffect.name == "Reflection" or activeSkill.skillData.triggeredBySaviour then
activeSkill.infoMessage = "Triggered by a Crit from The Saviour"
Expand Down
19 changes: 19 additions & 0 deletions src/Modules/CalcSections.lua
Original file line number Diff line number Diff line change
Expand Up @@ -745,6 +745,25 @@ return {
{ breakdown = "LinkEffectMod" },
{ modName = { "LinkEffect", "BuffEffect" }, cfg = "skill" },
}, },
{ label = "Remnant Effect Mod", haveOutput = "RemnantEffectMod", { format = "x {2:output:RemnantEffectMod}",
{ breakdown = "RemnantEffectMod" },
{ modName = "RemnantEffect", cfg = "skill" },
}, },
{ label = "Life per Remnant", haveOutput = "LifeGainPerRemnant", { format = "{0:output:LifeGainPerRemnant}",
{ breakdown = "LifeGainPerRemnant" },
}, },
{ label = "Mana per Remnant", haveOutput = "ManaGainPerRemnant", { format = "{0:output:ManaGainPerRemnant}",
{ breakdown = "ManaGainPerRemnant" },
}, },
{ label = "Chaos Gain/Flame", haveOutput = "ChaosGainPerFlame", { format = "{0:output:ChaosGainPerFlame}%",
{ breakdown = "ChaosGainPerFlame" },
}, },
{ label = "Life Leech/Flame", haveOutput = "BreachFlameLifeLeech", { format = "{0:output:BreachFlameLifeLeech}%",
{ breakdown = "BreachFlameLifeLeech" },
}, },
{ label = "Mana Leech/Flame", haveOutput = "BreachFlameManaLeech", { format = "{0:output:BreachFlameManaLeech}%",
{ breakdown = "BreachFlameManaLeech" },
}, },
{ label = "Area of Effect Mod", haveOutput = "AreaOfEffectMod", { format = "x {2:output:AreaOfEffectMod}",
{ breakdown = "AreaOfEffectMod" },
{ modName = "AreaOfEffect", cfg = "skill" },
Expand Down
10 changes: 4 additions & 6 deletions src/Modules/ConfigOptions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -206,12 +206,6 @@ local configSettings = {
{ var = "arcaneCloakUsedRecentlyCheck", type = "check", label = "Include in ^x7070FFMana ^7spent Recently?", ifSkill = "Arcane Cloak", tooltip = "When enabled, the mana spent by Arcane Cloak used at full mana \nwill be added to the value provided in # of ^x7070FFMana ^7spent Recently.", apply = function(val, modList, enemyModList)
modList:NewMod("Condition:ArcaneCloakUsedRecently", "FLAG", true, "Config")
end },
{ label = "Flame of Chayula Breaches:", ifSkill = "Into the Breach" },
{ var = "flameStacks", type = "count", label = "Chayula Breach Flames:", tooltip = "Amount of Red, Blue & Purple Flames consumed during duration (max 10)", ifSkill = { "Into the Breach" }, apply = function(val, modList, enemyModList)
modList:NewMod("Multiplier:BreachFlamesCount", "BASE", m_min(val, 10), "Config")
modList:NewMod("Multiplier:FlameEffect", "BASE", 1, "Config")
modList:NewMod("DamageGainAsChaos", "BASE", 7, "Config", { type = "Multiplier", var = "BreachFlamesCount" }, { type = "Multiplier", var = "FlameEffect" }, { type = "GlobalEffect", effectType = "Buff" })
end },
{ label = "Aspect of the Avian:", ifSkill = "Aspect of the Avian" },
{ var = "aspectOfTheAvianAviansMight", type = "check", label = "Is Avian's Might active?", ifSkill = "Aspect of the Avian", apply = function(val, modList, enemyModList)
modList:NewMod("Condition:AviansMightActive", "FLAG", true, "Config")
Expand Down Expand Up @@ -420,6 +414,10 @@ local configSettings = {
{ var = "intensifyIntensity", type = "count", label = "# of Intensity:", ifSkill = { "Intensify", "Crackling Lance", "Pinpoint" }, apply = function(val, modList, enemyModList)
modList:NewMod("Multiplier:Intensity", "BASE", val, "Config")
end },
{ label = "Into the Breach:", ifSkill = "Into the Breach" },
{ var = "purpleFlameStacks", type = "count", label = "Purple Flames collected:", tooltip = "Number of Purple Flames of Chayula collected (max 10).", ifSkill = { "Into the Breach" },apply = function(val, modList, enemyModList)
modList:NewMod("Multiplier:PurpleFlamesCount", "BASE", m_min(val, 10), "Config")
end },
{ label = "Link Skills:", ifSkill = { "Destructive Link", "Flame Link", "Intuitive Link", "Protective Link", "Soul Link", "Vampiric Link" } },
{ 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)
modList:NewMod("Multiplier:LinkedTargets", "BASE", val, "Config")
Expand Down
3 changes: 2 additions & 1 deletion src/Modules/ModParser.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3288,7 +3288,7 @@ local specialModList = {
["(%d+)%% chance to gain (%d+)%% of damage with hits as extra (%a+) damage"] = function(num, _, num2, strType) return {
mod("DamageGainAs"..firstToUpper(strType), "BASE", tonumber(num2) * (num / 100), nil, ModFlag.Hit, 0),
} end,
["effect and duration of flames of chayula on you is doubled"] = { mod("Multiplier:FlameEffect", "BASE", 1) } ,
["effect and duration of flames of chayula on you is doubled"] = { flag("BreachFlameEffectDoubled") },
["mana leech recovers based on other damage types damage as well as physical damage"] = { -- legacy wording
flag("ManaLeechBasedOnElementalDamage"),
flag("ManaLeechBasedOnChaosDamage"),
Expand Down Expand Up @@ -5358,6 +5358,7 @@ local specialModList = {
["while a pinnacle atlas boss is in your presence, flasks applied to you have (%d+)%% increased effect"] = function(num) return { mod("FlaskEffect", "INC", num, { type = "ActorCondition", actor = "enemy", var = "PinnacleBoss" }, { type = "ActorCondition", actor = "player"}) } end,
["magic utility flasks applied to you have (%d+)%% increased effect"] = function(num) return { mod("MagicUtilityFlaskEffect", "INC", num, { type = "ActorCondition", actor = "player"}) } end,
["flasks applied to you have (%d+)%% reduced effect"] = function(num) return { mod("FlaskEffect", "INC", -num, { type = "ActorCondition", actor = "player"}) } end,
["remnants have (%d+)%% increased effect"] = function(num) return { mod("RemnantEffect", "INC", num) } end,
["(%d+)%% increased charm cooldown recovery rate"] = function(num) return { mod("CharmCooldownRecovery", "INC", num) } end,
["adds (%d+) passive skills"] = function(num) return { mod("JewelData", "LIST", { key = "clusterJewelNodeCount", value = num }) } end,
["1 added passive skill is a jewel socket"] = { mod("JewelData", "LIST", { key = "clusterJewelSocketCount", value = 1 }) },
Expand Down