From 33b2418d3d2bc6b59d7fa97c032c2571efeaecdd Mon Sep 17 00:00:00 2001 From: n1tr0xs Date: Sun, 9 Nov 2025 00:11:41 +0300 Subject: [PATCH] initial parts for kinetic fusillade. needs some fixes --- src/Data/Skills/act_int.lua | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/Data/Skills/act_int.lua b/src/Data/Skills/act_int.lua index 516d225b5a..48fe05ec0b 100644 --- a/src/Data/Skills/act_int.lua +++ b/src/Data/Skills/act_int.lua @@ -11170,6 +11170,28 @@ skills["KineticFusillade"] = { "quality_display_spell_damage_to_attack_damage_is_gem", "quality_display_kinetic_fusillade_is_gem", }, + parts = { + { + name = "One attack", + }, + { + name = "Full fusillade", + }, + }, + preDamageFunc = function(activeSkill, output) + local MAX_PROJECTILES = 12 -- how to get from skill constants ? + local attackTime = activeSkill.skillData.attackTime or 1 -- how to get from `activeSkill` or `output` ? + + local projectileCount = output.ProjectileCount + local duration = output.Duration + if activeSkill.skillPart == 1 then + totalAttackTime = duration + attackTime + activeSkill.skillData.hitTimeOverride = totalAttackTime / math.min(projectileCount, MAX_PROJECTILES) + elseif activeSkill.skillPart == 2 then + totalAttackTime = duration + attackTime * math.ceil(MAX_PROJECTILES/projectileCount) + activeSkill.skillData.hitTimeOverride = totalAttackTime / MAX_PROJECTILES + end + end, levels = { [1] = { 3, attackSpeedMultiplier = 100, baseMultiplier = 0.935, damageEffectiveness = 0.935, levelRequirement = 12, statInterpolation = { 1, }, cost = { Mana = 4, }, }, [2] = { 3, attackSpeedMultiplier = 100, baseMultiplier = 0.942, damageEffectiveness = 0.942, levelRequirement = 15, statInterpolation = { 1, }, cost = { Mana = 4, }, },