From b0ebe8d481d150b128dd970a14861692b2afc462 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Sat, 8 Feb 2025 18:34:56 +0100 Subject: [PATCH 1/8] Added support for infernal flame --- src/Data/ModCache.lua | 11 ++--------- src/Modules/BuildDisplayStats.lua | 2 ++ src/Modules/CalcDefence.lua | 12 ++++++++++++ src/Modules/CalcOffence.lua | 1 + src/Modules/ModParser.lua | 8 ++++++++ 5 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 930e53b57c..efd503b12b 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -2714,10 +2714,7 @@ c["Gain Endurance Charges instead of Power Charges"]={nil,"Endurance Charges ins c["Gain Energy Shield from equipped Body Armour as extra maximum Life"]={{[1]={[1]={div=1,stat="EnergyShieldOnBody Armour",type="PerStat"},flags=0,keywordFlags=0,name="Life",type="BASE",value=1}},nil} c["Gain Frenzy Charges instead of Endurance Charges"]={nil,"Frenzy Charges instead of Endurance Charges "} c["Gain Frenzy Charges instead of Endurance Charges Gain Endurance Charges instead of Power Charges"]={nil,"Frenzy Charges instead of Endurance Charges Gain Endurance Charges instead of Power Charges "} -c["Gain Infernal Flame instead of spending Mana for Skill costs"]={nil,"Infernal Flame instead of spending Mana for Skill costs "} -c["Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum"]={nil,"Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum "} -c["Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame"]={nil,"Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame "} -c["Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame 10% of Infernal Flame lost per second if none was gained in the past 2 seconds"]={nil,"Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame 10% of Infernal Flame lost per second if none was gained in the past 2 seconds "} +c["Gain Infernal Flame instead of spending Mana for Skill costs"]={{[1]={flags=0,keywordFlags=0,name="CostInfernalFlameInsteadOfMana"}},nil} c["Gain Physical Thorns damage equal to 2% of Armour from equipped Body Armour"]={nil,"Physical Thorns damage equal to 2% of Armour from equipped Body Armour "} c["Gain Power Charges instead of Frenzy Charges"]={nil,"Power Charges instead of Frenzy Charges "} c["Gain Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges"]={nil,"Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges "} @@ -2911,11 +2908,7 @@ c["Maximum 10 Demonflame"]={nil,"Maximum 10 Demonflame "} c["Maximum 10 Fragile Regrowth"]={nil,"Maximum 10 Fragile Regrowth "} c["Maximum 10 Fragile Regrowth 0.5% of Life Regenerated per second per Fragile Regrowth"]={nil,"Maximum 10 Fragile Regrowth 0.5% of Life Regenerated per second per Fragile Regrowth "} c["Maximum Life becomes 1, Immune to Chaos Damage"]={{[1]={flags=0,keywordFlags=0,name="ChaosInoculation",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="ChaosDamageTaken",type="MORE",value=-100}},nil} -c["Maximum Mana is replaced by Maximum Infernal Flame"]={nil,"Maximum Mana is replaced by Maximum Infernal Flame "} -c["Maximum Mana is replaced by Maximum Infernal Flame Gain Infernal Flame instead of spending Mana for Skill costs"]={nil,"Maximum Mana is replaced by Maximum Infernal Flame Gain Infernal Flame instead of spending Mana for Skill costs "} -c["Maximum Mana is replaced by Maximum Infernal Flame Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum"]={nil,"Maximum Mana is replaced by Maximum Infernal Flame Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum "} -c["Maximum Mana is replaced by Maximum Infernal Flame Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame"]={nil,"Maximum Mana is replaced by Maximum Infernal Flame Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame "} -c["Maximum Mana is replaced by Maximum Infernal Flame Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame 10% of Infernal Flame lost per second if none was gained in the past 2 seconds"]={nil,"Maximum Mana is replaced by Maximum Infernal Flame Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame 10% of Infernal Flame lost per second if none was gained in the past 2 seconds "} +c["Maximum Mana is replaced by Maximum Infernal Flame"]={{[1]={flags=0,keywordFlags=0,name="ManaToInfernalFlame",type="FLAG",value=true}},nil} c["Meta Skills gain 15% increased Energy"]={nil,"Meta Skills gain 15% increased Energy "} c["Meta Skills gain 35% more Energy"]={nil,"Meta Skills gain 35% more Energy "} c["Meta Skills gain 8% increased Energy"]={nil,"Meta Skills gain 8% increased Energy "} diff --git a/src/Modules/BuildDisplayStats.lua b/src/Modules/BuildDisplayStats.lua index 408454f86d..726fefcd82 100644 --- a/src/Modules/BuildDisplayStats.lua +++ b/src/Modules/BuildDisplayStats.lua @@ -74,6 +74,7 @@ local displayStats = { { stat = "BrandAttachmentRangeMetre", label = "Attachment Range", fmt = ".1fm", flag = "brand" }, { stat = "BrandTicks", label = "Activations per Brand", fmt = "d", flag = "brand" }, { stat = "ManaCost", label = "Mana Cost", fmt = "d", color = colorCodes.MANA, pool = "ManaUnreserved", compPercent = true, lowerIsBetter = true, condFunc = function(v,o) return o.ManaHasCost end }, + { stat = "InfernalFlameCost", label = "Infernal Flame buildup", fmt = "d", color = colorCodes.MANA, pool = "ManaUnreserved", compPercent = true, lowerIsBetter = true, condFunc = function(v,o) return o.ManaHasCost end }, { stat = "ManaPercentCost", label = "Mana Cost", fmt = "d%%", color = colorCodes.MANA, pool = "ManaUnreservedPercent", compPercent = true, lowerIsBetter = true, condFunc = function(v,o) return o.ManaPercentHasCost end }, { stat = "ManaPerSecondCost", label = "Mana Cost per second", fmt = ".2f", color = colorCodes.MANA, pool = "ManaUnreserved", compPercent = true, lowerIsBetter = true, condFunc = function(v,o) return o.ManaPerSecondHasCost end }, { stat = "ManaPercentPerSecondCost", label = "Mana Cost per second", fmt = ".2f%%", color = colorCodes.MANA, pool = "ManaUnreservedPercent", compPercent = true, lowerIsBetter = true, condFunc = function(v,o) return o.ManaPercentPerSecondHasCost end }, @@ -122,6 +123,7 @@ local displayStats = { { stat = "LifeLeechGainRate", label = "Life Leech/On Hit Rate", fmt = ".1f", color = colorCodes.LIFE, compPercent = true }, { stat = "LifeLeechGainPerHit", label = "Life Leech/Gain per Hit", fmt = ".1f", color = colorCodes.LIFE, compPercent = true }, { }, + { stat = "InfernalFlame", label = "Max Infernal Flame", fmt = "d", color = colorCodes.LIFE}, { stat = "Mana", label = "Total Mana", fmt = "d", color = colorCodes.MANA, compPercent = true }, { stat = "Spec:ManaInc", label = "%Inc Mana from Tree", color = colorCodes.MANA, fmt = "d%%" }, { stat = "ManaUnreserved", label = "Unreserved Mana", fmt = "d", color = colorCodes.MANA, condFunc = function(v,o) return v < o.Mana end, compPercent = true, warnFunc = function(v) return v < 0 and "Your unreserved Mana is negative" end }, diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index 44b163591a..dc00c2feea 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -73,6 +73,7 @@ function calcs.doActorLifeManaSpirit(actor) local override = modDB:Override(nil, res) output[res.."HasOverride"] = override ~= nil output[res] = override or m_max(round((base * (1 - conv/100) + extra) * (1 + inc/100) * more), 1) + if breakdown then if inc ~= 0 or more ~= 1 or conv ~= 0 or extra ~= 0 then breakdown[res][1] = s_format("%g ^8(base)", base) @@ -97,6 +98,15 @@ function calcs.doActorLifeManaSpirit(actor) end end end + if modDB:Flag(nil, "ManaToInfernalFlame") then + output.InfernalFlame = output.Mana + output.Mana = 0 + output.ManaRecoveryRate = 0 + --These mods sets mana to 0 after mana has been calculated and infernal flame has been set to prevent mana from showing up in calcs tab + modDB:NewMod("Mana", "OVERRIDE", 0) + modDB:NewMod("ManaRecovery", "OVERRIDE", 0) + end + if output.ChaosInoculation then output.Life = 1 condList["FullLife"] = true @@ -120,6 +130,8 @@ function calcs.doActorDarkness(actor) output.UnreservedDarkness = output.Darkness - output.ReservedDarkness end + + -- Calculate life/mana/spirit reservation ---@param actor table function calcs.doActorLifeManaSpiritReservation(actor) diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index b8292020e2..7494e07ad3 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -1630,6 +1630,7 @@ function calcs.offence(env, actor, activeSkill) -- Calculate costs (may be slightly off due to rounding differences) local costs = { ["Mana"] = { type = "Mana", upfront = true, percent = false, text = "mana", baseCost = 0, baseCostRaw = 0, totalCost = 0, baseCostNoMult = 0, finalBaseCost = 0 }, + ["InfernalFlame"] = { type = "InfernalFlame", upfront = true, percent = false, text = "infernalflame", baseCost = 0, baseCostRaw = 0, totalCost = 0, baseCostNoMult = 0, finalBaseCost = 0 }, ["Life"] = { type = "Life", upfront = true, percent = false, text = "life", baseCost = 0, totalCost = 0, baseCostNoMult = 0, finalBaseCost = 0 }, ["ES"] = { type = "ES", upfront = true, percent = false, text = "ES", baseCost = 0, totalCost = 0, baseCostNoMult = 0, finalBaseCost = 0 }, ["Soul"] = { type = "Soul", upfront = true, percent = false, unaffectedByGenericCostMults = true, text = "soul", baseCost = 0, totalCost = 0, baseCostNoMult = 0, finalBaseCost = 0 }, diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index eddf4962f2..6131bfa536 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2890,6 +2890,14 @@ local specialModList = { mod("Speed", "MORE", num, nil, ModFlag.Cast, { type = "GlobalEffect", effectType = "Buff", effectName = "Quicksand Hourglass" }, { type = "Condition", var = "QuicksandHourglass" }), flag("Condition:CanGainQuicksandHourglass") } end, + + -- Infernalist + ["maximum mana is replaced by maximum infernal flame"] = { + mod("ManaToInfernalFlame", "FLAG", true) + }, + ["gain infernal flame instead of spending mana for skill costs"] = { + mod("CostInfernalFlameInsteadOfMana") + }, -- Item local modifiers ["has no sockets"] = { flag("NoSockets") }, ["reflects your other ring"] = { From b170e6cc2a539a392715ff784a6f131a9c899afb Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Sat, 8 Feb 2025 19:37:05 +0100 Subject: [PATCH 2/8] hide mana inc % from tree in calc tab / summary --- src/Data/ModCache.lua | 5 ++++- src/Modules/CalcDefence.lua | 5 ++++- src/Modules/Calcs.lua | 4 +++- src/Modules/ModParser.lua | 3 --- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index efd503b12b..7094e2d83b 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -2714,7 +2714,10 @@ c["Gain Endurance Charges instead of Power Charges"]={nil,"Endurance Charges ins c["Gain Energy Shield from equipped Body Armour as extra maximum Life"]={{[1]={[1]={div=1,stat="EnergyShieldOnBody Armour",type="PerStat"},flags=0,keywordFlags=0,name="Life",type="BASE",value=1}},nil} c["Gain Frenzy Charges instead of Endurance Charges"]={nil,"Frenzy Charges instead of Endurance Charges "} c["Gain Frenzy Charges instead of Endurance Charges Gain Endurance Charges instead of Power Charges"]={nil,"Frenzy Charges instead of Endurance Charges Gain Endurance Charges instead of Power Charges "} -c["Gain Infernal Flame instead of spending Mana for Skill costs"]={{[1]={flags=0,keywordFlags=0,name="CostInfernalFlameInsteadOfMana"}},nil} +c["Gain Infernal Flame instead of spending Mana for Skill costs"]={nil,"Infernal Flame instead of spending Mana for Skill costs "} +c["Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum"]={nil,"Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum "} +c["Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame"]={nil,"Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame "} +c["Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame 10% of Infernal Flame lost per second if none was gained in the past 2 seconds"]={nil,"Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame 10% of Infernal Flame lost per second if none was gained in the past 2 seconds "} c["Gain Physical Thorns damage equal to 2% of Armour from equipped Body Armour"]={nil,"Physical Thorns damage equal to 2% of Armour from equipped Body Armour "} c["Gain Power Charges instead of Frenzy Charges"]={nil,"Power Charges instead of Frenzy Charges "} c["Gain Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges"]={nil,"Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges "} diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index dc00c2feea..c4938477cf 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -98,11 +98,14 @@ function calcs.doActorLifeManaSpirit(actor) end end end + + --- Calculate infernal flame after mana is calculated if modDB:Flag(nil, "ManaToInfernalFlame") then + local inc = modDB:Sum("INC", nil, "Mana") output.InfernalFlame = output.Mana output.Mana = 0 output.ManaRecoveryRate = 0 - --These mods sets mana to 0 after mana has been calculated and infernal flame has been set to prevent mana from showing up in calcs tab + --These mods sets mana and recovery to 0 to prevent them from showing up in calcs tab modDB:NewMod("Mana", "OVERRIDE", 0) modDB:NewMod("ManaRecovery", "OVERRIDE", 0) end diff --git a/src/Modules/Calcs.lua b/src/Modules/Calcs.lua index 871b337244..cc0d591a7a 100644 --- a/src/Modules/Calcs.lua +++ b/src/Modules/Calcs.lua @@ -477,7 +477,9 @@ function calcs.buildOutput(build, mode) source = "Tree" } output["Spec:LifeInc"] = env.modDB:Sum("INC", nil, "Life") - output["Spec:ManaInc"] = env.modDB:Sum("INC", specCfg, "Mana") + if not env.modDB:Flag(nil, "ManaToInfernalFlame") then + output["Spec:ManaInc"] = env.modDB:Sum("INC", specCfg, "Mana") + end output["Spec:ArmourInc"] = env.modDB:Sum("INC", specCfg, "Armour", "ArmourAndEvasion") output["Spec:EvasionInc"] = env.modDB:Sum("INC", specCfg, "Evasion", "ArmourAndEvasion") output["Spec:EnergyShieldInc"] = env.modDB:Sum("INC", specCfg, "EnergyShield") diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 6131bfa536..b17184a34d 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2895,9 +2895,6 @@ local specialModList = { ["maximum mana is replaced by maximum infernal flame"] = { mod("ManaToInfernalFlame", "FLAG", true) }, - ["gain infernal flame instead of spending mana for skill costs"] = { - mod("CostInfernalFlameInsteadOfMana") - }, -- Item local modifiers ["has no sockets"] = { flag("NoSockets") }, ["reflects your other ring"] = { From 5718896f1b73a44b685291cd6f31ab9e7a25fcb8 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Sat, 8 Feb 2025 19:50:52 +0100 Subject: [PATCH 3/8] infernal flame buildup instead of mana cost --- src/Modules/BuildDisplayStats.lua | 4 ++-- src/Modules/CalcOffence.lua | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Modules/BuildDisplayStats.lua b/src/Modules/BuildDisplayStats.lua index 726fefcd82..dde1faceec 100644 --- a/src/Modules/BuildDisplayStats.lua +++ b/src/Modules/BuildDisplayStats.lua @@ -73,8 +73,8 @@ local displayStats = { { stat = "AreaOfEffectRadiusMetres", label = "AoE Radius", fmt = ".1fm" }, { stat = "BrandAttachmentRangeMetre", label = "Attachment Range", fmt = ".1fm", flag = "brand" }, { stat = "BrandTicks", label = "Activations per Brand", fmt = "d", flag = "brand" }, - { stat = "ManaCost", label = "Mana Cost", fmt = "d", color = colorCodes.MANA, pool = "ManaUnreserved", compPercent = true, lowerIsBetter = true, condFunc = function(v,o) return o.ManaHasCost end }, - { stat = "InfernalFlameCost", label = "Infernal Flame buildup", fmt = "d", color = colorCodes.MANA, pool = "ManaUnreserved", compPercent = true, lowerIsBetter = true, condFunc = function(v,o) return o.ManaHasCost end }, + { stat = "ManaCost", label = "Mana Cost", fmt = "d", color = colorCodes.MANA, pool = "ManaUnreserved", compPercent = true, lowerIsBetter = true, condFunc = function(v,o) return o.ManaCost > 0 end }, + { stat = "InfernalFlameCost", label = "Infernal Flame buildup", fmt = "d", color = colorCodes.LIFE, compPercent = true, lowerIsBetter = true,}, { stat = "ManaPercentCost", label = "Mana Cost", fmt = "d%%", color = colorCodes.MANA, pool = "ManaUnreservedPercent", compPercent = true, lowerIsBetter = true, condFunc = function(v,o) return o.ManaPercentHasCost end }, { stat = "ManaPerSecondCost", label = "Mana Cost per second", fmt = ".2f", color = colorCodes.MANA, pool = "ManaUnreserved", compPercent = true, lowerIsBetter = true, condFunc = function(v,o) return o.ManaPerSecondHasCost end }, { stat = "ManaPercentPerSecondCost", label = "Mana Cost per second", fmt = ".2f%%", color = colorCodes.MANA, pool = "ManaUnreservedPercent", compPercent = true, lowerIsBetter = true, condFunc = function(v,o) return o.ManaPercentPerSecondHasCost end }, diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 7494e07ad3..4a2461d2e0 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -1630,7 +1630,6 @@ function calcs.offence(env, actor, activeSkill) -- Calculate costs (may be slightly off due to rounding differences) local costs = { ["Mana"] = { type = "Mana", upfront = true, percent = false, text = "mana", baseCost = 0, baseCostRaw = 0, totalCost = 0, baseCostNoMult = 0, finalBaseCost = 0 }, - ["InfernalFlame"] = { type = "InfernalFlame", upfront = true, percent = false, text = "infernalflame", baseCost = 0, baseCostRaw = 0, totalCost = 0, baseCostNoMult = 0, finalBaseCost = 0 }, ["Life"] = { type = "Life", upfront = true, percent = false, text = "life", baseCost = 0, totalCost = 0, baseCostNoMult = 0, finalBaseCost = 0 }, ["ES"] = { type = "ES", upfront = true, percent = false, text = "ES", baseCost = 0, totalCost = 0, baseCostNoMult = 0, finalBaseCost = 0 }, ["Soul"] = { type = "Soul", upfront = true, percent = false, unaffectedByGenericCostMults = true, text = "soul", baseCost = 0, totalCost = 0, baseCostNoMult = 0, finalBaseCost = 0 }, @@ -1783,6 +1782,10 @@ function calcs.offence(env, actor, activeSkill) t_insert(breakdown[costName], s_format("= %"..(val.upfront and "d" or ".2f")..(val.percent and "%%" or ""), output[costName])) end end + if modDB:Flag(nil, "ManaToInfernalFlame") then + output.InfernalFlameCost = output.ManaCost + output.ManaCost = 0 + end end -- account for Sacrificial Zeal From 9822c7f724ac686dc688f5a8c38d6a5d32913a7c Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Sat, 8 Feb 2025 20:00:39 +0100 Subject: [PATCH 4/8] added config option for full infernal flame buildup --- src/Data/ModCache.lua | 5 +---- src/Modules/ConfigOptions.lua | 3 +++ src/Modules/ModParser.lua | 5 ++--- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 7094e2d83b..96051af552 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -2714,10 +2714,7 @@ c["Gain Endurance Charges instead of Power Charges"]={nil,"Endurance Charges ins c["Gain Energy Shield from equipped Body Armour as extra maximum Life"]={{[1]={[1]={div=1,stat="EnergyShieldOnBody Armour",type="PerStat"},flags=0,keywordFlags=0,name="Life",type="BASE",value=1}},nil} c["Gain Frenzy Charges instead of Endurance Charges"]={nil,"Frenzy Charges instead of Endurance Charges "} c["Gain Frenzy Charges instead of Endurance Charges Gain Endurance Charges instead of Power Charges"]={nil,"Frenzy Charges instead of Endurance Charges Gain Endurance Charges instead of Power Charges "} -c["Gain Infernal Flame instead of spending Mana for Skill costs"]={nil,"Infernal Flame instead of spending Mana for Skill costs "} -c["Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum"]={nil,"Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum "} -c["Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame"]={nil,"Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame "} -c["Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame 10% of Infernal Flame lost per second if none was gained in the past 2 seconds"]={nil,"Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame 10% of Infernal Flame lost per second if none was gained in the past 2 seconds "} +c["Gain Infernal Flame instead of spending Mana for Skill costs"]={{[1]={flags=0,keywordFlags=0,name="ManaToInfernalFlame",type="FLAG",value=true}},nil} c["Gain Physical Thorns damage equal to 2% of Armour from equipped Body Armour"]={nil,"Physical Thorns damage equal to 2% of Armour from equipped Body Armour "} c["Gain Power Charges instead of Frenzy Charges"]={nil,"Power Charges instead of Frenzy Charges "} c["Gain Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges"]={nil,"Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges "} diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 44f19bb278..167bef1b0f 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1435,6 +1435,9 @@ Huge sets the radius to 11. { var = "reservedDarkness", type = "count", label = "Reserved Darkness:", ifFlag = "PlayerHasDarkness", apply = function(val, modList, enemyModList) modList:NewMod("ReservedDarkness", "BASE", val, "Config") end }, + { var = "fullInfernalFlame", type = "check", label = "Is infernal flame full?", ifFlag = "ManaToInfernalFlame", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:FullInfernalFlame", "FLAG", true, "Config") + end }, -- Section: Effective DPS options { section = "For Effective DPS", col = 1 }, { var = "skillForkCount", type = "count", label = "# of times Skill has Forked:", ifFlag = "forking", apply = function(val, modList, enemyModList) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index b17184a34d..372c25c30d 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2892,9 +2892,8 @@ local specialModList = { } end, -- Infernalist - ["maximum mana is replaced by maximum infernal flame"] = { - mod("ManaToInfernalFlame", "FLAG", true) - }, + ["maximum mana is replaced by maximum infernal flame"] = { mod("ManaToInfernalFlame", "FLAG", true) }, + ["gain infernal flame instead of spending mana for skill costs"] = { mod("ManaToInfernalFlame", "FLAG", true) }, ---this line should make the text turn blue to indicate the node is working -- Item local modifiers ["has no sockets"] = { flag("NoSockets") }, ["reflects your other ring"] = { From b558baae6426eb90ca2b10d4ab88038a764911c8 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Sat, 8 Feb 2025 20:31:03 +0100 Subject: [PATCH 5/8] addad high infernal flame config option --- src/Modules/ConfigOptions.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 167bef1b0f..7c1ad65591 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1435,9 +1435,12 @@ Huge sets the radius to 11. { var = "reservedDarkness", type = "count", label = "Reserved Darkness:", ifFlag = "PlayerHasDarkness", apply = function(val, modList, enemyModList) modList:NewMod("ReservedDarkness", "BASE", val, "Config") end }, - { var = "fullInfernalFlame", type = "check", label = "Is infernal flame full?", ifFlag = "ManaToInfernalFlame", apply = function(val, modList, enemyModList) + { var = "fullInfernalFlame", type = "check", label = "Is infernal flame full?", ifFlag = "ManaToInfernalFlame", implyCond="HighInfernalFlame", tooltip = "This also implies high infernal flame", apply = function(val, modList, enemyModList) modList:NewMod("Condition:FullInfernalFlame", "FLAG", true, "Config") end }, + { var = "highInfernalFlame", type = "check", label = "Is infernal flame high?", ifFlag = "ManaToInfernalFlame", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:HighInfernalFlame", "FLAG", true, "Config") + end }, -- Section: Effective DPS options { section = "For Effective DPS", col = 1 }, { var = "skillForkCount", type = "count", label = "# of times Skill has Forked:", ifFlag = "forking", apply = function(val, modList, enemyModList) From 342dba2027466bc74ecb1200787ede47d87d7821 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Sat, 8 Feb 2025 21:48:15 +0100 Subject: [PATCH 6/8] added support for buff on high infernal flame --- src/Data/ModCache.lua | 3 +-- src/Modules/ConfigOptions.lua | 3 ++- src/Modules/ModParser.lua | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 96051af552..456b011efe 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -3038,7 +3038,6 @@ c["Passives in radius of Zealot's Oath can be Allocated without being connected c["Permanently Intimidate enemies on Block"]={{[1]={[1]={type="Condition",var="BlockedRecently"},flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="Condition:Intimidated",type="FLAG",value=true}}}},nil} c["Physical Damage Reduction from Armour is based on your combined Armour and Evasion Rating"]={{[1]={flags=0,keywordFlags=0,name="EvasionAddsToPdr",type="FLAG",value=true}},nil} c["Physical Damage is Pinning"]={nil,"Physical Damage is Pinning "} -c["Presence Gain 20% of Damage as Fire Damage"]={nil,"Presence Gain 20% of Damage as Fire Damage "} c["Presence Radius is doubled"]={nil,"Presence Radius is doubled "} c["Projectiles Pierce all Ignited enemies"]={nil,"Projectiles Pierce all Ignited enemies "} c["Projectiles Pierce all Ignited enemies Attacks Gain 10% of Damage as Extra Fire Damage"]={nil,"Projectiles Pierce all Ignited enemies Attacks Gain 10% of Damage as Extra Fire Damage "} @@ -3215,7 +3214,7 @@ c["While not on Full Life, Sacrifice 10% of Mana per Second to Recover that much c["While not on Low Infernal Flame, all Damage from you and"]={nil,"While not on Low Infernal Flame, all Damage from you and "} c["While not on Low Infernal Flame, all Damage from you and Allies in your Presence contributes to Ignite Chance and Magnitude"]={nil,"While not on Low Infernal Flame, all Damage from you and contributes to Ignite Chance and Magnitude "} c["While on High Infernal Flame, you and Allies in your"]={nil,"While on High Infernal Flame, you and Allies in your "} -c["While on High Infernal Flame, you and Allies in your Presence Gain 20% of Damage as Fire Damage"]={nil,"While on High Infernal Flame, you and 20% of Damage as Fire Damage "} +c["While on High Infernal Flame, you and Allies in your Presence Gain 20% of Damage as Fire Damage"]={{[1]={[1]={type="Condition",var="HighInfernalFlame"},flags=0,keywordFlags=0,name="DamageGainAsFire",type="BASE",value=20}},nil} c["You are Blind"]={{[1]={[1]={neg=true,type="Condition",var="CannotBeBlinded"},flags=0,keywordFlags=0,name="Condition:Blinded",type="FLAG",value=true}},nil} c["You can Break Enemy Armour to below 0"]={nil,"You can Break Enemy Armour to below 0 "} c["You can apply an additional Curse"]={{[1]={flags=0,keywordFlags=0,name="EnemyCurseLimit",type="BASE",value=1}},nil} diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 7c1ad65591..e07c32d1fa 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1435,8 +1435,9 @@ Huge sets the radius to 11. { var = "reservedDarkness", type = "count", label = "Reserved Darkness:", ifFlag = "PlayerHasDarkness", apply = function(val, modList, enemyModList) modList:NewMod("ReservedDarkness", "BASE", val, "Config") end }, - { var = "fullInfernalFlame", type = "check", label = "Is infernal flame full?", ifFlag = "ManaToInfernalFlame", implyCond="HighInfernalFlame", tooltip = "This also implies high infernal flame", apply = function(val, modList, enemyModList) + { var = "fullInfernalFlame", type = "check", label = "Is infernal flame full?", ifFlag = "ManaToInfernalFlame", tooltip = "This also implies high infernal flame", apply = function(val, modList, enemyModList) modList:NewMod("Condition:FullInfernalFlame", "FLAG", true, "Config") + modList:NewMod("Condition:HighInfernalFlame", "FLAG", true, "Config") end }, { var = "highInfernalFlame", type = "check", label = "Is infernal flame high?", ifFlag = "ManaToInfernalFlame", apply = function(val, modList, enemyModList) modList:NewMod("Condition:HighInfernalFlame", "FLAG", true, "Config") diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 372c25c30d..8b20b4a8ff 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2894,6 +2894,9 @@ local specialModList = { -- Infernalist ["maximum mana is replaced by maximum infernal flame"] = { mod("ManaToInfernalFlame", "FLAG", true) }, ["gain infernal flame instead of spending mana for skill costs"] = { mod("ManaToInfernalFlame", "FLAG", true) }, ---this line should make the text turn blue to indicate the node is working + ["while on high infernal flame, you and allies in your presence gain (%d+)%% of damage as (%a+) damage"] = + function(num, _, strType) + return {mod("DamageGainAs"..firstToUpper(strType), "BASE", num,{ type = "Condition", var = "HighInfernalFlame"})} end, -- Item local modifiers ["has no sockets"] = { flag("NoSockets") }, ["reflects your other ring"] = { From 023f4430acf1da0b9794df26a69e8d3072fba8bb Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Sat, 8 Feb 2025 21:51:09 +0100 Subject: [PATCH 7/8] added support for self damage on full infernal flame --- src/Modules/ConfigOptions.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index e07c32d1fa..cc26f4f7ab 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1438,6 +1438,8 @@ Huge sets the radius to 11. { var = "fullInfernalFlame", type = "check", label = "Is infernal flame full?", ifFlag = "ManaToInfernalFlame", tooltip = "This also implies high infernal flame", apply = function(val, modList, enemyModList) modList:NewMod("Condition:FullInfernalFlame", "FLAG", true, "Config") modList:NewMod("Condition:HighInfernalFlame", "FLAG", true, "Config") + modList:NewMod("FireDegen", "BASE", 1, { type="PercentStat", stat = "Life", percent = 100}) + modList:NewMod("FireDegen", "BASE", 1, { type="PercentStat", stat = "EnergyShield", percent = 100}) end }, { var = "highInfernalFlame", type = "check", label = "Is infernal flame high?", ifFlag = "ManaToInfernalFlame", apply = function(val, modList, enemyModList) modList:NewMod("Condition:HighInfernalFlame", "FLAG", true, "Config") From 3e1b96027f974ca2f4b74eb4f75c4ddd2bfb7e86 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Sat, 8 Feb 2025 22:10:42 +0100 Subject: [PATCH 8/8] did some correction regarding config options --- src/Data/ModCache.lua | 6 ++---- src/Modules/ConfigOptions.lua | 4 +--- src/Modules/ModParser.lua | 7 ++++++- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 456b011efe..47aebca0ee 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -2714,7 +2714,7 @@ c["Gain Endurance Charges instead of Power Charges"]={nil,"Endurance Charges ins c["Gain Energy Shield from equipped Body Armour as extra maximum Life"]={{[1]={[1]={div=1,stat="EnergyShieldOnBody Armour",type="PerStat"},flags=0,keywordFlags=0,name="Life",type="BASE",value=1}},nil} c["Gain Frenzy Charges instead of Endurance Charges"]={nil,"Frenzy Charges instead of Endurance Charges "} c["Gain Frenzy Charges instead of Endurance Charges Gain Endurance Charges instead of Power Charges"]={nil,"Frenzy Charges instead of Endurance Charges Gain Endurance Charges instead of Power Charges "} -c["Gain Infernal Flame instead of spending Mana for Skill costs"]={{[1]={flags=0,keywordFlags=0,name="ManaToInfernalFlame",type="FLAG",value=true}},nil} +c["Gain Infernal Flame instead of spending Mana for Skill costs"]={{},nil} c["Gain Physical Thorns damage equal to 2% of Armour from equipped Body Armour"]={nil,"Physical Thorns damage equal to 2% of Armour from equipped Body Armour "} c["Gain Power Charges instead of Frenzy Charges"]={nil,"Power Charges instead of Frenzy Charges "} c["Gain Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges"]={nil,"Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges "} @@ -3158,9 +3158,7 @@ c["Take 30% less Damage over time"]={{[1]={flags=8,keywordFlags=0,name="DamageTa c["Take 50% less Damage over Time if you've started taking Damage over Time in the past second"]={{[1]={flags=8,keywordFlags=0,name="DamageTaken",type="MORE",value=-50}}," if you've started taking Damage over Time in the past second "} c["Take 50% less Damage over Time if you've started taking Damage over Time in the past second Take 50% more Damage over Time if you've haven't started taking Damage over Time in the past second"]={{[1]={flags=8,keywordFlags=0,name="DamageTaken",type="MORE",value=-50}}," if you've started taking Damage over Time in the past second Take 50% more Damage over Time if you've haven't started taking Damage over Time in the past second "} c["Take 50% more Damage over Time if you've haven't started taking Damage over Time in the past second"]={{[1]={flags=8,keywordFlags=0,name="DamageTaken",type="MORE",value=50}}," if you've haven't started taking Damage over Time in the past second "} -c["Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum"]={nil,"maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum "} -c["Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame"]={nil,"maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame "} -c["Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame 10% of Infernal Flame lost per second if none was gained in the past 2 seconds"]={nil,"maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame 10% of Infernal Flame lost per second if none was gained in the past 2 seconds "} +c["Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum"]={{[1]={flags=0,keywordFlags=0,name="EnableHighInfernalFlameBuff",type="FLAG",value=true},[2]={[1]={percent=100,stat="Life",type="PercentStat"},[2]={type="Condition",var="FullInfernalFlame"},flags=0,keywordFlags=0,name="FireDegen",type="BASE",value=1},[3]={[1]={percent=100,stat="EnergyShield",type="PercentStat"},[2]={type="Condition",var="FullInfernalFlame"},flags=0,keywordFlags=0,name="FireDegen",type="BASE",value=1}},nil} c["Take no Extra Damage from Critical Hits"]={{[1]={[1]={effectType="Global",type="GlobalEffect",unscalable=true},flags=0,keywordFlags=0,name="ReduceCritExtraDamage",type="BASE",value=100}},nil} c["Targets can be affected by +1 of your Poisons at the same time"]={{[1]={flags=0,keywordFlags=0,name="PoisonCanStack",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="PoisonStacks",type="BASE",value=1}},nil} c["Targets can be affected by two of your Chills at the same time"]={{[1]={flags=0,keywordFlags=0,name="ChillCanStack",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="ChillStacksMax",type="OVERRIDE",value=2}},nil} diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index cc26f4f7ab..00caea29fd 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1438,10 +1438,8 @@ Huge sets the radius to 11. { var = "fullInfernalFlame", type = "check", label = "Is infernal flame full?", ifFlag = "ManaToInfernalFlame", tooltip = "This also implies high infernal flame", apply = function(val, modList, enemyModList) modList:NewMod("Condition:FullInfernalFlame", "FLAG", true, "Config") modList:NewMod("Condition:HighInfernalFlame", "FLAG", true, "Config") - modList:NewMod("FireDegen", "BASE", 1, { type="PercentStat", stat = "Life", percent = 100}) - modList:NewMod("FireDegen", "BASE", 1, { type="PercentStat", stat = "EnergyShield", percent = 100}) end }, - { var = "highInfernalFlame", type = "check", label = "Is infernal flame high?", ifFlag = "ManaToInfernalFlame", apply = function(val, modList, enemyModList) + { var = "highInfernalFlame", type = "check", label = "Is infernal flame high?", ifFlag = "EnableHighInfernalFlameBuff", apply = function(val, modList, enemyModList) modList:NewMod("Condition:HighInfernalFlame", "FLAG", true, "Config") end }, -- Section: Effective DPS options diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 8b20b4a8ff..6b964e8c81 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2893,7 +2893,12 @@ local specialModList = { -- Infernalist ["maximum mana is replaced by maximum infernal flame"] = { mod("ManaToInfernalFlame", "FLAG", true) }, - ["gain infernal flame instead of spending mana for skill costs"] = { mod("ManaToInfernalFlame", "FLAG", true) }, ---this line should make the text turn blue to indicate the node is working + ["gain infernal flame instead of spending mana for skill costs"] = { }, ---this line should make the text turn blue to indicate the node is working + ["take maximum life and energy shield as fire damage when infernal flame reaches maximum"] = { + mod("EnableHighInfernalFlameBuff", "FLAG", true), + mod("FireDegen", "BASE", 1, { type="PercentStat", stat = "Life", percent = 100}, { type = "Condition", var = "FullInfernalFlame"}), + mod("FireDegen", "BASE", 1, { type="PercentStat", stat = "EnergyShield", percent = 100}, { type = "Condition", var = "FullInfernalFlame"}) + }, ["while on high infernal flame, you and allies in your presence gain (%d+)%% of damage as (%a+) damage"] = function(num, _, strType) return {mod("DamageGainAs"..firstToUpper(strType), "BASE", num,{ type = "Condition", var = "HighInfernalFlame"})} end,