Skip to content

Commit 39e93b6

Browse files
committed
add support for Expand, add flags for Area vs Damage Seal Supports
1 parent 31dabfa commit 39e93b6

3 files changed

Lines changed: 40 additions & 2 deletions

File tree

src/Data/Skills/sup_int.lua

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3778,8 +3778,23 @@ skills["SupportExpandPlayer"] = {
37783778
label = "Expand",
37793779
incrementalEffectiveness = 0.054999999701977,
37803780
statDescriptionScope = "gem_stat_descriptions",
3781+
statMap = {
3782+
["support_expand_max_seals"] = {
3783+
mod("SealCount", "BASE", nil),
3784+
},
3785+
["skill_area_of_effect_+%_per_expand_seal"] = {
3786+
mod("SealRepeatPenalty", "MORE", nil),
3787+
},
3788+
["expand_support_seal_gain_frequency_as_%_of_total_cast_time"] = {
3789+
mod("SealGainFrequency", "BASE", nil),
3790+
},
3791+
},
37813792
baseFlags = {
37823793
},
3794+
baseMods = {
3795+
flag("HasSeals"),
3796+
flag("AreaSeal"),
3797+
},
37833798
constantStats = {
37843799
{ "support_expand_max_seals", 3 },
37853800
{ "support_expand_charge_gain_interval_ms", 0 },
@@ -7556,6 +7571,7 @@ skills["SupportUnleashPlayer"] = {
75567571
},
75577572
baseMods = {
75587573
flag("HasSeals"),
7574+
flag("DamageSeal"),
75597575
},
75607576
constantStats = {
75617577
{ "support_spell_rapid_fire_repeat_use_damage_+%_final", -50 },

src/Export/Skills/sup_int.txt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,19 @@ statMap = {
654654

655655
#skill SupportExpandPlayer
656656
#set SupportExpandPlayer
657+
statMap = {
658+
["support_expand_max_seals"] = {
659+
mod("SealCount", "BASE", nil),
660+
},
661+
["skill_area_of_effect_+%_per_expand_seal"] = {
662+
mod("SealRepeatPenalty", "MORE", nil),
663+
},
664+
["expand_support_seal_gain_frequency_as_%_of_total_cast_time"] = {
665+
mod("SealGainFrequency", "BASE", nil),
666+
},
667+
},
668+
#baseMod flag("HasSeals")
669+
#baseMod flag("AreaSeal")
657670
#mods
658671
#skillEnd
659672

@@ -1432,6 +1445,7 @@ statMap = {
14321445
},
14331446
},
14341447
#baseMod flag("HasSeals")
1448+
#baseMod flag("DamageSeal")
14351449
#mods
14361450
#skillEnd
14371451

src/Modules/CalcOffence.lua

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,14 @@ function calcs.offence(env, actor, activeSkill)
393393
output.ArmourBreakPerHit = calcLib.val(skillModList, "ArmourBreakPerHit", skillCfg)
394394

395395
local function calcAreaOfEffect(skillModList, skillCfg, skillData, skillFlags, output, breakdown)
396+
-- Applies increased AoE based on seals count
397+
if skillModList:Flag(nil, "HasSeals") and skillModList:Flag(nil, "AreaSeal") and not skillModList:Flag(nil, "NoRepeatBonuses") then
398+
output.SealCooldown = activeSkill.activeEffect.grantedEffect.castTime * skillModList:Sum("BASE", skillCfg, "SealGainFrequency") / calcLib.mod(skillModList, skillCfg, "SealGainFrequency") / 100
399+
output.SealMax = skillModList:Sum("BASE", skillCfg, "SealCount")
400+
output.TimeMaxSeals = output.SealCooldown * output.SealMax
401+
env.player.mainSkill.skillModList:NewMod("AreaOfEffect", "INC", (output.SealMax * (calcLib.mod(skillModList, skillCfg, "SealRepeatPenalty") - 1) * 100), "Expand")
402+
end
403+
396404
local incArea, moreArea = calcLib.mods(skillModList, skillCfg, "AreaOfEffect", "AreaOfEffectPrimary")
397405
output.AreaOfEffectMod = round(round(incArea * moreArea, 10), 2)
398406
if skillData.radiusIsWeaponRange then
@@ -1076,7 +1084,7 @@ function calcs.offence(env, actor, activeSkill)
10761084
modDB:NewMod("DPS", "MORE", detonateTwice, "Grenade Activate Twice")
10771085
end
10781086

1079-
if skillModList:Flag(nil, "HasSeals") and activeSkill.skillTypes[SkillType.Unleashable] and not skillModList:Flag(nil, "NoRepeatBonuses") then
1087+
if skillModList:Flag(nil, "HasSeals") and skillModList:Flag(nil, "DamageSeal") and not skillModList:Flag(nil, "NoRepeatBonuses") then
10801088
-- Applies DPS multiplier based on seals count
10811089
local totalCastSpeed = 1 / activeSkill.activeEffect.grantedEffect.castTime * calcLib.mod(skillModList, skillCfg, "Speed")
10821090
output.SealCooldown = activeSkill.activeEffect.grantedEffect.castTime * skillModList:Sum("BASE", skillCfg, "SealGainFrequency") / calcLib.mod(skillModList, skillCfg, "SealGainFrequency") / 100
@@ -5648,7 +5656,7 @@ function calcs.offence(env, actor, activeSkill)
56485656
elseif skillFlags.totem then
56495657
useSpeed = (output.Cooldown and output.Cooldown > 0 and (output.TotemPlacementSpeed > 0 and output.TotemPlacementSpeed or 1 / output.Cooldown) or output.TotemPlacementSpeed) / repeats
56505658
timeType = "totem placement"
5651-
elseif skillModList:Flag(nil, "HasSeals") and skillModList:Flag(nil, "UseMaxUnleash") then
5659+
elseif skillModList:Flag(nil, "HasSeals") and skillModList:Flag(nil, "DamageSeal") and skillModList:Flag(nil, "UseMaxUnleash") then
56525660
useSpeed = env.player.mainSkill.skillData.hitTimeOverride / repeats
56535661
timeType = "full unleash"
56545662
elseif output.EffectiveReloadTime then -- Crossbows: Account for mana cost only happening on reload (once all bolts are fired)

0 commit comments

Comments
 (0)