Skip to content

Commit 3dd53c3

Browse files
MrHB212LocalIdentity
andauthored
Adding DPS calculation for Firestorm, Rain of Arrows, Icestorm, Thunderstorm and Volcano (#1747)
* Firestorm, Volcano * icestorm, thunderstorm * rain of arrows * Update CalcOffence.lua * Skill Export fix --------- Co-authored-by: LocalIdentity <localidentity2@gmail.com>
1 parent 61c47fe commit 3dd53c3

7 files changed

Lines changed: 136 additions & 2 deletions

File tree

src/Data/Skills/act_dex.lua

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6109,6 +6109,14 @@ skills["RainOfArrowsPlayer"] = {
61096109
["rain_of_arrows_projectile_count_multiplier_per_frenzy_charge"] = {
61106110
mod("ProjectileNumber", "MORE", nil, 0, 0, { type = "Multiplier", var = "RemovableFrenzyCharge" }),
61116111
},
6112+
["rain_of_arrows_delay_per_arrow"] = {
6113+
skill("hitTimeOverride", nil),
6114+
div = 1000,
6115+
},
6116+
["rain_hit_delay_ms"] = {
6117+
skill("maxHitRatePerEnemy", nil),
6118+
div = 1000,
6119+
},
61126120
},
61136121
baseFlags = {
61146122
attack = true,

src/Data/Skills/act_int.lua

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7603,6 +7603,16 @@ skills["FirestormPlayer"] = {
76037603
incrementalEffectiveness = 0.12999999523163,
76047604
damageIncrementalEffectiveness = 0.008899999782443,
76057605
statDescriptionScope = "firestorm_statset_0",
7606+
statMap = {
7607+
["fire_storm_fireball_delay_ms"] = {
7608+
skill("hitTimeOverride", nil),
7609+
div = 1000,
7610+
},
7611+
["rain_hit_delay_ms"] = {
7612+
skill("maxHitRatePerEnemy", nil),
7613+
div = 1000,
7614+
},
7615+
},
76067616
baseFlags = {
76077617
spell = true,
76087618
area = true,
@@ -7687,6 +7697,16 @@ skills["FirestormPlayer"] = {
76877697
incrementalEffectiveness = 0.12999999523163,
76887698
damageIncrementalEffectiveness = 0.008899999782443,
76897699
statDescriptionScope = "firestorm_statset_1",
7700+
statMap = {
7701+
["fire_storm_fireball_delay_ms"] = {
7702+
skill("hitTimeOverride", nil),
7703+
div = 1000,
7704+
},
7705+
["rain_hit_delay_ms"] = {
7706+
skill("maxHitRatePerEnemy", nil),
7707+
div = 1000,
7708+
},
7709+
},
76907710
baseFlags = {
76917711
spell = true,
76927712
area = true,
@@ -7776,6 +7796,16 @@ skills["FirestormPlayer"] = {
77767796
incrementalEffectiveness = 0.12999999523163,
77777797
damageIncrementalEffectiveness = 0.008899999782443,
77787798
statDescriptionScope = "firestorm_statset_2",
7799+
statMap = {
7800+
["fire_storm_fireball_delay_ms"] = {
7801+
skill("hitTimeOverride", nil),
7802+
div = 1000,
7803+
},
7804+
["rain_hit_delay_ms"] = {
7805+
skill("maxHitRatePerEnemy", nil),
7806+
div = 1000,
7807+
},
7808+
},
77797809
baseFlags = {
77807810
spell = true,
77817811
area = true,
@@ -12950,6 +12980,10 @@ skills["IcestormPlayer"] = {
1295012980
skill("hitTimeOverride", nil),
1295112981
div = 1000,
1295212982
},
12983+
["rain_hit_delay_ms"] = {
12984+
skill("maxHitRatePerEnemy", nil),
12985+
div = 1000,
12986+
},
1295312987
},
1295412988
baseFlags = {
1295512989
spell = true,
@@ -13032,6 +13066,12 @@ skills["IcestormPlayer"] = {
1303213066
incrementalEffectiveness = 0.12999999523163,
1303313067
damageIncrementalEffectiveness = 0.0082000000402331,
1303413068
statDescriptionScope = "icestorm",
13069+
statMap = {
13070+
["rain_hit_delay_ms"] = {
13071+
skill("maxHitRatePerEnemy", nil),
13072+
div = 1000,
13073+
},
13074+
},
1303513075
baseFlags = {
1303613076
spell = true,
1303713077
area = true,

src/Data/Skills/act_str.lua

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18725,6 +18725,16 @@ skills["ThunderstormPlayer"] = {
1872518725
incrementalEffectiveness = 0.12999999523163,
1872618726
damageIncrementalEffectiveness = 0.0096000004559755,
1872718727
statDescriptionScope = "thunderstorm",
18728+
statMap = {
18729+
["lightning_storm_hit_frequency_ms"] = {
18730+
skill("hitTimeOverride", nil),
18731+
div = 1000,
18732+
},
18733+
["lightning_storm_hit_prevention_duration_ms"] = {
18734+
skill("maxHitRatePerEnemy", nil),
18735+
div = 1000,
18736+
},
18737+
},
1872818738
baseFlags = {
1872918739
spell = true,
1873018740
area = true,
@@ -19508,6 +19518,12 @@ skills["VolcanoPlayer"] = {
1950819518
incrementalEffectiveness = 0.12999999523163,
1950919519
damageIncrementalEffectiveness = 0.0074000000022352,
1951019520
statDescriptionScope = "volcano_statset_1",
19521+
statMap = {
19522+
["volcano_fires_projectiles_every_x_ms"] = {
19523+
skill("hitTimeOverride", nil),
19524+
div = 1000,
19525+
},
19526+
},
1951119527
baseFlags = {
1951219528
spell = true,
1951319529
area = true,

src/Export/Skills/act_dex.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,14 @@ statMap = {
394394
["rain_of_arrows_projectile_count_multiplier_per_frenzy_charge"] = {
395395
mod("ProjectileNumber", "MORE", nil, 0, 0, { type = "Multiplier", var = "RemovableFrenzyCharge" }),
396396
},
397+
["rain_of_arrows_delay_per_arrow"] = {
398+
skill("hitTimeOverride", nil),
399+
div = 1000,
400+
},
401+
["rain_hit_delay_ms"] = {
402+
skill("maxHitRatePerEnemy", nil),
403+
div = 1000,
404+
},
397405
},
398406
#mods
399407
#skillEnd

src/Export/Skills/act_int.txt

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,12 +499,42 @@ statMap = {
499499
#skill FirestormPlayer
500500
#set FirestormPlayer
501501
#flags spell area duration
502+
statMap = {
503+
["fire_storm_fireball_delay_ms"] = {
504+
skill("hitTimeOverride", nil),
505+
div = 1000,
506+
},
507+
["rain_hit_delay_ms"] = {
508+
skill("maxHitRatePerEnemy", nil),
509+
div = 1000,
510+
},
511+
},
502512
#mods
503513
#set FirestormColdInfusionPlayer
504514
#flags spell area duration
515+
statMap = {
516+
["fire_storm_fireball_delay_ms"] = {
517+
skill("hitTimeOverride", nil),
518+
div = 1000,
519+
},
520+
["rain_hit_delay_ms"] = {
521+
skill("maxHitRatePerEnemy", nil),
522+
div = 1000,
523+
},
524+
},
505525
#mods
506526
#set FirestormLightningInfusionPlayer
507527
#flags spell area duration
528+
statMap = {
529+
["fire_storm_fireball_delay_ms"] = {
530+
skill("hitTimeOverride", nil),
531+
div = 1000,
532+
},
533+
["rain_hit_delay_ms"] = {
534+
skill("maxHitRatePerEnemy", nil),
535+
div = 1000,
536+
},
537+
},
508538
#mods
509539
#skillEnd
510540

@@ -828,10 +858,20 @@ statMap = {
828858
skill("hitTimeOverride", nil),
829859
div = 1000,
830860
},
861+
["rain_hit_delay_ms"] = {
862+
skill("maxHitRatePerEnemy", nil),
863+
div = 1000,
864+
},
831865
},
832866
#mods
833867
#set IcestormEmpoweredPlayer
834868
#flags spell area duration
869+
statMap = {
870+
["rain_hit_delay_ms"] = {
871+
skill("maxHitRatePerEnemy", nil),
872+
div = 1000,
873+
},
874+
},
835875
#mods
836876
#skillEnd
837877

src/Export/Skills/act_str.txt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,6 +1109,16 @@ statMap = {
11091109
#skill ThunderstormPlayer
11101110
#set ThunderstormPlayer
11111111
#flags spell area duration
1112+
statMap = {
1113+
["lightning_storm_hit_frequency_ms"] = {
1114+
skill("hitTimeOverride", nil),
1115+
div = 1000,
1116+
},
1117+
["lightning_storm_hit_prevention_duration_ms"] = {
1118+
skill("maxHitRatePerEnemy", nil),
1119+
div = 1000,
1120+
},
1121+
},
11121122
#mods
11131123
#skillEnd
11141124

@@ -1146,6 +1156,12 @@ statMap = {
11461156
#mods
11471157
#set VolcanoProjectilePlayer
11481158
#flags spell area projectile
1159+
statMap = {
1160+
["volcano_fires_projectiles_every_x_ms"] = {
1161+
skill("hitTimeOverride", nil),
1162+
div = 1000,
1163+
},
1164+
},
11491165
#mods
11501166
#skillEnd
11511167

src/Modules/CalcOffence.lua

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2708,7 +2708,7 @@ function calcs.offence(env, actor, activeSkill)
27082708
output.Cooldown = globalOutput.Cooldown
27092709
output.Speed = m_min(output.Speed, 1 / output.Cooldown * output.Repeats)
27102710
end
2711-
if output.Cooldown and skillFlags.selfCast then
2711+
if output.Cooldown and skillFlags.selfCast or skillData.maxHitRatePerEnemy or skillData.hitTimeOverride then
27122712
skillFlags.notAverage = true
27132713
skillFlags.showAverage = false
27142714
skillData.showAverage = false
@@ -2830,7 +2830,13 @@ function calcs.offence(env, actor, activeSkill)
28302830
end
28312831

28322832
end
2833-
if skillData.hitTimeOverride and not skillData.triggeredOnDeath then
2833+
if skillData.hitTimeOverride and not skillData.triggeredOnDeath or skillData.maxHitRatePerEnemy then
2834+
--checks if skill has a max hit rate per enemy and adjust hitTimeOverride
2835+
if skillData.maxHitRatePerEnemy and not skillData.hitTimeOverride then
2836+
skillData.hitTimeOverride = skillData.maxHitRatePerEnemy
2837+
elseif skillData.maxHitRatePerEnemy and skillData.hitTimeOverride < skillData.maxHitRatePerEnemy then
2838+
skillData.hitTimeOverride = skillData.maxHitRatePerEnemy
2839+
end
28342840
output.HitTime = skillData.hitTimeOverride
28352841
output.HitSpeed = 1 / output.HitTime
28362842
--Brands always have hitTimeOverride

0 commit comments

Comments
 (0)