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
57 changes: 57 additions & 0 deletions spec/System/TestSkills_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -877,4 +877,61 @@ describe("TestSkills", function()
-- validate Flame Wall buff appears even when the Wall/default skillPart is active
assert.are.equals("Flame Wall", build.calcsTab.calcsOutput.BuffList)
end)

it("Test Ancestral Call - Ancestral Boost calcs", function()
build.itemsTab:CreateDisplayItemFromRaw([[
New Item
Fanatic Greathammer
Quality: 0
]])
build.itemsTab:AddDisplayItem()
runCallback("OnFrame")

build.skillsTab:PasteSocketGroup("Boneshatter 20/0 1\nAncestral Call I 1/0 1")
runCallback("OnFrame")

assert.True(build.calcsTab.calcsOutput.AvgAncestralCallDamageEffect ~= nil)
assert.True(build.calcsTab.calcsOutput.AncestralCallUptimeRatio ~= nil)
assert.are.equal(3, build.calcsTab.calcsOutput.StrikeTargets)
end)

it("Test Combined Ancestral Boosts - Ancestral Empowerment and Fist of War", function()
build.itemsTab:CreateDisplayItemFromRaw([[
New Item
Fanatic Greathammer
Quality: 0
]])
build.itemsTab:AddDisplayItem()
runCallback("OnFrame")
build.skillsTab:PasteSocketGroup("Leap Slam 20/0 1\nFist of War I 1/0 1")
runCallback("OnFrame")
build.configTab.input.customMods = "every second slam skill you use yourself is ancestrally boosted"
build.configTab:BuildModList()
runCallback("OnFrame")
local fistOfWarOneMaxDmgEffect = build.calcsTab.calcsOutput.MaxAncestralEmpowermentCombinedDamageEffect

-- test that we are using the calcCombinedAncestralBoost function and the calcSection triggers are correct
assert.True(build.calcsTab.calcsOutput.AncestralEmpowermentCombinedUptimeRatio ~= nil)
assert.True(build.calcsTab.calcsOutput.AncestralEmpowermentUptimeRatio == nil)
assert.True(build.calcsTab.calcsOutput.FistOfWarUptimeRatio == nil)

newBuild()
build.itemsTab:CreateDisplayItemFromRaw([[
New Item
Fanatic Greathammer
Quality: 0
]])
build.itemsTab:AddDisplayItem()
runCallback("OnFrame")
build.skillsTab:PasteSocketGroup("Leap Slam 20/0 1\nFist of War III 1/0 1")
runCallback("OnFrame")
build.configTab.input.customMods = "every second slam skill you use yourself is ancestrally boosted"
build.configTab:BuildModList()
runCallback("OnFrame")

-- test doubled effects of Fist of War III with Ancestral Empowerment
assert.True(fistOfWarOneMaxDmgEffect < build.calcsTab.calcsOutput.MaxAncestralEmpowermentCombinedDamageEffect)
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)
46 changes: 23 additions & 23 deletions src/Data/ModCache.lua

Large diffs are not rendered by default.

