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
21 changes: 21 additions & 0 deletions spec/System/TestSkills_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,27 @@ describe("TestSkills", function()
end
end)

it("uses selected companion names in skill displays", function()
build.skillsTab:PasteSocketGroup("Companion: Lightless Abomination 20/0 1")
build.skillsTab:PasteSocketGroup("Companion: Lightless Moray 20/0 1")
build.skillsTab.socketGroupList[1].includeInFullDPS = true
build.skillsTab.socketGroupList[2].includeInFullDPS = true
runCallback("OnFrame")

local skillNames = { }
for _, skill in ipairs(build.calcsTab.mainOutput.SkillDPS) do
skillNames[skill.name] = true
end
assert.is_true(skillNames["Companion: Lightless Abomination"])
assert.is_true(skillNames["Companion: Lightless Moray"])

build:RefreshSkillSelectControls(build.controls, 1, "")
assert.are.equals("Companion: Lightless Abomination", build.controls.mainSkill.list[1].label)

build:RefreshSkillSelectControls(build.controls, 2, "")
assert.are.equals("Companion: Lightless Moray", build.controls.mainSkill.list[1].label)
end)

it("Inspiring Ally only mirrors companion damage, not generic minion damage", function()
build.itemsTab:CreateDisplayItemFromRaw([[
New Item
Expand Down
2 changes: 1 addition & 1 deletion src/Classes/CompareEntry.lua
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@ function CompareEntryClass:RefreshSkillSelectControls(controls, mainGroup, suffi
local explodeSource = activeSkill.activeEffect.srcInstance.explodeSource
local explodeSourceName = explodeSource and (explodeSource.name or explodeSource.dn)
local colourCoded = explodeSourceName and ("From "..colorCodes[explodeSource.rarity or "NORMAL"]..explodeSourceName)
t_insert(controls.mainSkill.list, { val = i, label = colourCoded or activeSkill.activeEffect.grantedEffect.name })
t_insert(controls.mainSkill.list, { val = i, label = colourCoded or self.calcsTab.calcs.getActiveSkillDisplayName(activeSkill) })
end
controls.mainSkill.enabled = #displaySkillList > 1
controls.mainSkill.selIndex = mainActiveSkill
Expand Down
2 changes: 1 addition & 1 deletion src/Modules/Build.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1955,7 +1955,7 @@ function buildMode:RefreshSkillSelectControls(controls, mainGroup, suffix)
local explodeSource = activeSkill.activeEffect.srcInstance.explodeSource
local explodeSourceName = explodeSource and (explodeSource.name or explodeSource.dn)
local colourCoded = explodeSourceName and ("From "..colorCodes[explodeSource.rarity or "NORMAL"]..explodeSourceName)
t_insert(controls.mainSkill.list, { val = i, label = colourCoded or activeSkill.activeEffect.grantedEffect.name })
t_insert(controls.mainSkill.list, { val = i, label = colourCoded or self.calcsTab.calcs.getActiveSkillDisplayName(activeSkill) })
end
controls.mainSkill.enabled = #displaySkillList > 1
controls.mainSkill.selIndex = mainActiveSkill
Expand Down
13 changes: 13 additions & 0 deletions src/Modules/CalcActiveSkill.lua
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,19 @@ function calcs.createActiveSkill(activeEffect, supportList, env, actor, socketGr
return activeSkill
end

function calcs.getActiveSkillDisplayName(activeSkill)
local skillName = activeSkill.activeEffect.grantedEffect.name
local skillMinion = activeSkill.minion
if skillMinion and skillMinion.minionData then
if skillName:match("^Companion:") then
return "Companion: "..skillMinion.minionData.name
elseif skillName:match("^Spectre:") then
return "Spectre: "..skillMinion.minionData.name
end
end
return skillName
end

-- Copy an Active Skill
function calcs.copyActiveSkill(env, mode, skill)
local activeEffect = {
Expand Down
23 changes: 12 additions & 11 deletions src/Modules/Calcs.lua
Original file line number Diff line number Diff line change
Expand Up @@ -183,24 +183,25 @@ function calcs.calcFullDPS(build, mode, override, specEnv)
fullEnv.player.mainSkill = activeSkill
calcs.perform(fullEnv, true)
usedEnv = fullEnv
local skillName = calcs.getActiveSkillDisplayName(activeSkill)
local minionName = nil
if activeSkill.minion or usedEnv.minion then
if usedEnv.minion.output.TotalDPS and usedEnv.minion.output.TotalDPS > 0 then
minionName = (activeSkill.minion and activeSkill.minion.minionData.name..": ") or (usedEnv.minion and usedEnv.minion.minionData.name..": ") or ""
t_insert(fullDPS.skills, { name = activeSkill.activeEffect.grantedEffect.name, dps = usedEnv.minion.output.TotalDPS, count = activeSkillCount, trigger = activeSkill.infoTrigger, skillPart = minionName..activeSkill.skillPartName })
t_insert(fullDPS.skills, { name = skillName, dps = usedEnv.minion.output.TotalDPS, count = activeSkillCount, trigger = activeSkill.infoTrigger, skillPart = minionName..activeSkill.skillPartName })
fullDPS.combinedDPS = fullDPS.combinedDPS + usedEnv.minion.output.TotalDPS * activeSkillCount
end
if usedEnv.minion.output.BleedDPS and usedEnv.minion.output.BleedDPS > fullDPS.bleedDPS then
fullDPS.bleedDPS = usedEnv.minion.output.BleedDPS
bleedSource = activeSkill.activeEffect.grantedEffect.name
bleedSource = skillName
end
if usedEnv.minion.output.IgniteDPS and usedEnv.minion.output.IgniteDPS > fullDPS.igniteDPS then
fullDPS.igniteDPS = usedEnv.minion.output.IgniteDPS
igniteSource = activeSkill.activeEffect.grantedEffect.name
igniteSource = skillName
end
if usedEnv.minion.output.PoisonDPS and usedEnv.minion.output.PoisonDPS > fullDPS.poisonDPS then
fullDPS.poisonDPS = usedEnv.minion.output.PoisonDPS
poisonSource = activeSkill.activeEffect.grantedEffect.name
poisonSource = skillName
end
if usedEnv.minion.output.ImpaleDPS and usedEnv.minion.output.ImpaleDPS > 0 then
fullDPS.impaleDPS = fullDPS.impaleDPS + usedEnv.minion.output.ImpaleDPS * activeSkillCount
Expand Down Expand Up @@ -263,32 +264,32 @@ function calcs.calcFullDPS(build, mode, override, specEnv)
end

if usedEnv.player.output.TotalDPS and usedEnv.player.output.TotalDPS > 0 then
t_insert(fullDPS.skills, { name = activeSkill.activeEffect.grantedEffect.name, dps = usedEnv.player.output.TotalDPS, count = activeSkillCount, trigger = activeSkill.infoTrigger, skillPart = minionName and activeSkill.infoMessage2 or activeSkill.skillPartName })
t_insert(fullDPS.skills, { name = skillName, dps = usedEnv.player.output.TotalDPS, count = activeSkillCount, trigger = activeSkill.infoTrigger, skillPart = minionName and activeSkill.infoMessage2 or activeSkill.skillPartName })
fullDPS.combinedDPS = fullDPS.combinedDPS + usedEnv.player.output.TotalDPS * activeSkillCount
end
if usedEnv.player.output.BleedDPS and usedEnv.player.output.BleedDPS > fullDPS.bleedDPS then
fullDPS.bleedDPS = usedEnv.player.output.BleedDPS
bleedSource = activeSkill.activeEffect.grantedEffect.name
bleedSource = skillName
end
if usedEnv.player.output.CorruptingBloodDPS and usedEnv.player.output.CorruptingBloodDPS > fullDPS.corruptingBloodDPS then
fullDPS.corruptingBloodDPS = usedEnv.player.output.CorruptingBloodDPS
corruptingBloodSource = activeSkill.activeEffect.grantedEffect.name
corruptingBloodSource = skillName
end
if usedEnv.player.output.IgniteDPS and usedEnv.player.output.IgniteDPS > fullDPS.igniteDPS then
fullDPS.igniteDPS = usedEnv.player.output.IgniteDPS
igniteSource = activeSkill.activeEffect.grantedEffect.name
igniteSource = skillName
end
if usedEnv.player.output.BurningGroundDPS and usedEnv.player.output.BurningGroundDPS > fullDPS.burningGroundDPS then
fullDPS.burningGroundDPS = usedEnv.player.output.BurningGroundDPS
burningGroundSource = activeSkill.activeEffect.grantedEffect.name
burningGroundSource = skillName
end
if usedEnv.player.output.PoisonDPS and usedEnv.player.output.PoisonDPS > fullDPS.poisonDPS then
fullDPS.poisonDPS = usedEnv.player.output.PoisonDPS
poisonSource = activeSkill.activeEffect.grantedEffect.name
poisonSource = skillName
end
if usedEnv.player.output.CausticGroundDPS and usedEnv.player.output.CausticGroundDPS > fullDPS.causticGroundDPS then
fullDPS.causticGroundDPS = usedEnv.player.output.CausticGroundDPS
causticGroundSource = activeSkill.activeEffect.grantedEffect.name
causticGroundSource = skillName
end
if usedEnv.player.output.ImpaleDPS and usedEnv.player.output.ImpaleDPS > 0 then
fullDPS.impaleDPS = fullDPS.impaleDPS + usedEnv.player.output.ImpaleDPS * activeSkillCount
Expand Down
Loading