Skip to content
Merged
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
2 changes: 1 addition & 1 deletion src/Data/ModCache.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4426,7 +4426,7 @@ c["Defend with 200% of Armour during effect"]={nil,"Defend with 200% of Armour d
c["Deflected Hits cannot inflict Bleeding on you"]={nil,"Deflected Hits cannot inflict Bleeding on you "}
c["Deflected Hits cannot inflict Maim on you"]={nil,"Deflected Hits cannot inflict Maim on you "}
c["Deflected Hits cannot inflict Maim on you Deflected Hits cannot inflict Bleeding on you"]={nil,"Deflected Hits cannot inflict Maim on you Deflected Hits cannot inflict Bleeding on you "}
c["Demonflame has no maximum"]={nil,"Demonflame has no maximum "}
c["Demonflame has no maximum"]={{[1]={flags=0,keywordFlags=0,name="Multiplier:DemonFlameMaximum",type="BASE",value=999}},nil}
c["Detonator skills have 40% increased Area of Effect"]={nil,"Detonator skills have 40% increased Area of Effect "}
c["Detonator skills have 40% increased Area of Effect Detonator skills have 80% reduced damage"]={nil,"Detonator skills have 40% increased Area of Effect Detonator skills have 80% reduced damage "}
c["Detonator skills have 8% increased Area of Effect"]={nil,"Detonator skills have 8% increased Area of Effect "}
Expand Down
12 changes: 12 additions & 0 deletions src/Data/Skills/other.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1616,6 +1616,18 @@ skills["DemonFormPlayer"] = {
label = "Demon Form",
incrementalEffectiveness = 0.054999999701977,
statDescriptionScope = "demon_transformation",
statMap = {
["demon_form_spell_damage_+%_final_per_stack"] = {
mod("Damage", "MORE", nil, 0, KeywordFlag.Spell, { type = "Condition", var = "DemonForm" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonFlameStacks", limitVar = "DemonFlameMaximum" } ),
},
["demon_form_grants_cast_speed_+%"] = {
mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "Condition", var = "DemonForm" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" } ),
},
["demon_form_life_loss_per_minute_per_stack"] = {
mod("LifeDegen", "BASE", nil, 0, 0, { type = "Condition", var = "DemonForm" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonFlameStacks", limitVar = "DemonFlameMaximum" } ),
div = 60,
},
},
baseFlags = {
},
constantStats = {
Expand Down
12 changes: 12 additions & 0 deletions src/Export/Skills/other.txt
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,18 @@ statMap = {
#skill DemonFormPlayer
#set DemonFormPlayer
#flags
statMap = {
["demon_form_spell_damage_+%_final_per_stack"] = {
mod("Damage", "MORE", nil, 0, KeywordFlag.Spell, { type = "Condition", var = "DemonForm" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form"}, { type = "Multiplier", var = "DemonFlameStacks", limitVar = "DemonFlameMaximum" } ),
},
["demon_form_grants_cast_speed_+%"] = {
mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "Condition", var = "DemonForm" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" } ),
},
["demon_form_life_loss_per_minute_per_stack"] = {
mod("LifeDegen", "BASE", nil, 0, 0, { type = "Condition", var = "DemonForm" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Demon Form" }, { type = "Multiplier", var = "DemonFlameStacks", limitVar = "DemonFlameMaximum" } ),
div = 60,
},
},
#mods
#skillEnd

Expand Down
2 changes: 1 addition & 1 deletion src/Modules/CalcDefence.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1624,7 +1624,7 @@ 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 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
Expand Down
1 change: 1 addition & 0 deletions src/Modules/CalcSetup.lua
Original file line number Diff line number Diff line change
Expand Up @@ -595,6 +595,7 @@ function calcs.initEnv(build, mode, override, specEnv)
modDB:NewMod("MaximumValour", "BASE", 50, "Base")
modDB:NewMod("SoulEaterMax", "BASE", 45, "Base")
modDB:NewMod("Multiplier:IntensityLimit", "BASE", 3, "Base")
modDB:NewMod("Multiplier:DemonFlameMaximum", "BASE", 10, "Base")
modDB:NewMod("Damage", "INC", data.characterConstants["damage_+%_per_10_rampage_stacks"], "Base", { type = "Multiplier", var = "Rampage", limit = data.characterConstants["max_rampage_stacks"] / 20, div = 20 })
modDB:NewMod("MovementSpeed", "INC", data.characterConstants["movement_velocity_+%_per_10_rampage_stacks"], "Base", { type = "Multiplier", var = "Rampage", limit = data.characterConstants["max_rampage_stacks"] / 20, div = 20 })
modDB:NewMod("Speed", "INC", 5, "Base", ModFlag.Attack, { type = "Multiplier", var = "SoulEater"})
Expand Down
7 changes: 7 additions & 0 deletions src/Modules/ConfigOptions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,13 @@ 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 = "inDemonForm", type = "check", label = "Are you in Demon Form?", ifSkill = "Demon Form", defaultState = true, tooltip = "Players need a minimum of 2 ^xE05030Life ^7to enter Demon Form, so you cannot use it with Chaos Inoculation", apply = function(val, modList, enemyModList)
modList:NewMod("Condition:DemonForm", "FLAG", true, "Config", { type = "StatThreshold", stat = "Life", threshold = 2 })
end },
{ var = "demonFormStacks", type = "count", label = "Demonflame Stacks", ifSkill = "Demon Form", defaultPlaceholderState = 10, apply = function(val, modList, enemyModList)
modList:NewMod("Multiplier:DemonFlameStacks", "BASE", val, "Config", { type = "Condition", var = "DemonForm" } )
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)
Expand Down
2 changes: 2 additions & 0 deletions src/Modules/ModParser.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3096,6 +3096,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
["demonflame has no maximum"] = { mod("Multiplier:DemonFlameMaximum", "BASE", 999) },
-- Item local modifiers
["has no sockets"] = { flag("NoSockets") },
["reflects your other ring"] = {
Expand Down
4 changes: 2 additions & 2 deletions src/Modules/StatDescriber.lua
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,8 @@ local function applySpecial(val, spec)
val[spec.v].max = val[spec.v].max / 1000
val[spec.v].fmt = "g"
elseif spec.k == "per_minute_to_per_second" then
val[spec.v].min = val[spec.v].min / 60
val[spec.v].max = val[spec.v].max / 60
val[spec.v].min = floor(val[spec.v].min / 60, 1)
val[spec.v].max = floor(val[spec.v].max / 60, 1)
val[spec.v].fmt = "g"
elseif spec.k == "per_minute_to_per_second_0dp" then
val[spec.v].min = round(val[spec.v].min / 60)
Expand Down