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
15 changes: 7 additions & 8 deletions src/Data/ModCache.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1386,7 +1386,7 @@ c["15% increased Flask Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="Fla
c["15% increased Freeze Buildup"]={{}," Freeze Buildup "}
c["15% increased Freeze Buildup 15% increased Chill and Freeze Duration on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeDuration",type="INC",value=15},[2]={flags=0,keywordFlags=0,name="EnemyChillDuration",type="INC",value=15}}," Freeze Buildup 15% increased "}
c["15% increased Global Physical Damage"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="PhysicalDamage",type="INC",value=15}},nil}
c["15% increased Glory generation"]={{}," Glory generation "}
c["15% increased Glory generation"]={{[1]={flags=0,keywordFlags=0,name="GloryGeneration",type="INC",value=15}},nil}
c["15% increased Ignite Duration on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyIgniteDuration",type="INC",value=15}},nil}
c["15% increased Ignite Magnitude"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=15}},nil}
c["15% increased Immobilisation buildup"]={{}," Immobilisation buildup "}
Expand Down Expand Up @@ -1698,7 +1698,7 @@ c["20% increased Freeze Duration on Enemies"]={{[1]={flags=0,keywordFlags=0,name
c["20% increased Frenzy Charge Duration"]={{[1]={flags=0,keywordFlags=0,name="FrenzyChargesDuration",type="INC",value=20}},nil}
c["20% increased Global Defences"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="Defences",type="INC",value=20}},nil}
c["20% increased Global Physical Damage"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="PhysicalDamage",type="INC",value=20}},nil}
c["20% increased Glory generation for Banner Skills"]={{}," Glory generation for Banner Skills "}
c["20% increased Glory generation for Banner Skills"]={{[1]={flags=0,keywordFlags=0,name="GloryOnHit",type="INC",value=20}},nil}
c["20% increased Hazard Duration"]={{[1]={[1]={skillType=203,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=20}},nil}
c["20% increased Hazard Immobilisation buildup"]={{}," Immobilisation buildup "}
c["20% increased Hinder Duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=20}}," Hinder "}
Expand Down Expand Up @@ -2946,7 +2946,7 @@ c["8% increased Flask Charges gained"]={{[1]={flags=0,keywordFlags=0,name="Flask
c["8% increased Flask Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="FlaskDuration",type="INC",value=8}},nil}
c["8% increased Flask and Charm Charges gained"]={{[1]={flags=0,keywordFlags=0,name="CharmChargesGained",type="INC",value=8},[2]={flags=0,keywordFlags=0,name="FlaskChargesGained",type="INC",value=8}},nil}
c["8% increased Freeze Buildup"]={{}," Freeze Buildup "}
c["8% increased Glory generation"]={{}," Glory generation "}
c["8% increased Glory generation"]={{[1]={flags=0,keywordFlags=0,name="GloryGeneration",type="INC",value=8}},nil}
c["8% increased Ignite Duration on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyIgniteDuration",type="INC",value=8}},nil}
c["8% increased Ignite Magnitude"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=8}},nil}
c["8% increased Immobilisation buildup"]={{}," Immobilisation buildup "}
Expand Down Expand Up @@ -3227,7 +3227,7 @@ c["Allies in your Presence have 15% increased Attack Speed"]={{[1]={flags=0,keyw
c["Allies in your Presence have 15% increased Cast Speed"]={{[1]={flags=0,keywordFlags=0,name="ExtraAura",type="LIST",value={mod={flags=16,keywordFlags=0,name="Speed",type="INC",value=15},onlyAllies=true}}},nil}
c["Allies in your Presence have 20% increased Attack Speed"]={{[1]={flags=0,keywordFlags=0,name="ExtraAura",type="LIST",value={mod={flags=1,keywordFlags=0,name="Speed",type="INC",value=20},onlyAllies=true}}},nil}
c["Allies in your Presence have 20% increased Cast Speed"]={{[1]={flags=0,keywordFlags=0,name="ExtraAura",type="LIST",value={mod={flags=16,keywordFlags=0,name="Speed",type="INC",value=20},onlyAllies=true}}},nil}
c["Allies in your Presence have 30% increased Glory generation"]={{}," Glory generation "}
c["Allies in your Presence have 30% increased Glory generation"]={{[1]={flags=0,keywordFlags=0,name="ExtraAura",type="LIST",value={mod={flags=0,keywordFlags=0,name="GloryGeneration",type="INC",value=30},onlyAllies=true}}},nil}
c["Allies in your Presence have 32% increased Critical Damage Bonus"]={{[1]={flags=0,keywordFlags=0,name="ExtraAura",type="LIST",value={mod={flags=0,keywordFlags=0,name="CritMultiplier",type="INC",value=32},onlyAllies=true}}},nil}
c["Allies in your Presence have 32% increased Critical Hit Chance"]={{[1]={flags=0,keywordFlags=0,name="ExtraAura",type="LIST",value={mod={flags=0,keywordFlags=0,name="CritChance",type="INC",value=32},onlyAllies=true}}},nil}
c["Allies in your Presence have 40% increased Critical Damage Bonus"]={{[1]={flags=0,keywordFlags=0,name="ExtraAura",type="LIST",value={mod={flags=0,keywordFlags=0,name="CritMultiplier",type="INC",value=40},onlyAllies=true}}},nil}
Expand Down Expand Up @@ -4063,8 +4063,7 @@ c["Banner Skills have 30% increased Area of Effect"]={{[1]={[1]={skillType=88,ty
c["Banner Skills have 30% increased Duration"]={{[1]={[1]={skillType=88,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=30}},nil}
c["Banners also grant +25% to all Elemental Resistances to you and Allies"]={{[1]={[1]={skillType=88,type="SkillType"},flags=0,keywordFlags=0,name="ExtraAuraEffect",type="LIST",value={mod={flags=0,keywordFlags=0,name="ElementalResist",type="BASE",value=25}}}},nil}
c["Banners always have maximum Valour"]={nil,"Banners always have maximum Valour "}
c["Banners gain 5 Glory per second"]={nil,"Banners gain 5 Glory per second "}
c["Banners gain 5 Glory per second There is no Limit on the number of Banners you can place"]={nil,"Banners gain 5 Glory per second There is no Limit on the number of Banners you can place "}
c["Banners gain 5 Glory per second"]={{[1]={flags=0,keywordFlags=0,name="BannerGloryPerSecond",type="BASE",value=5}},nil}
c["Barrageable Attacks with this Bow Repeat +1 time if no enemies are in your Presence"]={nil,"Barrageable Attacks with this Bow Repeat +1 time if no enemies are in your Presence "}
c["Base Bleeding Duration is 1 second"]={{[1]={flags=0,keywordFlags=0,name="BleedDurationBase",type="OVERRIDE",value="1"}},nil}
c["Base Critical Hit Chance for Attacks with Weapons is 7%"]={{[1]={flags=0,keywordFlags=0,name="WeaponBaseCritChance",type="OVERRIDE",value=7}},nil}
Expand Down Expand Up @@ -5432,9 +5431,9 @@ c["Skills have 33% chance to not consume a Cooldown when used"]={{[1]={[1]={skil
c["Skills have 5% chance to not remove Elemental Infusions but still count as consuming them"]={{}," to not remove Elemental Infusions but still count as consuming them "}
c["Skills have 6% increased Skill Speed per Connected green Support Gem"]={{[1]={flags=0,keywordFlags=0,name="SkillSpeedIncreasedPerGreenSupport",type="FLAG",value=6}},nil}
c["Skills have a 125% longer Perfect Timing window"]={{[1]={flags=0,keywordFlags=0,name="PerfectTiming",type="INC",value=125}},nil}
c["Skills have a 15% chance to not consume Glory"]={nil,"a 15% chance to not consume Glory "}
c["Skills have a 15% chance to not consume Glory"]={{[1]={flags=0,keywordFlags=0,name="ChanceToNotConsumeGlory",type="BASE",value=15}},nil}
c["Skills have a 150% longer Perfect Timing window"]={{[1]={flags=0,keywordFlags=0,name="PerfectTiming",type="INC",value=150}},nil}
c["Skills have a 5% chance to not consume Glory"]={nil,"a 5% chance to not consume Glory "}
c["Skills have a 5% chance to not consume Glory"]={{[1]={flags=0,keywordFlags=0,name="ChanceToNotConsumeGlory",type="BASE",value=5}},nil}
c["Skills reserve 50% less Spirit"]={{[1]={flags=0,keywordFlags=0,name="SpiritReserved",type="MORE",value=-50}},nil}
c["Skills used by Totems have 30% more Skill Speed"]={{[1]={flags=0,keywordFlags=16384,name="Speed",type="MORE",value=30},[2]={flags=0,keywordFlags=16384,name="WarcrySpeed",type="MORE",value=30},[3]={flags=0,keywordFlags=16384,name="TotemPlacementSpeed",type="MORE",value=30}},nil}
c["Slam Skills have 8% increased Area of Effect"]={{[1]={[1]={skillType=92,type="SkillType"},flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=8}},nil}
Expand Down
16 changes: 15 additions & 1 deletion src/Data/SkillStatMap.lua
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,21 @@ return {
skill("castTimeOverride", nil),
div = 1000,
},
["active_skill_requires_X_glory"] = {
-- skill("gloryCost", nil),
mod("GloryCost", "BASE", nil),
},
["active_skill_generates_mp_%_glory_per_attack_hit"] = {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing Glory mods for active_skill_generates_mp_%_glory_per_heavy_stun on Hammer of the Gods and Spear of Solaris,

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True, but I don't know how to display anything meaningful for those.
The intent was to display something meaningful for players with a banner, because it's very hard to gauge as a player.
The heavy stun mechanic is much more predictable, because a warrior will already know how often he stuns.

mod("GloryOnHit", "MAX", nil, 0, KeywordFlag.Attack, { type = "GlobalEffect", effectType = "Aura" }),
div = 100
},
["active_skill_generates_mp_%_glory_per_heavy_stun"] = {
skill("gloryOnStun", nil),
div = 100
},
["support_glory_required_+%_final"] = {
mod("GloryCost", "MORE", nil),
},
["skill_cannot_gain_repeat_bonuses"] = {
flag("NoRepeatBonuses"),
},
Expand Down Expand Up @@ -2495,7 +2510,6 @@ return {
["banner_aura_magnitude_+%_final_per_resource"] = {
mod("AuraEffect", "MORE", nil, 0, 0, { type = "Multiplier", var = "BannerValour" }, { type = "Condition", var = "BannerPlanted" }),
},

-- Crossbow
["reload_speed_+%"] = {
mod("ReloadSpeed", "INC", nil),
Expand Down
1 change: 1 addition & 0 deletions src/Modules/BuildDisplayStats.lua
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ local displayStats = {
{ stat = "SealMax", label = "Max Number of Seals", fmt = "d" },
{ stat = "TimeMaxSeals", label = "Time to Gain Max Seals", fmt = ".2fs", lowerIsBetter = true },
{ stat = "AreaOfEffectRadiusMetres", label = "AoE Radius", fmt = ".1fm" },
{ stat = "GloryCost", label = "Glory Cost", fmt = ".0f", colorCodes.RARE },
{ 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 },
Expand Down
43 changes: 43 additions & 0 deletions src/Modules/CalcOffence.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3296,6 +3296,16 @@ function calcs.offence(env, actor, activeSkill)
activeSkill.activeEffect.grantedEffect.explosiveArrowFunc(activeSkill, output, globalOutput, globalBreakdown, env)
end


local gloryCost = skillModList:Sum("BASE", nil, "GloryCost") -- skillData.gloryCost or 0
if gloryCost > 0 then
local more = skillModList:More(skillCfg , "GloryCost")
output.GloryCost = gloryCost * more
if globalOutput then
globalOutput.ShowGlory = 1
end
end

-- Calculate crit chance, crit multiplier, and their combined effect
if skillModList:Flag(cfg, "NeverCrit") then
output.PreEffectiveCritChance = 0
Expand Down Expand Up @@ -3994,6 +4004,39 @@ function calcs.offence(env, actor, activeSkill)
output.LifeOnHitRate = output.LifeOnHit * hitRate
output.EnergyShieldOnHitRate = output.EnergyShieldOnHit * hitRate
output.ManaOnHitRate = output.ManaOnHit * hitRate


if globalBreakdown then
globalBreakdown["Glory"] = {}
local power = modDB:Sum("BASE", nil, "Multiplier:EnemyPower") or 1
local inc = modDB:Sum("INC", skillCfg, "GloryGeneration") or 0
if output.GloryCost then
t_insert(globalBreakdown["Glory"], s_format("Uses %.0f glory", output.GloryCost))
end
if inc > 0 then
t_insert(globalBreakdown["Glory"], "" .. s_format("%.0f%% increased generation", inc))
end
local chanceToNotConsume = modDB:Sum("BASE", skillCfg, "ChanceToNotConsumeGlory") or 0
if chanceToNotConsume > 0 then
t_insert(globalBreakdown["Glory"], s_format("%.0f%% chance to not consume", chanceToNotConsume))
end
local bannerGloryPerSecond = modDB:Sum("BASE", skillCfg, "BannerGloryPerSecond")
if bannerGloryPerSecond then
t_insert(globalBreakdown["Glory"], s_format("%.0f passive glory/s for banners", bannerGloryPerSecond * (1+inc/100)))
end
local gloryOnHit = modDB:Max(skillCfg, "GloryOnHit")
if gloryOnHit and not output.GloryCost then
local incBanner = modDB:Sum("INC", skillCfg, "GloryOnHit") or 0
local internalCooldown = 3
local hitRateReduction = hitRate / internalCooldown
t_insert(globalBreakdown["Glory"], s_format("%.0f active glory/s for banners", gloryOnHit * (1+(inc+incBanner)/100) * hitRate * hitRateReduction * power))
globalOutput.ShowGlory = 1
end
if skillData.gloryOnStun then
t_insert(globalBreakdown["Glory"], s_format("%.0f glory gained on stun", skillData.gloryOnStun * (1+inc/100) * power))
globalOutput.ShowGlory = 1
end
end

-- Calculate gain on kill
if skillFlags.mine or skillFlags.trap or skillFlags.totem then
Expand Down
3 changes: 3 additions & 0 deletions src/Modules/CalcSections.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1427,6 +1427,9 @@ return {
{ label = "Enemy Mana Recovery", haveOutput = "EnemyManaRegen", { format = "{0:output:EnemyManaRegen}%", { modName = "ManaRegen", modType = "INC", enemy = true }, }, },
{ label = "Enemy ES Recovery", haveOutput = "EnemyEnergyShieldRegen", { format = "{0:output:EnemyEnergyShieldRegen}%", { modName = "EnergyShieldRegen", modType = "INC", enemy = true }, }, },
{ label = "MS While Casting", { format = "{1:output:MovementSpeedWhileUsingSkillPercent}%", { breakdown = "MovementSpeedWhileUsingSkill" }, { modName = { "SkillMovementSpeed", "MovementSpeedPenalty" }, cfg = "skill" }, }, },
{ label = "Glory", haveOutput = "ShowGlory", {format = "-", { breakdown = "Glory" },
{ label = "Glory modifiers", modName = {"GloryGeneration", "ChanceToNotConsumeGlory", "BannerGloryPerSecond"} },
}, },
} }
} },
-- attributes/resists
Expand Down
10 changes: 9 additions & 1 deletion src/Modules/ModParser.lua
Original file line number Diff line number Diff line change
Expand Up @@ -670,6 +670,7 @@ local modNameList = {
["to deal triple damage"] = "TripleDamageChance",
["curse activation"] = "CurseActivation",
["ice crystal life"] = "IceCrystalLife",
["glory cost"] = "GloryCost",
-- Effects
["onslaught effect"] = "OnslaughtEffect",
["effect of onslaught on you"] = "OnslaughtEffect",
Expand Down Expand Up @@ -871,6 +872,9 @@ local modNameList = {
["penalty to accuracy rating at range"] = "AccuracyPenalty",
["when you reload a crossbow to be immediate"] = "InstantReloadChance",
["to not expend ammunition"] = "ChanceToNotConsumeAmmo",
["glory generation"] = "GloryGeneration",
["glory generation for banner skills"] = "GloryOnHit",
["to not consume glory"] = "ChanceToNotConsumeGlory",
-- Flask and Charm modifiers
["effect"] = "LocalEffect",
["effect of flasks"] = "FlaskEffect",
Expand Down Expand Up @@ -1274,7 +1278,7 @@ local preFlagList = {
["^non%-channelling spells [hd][ae][va][el] "] = { flags = ModFlag.Spell, tag = { type = "SkillType", skillType = SkillType.Channel, neg = true } },
["^non%-vaal skills deal "] = { tag = { type = "SkillType", skillType = SkillType.Vaal, neg = true } },
["^bolts fired by crossbow attacks [hd][ae][va][el] "] = { flags = ModFlag.Crossbow, tag = { type = "SkillType", skillType = SkillType.CrossbowSkill } },
["^skills [hgdf][aei][vari][eln] "] = { },
["^skills [hgdf][aei][vari][eln] a?n? ?"] = { },
["^triggered spells [hd][ae][va][el] "] = { keywordFlags = KeywordFlag.Spell, tag = { type = "SkillType", skillType = SkillType.Triggered } },
["^totems have "] = { keywordFlags = KeywordFlag.Totem },
["^persistent buffs have "] = { tagList = { { type = "SkillType", skillType = SkillType.Persistent }, { type = "SkillType", skillType = SkillType.Buff } } },
Expand Down Expand Up @@ -3125,6 +3129,9 @@ local specialModList = {
mod("ExtraAura", "LIST", { onlyAllies = true, mod = flag("GainMainHandDmgFromParent") }),
mod("Multiplier:MainHandDamageToAllies", "BASE", num),
} end,
["banners gain (%d+) glory per second"] = function(num) return {
mod("BannerGloryPerSecond", "BASE", num)
} end,
-- Warrior - Smith of Kitava
["body armour grants armour also applies to (%a+) damage taken from hits"] = function(_, dmgType) return {
mod("ArmourAppliesTo"..firstToUpper(dmgType).."DamageTaken", "BASE", 100, { type = "ItemCondition", itemSlot = "Body Armour", rarityCond = "NORMAL" })
Expand Down Expand Up @@ -5919,6 +5926,7 @@ local resourceTypes = {
["energy shield, life and mana"] = { "Life", "Mana", "EnergyShield" },
["energy shield, mana and life"] = { "Life", "Mana", "EnergyShield" },
["rage"] = "Rage",
["glory"] = "Glory",
}
do
local maximumResourceTypes = { }
Expand Down