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
13 changes: 12 additions & 1 deletion spec/System/TestSkills_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,17 @@ describe("TestSkills", function()
assert.True(baseLeapSlamHit < build.calcsTab.mainOutput.AverageDamage)
end)

it("applies minion offensive multiplier to all attack damage", function()
build.skillsTab:PasteSocketGroup("Wolf Pack 20/0 1")
runCallback("OnFrame")

local minion = build.calcsTab.mainEnv.minion
local expectedPhysicalMax = round(build.calcsTab.mainEnv.data.monsterAllyDamageTable[minion.level] * (1 + minion.minionData.damageSpread))

assert.are.equals(expectedPhysicalMax, minion.weaponData1.PhysicalMax)
assert.are.near(-30, minion.mainSkill.skillModList:Sum("MORE", minion.mainSkill.skillCfg, "Damage"), 0.0001)
end)

it("Inspiring Ally only mirrors companion damage, not generic minion damage", function()
build.itemsTab:CreateDisplayItemFromRaw([[
New Item
Expand Down Expand Up @@ -934,4 +945,4 @@ describe("TestSkills", function()
local expectedAverageEffect = 1 + (build.calcsTab.calcsOutput.MaxAncestralEmpowermentCombinedDamageEffect - 1) * build.calcsTab.calcsOutput.AncestralEmpowermentCombinedUptimeRatio / 100
assert.are.equals(round(expectedAverageEffect, 4), round(build.calcsTab.calcsOutput.AvgAncestralEmpowermentCombinedDamageEffect, 4))
end)
end)
end)
3 changes: 0 additions & 3 deletions src/Data/Skills/act_dex.lua
Original file line number Diff line number Diff line change
Expand Up @@ -898,9 +898,6 @@ skills["SummonBeastPlayer"] = {
summonBeast = true,
duration = true,
},
baseMods = {
mod("MinionModifier", "LIST", { mod = mod("Damage", "MORE", 25) }), --Server side damage mod added in 0.3,
},
constantStats = {
{ "minion_base_resummon_time_ms", 12000 },
},
Expand Down
3 changes: 0 additions & 3 deletions src/Data/Skills/act_int.lua
Original file line number Diff line number Diff line change
Expand Up @@ -19767,9 +19767,6 @@ skills["SummonSpectrePlayer"] = {
spectre = true,
duration = true,
},
baseMods = {
mod("MinionModifier", "LIST", { mod = mod("Damage", "MORE", 25) }), --Server side damage mod added in 0.3,
},
constantStats = {
{ "minion_base_resummon_time_ms", 12000 },
{ "spectre_warp_start_distance", 100 },
Expand Down
1 change: 0 additions & 1 deletion src/Export/Skills/act_dex.txt
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,6 @@ statMap = {
#skill SummonBeastPlayer
#set SummonBeastPlayer
#flags spell minion summonBeast duration
#baseMod mod("MinionModifier", "LIST", { mod = mod("Damage", "MORE", 25) }), --Server side damage mod added in 0.3
#mods
#skillEnd

Expand Down
1 change: 0 additions & 1 deletion src/Export/Skills/act_int.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1354,7 +1354,6 @@ statMap = {
#skill SummonSpectrePlayer
#set SummonSpectrePlayer
#flags spell minion spectre duration
#baseMod mod("MinionModifier", "LIST", { mod = mod("Damage", "MORE", 25) }), --Server side damage mod added in 0.3
#mods
#skillEnd

Expand Down
21 changes: 13 additions & 8 deletions src/Modules/CalcActiveSkill.lua
Original file line number Diff line number Diff line change
Expand Up @@ -638,9 +638,13 @@ function calcs.buildActiveSkillModList(env, activeSkill)

-- The damage fixup stat applies x% less base Attack Damage and x% more base Attack Speed as confirmed by Openarl Jan 4th 2024
-- Implemented in this manner as the stat exists on the minion not the skills
if activeSkill.actor and activeSkill.actor.minionData and activeSkill.actor.minionData.damageFixup then
skillModList:NewMod("Damage", "MORE", -100 * activeSkill.actor.minionData.damageFixup, "Damage Fixup", ModFlag.Attack)
skillModList:NewMod("Speed", "MORE", 100 * activeSkill.actor.minionData.damageFixup, "Damage Fixup", ModFlag.Attack)
if activeSkill.actor and activeSkill.actor.minionData then
if activeSkill.actor.minionData.damageFixup then
skillModList:NewMod("Damage", "MORE", -100 * activeSkill.actor.minionData.damageFixup, "Damage Fixup", ModFlag.Attack)
skillModList:NewMod("Speed", "MORE", 100 * activeSkill.actor.minionData.damageFixup, "Damage Fixup", ModFlag.Attack)
elseif activeSkill.actor.minionData.damage ~= 1 then
skillModList:NewMod("Damage", "MORE", (activeSkill.actor.minionData.damage - 1) * 100, activeSkill.actor.minionData.name .." Damage Multiplier", ModFlag.Attack)
end
end
if skillModList:Flag(activeSkill.skillCfg, "DisableSkill") and not skillModList:Flag(activeSkill.skillCfg, "EnableSkill") then
skillFlags.disable = true
Expand Down Expand Up @@ -819,13 +823,13 @@ function calcs.buildActiveSkillModList(env, activeSkill)
end

-- Create minion
local minionList, isSpectre, isBeastCompanion
local minionList, monsterDamage
if activeGrantedEffect.minionList and activeGrantedEffect.name:match("^Spectre") then
minionList = copyTable(env.build.spectreList)
isSpectre = true
monsterDamage = true
elseif activeGrantedEffect.minionList and activeGrantedEffect.name:match("^Companion") then
minionList = copyTable(env.build.beastList)
isBeastCompanion = true
monsterDamage = true
elseif activeGrantedEffect.minionList and activeGrantedEffect.minionList[1] then
minionList = copyTable(activeGrantedEffect.minionList)
else
Expand Down Expand Up @@ -879,8 +883,9 @@ function calcs.buildActiveSkillModList(env, activeSkill)
minion.lifeTable = env.data.monsterAllyLifeTable
end
local attackTime = minion.minionData.attackTime
local damageTable = (isSpectre or minion.minionData.hostile) and env.data.monsterDamageTable or env.data.monsterAllyDamageTable
local damage = damageTable[minion.level] * minion.minionData.damage
local damageTable = (monsterDamage or minion.minionData.hostile) and env.data.monsterDamageTable or env.data.monsterAllyDamageTable
minion.hiddenDamageFixup = monsterDamage and (round(env.data.monsterAllyDamageTable[minion.level] / damageTable[minion.level] * data.misc.SpectreBeastDamageFixup, 2) - 1) or 0
local damage = damageTable[minion.level]
if not minion.minionData.baseDamageIgnoresAttackSpeed then -- minions with this flag do not factor attack time into their base damage
damage = damage * attackTime
end
Expand Down
1 change: 1 addition & 0 deletions src/Modules/CalcPerform.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1001,6 +1001,7 @@ function calcs.perform(env, skipEHP)
env.minion.modDB:NewMod("ProjectileCount", "BASE", 1, "Base")
env.minion.modDB:NewMod("PhysicalHeavyStunBuildup", "MORE", data.monsterConstants["physical_hit_damage_stun_multiplier_+%_final_from_ot"], "Physical Damage")
env.minion.modDB:NewMod("EnemyHeavyStunBuildup", "MORE", data.monsterConstants["melee_hit_damage_stun_multiplier_+%_final_from_ot"], "Melee Damage", ModFlag.Melee)
env.minion.modDB:NewMod("Damage", "MORE", env.minion.hiddenDamageFixup * 100, "Hidden Level Scaling")
for _, mod in ipairs(env.minion.minionData.modList) do
env.minion.modDB:AddMod(mod)
end
Expand Down
1 change: 1 addition & 0 deletions src/Modules/Data.lua
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,7 @@ data.misc = { -- magic numbers
PvpElemental2 = 150,
PvpNonElemental1 = 0.57,
PvpNonElemental2 = 90,
SpectreBeastDamageFixup = 1.25 -- 25% more damage server side mod added in 0.3
}

data.skillColorMap = { colorCodes.STRENGTH, colorCodes.DEXTERITY, colorCodes.INTELLIGENCE, colorCodes.NORMAL }
Expand Down
Loading