added breakdown for quantity multiplier; fixed wasted trigger helpful message

This commit is contained in:
Nostrademous
2021-03-27 13:10:03 -04:00
parent 3e6b253f53
commit 1b4bed8bda
3 changed files with 25 additions and 9 deletions

View File

@@ -347,7 +347,7 @@ function buildMode:Init(dbFileName, buildName, buildXML, convertBuild)
{ },
{ stat = "FullDPS", label = "Full DPS", fmt = ".1f", color = colorCodes.CURRENCY, compPercent = true },
{ },
{ stat = "SkillDPS", label = "Skill DPS", condFunc = function() return true end, skillDPSStat = true },
{ stat = "SkillDPS", label = "Skill DPS", condFunc = function() return true end },
}
self.minionDisplayStats = {

View File

@@ -3689,7 +3689,6 @@ function calcs.offence(env, actor, activeSkill)
local moreDamage = usedSkill.skillModList:Sum("BASE", usedSkill.skillCfg, "GeneralsCryMirageWarriorLessDamage")
local exertInc = env.modDB:Sum("INC", usedSkill.skillCfg, "ExertIncrease")
local exertMore = env.modDB:Sum("MORE", usedSkill.skillCfg, "ExertIncrease")
local maxMirageWarriors = activeSkill.skillModList:Sum("BASE", activeSkill.skillCfg, "GeneralsCryDoubleMaxCount")
local newSkill, newEnv = calcs.copyActiveSkill(env, "CALCS", usedSkill)
@@ -3697,7 +3696,12 @@ function calcs.offence(env, actor, activeSkill)
newSkill.skillModList:NewMod("Damage", "MORE", moreDamage, "General's Cry", activeSkill.ModFlags, activeSkill.KeywordFlags)
newSkill.skillModList:NewMod("Damage", "INC", exertInc, "General's Cry Exerted Attacks", activeSkill.ModFlags, activeSkill.KeywordFlags)
newSkill.skillModList:NewMod("Damage", "MORE", exertMore, "General's Cry Exerted Attacks", activeSkill.ModFlags, activeSkill.KeywordFlags)
newSkill.skillModList:NewMod("QuantityMultiplier", "BASE", maxMirageWarriors, "General's Cry Max Mirage Warriors", activeSkill.ModFlags, activeSkill.KeywordFlags)
local maxMirageWarriors = 0
for i, value in ipairs(env.player.mainSkill.skillModList:Tabulate("BASE", env.player.mainSkill.skillCfg, "GeneralsCryDoubleMaxCount")) do
local mod = value.mod
newSkill.skillModList:NewMod("QuantityMultiplier", "BASE", mod.value, mod.source, activeSkill.ModFlags, activeSkill.KeywordFlags)
maxMirageWarriors = maxMirageWarriors + mod.value
end
-- Recalculate the offensive/defensive aspects of this new skill
newEnv.player.mainSkill = newSkill

View File

@@ -111,9 +111,9 @@ local function calcMultiSpellRotationImpact(env, skillRotation, sourceAPS)
local mainRate = 0
local trigRateTable = { simTime = SIM_TIME, rates = {}, }
if wasted > 0 then
t_insert(trigRateTable.rates, { name = "Wasted_Need Higher_ICDR", rate = wasted / SIM_TIME })
trigRateTable.extraSimInfo = "Wasted trigger opportunities exist. Increase your ICDR to fix this."
else
t_insert(trigRateTable.rates, { name = "No Wasted Hits_ _ ", rate = wasted / SIM_TIME })
trigRateTable.extraSimInfo = "Good Job! There are no wasted trigger opportunities"
end
for _, sd in ipairs(skillRotation) do
if cacheSkillUUID(env.player.mainSkill) == sd.uuid then
@@ -158,6 +158,10 @@ local function calcActualTriggerRate(env, source, sourceAPS, spellCount, output,
s_format("Simulation Breakdown"),
s_format("Simulation Duration: %.2f", simBreakdown.simTime),
}
if simBreakdown.extraSimInfo then
t_insert(breakdown.SourceTriggerRate, "")
t_insert(breakdown.SourceTriggerRate, simBreakdown.extraSimInfo)
end
breakdown.SimData = {
rowList = { },
colList = {
@@ -170,7 +174,7 @@ local function calcActualTriggerRate(env, source, sourceAPS, spellCount, output,
for _, rateData in ipairs(simBreakdown.rates) do
local t = { }
for str in string.gmatch(rateData.name, "([^_]+)") do
table.insert(t, str)
t_insert(t, str)
end
local row = {
@@ -204,6 +208,10 @@ local function calcActualTriggerRate(env, source, sourceAPS, spellCount, output,
s_format("Simulation Breakdown"),
s_format("Simulation Duration: %.2f", simBreakdown.simTime),
}
if simBreakdown.extraSimInfo then
t_insert(breakdown.SourceTriggerRate, "")
t_insert(breakdown.SourceTriggerRate, simBreakdown.extraSimInfo)
end
breakdown.SimData = {
rowList = { },
colList = {
@@ -216,7 +224,7 @@ local function calcActualTriggerRate(env, source, sourceAPS, spellCount, output,
for _, rateData in ipairs(simBreakdown.rates) do
local t = { }
for str in string.gmatch(rateData.name, "([^_]+)") do
table.insert(t, str)
t_insert(t, str)
end
local row = {
@@ -2044,14 +2052,18 @@ function calcs.perform(env)
if usedSkill then
local moreDamage = usedSkill.skillModList:Sum("BASE", usedSkill.skillCfg, "MirageArcherLessDamage")
local moreAttackSpeed = usedSkill.skillModList:Sum("BASE", usedSkill.skillCfg, "MirageArcherLessAttackSpeed")
local maxMirageArchers = env.player.mainSkill.skillModList:Sum("BASE", env.player.mainSkill.skillCfg, "MirageArcherMaxCount")
local newSkill, newEnv = calcs.copyActiveSkill(env, "CALCS", usedSkill)
-- Add new modifiers to new skill (which already has all the old skill's modifiers)
newSkill.skillModList:NewMod("Damage", "MORE", moreDamage, "Mirage Archer", env.player.mainSkill.ModFlags, env.player.mainSkill.KeywordFlags)
newSkill.skillModList:NewMod("Speed", "MORE", moreAttackSpeed, "Mirage Archer", env.player.mainSkill.ModFlags, env.player.mainSkill.KeywordFlags)
newSkill.skillModList:NewMod("QuantityMultiplier", "BASE", maxMirageArchers, "Max Mirage Archers", env.player.mainSkill.ModFlags, env.player.mainSkill.KeywordFlags)
local maxMirageArchers = 0
for i, value in ipairs(env.player.mainSkill.skillModList:Tabulate("BASE", env.player.mainSkill.skillCfg, "MirageArcherMaxCount")) do
local mod = value.mod
newSkill.skillModList:NewMod("QuantityMultiplier", "BASE", mod.value, mod.source, env.player.mainSkill.ModFlags, env.player.mainSkill.KeywordFlags)
maxMirageArchers = maxMirageArchers + mod.value
end
if usedSkill.skillPartName then
env.player.mainSkill.skillPart = usedSkill.skillPart