Skip to content

Commit 22bc7b1

Browse files
authored
Add Fortification Stats to CalcsTab (#9312)
* add fortification max, min, duration, and effect to CalcSections remove effect scaling from Ichi/buffs on self * modcache? * Revert "modcache?" This reverts commit a2dfeef. * add global base duration, update skillstatmap for skills that gain fortify on hit, update fortify support qual to apply duration
1 parent 3a43915 commit 22bc7b1

File tree

6 files changed

+22
-7
lines changed

6 files changed

+22
-7
lines changed

src/Data/ModCache.lua

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4880,7 +4880,7 @@ c["30% increased Fire Damage if you have used a Cold Skill Recently"]={{[1]={[1]
48804880
c["30% increased Fire Damage with Attack Skills"]={{[1]={flags=0,keywordFlags=65536,name="FireDamage",type="INC",value=30}},nil}
48814881
c["30% increased Fire Damage with Hits and Ailments against Blinded Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Blinded"},flags=0,keywordFlags=786432,name="FireDamage",type="INC",value=30}},nil}
48824882
c["30% increased Flask Recovery rate"]={{[1]={flags=0,keywordFlags=0,name="FlaskRecoveryRate",type="INC",value=30}},nil}
4883-
c["30% increased Fortification Duration"]={{[1]={flags=0,keywordFlags=0,name="FortificationDuration",type="INC",value=30}},nil}
4883+
c["30% increased Fortification Duration"]={{[1]={flags=0,keywordFlags=0,name="FortifyDuration",type="INC",value=30}},nil}
48844884
c["30% increased Freeze Duration on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeDuration",type="INC",value=30}},nil}
48854885
c["30% increased Global Accuracy Rating"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="Accuracy",type="INC",value=30}},nil}
48864886
c["30% increased Global Critical Strike Chance"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="CritChance",type="INC",value=30}},nil}
@@ -5093,7 +5093,7 @@ c["35% increased Effect of your Curses"]={{[1]={flags=0,keywordFlags=0,name="Cur
50935093
c["35% increased Elemental Damage"]={{[1]={flags=0,keywordFlags=0,name="ElementalDamage",type="INC",value=35}},nil}
50945094
c["35% increased Elemental Damage with Hits and Ailments for each type of Elemental Ailment on Enemy"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Frozen"},flags=0,keywordFlags=786432,name="ElementalDamage",type="INC",value=35},[2]={[1]={actor="enemy",type="ActorCondition",var="Chilled"},flags=0,keywordFlags=786432,name="ElementalDamage",type="INC",value=35},[3]={[1]={actor="enemy",type="ActorCondition",var="Ignited"},flags=0,keywordFlags=786432,name="ElementalDamage",type="INC",value=35},[4]={[1]={actor="enemy",type="ActorCondition",var="Shocked"},flags=0,keywordFlags=786432,name="ElementalDamage",type="INC",value=35},[5]={[1]={actor="enemy",type="ActorCondition",var="Scorched"},flags=0,keywordFlags=786432,name="ElementalDamage",type="INC",value=35},[6]={[1]={actor="enemy",type="ActorCondition",var="Brittle"},flags=0,keywordFlags=786432,name="ElementalDamage",type="INC",value=35},[7]={[1]={actor="enemy",type="ActorCondition",var="Sapped"},flags=0,keywordFlags=786432,name="ElementalDamage",type="INC",value=35}},nil}
50955095
c["35% increased Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="FireDamage",type="INC",value=35}},nil}
5096-
c["35% increased Fortification Duration"]={{[1]={flags=0,keywordFlags=0,name="FortificationDuration",type="INC",value=35}},nil}
5096+
c["35% increased Fortification Duration"]={{[1]={flags=0,keywordFlags=0,name="FortifyDuration",type="INC",value=35}},nil}
50975097
c["35% increased Global Critical Strike Chance"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="CritChance",type="INC",value=35}},nil}
50985098
c["35% increased Global maximum Energy Shield and reduced Lightning Resistance"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=35},[2]={flags=0,keywordFlags=0,name="LightningResist",type="INC",value=-35}},nil}
50995099
c["35% increased Life Recovery from Flasks"]={{[1]={flags=0,keywordFlags=0,name="FlaskLifeRecovery",type="INC",value=35}},nil}
@@ -5329,7 +5329,7 @@ c["40% increased Evasion Rating while Phasing"]={{[1]={[1]={type="Condition",var
53295329
c["40% increased Evasion Rating while you have Onslaught"]={{[1]={[1]={type="Condition",var="Onslaught"},flags=0,keywordFlags=0,name="Evasion",type="INC",value=40}},nil}
53305330
c["40% increased Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="FireDamage",type="INC",value=40}},nil}
53315331
c["40% increased Fire Damage with Hits and Ailments against Blinded Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Blinded"},flags=0,keywordFlags=786432,name="FireDamage",type="INC",value=40}},nil}
5332-
c["40% increased Fortification Duration"]={{[1]={flags=0,keywordFlags=0,name="FortificationDuration",type="INC",value=40}},nil}
5332+
c["40% increased Fortification Duration"]={{[1]={flags=0,keywordFlags=0,name="FortifyDuration",type="INC",value=40}},nil}
53335333
c["40% increased Global Accuracy Rating"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="Accuracy",type="INC",value=40}},nil}
53345334
c["40% increased Global Critical Strike Chance"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="CritChance",type="INC",value=40}},nil}
53355335
c["40% increased Global Critical Strike Chance while wielding a Staff"]={{[1]={[1]={type="Global"},[2]={type="Condition",var="UsingStaff"},flags=0,keywordFlags=0,name="CritChance",type="INC",value=40}},nil}

