diff --git a/spec/System/TestSkills_spec.lua b/spec/System/TestSkills_spec.lua index f0c02d4f3..5aef44403 100644 --- a/spec/System/TestSkills_spec.lua +++ b/spec/System/TestSkills_spec.lua @@ -84,4 +84,23 @@ describe("TestSkills", function() local finalCost = build.calcsTab.mainOutput.ManaCost assert.are.equals(16, round(finalCost)) end) + + it("Test stacking persistent buff supports of same category", function() + build.skillsTab:PasteSocketGroup("Arctic Armour 20/0 1\nClarity I 1/0 1") + build.skillsTab:PasteSocketGroup("Time of Need 20/0 1\nClarity II 1/0 1") + runCallback("OnFrame") + assert.are.equals(build.calcsTab.calcsOutput.BuffList, "Clarity I, Clarity II") + + newBuild() + build.skillsTab:PasteSocketGroup("Arctic Armour 20/0 1\nClarity I 1/0 1\nClarity II 1/0 1") + build.skillsTab:PasteSocketGroup("Time of Need 20/0 1\nClarity II 1/0 1") + runCallback("OnFrame") + assert.are.equals(build.calcsTab.calcsOutput.BuffList, "Clarity II") + + newBuild() + build.skillsTab:PasteSocketGroup("Arctic Armour 20/0 1\nClarity II 1/0 1") + build.skillsTab:PasteSocketGroup("Time of Need 20/0 1\nClarity II 1/0 1") + runCallback("OnFrame") + assert.are.equals(build.calcsTab.calcsOutput.BuffList, "Clarity II") + end) end) \ No newline at end of file diff --git a/src/Data/Skills/sup_dex.lua b/src/Data/Skills/sup_dex.lua index ce3dbe2a3..5a34fc775 100644 --- a/src/Data/Skills/sup_dex.lua +++ b/src/Data/Skills/sup_dex.lua @@ -4243,7 +4243,7 @@ skills["SupportPrecisionPlayer"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_precision_accuracy_rating_+%"] = { - mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Precision" } ), + mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Precision I" } ), }, }, baseFlags = { @@ -4279,7 +4279,7 @@ skills["SupportPrecisionPlayerTwo"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_precision_accuracy_rating_+%"] = { - mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Precision" } ), + mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Precision II" } ), }, }, baseFlags = { diff --git a/src/Data/Skills/sup_int.lua b/src/Data/Skills/sup_int.lua index 612992061..c2d13ab62 100644 --- a/src/Data/Skills/sup_int.lua +++ b/src/Data/Skills/sup_int.lua @@ -1793,7 +1793,7 @@ skills["SupportClarityPlayer"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_clarity_mana_regeneration_rate_+%"] = { - mod("ManaRegen", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Clarity" }), + mod("ManaRegen", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Clarity I" }), }, }, baseFlags = { @@ -1829,7 +1829,7 @@ skills["SupportClarityPlayerTwo"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_clarity_mana_regeneration_rate_+%"] = { - mod("ManaRegen", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Clarity" }), + mod("ManaRegen", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Clarity II" }), }, }, baseFlags = { @@ -6216,7 +6216,7 @@ skills["SupportMysticismPlayer"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_spell_damage_spirit_cost_spell_damage_+%_on_full_energy_shield"] = { - mod("Damage", "INC", nil, ModFlag.Spell, 0, { type = "Condition", var = "FullEnergyShield" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Mysticism" }), + mod("Damage", "INC", nil, ModFlag.Spell, 0, { type = "Condition", var = "FullEnergyShield" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Mysticism I" }), }, }, baseFlags = { @@ -6252,7 +6252,7 @@ skills["SupportMysticismPlayerTwo"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_spell_damage_spirit_cost_spell_damage_+%_on_full_energy_shield"] = { - mod("Damage", "INC", nil, ModFlag.Spell, 0, { type = "Condition", var = "FullEnergyShield" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Mysticism" }), + mod("Damage", "INC", nil, ModFlag.Spell, 0, { type = "Condition", var = "FullEnergyShield" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Mysticism II" }), }, }, baseFlags = { diff --git a/src/Data/Skills/sup_str.lua b/src/Data/Skills/sup_str.lua index 4e04c7162..7edf72ba4 100644 --- a/src/Data/Skills/sup_str.lua +++ b/src/Data/Skills/sup_str.lua @@ -1293,7 +1293,7 @@ skills["SupportCannibalismPlayer"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_cannibalism_recover_%_maximum_life_on_kill"] = { - mod("LifeOnKill", "BASE", nil, 0, 0, { type = "PercentStat", stat = "Life", percent = 1 }, { type = "GlobalEffect", effectType = "Buff", effectName = "Cannibalism" }), + mod("LifeOnKill", "BASE", nil, 0, 0, { type = "PercentStat", stat = "Life", percent = 1 }, { type = "GlobalEffect", effectType = "Buff", effectName = "Cannibalism I" }), }, }, baseFlags = { @@ -1329,7 +1329,7 @@ skills["SupportCannibalismPlayerTwo"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_cannibalism_recover_%_maximum_life_on_kill"] = { - mod("LifeOnKill", "BASE", nil, 0, 0, { type = "PercentStat", stat = "Life", percent = 1 }, { type = "GlobalEffect", effectType = "Buff", effectName = "Cannibalism" }), + mod("LifeOnKill", "BASE", nil, 0, 0, { type = "PercentStat", stat = "Life", percent = 1 }, { type = "GlobalEffect", effectType = "Buff", effectName = "Cannibalism II" }), }, }, baseFlags = { @@ -2128,7 +2128,7 @@ skills["SupportDirestrikePlayer"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_attack_damage_spirit_cost_attack_damage_+%_on_low_life"] = { - mod("Damage", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Direstrike" }), + mod("Damage", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Direstrike I" }, { type = "Condition", var = "LowLife" }), }, }, baseFlags = { @@ -2164,7 +2164,7 @@ skills["SupportDirestrikePlayerTwo"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_attack_damage_spirit_cost_attack_damage_+%_on_low_life"] = { - mod("Damage", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Direstrike" }), + mod("Damage", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Direstrike II" }, { type = "Condition", var = "LowLife" }), }, }, baseFlags = { @@ -3958,7 +3958,7 @@ skills["SupportHerbalismPlayer"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_herbalism_life_recovery_+%_from_life_flasks"] = { - mod("FlaskLifeRecovery", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Herbalism" }), + mod("FlaskLifeRecovery", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Herbalism I" }), }, }, baseFlags = { @@ -3994,7 +3994,7 @@ skills["SupportHerbalismPlayerTwo"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_herbalism_life_recovery_+%_from_life_flasks"] = { - mod("FlaskLifeRecovery", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Herbalism" }), + mod("FlaskLifeRecovery", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Herbalism II" }), }, }, baseFlags = { @@ -6993,7 +6993,7 @@ skills["SupportThornskinPlayer"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_thorns_spirit_cost_thorns_damage_+%"] = { - mod("ThornsDamage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Thornskin" }), + mod("ThornsDamage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Thornskin I" }), }, }, baseFlags = { @@ -7029,7 +7029,7 @@ skills["SupportThornskinPlayerTwo"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_thorns_spirit_cost_thorns_damage_+%"] = { - mod("ThornsDamage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Thornskin" }), + mod("ThornsDamage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Thornskin II" }), }, }, baseFlags = { @@ -7703,7 +7703,7 @@ skills["SupportVitalityPlayer"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_vitality_life_regeneration_rate_per_minute_%"] = { - mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Vitality" }), + mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Vitality I" }), div = 60, }, }, @@ -7740,7 +7740,7 @@ skills["SupportVitalityPlayerTwo"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_vitality_life_regeneration_rate_per_minute_%"] = { - mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Vitality" }), + mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Vitality II" }), div = 60, }, }, diff --git a/src/Export/Skills/sup_dex.txt b/src/Export/Skills/sup_dex.txt index 075e5a126..a49593a40 100644 --- a/src/Export/Skills/sup_dex.txt +++ b/src/Export/Skills/sup_dex.txt @@ -910,7 +910,7 @@ statMap = { #set SupportPrecisionPlayer statMap = { ["support_precision_accuracy_rating_+%"] = { - mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Precision" } ), + mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Precision I" } ), }, }, #mods @@ -920,7 +920,7 @@ statMap = { #set SupportPrecisionPlayerTwo statMap = { ["support_precision_accuracy_rating_+%"] = { - mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Precision" } ), + mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Precision II" } ), }, }, #mods diff --git a/src/Export/Skills/sup_int.txt b/src/Export/Skills/sup_int.txt index 0b1786e04..cc68383fd 100644 --- a/src/Export/Skills/sup_int.txt +++ b/src/Export/Skills/sup_int.txt @@ -294,7 +294,7 @@ statMap = { #set SupportClarityPlayer statMap = { ["support_clarity_mana_regeneration_rate_+%"] = { - mod("ManaRegen", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Clarity" }), + mod("ManaRegen", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Clarity I" }), }, }, #mods @@ -304,7 +304,7 @@ statMap = { #set SupportClarityPlayerTwo statMap = { ["support_clarity_mana_regeneration_rate_+%"] = { - mod("ManaRegen", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Clarity" }), + mod("ManaRegen", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Clarity II" }), }, }, #mods @@ -1161,7 +1161,7 @@ statMap = { #set SupportMysticismPlayer statMap = { ["support_spell_damage_spirit_cost_spell_damage_+%_on_full_energy_shield"] = { - mod("Damage", "INC", nil, ModFlag.Spell, 0, { type = "Condition", var = "FullEnergyShield" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Mysticism" }), + mod("Damage", "INC", nil, ModFlag.Spell, 0, { type = "Condition", var = "FullEnergyShield" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Mysticism I" }), }, }, #mods @@ -1171,7 +1171,7 @@ statMap = { #set SupportMysticismPlayerTwo statMap = { ["support_spell_damage_spirit_cost_spell_damage_+%_on_full_energy_shield"] = { - mod("Damage", "INC", nil, ModFlag.Spell, 0, { type = "Condition", var = "FullEnergyShield" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Mysticism" }), + mod("Damage", "INC", nil, ModFlag.Spell, 0, { type = "Condition", var = "FullEnergyShield" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Mysticism II" }), }, }, #mods diff --git a/src/Export/Skills/sup_str.txt b/src/Export/Skills/sup_str.txt index 9af608efa..1e92b2a87 100644 --- a/src/Export/Skills/sup_str.txt +++ b/src/Export/Skills/sup_str.txt @@ -250,7 +250,7 @@ statMap = { #set SupportCannibalismPlayer statMap = { ["support_cannibalism_recover_%_maximum_life_on_kill"] = { - mod("LifeOnKill", "BASE", nil, 0, 0, { type = "PercentStat", stat = "Life", percent = 1 }, { type = "GlobalEffect", effectType = "Buff", effectName = "Cannibalism" }), + mod("LifeOnKill", "BASE", nil, 0, 0, { type = "PercentStat", stat = "Life", percent = 1 }, { type = "GlobalEffect", effectType = "Buff", effectName = "Cannibalism I" }), }, }, #mods @@ -260,7 +260,7 @@ statMap = { #set SupportCannibalismPlayerTwo statMap = { ["support_cannibalism_recover_%_maximum_life_on_kill"] = { - mod("LifeOnKill", "BASE", nil, 0, 0, { type = "PercentStat", stat = "Life", percent = 1 }, { type = "GlobalEffect", effectType = "Buff", effectName = "Cannibalism" }), + mod("LifeOnKill", "BASE", nil, 0, 0, { type = "PercentStat", stat = "Life", percent = 1 }, { type = "GlobalEffect", effectType = "Buff", effectName = "Cannibalism II" }), }, }, #flags @@ -487,7 +487,7 @@ statMap = { #set SupportDirestrikePlayer statMap = { ["support_attack_damage_spirit_cost_attack_damage_+%_on_low_life"] = { - mod("Damage", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Direstrike" }), + mod("Damage", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Direstrike I" }, { type = "Condition", var = "LowLife" }), }, }, #mods @@ -497,7 +497,7 @@ statMap = { #set SupportDirestrikePlayerTwo statMap = { ["support_attack_damage_spirit_cost_attack_damage_+%_on_low_life"] = { - mod("Damage", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Direstrike" }), + mod("Damage", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Direstrike II" }, { type = "Condition", var = "LowLife" }), }, }, #mods @@ -892,7 +892,7 @@ statMap = { #set SupportHerbalismPlayer statMap = { ["support_herbalism_life_recovery_+%_from_life_flasks"] = { - mod("FlaskLifeRecovery", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Herbalism" }), + mod("FlaskLifeRecovery", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Herbalism I" }), }, }, #mods @@ -902,7 +902,7 @@ statMap = { #set SupportHerbalismPlayerTwo statMap = { ["support_herbalism_life_recovery_+%_from_life_flasks"] = { - mod("FlaskLifeRecovery", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Herbalism" }), + mod("FlaskLifeRecovery", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Herbalism II" }), }, }, #mods @@ -1590,7 +1590,7 @@ statMap = { #set SupportThornskinPlayer statMap = { ["support_thorns_spirit_cost_thorns_damage_+%"] = { - mod("ThornsDamage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Thornskin" }), + mod("ThornsDamage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Thornskin I" }), }, }, #mods @@ -1600,7 +1600,7 @@ statMap = { #set SupportThornskinPlayerTwo statMap = { ["support_thorns_spirit_cost_thorns_damage_+%"] = { - mod("ThornsDamage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Thornskin" }), + mod("ThornsDamage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Thornskin II" }), }, }, #mods @@ -1746,7 +1746,7 @@ statMap = { #set SupportVitalityPlayer statMap = { ["support_vitality_life_regeneration_rate_per_minute_%"] = { - mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Vitality" }), + mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Vitality I" }), div = 60, }, }, @@ -1757,7 +1757,7 @@ statMap = { #set SupportVitalityPlayerTwo statMap = { ["support_vitality_life_regeneration_rate_per_minute_%"] = { - mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Vitality" }), + mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Vitality II" }), div = 60, }, },