32 changes: 32 additions & 0 deletions src/Data/SkillStatMap.lua
Original file line number Diff line number Diff line change
Expand Up @@ -586,6 +586,12 @@ return {
["warcry_speed_+%"] = {
mod("WarcrySpeed", "INC", nil, 0, KeywordFlag.Warcry),
},
["warcry_empowers_per_X_monster_power_mp_cap"] = {
mod("WarcryPowerCap", "BASE", nil),
},
["warcry_empowers_per_X_monster_power"] = {
mod("WarcryPowerPer", "BASE", nil),
},
["display_this_skill_cooldown_does_not_recover_during_buff"] = {
flag("NoCooldownRecoveryInDuration"),
},
Expand Down Expand Up @@ -2586,6 +2592,32 @@ return {
["slam_aftershock_chance_%"] = {
mod("AftershockChance", "BASE", nil)
},
-- Final Strike
["final_strike_is_ancestrally_boosted"] = {
flag("Condition:AncestrallyBoosted", { type = "Condition", var = "FinalStrike" }),
flag("MaxBoostedUptimeRatio", { type = "Condition", var = "FinalStrike"}),
},
["is_final_strike"] = {
flag("Condition:FinalStrike"),
},
["ancestral_slam_interval_duration"] = {
{
mod("FistOfWarCooldown", "BASE", nil),
div = 1000,
},
flag("Condition:AncestrallyBoosted"),
},
["ancestral_call_spirit_strike_interval_ms"] = {
{
mod("AncestralCallCooldown", "BASE", nil),
div = 1000,
},
flag("Condition:AncestrallyBoosted"),
},
["double_ancestral_boost_effect"] = {
mod("Multiplier:AncestralBoostEffect", "BASE", nil),
value = 1,
},
-- Curse
["curse_effect_+%"] = {
mod("CurseEffect", "INC", nil),
Expand Down
5 changes: 5 additions & 0 deletions src/Data/Skills/act_str.lua
Original file line number Diff line number Diff line change
Expand Up @@ -7509,6 +7509,11 @@ skills["InfernalCryPlayer"] = {
label = "Infernal Cry",
incrementalEffectiveness = 0.054999999701977,
statDescriptionScope = "infernal_cry",
statMap = {
["infernal_cry_exerted_attack_all_damage_%_to_gain_as_fire_%"] = {
mod("InfernalExtraFireDamageMultiplier", "BASE", nil),
},
},
baseFlags = {
warcry = true,
area = true,
Expand Down
5 changes: 5 additions & 0 deletions src/Data/Skills/sup_int.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2586,6 +2586,11 @@ skills["SupportCrescendoPlayerTwo"] = {
label = "Crescendo II",
incrementalEffectiveness = 0.054999999701977,
statDescriptionScope = "gem_stat_descriptions",
statMap = {
["support_crescendo_non_final_strike_attack_speed_+%_final"] = {
mod("Speed", "MORE", nil, ModFlag.Attack, 0, { type = "Condition", var = "FinalStrike", neg = true})
},
},
baseFlags = {
},
constantStats = {
Expand Down
33 changes: 0 additions & 33 deletions src/Data/Skills/sup_str.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3398,18 +3398,8 @@ skills["FistOfWarSupportPlayer"] = {
label = "Fist of War I",
incrementalEffectiveness = 0.092720001935959,
statDescriptionScope = "gem_stat_descriptions",
statMap = {
["ancestral_slam_interval_duration"] = {
mod("FistOfWarCooldown", "BASE", nil),
div = 1000,
},
},
baseFlags = {
},
baseMods = {
mod("FistOfWarDamageMultiplier", "BASE", 30),
mod("FistOfWarMOREAoE", "BASE", 25),
},
constantStats = {
{ "support_ancestral_slam_big_hit_max_count", 1 },
{ "ancestral_slam_interval_duration", 6000 },
Expand Down Expand Up @@ -3439,18 +3429,8 @@ skills["FistOfWarSupportPlayerTwo"] = {
label = "Fist of War II",
incrementalEffectiveness = 0.092720001935959,
statDescriptionScope = "gem_stat_descriptions",
statMap = {
["ancestral_slam_interval_duration"] = {
mod("FistOfWarCooldown", "BASE", nil),
div = 1000,
},
},
baseFlags = {
},
baseMods = {
mod("FistOfWarDamageMultiplier", "BASE", 30),
mod("FistOfWarMOREAoE", "BASE", 25),
},
constantStats = {
{ "support_ancestral_slam_big_hit_max_count", 1 },
{ "ancestral_slam_interval_duration", 4000 },
Expand Down Expand Up @@ -3480,21 +3460,8 @@ skills["FistOfWarSupportPlayerThree"] = {
label = "Fist of War III",
incrementalEffectiveness = 0.092720001935959,
statDescriptionScope = "gem_stat_descriptions",
statMap = {
["ancestral_slam_interval_duration"] = {
mod("FistOfWarCooldown", "BASE", nil),
div = 1000,
},
["double_ancestral_boost_effect"] = {
-- Accounted for in base mod
},
},
baseFlags = {
},
baseMods = {
mod("FistOfWarDamageMultiplier", "BASE", 60),
mod("FistOfWarMOREAoE", "BASE", 50),
},
constantStats = {
{ "support_ancestral_slam_big_hit_max_count", 1 },
{ "ancestral_slam_interval_duration", 14000 },
Expand Down
5 changes: 5 additions & 0 deletions src/Export/Skills/act_str.txt
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,11 @@ statMap = {
#skill InfernalCryPlayer
#set InfernalCryPlayer
#flags warcry area duration
statMap = {
["infernal_cry_exerted_attack_all_damage_%_to_gain_as_fire_%"] = {
mod("InfernalExtraFireDamageMultiplier", "BASE", nil),
},
},
#mods
#skillEnd

Expand Down
5 changes: 5 additions & 0 deletions src/Export/Skills/sup_int.txt
Original file line number Diff line number Diff line change
Expand Up @@ -440,6 +440,11 @@ statMap = {

#skill SupportCrescendoPlayerTwo
#set SupportCrescendoPlayerTwo
statMap = {
["support_crescendo_non_final_strike_attack_speed_+%_final"] = {
mod("Speed", "MORE", nil, ModFlag.Attack, 0, { type = "Condition", var = "FinalStrike", neg = true})
},
},
#mods
#skillEnd

Expand Down
27 changes: 0 additions & 27 deletions src/Export/Skills/sup_str.txt
Original file line number Diff line number Diff line change
Expand Up @@ -743,43 +743,16 @@ statMap = {

#skill FistOfWarSupportPlayer
#set FistOfWarSupportPlayer
statMap = {
["ancestral_slam_interval_duration"] = {
mod("FistOfWarCooldown", "BASE", nil),
div = 1000,
},
},
#baseMod mod("FistOfWarDamageMultiplier", "BASE", 30)
#baseMod mod("FistOfWarMOREAoE", "BASE", 25)
#mods
#skillEnd

#skill FistOfWarSupportPlayerTwo
#set FistOfWarSupportPlayerTwo
statMap = {
["ancestral_slam_interval_duration"] = {
mod("FistOfWarCooldown", "BASE", nil),
div = 1000,
},
},
#baseMod mod("FistOfWarDamageMultiplier", "BASE", 30)
#baseMod mod("FistOfWarMOREAoE", "BASE", 25)
#mods
#skillEnd

#skill FistOfWarSupportPlayerThree
#set FistOfWarSupportPlayerThree
statMap = {
["ancestral_slam_interval_duration"] = {
mod("FistOfWarCooldown", "BASE", nil),
div = 1000,
},
["double_ancestral_boost_effect"] = {
-- Accounted for in base mod
},
},
#baseMod mod("FistOfWarDamageMultiplier", "BASE", 60)
#baseMod mod("FistOfWarMOREAoE", "BASE", 50)
#mods
#skillEnd

Expand Down
Loading
Loading