From 99317531524d44289538d02f7e8fa9996fd57943 Mon Sep 17 00:00:00 2001 From: Blitz54 Date: Sun, 9 Feb 2025 02:28:43 -0600 Subject: [PATCH 1/8] Add support for Demon Form --- src/Data/ModCache.lua | 2 +- src/Data/Skills/other.lua | 13 +++++++++++++ src/Export/Skills/other.txt | 13 +++++++++++++ src/Modules/ConfigOptions.lua | 5 +++++ src/Modules/ModParser.lua | 2 ++ 5 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 930e53b57c..cb0f2aa683 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -2907,7 +2907,7 @@ c["Mana Recovery from Regeneration is not applied"]={{[1]={flags=0,keywordFlags= c["Mark Skills have 10% increased Cast Speed"]={{[1]={[1]={skillType=109,type="SkillType"},flags=16,keywordFlags=0,name="Speed",type="INC",value=10}},nil} c["Mark Skills have 25% increased Skill Effect Duration"]={{[1]={[1]={skillType=109,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=25}},nil} c["Mark Skills have 60% increased Skill Effect Duration"]={{[1]={[1]={skillType=109,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=60}},nil} -c["Maximum 10 Demonflame"]={nil,"Maximum 10 Demonflame "} +c["Maximum 10 Demonflame"]={{[1]={flags=0,keywordFlags=0,name="Condition:MasteredDarknessLimit",type="FLAG",value=true}},nil} 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} diff --git a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua index f6b203a82f..76b75ff21f 100644 --- a/src/Data/Skills/other.lua +++ b/src/Data/Skills/other.lua @@ -574,6 +574,19 @@ skills["DemonFormPlayer"] = { label = "Demon Form", incrementalEffectiveness = 0.054999999701977, statDescriptionScope = "demon_transformation", + statMap = { + ["demon_form_spell_damage_+%_per_stack"] = { + mod("Damage", "MORE", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), + }, + ["demon_form_grants_cast_speed_+%"] = { + mod("Speed", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), + }, + ["demon_form_life_loss_%_per_minute_per_stack"] = { + mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), + div = 60, + mult = -1, + }, + }, baseFlags = { }, constantStats = { diff --git a/src/Export/Skills/other.txt b/src/Export/Skills/other.txt index 51566a9c09..177d225fd6 100644 --- a/src/Export/Skills/other.txt +++ b/src/Export/Skills/other.txt @@ -43,6 +43,19 @@ statMap = { #skill DemonFormPlayer #set DemonFormPlayer #flags +statMap = { + ["demon_form_spell_damage_+%_per_stack"] = { + mod("Damage", "MORE", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), + }, + ["demon_form_grants_cast_speed_+%"] = { + mod("Speed", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), + }, + ["demon_form_life_loss_%_per_minute_per_stack"] = { + mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), + div = 60, + mult = -1, + }, +}, #mods #skillEnd diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 44f19bb278..79346f65cd 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -320,6 +320,11 @@ local configSettings = { { var = "darkPactSkeletonLife", type = "count", label = "Skeleton ^xE05030Life:", ifSkill = "Dark Pact", tooltip = "Sets the maximum ^xE05030Life ^7of the Skeleton that is being targeted.", apply = function(val, modList, enemyModList) modList:NewMod("SkillData", "LIST", { key = "skeletonLife", value = val }, "Config", { type = "SkillName", skillName = "Dark Pact" }) end }, + { label = "Demon Form:", ifSkill = "Demon Form" }, + { var = "demonFormStacks", type = "count", label = "Demon Form Stacks", ifSkill = "Demon Form", apply = function(val, modList, enemyModList) + modList:NewMod("Multiplier:DemonflameStacks", "BASE", val, "Config", { type = "Condition", var = "MasteredDarknessLimit", neg = true} ) + modList:NewMod("Multiplier:DemonflameStacks", "BASE", m_min(val, 10), "Config", { type = "Condition", var = "MasteredDarknessLimit"} ) + end }, { label = "Doom Blast:", ifSkill = "Doom Blast" }, { var = "doomBlastSource", type = "list", label = "Doom Blast Trigger Source:", ifSkill = "Doom Blast", list = {{val="expiration",label="Curse Expiration"},{val="replacement",label="Curse Replacement"},{val="vixen",label="Vixen's Curse"},{val="hexblast",label="Hexblast Replacement"}}, defaultIndex = 3}, { var = "curseOverlaps", type = "count", label = "Curse overlaps:", ifSkill = "Doom Blast", ifFlag = "UsesCurseOverlaps", apply = function(val, modList, enemyModList) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index eddf4962f2..f18fd90245 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2890,6 +2890,8 @@ local specialModList = { mod("Speed", "MORE", num, nil, ModFlag.Cast, { type = "GlobalEffect", effectType = "Buff", effectName = "Quicksand Hourglass" }, { type = "Condition", var = "QuicksandHourglass" }), flag("Condition:CanGainQuicksandHourglass") } end, + -- Witch -- Infernalist + ["maximum 10 demonflame"] = { flag("Condition:MasteredDarknessLimit") }, -- Item local modifiers ["has no sockets"] = { flag("NoSockets") }, ["reflects your other ring"] = { From 6a02f3f620961b885b5910c0445f86c6a1f509fe Mon Sep 17 00:00:00 2001 From: Blitz54 Date: Sun, 9 Feb 2025 03:00:23 -0600 Subject: [PATCH 2/8] fix1 --- src/Data/Skills/other.lua | 2 +- src/Export/Skills/other.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua index 76b75ff21f..edad70ef60 100644 --- a/src/Data/Skills/other.lua +++ b/src/Data/Skills/other.lua @@ -576,7 +576,7 @@ skills["DemonFormPlayer"] = { statDescriptionScope = "demon_transformation", statMap = { ["demon_form_spell_damage_+%_per_stack"] = { - mod("Damage", "MORE", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), + mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), }, ["demon_form_grants_cast_speed_+%"] = { mod("Speed", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), diff --git a/src/Export/Skills/other.txt b/src/Export/Skills/other.txt index 177d225fd6..be11eb4af7 100644 --- a/src/Export/Skills/other.txt +++ b/src/Export/Skills/other.txt @@ -45,7 +45,7 @@ statMap = { #flags statMap = { ["demon_form_spell_damage_+%_per_stack"] = { - mod("Damage", "MORE", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), + mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), }, ["demon_form_grants_cast_speed_+%"] = { mod("Speed", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), From 9061a6158be2df8bb21b0a1c29e2daf2584fad54 Mon Sep 17 00:00:00 2001 From: Blitz54 Date: Sun, 9 Feb 2025 03:06:58 -0600 Subject: [PATCH 3/8] fix2 --- src/Data/Skills/other.lua | 2 +- src/Export/Skills/other.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua index edad70ef60..52db79b563 100644 --- a/src/Data/Skills/other.lua +++ b/src/Data/Skills/other.lua @@ -579,7 +579,7 @@ skills["DemonFormPlayer"] = { mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), }, ["demon_form_grants_cast_speed_+%"] = { - mod("Speed", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), + mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), }, ["demon_form_life_loss_%_per_minute_per_stack"] = { mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), diff --git a/src/Export/Skills/other.txt b/src/Export/Skills/other.txt index be11eb4af7..7223e1d550 100644 --- a/src/Export/Skills/other.txt +++ b/src/Export/Skills/other.txt @@ -48,7 +48,7 @@ statMap = { mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), }, ["demon_form_grants_cast_speed_+%"] = { - mod("Speed", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), + mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), }, ["demon_form_life_loss_%_per_minute_per_stack"] = { mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), From 62fab08c3ee2a2e2e0386568dd919b602f74e505 Mon Sep 17 00:00:00 2001 From: Blitz54 Date: Sun, 9 Feb 2025 03:10:50 -0600 Subject: [PATCH 4/8] fixs --- src/Modules/ConfigOptions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 79346f65cd..2847803125 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -321,7 +321,7 @@ local configSettings = { modList:NewMod("SkillData", "LIST", { key = "skeletonLife", value = val }, "Config", { type = "SkillName", skillName = "Dark Pact" }) end }, { label = "Demon Form:", ifSkill = "Demon Form" }, - { var = "demonFormStacks", type = "count", label = "Demon Form Stacks", ifSkill = "Demon Form", apply = function(val, modList, enemyModList) + { var = "demonFormStacks", type = "count", label = "Demonflame Stacks", ifSkill = "Demon Form", apply = function(val, modList, enemyModList) modList:NewMod("Multiplier:DemonflameStacks", "BASE", val, "Config", { type = "Condition", var = "MasteredDarknessLimit", neg = true} ) modList:NewMod("Multiplier:DemonflameStacks", "BASE", m_min(val, 10), "Config", { type = "Condition", var = "MasteredDarknessLimit"} ) end }, From 3239e43d883aeff042080d4aa3e3e39b0b5e7d75 Mon Sep 17 00:00:00 2001 From: Blitz54 Date: Sun, 9 Feb 2025 11:55:21 -0600 Subject: [PATCH 5/8] fix4 --- src/Data/Skills/other.lua | 2 +- src/Export/Skills/other.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua index 52db79b563..3e07533b8e 100644 --- a/src/Data/Skills/other.lua +++ b/src/Data/Skills/other.lua @@ -579,7 +579,7 @@ skills["DemonFormPlayer"] = { mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), }, ["demon_form_grants_cast_speed_+%"] = { - mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), + mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" } ), }, ["demon_form_life_loss_%_per_minute_per_stack"] = { mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), diff --git a/src/Export/Skills/other.txt b/src/Export/Skills/other.txt index 7223e1d550..61ad00b732 100644 --- a/src/Export/Skills/other.txt +++ b/src/Export/Skills/other.txt @@ -48,7 +48,7 @@ statMap = { mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), }, ["demon_form_grants_cast_speed_+%"] = { - mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), + mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" } ), }, ["demon_form_life_loss_%_per_minute_per_stack"] = { mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), From 0e0e2e69eee95ef4b6fb8a88c16fbf6caf4fc81d Mon Sep 17 00:00:00 2001 From: Blitz54 Date: Sun, 9 Feb 2025 12:06:24 -0600 Subject: [PATCH 6/8] removed a space --- src/Data/Skills/other.lua | 2 +- src/Export/Skills/other.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua index 3e07533b8e..15d45951e8 100644 --- a/src/Data/Skills/other.lua +++ b/src/Data/Skills/other.lua @@ -576,7 +576,7 @@ skills["DemonFormPlayer"] = { statDescriptionScope = "demon_transformation", statMap = { ["demon_form_spell_damage_+%_per_stack"] = { - mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), + mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), }, ["demon_form_grants_cast_speed_+%"] = { mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" } ), diff --git a/src/Export/Skills/other.txt b/src/Export/Skills/other.txt index 61ad00b732..ac33db744e 100644 --- a/src/Export/Skills/other.txt +++ b/src/Export/Skills/other.txt @@ -45,7 +45,7 @@ statMap = { #flags statMap = { ["demon_form_spell_damage_+%_per_stack"] = { - mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), + mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), }, ["demon_form_grants_cast_speed_+%"] = { mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" } ), From a5a5245cc639f54cc4b587719b5fa7ca7a86d69f Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Mon, 10 Feb 2025 15:57:10 +1100 Subject: [PATCH 7/8] Fix Demon Flame degen at low health Demon flame degens a minimum of 1 life per stack --- src/Data/Skills/other.lua | 5 ++--- src/Export/Skills/other.txt | 5 ++--- src/Modules/CalcDefence.lua | 3 ++- src/Modules/ConfigOptions.lua | 4 ++-- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua index 15d45951e8..599553d5c4 100644 --- a/src/Data/Skills/other.lua +++ b/src/Data/Skills/other.lua @@ -576,15 +576,14 @@ skills["DemonFormPlayer"] = { statDescriptionScope = "demon_transformation", statMap = { ["demon_form_spell_damage_+%_per_stack"] = { - mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), + mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonFlameStacks" } ), }, ["demon_form_grants_cast_speed_+%"] = { mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" } ), }, ["demon_form_life_loss_%_per_minute_per_stack"] = { - mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), + mod("LifeDemonDegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" } ), div = 60, - mult = -1, }, }, baseFlags = { diff --git a/src/Export/Skills/other.txt b/src/Export/Skills/other.txt index ac33db744e..6408c2273c 100644 --- a/src/Export/Skills/other.txt +++ b/src/Export/Skills/other.txt @@ -45,15 +45,14 @@ statMap = { #flags statMap = { ["demon_form_spell_damage_+%_per_stack"] = { - mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonflameStacks" } ), + mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonFlameStacks" } ), }, ["demon_form_grants_cast_speed_+%"] = { mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" } ), }, ["demon_form_life_loss_%_per_minute_per_stack"] = { - mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonflameStacks" } ), + mod("LifeDegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonFlameStacks" } ), div = 60, - mult = -1, }, }, #mods diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index 44b163591a..52164642c0 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -1398,7 +1398,8 @@ function calcs.defence(env, actor) output[resource.."Regen"] = regenRate end output[resource.."RegenInc"] = inc - local baseDegen = (modDB:Sum("BASE", nil, resource.."Degen") + pool * modDB:Sum("BASE", nil, resource.."DegenPercent") / 100) + local demonFormDegen = resourceName == "Life" and m_max(pool * modDB:Sum("BASE", nil, "LifeDemonDegenPercent") / 100, 1) * modDB:Sum("BASE", nil, "Multiplier:DemonFlameStacks") or 0 + local baseDegen = modDB:Sum("BASE", nil, resource.."Degen") + pool * modDB:Sum("BASE", nil, resource.."DegenPercent") / 100 + demonFormDegen local degenRate = (baseDegen > 0) and baseDegen * calcLib.mod(modDB, nil, resource.."Degen") or 0 output[resource.."Degen"] = degenRate local recoveryRate = modDB:Sum("BASE", nil, resource.."Recovery") * recoveryRateMod diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 2847803125..6a06de0fc5 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -322,8 +322,8 @@ local configSettings = { end }, { label = "Demon Form:", ifSkill = "Demon Form" }, { var = "demonFormStacks", type = "count", label = "Demonflame Stacks", ifSkill = "Demon Form", apply = function(val, modList, enemyModList) - modList:NewMod("Multiplier:DemonflameStacks", "BASE", val, "Config", { type = "Condition", var = "MasteredDarknessLimit", neg = true} ) - modList:NewMod("Multiplier:DemonflameStacks", "BASE", m_min(val, 10), "Config", { type = "Condition", var = "MasteredDarknessLimit"} ) + modList:NewMod("Multiplier:DemonFlameStacks", "BASE", val, "Config", { type = "Condition", var = "MasteredDarknessLimit", neg = true} ) + modList:NewMod("Multiplier:DemonFlameStacks", "BASE", m_min(val, 10), "Config", { type = "Condition", var = "MasteredDarknessLimit"} ) end }, { label = "Doom Blast:", ifSkill = "Doom Blast" }, { var = "doomBlastSource", type = "list", label = "Doom Blast Trigger Source:", ifSkill = "Doom Blast", list = {{val="expiration",label="Curse Expiration"},{val="replacement",label="Curse Replacement"},{val="vixen",label="Vixen's Curse"},{val="hexblast",label="Hexblast Replacement"}}, defaultIndex = 3}, From a8ac275348e5bb372ddd79831ac90bc96aa37853 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Mon, 10 Feb 2025 19:10:02 +1100 Subject: [PATCH 8/8] Fix breakdown and stop it working with CI --- src/Data/Skills/other.lua | 6 +++--- src/Export/Skills/other.txt | 6 +++--- src/Modules/CalcDefence.lua | 7 +++++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua index 599553d5c4..9b1fa04abc 100644 --- a/src/Data/Skills/other.lua +++ b/src/Data/Skills/other.lua @@ -576,13 +576,13 @@ skills["DemonFormPlayer"] = { statDescriptionScope = "demon_transformation", statMap = { ["demon_form_spell_damage_+%_per_stack"] = { - mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonFlameStacks" } ), + mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonFlameStacks" }, { type = "StatThreshold", stat = "Life", threshold = 2 } ), }, ["demon_form_grants_cast_speed_+%"] = { - mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" } ), + mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "StatThreshold", stat = "Life", threshold = 2 } ), }, ["demon_form_life_loss_%_per_minute_per_stack"] = { - mod("LifeDemonDegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" } ), + mod("LifeDemonDegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "StatThreshold", stat = "Life", threshold = 2 } ), div = 60, }, }, diff --git a/src/Export/Skills/other.txt b/src/Export/Skills/other.txt index 6408c2273c..85a163c6c1 100644 --- a/src/Export/Skills/other.txt +++ b/src/Export/Skills/other.txt @@ -45,13 +45,13 @@ statMap = { #flags statMap = { ["demon_form_spell_damage_+%_per_stack"] = { - mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonFlameStacks" } ), + mod("Damage", "INC", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonFlameStacks" }, { type = "StatThreshold", stat = "Life", threshold = 2 } ), }, ["demon_form_grants_cast_speed_+%"] = { - mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" } ), + mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "StatThreshold", stat = "Life", threshold = 2 } ), }, ["demon_form_life_loss_%_per_minute_per_stack"] = { - mod("LifeDegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonFlameStacks" } ), + mod("LifeDemonDegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "StatThreshold", stat = "Life", threshold = 2 } ), div = 60, }, }, diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index 52164642c0..41912caaaf 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -1398,8 +1398,11 @@ function calcs.defence(env, actor) output[resource.."Regen"] = regenRate end output[resource.."RegenInc"] = inc - local demonFormDegen = resourceName == "Life" and m_max(pool * modDB:Sum("BASE", nil, "LifeDemonDegenPercent") / 100, 1) * modDB:Sum("BASE", nil, "Multiplier:DemonFlameStacks") or 0 - local baseDegen = modDB:Sum("BASE", nil, resource.."Degen") + pool * modDB:Sum("BASE", nil, resource.."DegenPercent") / 100 + demonFormDegen + if resourceName == "Life" and modDB:Sum("BASE", nil, "LifeDemonDegenPercent") > 0 then + local demonFormDegen = m_max(pool * modDB:Sum("BASE", nil, "LifeDemonDegenPercent") / 100, 1) * modDB:Sum("BASE", nil, "Multiplier:DemonFlameStacks") + modDB:NewMod("LifeDegen", "BASE", demonFormDegen, "Demon Flame Degen") + end + local baseDegen = modDB:Sum("BASE", nil, resource.."Degen") + pool * modDB:Sum("BASE", nil, resource.."DegenPercent") / 100 local degenRate = (baseDegen > 0) and baseDegen * calcLib.mod(modDB, nil, resource.."Degen") or 0 output[resource.."Degen"] = degenRate local recoveryRate = modDB:Sum("BASE", nil, resource.."Recovery") * recoveryRateMod