diff --git a/src/Data/Skills/act_dex.lua b/src/Data/Skills/act_dex.lua index c54c6fd1a..6ce0eb176 100644 --- a/src/Data/Skills/act_dex.lua +++ b/src/Data/Skills/act_dex.lua @@ -6109,6 +6109,14 @@ skills["RainOfArrowsPlayer"] = { ["rain_of_arrows_projectile_count_multiplier_per_frenzy_charge"] = { mod("ProjectileNumber", "MORE", nil, 0, 0, { type = "Multiplier", var = "RemovableFrenzyCharge" }), }, + ["rain_of_arrows_delay_per_arrow"] = { + skill("hitTimeOverride", nil), + div = 1000, + }, + ["rain_hit_delay_ms"] = { + skill("maxHitRatePerEnemy", nil), + div = 1000, + }, }, baseFlags = { attack = true, diff --git a/src/Data/Skills/act_int.lua b/src/Data/Skills/act_int.lua index 1be925bde..fb50ebc8c 100644 --- a/src/Data/Skills/act_int.lua +++ b/src/Data/Skills/act_int.lua @@ -7603,6 +7603,16 @@ skills["FirestormPlayer"] = { incrementalEffectiveness = 0.12999999523163, damageIncrementalEffectiveness = 0.008899999782443, statDescriptionScope = "firestorm_statset_0", + statMap = { + ["fire_storm_fireball_delay_ms"] = { + skill("hitTimeOverride", nil), + div = 1000, + }, + ["rain_hit_delay_ms"] = { + skill("maxHitRatePerEnemy", nil), + div = 1000, + }, + }, baseFlags = { spell = true, area = true, @@ -7687,6 +7697,16 @@ skills["FirestormPlayer"] = { incrementalEffectiveness = 0.12999999523163, damageIncrementalEffectiveness = 0.008899999782443, statDescriptionScope = "firestorm_statset_1", + statMap = { + ["fire_storm_fireball_delay_ms"] = { + skill("hitTimeOverride", nil), + div = 1000, + }, + ["rain_hit_delay_ms"] = { + skill("maxHitRatePerEnemy", nil), + div = 1000, + }, + }, baseFlags = { spell = true, area = true, @@ -7776,6 +7796,16 @@ skills["FirestormPlayer"] = { incrementalEffectiveness = 0.12999999523163, damageIncrementalEffectiveness = 0.008899999782443, statDescriptionScope = "firestorm_statset_2", + statMap = { + ["fire_storm_fireball_delay_ms"] = { + skill("hitTimeOverride", nil), + div = 1000, + }, + ["rain_hit_delay_ms"] = { + skill("maxHitRatePerEnemy", nil), + div = 1000, + }, + }, baseFlags = { spell = true, area = true, @@ -12950,6 +12980,10 @@ skills["IcestormPlayer"] = { skill("hitTimeOverride", nil), div = 1000, }, + ["rain_hit_delay_ms"] = { + skill("maxHitRatePerEnemy", nil), + div = 1000, + }, }, baseFlags = { spell = true, @@ -13032,6 +13066,12 @@ skills["IcestormPlayer"] = { incrementalEffectiveness = 0.12999999523163, damageIncrementalEffectiveness = 0.0082000000402331, statDescriptionScope = "icestorm", + statMap = { + ["rain_hit_delay_ms"] = { + skill("maxHitRatePerEnemy", nil), + div = 1000, + }, + }, baseFlags = { spell = true, area = true, diff --git a/src/Data/Skills/act_str.lua b/src/Data/Skills/act_str.lua index 0c8788503..68a385d45 100644 --- a/src/Data/Skills/act_str.lua +++ b/src/Data/Skills/act_str.lua @@ -18725,6 +18725,16 @@ skills["ThunderstormPlayer"] = { incrementalEffectiveness = 0.12999999523163, damageIncrementalEffectiveness = 0.0096000004559755, statDescriptionScope = "thunderstorm", + statMap = { + ["lightning_storm_hit_frequency_ms"] = { + skill("hitTimeOverride", nil), + div = 1000, + }, + ["lightning_storm_hit_prevention_duration_ms"] = { + skill("maxHitRatePerEnemy", nil), + div = 1000, + }, + }, baseFlags = { spell = true, area = true, @@ -19508,6 +19518,12 @@ skills["VolcanoPlayer"] = { incrementalEffectiveness = 0.12999999523163, damageIncrementalEffectiveness = 0.0074000000022352, statDescriptionScope = "volcano_statset_1", + statMap = { + ["volcano_fires_projectiles_every_x_ms"] = { + skill("hitTimeOverride", nil), + div = 1000, + }, + }, baseFlags = { spell = true, area = true, diff --git a/src/Export/Skills/act_dex.txt b/src/Export/Skills/act_dex.txt index 46cb9cb5e..11dbefdcd 100644 --- a/src/Export/Skills/act_dex.txt +++ b/src/Export/Skills/act_dex.txt @@ -394,6 +394,14 @@ statMap = { ["rain_of_arrows_projectile_count_multiplier_per_frenzy_charge"] = { mod("ProjectileNumber", "MORE", nil, 0, 0, { type = "Multiplier", var = "RemovableFrenzyCharge" }), }, + ["rain_of_arrows_delay_per_arrow"] = { + skill("hitTimeOverride", nil), + div = 1000, + }, + ["rain_hit_delay_ms"] = { + skill("maxHitRatePerEnemy", nil), + div = 1000, + }, }, #mods #skillEnd diff --git a/src/Export/Skills/act_int.txt b/src/Export/Skills/act_int.txt index 3ef0b6bbf..0cef0115a 100644 --- a/src/Export/Skills/act_int.txt +++ b/src/Export/Skills/act_int.txt @@ -499,12 +499,42 @@ statMap = { #skill FirestormPlayer #set FirestormPlayer #flags spell area duration +statMap = { + ["fire_storm_fireball_delay_ms"] = { + skill("hitTimeOverride", nil), + div = 1000, + }, + ["rain_hit_delay_ms"] = { + skill("maxHitRatePerEnemy", nil), + div = 1000, + }, +}, #mods #set FirestormColdInfusionPlayer #flags spell area duration +statMap = { + ["fire_storm_fireball_delay_ms"] = { + skill("hitTimeOverride", nil), + div = 1000, + }, + ["rain_hit_delay_ms"] = { + skill("maxHitRatePerEnemy", nil), + div = 1000, + }, +}, #mods #set FirestormLightningInfusionPlayer #flags spell area duration +statMap = { + ["fire_storm_fireball_delay_ms"] = { + skill("hitTimeOverride", nil), + div = 1000, + }, + ["rain_hit_delay_ms"] = { + skill("maxHitRatePerEnemy", nil), + div = 1000, + }, +}, #mods #skillEnd @@ -828,10 +858,20 @@ statMap = { skill("hitTimeOverride", nil), div = 1000, }, + ["rain_hit_delay_ms"] = { + skill("maxHitRatePerEnemy", nil), + div = 1000, + }, }, #mods #set IcestormEmpoweredPlayer #flags spell area duration +statMap = { + ["rain_hit_delay_ms"] = { + skill("maxHitRatePerEnemy", nil), + div = 1000, + }, +}, #mods #skillEnd diff --git a/src/Export/Skills/act_str.txt b/src/Export/Skills/act_str.txt index 3d78cc76f..9942fc02b 100644 --- a/src/Export/Skills/act_str.txt +++ b/src/Export/Skills/act_str.txt @@ -1109,6 +1109,16 @@ statMap = { #skill ThunderstormPlayer #set ThunderstormPlayer #flags spell area duration +statMap = { + ["lightning_storm_hit_frequency_ms"] = { + skill("hitTimeOverride", nil), + div = 1000, + }, + ["lightning_storm_hit_prevention_duration_ms"] = { + skill("maxHitRatePerEnemy", nil), + div = 1000, + }, +}, #mods #skillEnd @@ -1146,6 +1156,12 @@ statMap = { #mods #set VolcanoProjectilePlayer #flags spell area projectile +statMap = { + ["volcano_fires_projectiles_every_x_ms"] = { + skill("hitTimeOverride", nil), + div = 1000, + }, +}, #mods #skillEnd diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index eeab60788..7f237aa2f 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -2708,7 +2708,7 @@ function calcs.offence(env, actor, activeSkill) output.Cooldown = globalOutput.Cooldown output.Speed = m_min(output.Speed, 1 / output.Cooldown * output.Repeats) end - if output.Cooldown and skillFlags.selfCast then + if output.Cooldown and skillFlags.selfCast or skillData.maxHitRatePerEnemy or skillData.hitTimeOverride then skillFlags.notAverage = true skillFlags.showAverage = false skillData.showAverage = false @@ -2830,7 +2830,13 @@ function calcs.offence(env, actor, activeSkill) end end - if skillData.hitTimeOverride and not skillData.triggeredOnDeath then + if skillData.hitTimeOverride and not skillData.triggeredOnDeath or skillData.maxHitRatePerEnemy then + --checks if skill has a max hit rate per enemy and adjust hitTimeOverride + if skillData.maxHitRatePerEnemy and not skillData.hitTimeOverride then + skillData.hitTimeOverride = skillData.maxHitRatePerEnemy + elseif skillData.maxHitRatePerEnemy and skillData.hitTimeOverride < skillData.maxHitRatePerEnemy then + skillData.hitTimeOverride = skillData.maxHitRatePerEnemy + end output.HitTime = skillData.hitTimeOverride output.HitSpeed = 1 / output.HitTime --Brands always have hitTimeOverride