Merge remote-tracking branch 'Nostrademous/CastOnDeath' into dev

This commit is contained in:
ppoelzl
2021-03-05 00:07:06 +01:00
4 changed files with 21 additions and 2 deletions

View File

@@ -835,6 +835,7 @@ skills["SupportCastOnDeath"] = {
},
},
baseMods = {
skill("triggeredOnDeath", true),
},
qualityStats = {
Default = {

View File

@@ -109,6 +109,7 @@ local skills, mod, flag, skill = ...
mod("Duration", "INC", nil),
},
},
#baseMod skill("triggeredOnDeath", true)
#mods
#skill SupportChain

View File

@@ -1179,9 +1179,15 @@ function calcs.offence(env, actor, activeSkill)
output.Time = activeSkill.activeEffect.grantedEffect.castTime
output.Speed = 1 / output.Time
elseif skillData.triggerTime and skillData.triggered then
output.Time = skillData.triggerTime / (1 + skillModList:Sum("INC", cfg, "CooldownRecovery") / 100) * (skillModList:Sum("BASE", cfg, "CastWhileChannellingSpellsLinked") or 1)
local cwcLinkedSpells = skillModList:Sum("BASE", cfg, "CastWhileChannellingSpellsLinked")
if cwcLinkedSpells > 0 then
output.Time = skillData.triggerTime / (1 + skillModList:Sum("INC", cfg, "CooldownRecovery") / 100) * cwcLinkedSpells
else
output.Time = skillData.triggerTime / (1 + skillModList:Sum("INC", cfg, "CooldownRecovery") / 100)
end
output.TriggerTime = output.Time
output.Speed = 1 / output.Time
skillData.showAverage = false
elseif skillData.triggeredByBrand and skillData.triggered then
output.Time = 1 / (1 + skillModList:Sum("INC", cfg, "Speed", "BrandActivationFrequency") / 100) / skillModList:More(cfg, "BrandActivationFrequency") * (skillModList:Sum("BASE", cfg, "ArcanistSpellsLinked") or 1)
output.TriggerTime = output.Time
@@ -1235,7 +1241,7 @@ function calcs.offence(env, actor, activeSkill)
})
end
end
if skillData.hitTimeOverride then
if skillData.hitTimeOverride and not skillData.triggeredOnDeath then
output.HitTime = skillData.hitTimeOverride
output.HitSpeed = 1 / output.HitTime
--Brands always have hitTimeOverride

View File

@@ -911,6 +911,17 @@ function calcs.perform(env)
activeSkill.skillModList:NewMod("CastWhileChannellingSpellsLinked", "BASE", spellCount, "Skill")
activeSkill.skillData.triggerTime = trigTime
end
if activeSkill.skillData.triggeredOnDeath and not activeSkill.skillFlags.minion then
activeSkill.skillData.triggered = true
for _, value in ipairs(activeSkill.skillModList:Tabulate("INC", env.player.mainSkill.skillCfg, "TriggeredDamage")) do
activeSkill.skillModList:NewMod("Damage", "INC", value.mod.value, value.mod.source, value.mod.flags, value.mod.keywordFlags, unpack(value.mod))
end
for _, value in ipairs(activeSkill.skillModList:Tabulate("MORE", env.player.mainSkill.skillCfg, "TriggeredDamage")) do
activeSkill.skillModList:NewMod("Damage", "MORE", value.mod.value, value.mod.source, value.mod.flags, value.mod.keywordFlags, unpack(value.mod))
end
-- Set trigger time to 1 min in ms ( == 6000 ). Technically any large value would do.
activeSkill.skillData.triggerTime = 60 * 1000
end
end
local breakdown