src/Data/SkillStatMap.lua

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -672,6 +672,10 @@ return {
672672
["fortify_duration_+%"] = {
673673
mod("FortifyDuration", "INC", nil),
674674
},
675+
["gain_fortify_on_melee_hit_ms"] = {
676+
mod("FortifyDuration", "OVERRIDE", nil),
677+
div = 1000,
678+
},
675679
["support_swift_affliction_skill_effect_and_damaging_ailment_duration_+%_final"] = {
676680
mod("Duration", "MORE", nil),
677681
mod("DamagingAilmentDuration", "MORE", nil),

src/Modules/CalcPerform.lua

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -614,15 +614,20 @@ local function doActorMisc(env, actor)
614614
end
615615
-- Fortify
616616
if modDB:Flag(nil, "Fortified") or modDB:Sum("BASE", nil, "Multiplier:Fortification") > 0 then
617+
local skillModList = actor.mainSkill.skillModList
617618
local maxStacks = modDB:Override(nil, "MaximumFortification") or modDB:Sum("BASE", skillCfg, "MaximumFortification")
618619
local minStacks = m_min(modDB:Flag(nil, "Condition:HaveMaxFortification") and maxStacks or modDB:Sum("BASE", nil, "MinimumFortification"), maxStacks)
619620
local stacks = m_min(modDB:Override(nil, "FortificationStacks") or (alliedFortify > 0 and alliedFortify) or (minStacks > 0 and minStacks) or maxStacks, maxStacks)
621+
local increasedDuration = skillModList:Sum("INC", nil, "FortifyDuration")
622+
output.MaximumFortification = maxStacks
623+
output.MinimumFortification = minStacks
620624
output.FortificationStacks = stacks
621625
output.FortificationStacksOver20 = m_min(m_max(0, stacks - 20), maxStacks - 20)
626+
output.FortifyDuration = (skillModList:Override(nil, "FortifyDuration") or data.misc.FortifyBaseDuration) * (1 + increasedDuration / 100)
627+
output.FortificationEffect = "0" -- string allows shown for Willowgift mod
622628
if not modDB:Flag(nil,"Condition:NoFortificationMitigation") then
623-
local effectScale = 1 + modDB:Sum("INC", nil, "BuffEffectOnSelf") / 100
624-
local effect = m_floor(effectScale * stacks)
625-
modDB:NewMod("DamageTakenWhenHit", "MORE", -effect, "Fortification")
629+
output.FortificationEffect = stacks
630+
modDB:NewMod("DamageTakenWhenHit", "MORE", -stacks, "Fortification")
626631
end
627632
if stacks >= maxStacks then
628633
modDB:NewMod("Condition:HaveMaximumFortification", "FLAG", true, "")

src/Modules/CalcSections.lua

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1760,6 +1760,11 @@ return {
17601760
{ label = "Exposure Effect", { format = "{1:output:ExposureEffectOnSelf}%", { modName = "ExposureEffectOnSelf" }, }, },
17611761
{ label = "Wither Effect", { format = "{1:output:WitherEffectOnSelf}%", { modName = "WitherEffectOnSelf" }, }, },
17621762
{ label = "Debuff Dur. Mult.", haveOutput = "showDebuffExpirationModifier", { format = "{1:output:DebuffExpirationModifier}%", { modName = "SelfDebuffExpirationRate" }, }, },
1763+
} }, { defaultCollapsed = false, label = "Fortification", data = {
1764+
{ label = "Maximum Stacks", haveOutput = "MaximumFortification", { format = "{0:output:MaximumFortification}", { breakdown = "MaximumFortification" }, { modName = "MaximumFortification" }, }, },
1765+
{ label = "Minimum Stacks", haveOutput = "MinimumFortification", { format = "{0:output:MinimumFortification}", { breakdown = "MinimumFortification" }, { modName = "MinimumFortification" }, }, },
1766+
{ label = "Duration", haveOutput = "FortifyDuration", { format = "{2:output:FortifyDuration}s", { breakdown = "FortifyDuration" }, { modName = "FortifyDuration" }, }, },
1767+
{ label = "Less Dmg. Taken", haveOutput = "FortificationEffect", { format = "{output:FortificationEffect}%", { breakdown = "FortificationEffect" }, { modName = "Condition:NoFortificationMitigation" }, }, },
17631768
} }, { defaultCollapsed = false, label = "Stun Duration", data = {
17641769
{ label = "Stun Avoid Chance", haveOutput = "StunAvoidChance", { format = "{0:output:StunAvoidChance}%", { breakdown = "StunAvoidChance" }, { modName = { "AvoidStun", "StunImmune" } }, }, },
17651770
{ label = "Stun Threshold", { format = "{0:output:StunThreshold}", { breakdown = "StunThreshold" }, { modName = { "StunThreshold", "StunThresholdManaPercent", "StunThresholdEnergyShieldPercent" } }, }, },

src/Modules/Data.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ data.misc = { -- magic numbers
177177
SuppressionChanceCap = 100,
178178
SuppressionEffect = 40,
179179
AvoidChanceCap = 75,
180+
FortifyBaseDuration = 6,
180181
ManaRegenBase = data.characterConstants["mana_regeneration_rate_per_minute_%"] / 60 / 100,
181182
EnergyShieldRechargeBase = data.characterConstants["energy_shield_recharge_rate_per_minute_%"] / 60 / 100,
182183
EnergyShieldRechargeBase = 0.33,

src/Modules/ModParser.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@ local modNameList = {
458458
["rage effect"] = "RageEffect",
459459
["maximum fortification"] = "MaximumFortification",
460460
["fortification"] = "MinimumFortification",
461-
["fortification duration"] = "FortificationDuration",
461+
["fortification duration"] = "FortifyDuration",
462462
["maximum valour"] = "MaximumValour",
463463
-- Charges
464464
["maximum power charge"] = "PowerChargesMax",

0 commit comments

Comments
 (0)