@@ -11201,29 +11201,28 @@ skills["KineticFusillade"] = {
1120111201 -- Projectiles orbit for base_skill_effect_duration before firing
1120211202 -- Recasting resets the timer, so attacking too fast wastes potential damage
1120311203 local baseDuration = skillData.duration
11204- local actualDuration = output.Duration or baseDuration
11205- local ticksNeededForInitialDelay = math.ceil(actualDuration / data.misc.ServerTickTime)
11204+ local actualDuration = baseDuration * output.DurationMod
1120611205 local timePerProjectile = baseDelayBetweenProjectiles * output.DurationMod
1120711206 local timeForAllProjectiles = timePerProjectile * projectileCount
11208- local effectiveDelay = ticksNeededForInitialDelay * data.misc.ServerTickTime + math.ceil( timeForAllProjectiles / data.misc.ServerTickTime) * data.misc.ServerTickTime
11207+ local effectiveDelay = actualDuration + timeForAllProjectiles
1120911208 local maxEffectiveAPS = 1 / effectiveDelay
1121011209 local currentAPS = output.Speed
11210+ local MissProjectile = math.ceil((effectiveDelay - (1/currentAPS)) / timePerProjectile)
1121111211
1121211212 output.KineticFusilladeMaxEffectiveAPS = maxEffectiveAPS
1121311213
1121411214 if breakdown then
1121511215 local breakdownAPS = {}
11216- t_insert(breakdownAPS, s_format("^1(These calculations are speculative and best-effort)", actualDuration))
11216+ t_insert(breakdownAPS, s_format("^1(These calculations are still in beta testing)", actualDuration))
11217+ t_insert(breakdownAPS, "")
1121711218 t_insert(breakdownAPS, s_format("^8Delay of^7 %.3fs ^8before projectiles start firing", actualDuration))
1121811219 t_insert(breakdownAPS, s_format("^8Each projectile fires sequentially with a^7 %.3fs ^8delay between each projectile", timePerProjectile))
11219- t_insert(breakdownAPS, s_format("^8Server tick time:^7 %.3fs", data.misc.ServerTickTime))
11220- t_insert(breakdownAPS, s_format("^8Ticks needed:^7 %d ^8(rounded up)", ticksNeededForInitialDelay + math.ceil(timeForAllProjectiles / data.misc.ServerTickTime)))
1122111220 t_insert(breakdownAPS, s_format("^8Effective delay:^7 %.3fs", effectiveDelay))
1122211221 t_insert(breakdownAPS, s_format("^8Max effective attack rate:^7 1 / %.3f = %.2f", effectiveDelay, maxEffectiveAPS))
1122311222 if currentAPS and currentAPS > maxEffectiveAPS then
1122411223 t_insert(breakdownAPS, "")
1122511224 t_insert(breakdownAPS, s_format("^1Current attack rate (%.2f) exceeds max effective rate!", currentAPS))
11226- t_insert(breakdownAPS, s_format("^1DPS is reduced by %.1f%% ", (1 - maxEffectiveAPS / currentAPS) * 100 ))
11225+ t_insert(breakdownAPS, s_format("^1You will lose up to %d projectiles per volley. ", MissProjectile ))
1122711226 elseif currentAPS then
1122811227 t_insert(breakdownAPS, "")
1122911228 t_insert(breakdownAPS, s_format("^2Current attack rate (%.2f) is within effective limits", currentAPS))
@@ -21099,4 +21098,4 @@ skills["Zealotry"] = {
2109921098 [39] = { 19, 53, 33, cooldown = 1.2, levelRequirement = 99, manaReservationPercent = 50, storedUses = 1, statInterpolation = { 1, 1, 1, }, },
2110021099 [40] = { 20, 54, 34, cooldown = 1.2, levelRequirement = 100, manaReservationPercent = 50, storedUses = 1, statInterpolation = { 1, 1, 1, }, },
2110121100 },
21102- }
21101+ }
0 commit comments