From 7452d38c6720e73fbf1b9ad972d22d919fb9074d Mon Sep 17 00:00:00 2001 From: James Tanner Date: Tue, 19 Sep 2023 22:33:40 -0700 Subject: [PATCH 1/3] Add option for channel clip delay. Currently only affects full-length channels --- proto/api.proto | 1 + proto/priest.proto | 4 +- sim/core/character.go | 3 +- sim/core/dot.go | 2 +- sim/core/spell.go | 1 + sim/core/test_generators.go | 26 +- sim/core/unit.go | 3 + sim/druid/balance/TestBalance.results | 288 ++++----- sim/druid/balance/TestBalancePhase3.results | 24 +- sim/mage/TestArcane.results | 24 +- sim/mage/TestFire.results | 24 +- sim/mage/TestFrost.results | 24 +- sim/mage/TestFrostFire.results | 24 +- sim/priest/mind_flay.go | 3 + sim/priest/shadow/TestShadow.results | 664 ++++++++++---------- sim/priest/shadow/rotation.go | 2 +- sim/priest/shadow/shadow_priest.go | 4 +- sim/priest/shadow/shadow_priest_test.go | 3 - sim/rogue/TestAssassination.results | 2 +- sim/rogue/TestCombat.results | 2 +- sim/warlock/TestAffliction.results | 48 +- sim/warlock/TestDemonology.results | 24 +- sim/warlock/TestDestruction.results | 24 +- ui/core/components/other_inputs.ts | 15 +- ui/core/player.ts | 29 +- ui/shadow_priest/inputs.ts | 6 - ui/shadow_priest/sim.ts | 2 +- 27 files changed, 658 insertions(+), 618 deletions(-) diff --git a/proto/api.proto b/proto/api.proto index bf05aac408..1ddaa789a6 100644 --- a/proto/api.proto +++ b/proto/api.proto @@ -63,6 +63,7 @@ message Player { APLRotation rotation = 40; int32 reaction_time_ms = 41; + int32 channel_clip_delay_ms = 42; bool in_front_of_target = 23; double distance_from_target = 33; diff --git a/proto/priest.proto b/proto/priest.proto index 6067f81482..9e04269f47 100644 --- a/proto/priest.proto +++ b/proto/priest.proto @@ -152,7 +152,7 @@ message ShadowPriest { } RotationType rotation_type = 1; PreCastOption precast_type = 2; - double latency = 3; // Latency between actions + double latency = 3 [deprecated = true]; // Latency between actions } Rotation rotation = 1; @@ -167,7 +167,7 @@ message ShadowPriest { bool use_mind_blast = 4; bool use_shadow_word_death = 5; UnitReference power_infusion_target = 6; - double latency = 7; // Latency between actions + double latency = 7 [deprecated = true]; // Latency between actions } Options options = 3; } diff --git a/sim/core/character.go b/sim/core/character.go index bd8e794101..93428e9265 100644 --- a/sim/core/character.go +++ b/sim/core/character.go @@ -103,7 +103,8 @@ func NewCharacter(party *Party, partyIndex int, player *proto.Player) Character StatDependencyManager: stats.NewStatDependencyManager(), - ReactionTime: time.Duration(player.ReactionTimeMs) * time.Millisecond, + ReactionTime: MaxDuration(0, time.Duration(player.ReactionTimeMs)*time.Millisecond), + ChannelClipDelay: MaxDuration(0, time.Duration(player.ChannelClipDelayMs)*time.Millisecond), DistanceFromTarget: player.DistanceFromTarget, IsUsingAPL: player.Rotation != nil && player.Rotation.Type == proto.APLRotation_TypeAPL, }, diff --git a/sim/core/dot.go b/sim/core/dot.go index 50658d64a4..5f2ebaa7ad 100644 --- a/sim/core/dot.go +++ b/sim/core/dot.go @@ -194,7 +194,7 @@ func (dot *Dot) TickOnce(sim *Simulation) { if dot.isChanneled && dot.Spell.Unit.IsUsingAPL { if dot.MaxTicksRemaining() == 0 { // If this was the last tick, wait 0ms to call the APL after the channel aura fully fades. - dot.Spell.Unit.WaitUntil(sim, sim.CurrentTime) + dot.Spell.Unit.WaitUntil(sim, sim.CurrentTime+dot.Spell.Unit.ChannelClipDelay) } else { // Give the APL settings a chance to interrupt the channel. dot.Spell.Unit.Rotation.DoNextAction(sim) diff --git a/sim/core/spell.go b/sim/core/spell.go index f65a9bc121..e5060e9c73 100644 --- a/sim/core/spell.go +++ b/sim/core/spell.go @@ -175,6 +175,7 @@ func (unit *Unit) RegisterSpell(config SpellConfig) *Spell { if unit.IsUsingAPL { config.Cast.DefaultCast.ChannelTime = 0 + config.Cast.DefaultCast.AfterCastDelay = 0 } spell := &Spell{ diff --git a/sim/core/test_generators.go b/sim/core/test_generators.go index 9b1a818018..02a62092e3 100644 --- a/sim/core/test_generators.go +++ b/sim/core/test_generators.go @@ -2,9 +2,10 @@ package core import ( "fmt" - "golang.org/x/exp/slices" "strings" + "golang.org/x/exp/slices" + "github.com/wowsims/wotlk/sim/core/proto" googleProto "google.golang.org/protobuf/proto" ) @@ -163,15 +164,18 @@ func (combos *SettingsCombos) GetTest(testIdx int) (string, *proto.ComputeStatsR rsr := &proto.RaidSimRequest{ Raid: SinglePlayerRaidProto( WithSpec(&proto.Player{ - Race: race, - Class: combos.Class, - Equipment: gearSetCombo.GearSet, - TalentsString: talentSetCombo.Talents, - Glyphs: talentSetCombo.Glyphs, - Consumes: buffsCombo.Consumes, - Buffs: buffsCombo.Player, - Profession1: proto.Profession_Engineering, - Cooldowns: combos.Cooldowns, + Race: race, + Class: combos.Class, + Equipment: gearSetCombo.GearSet, + TalentsString: talentSetCombo.Talents, + Glyphs: talentSetCombo.Glyphs, + Consumes: buffsCombo.Consumes, + Buffs: buffsCombo.Player, + Profession1: proto.Profession_Engineering, + Cooldowns: combos.Cooldowns, + DistanceFromTarget: 30, + ReactionTimeMs: 150, + ChannelClipDelayMs: 50, }, specOptionsCombo.SpecOptions), buffsCombo.Party, buffsCombo.Raid, @@ -470,6 +474,8 @@ func FullCharacterTestSuiteGenerator(config CharacterSuiteConfig) TestGenerator InFrontOfTarget: config.InFrontOfTarget, DistanceFromTarget: 30, + ReactionTimeMs: 150, + ChannelClipDelayMs: 50, }, config.SpecOptions.SpecOptions) diff --git a/sim/core/unit.go b/sim/core/unit.go index b6d37059f9..60e4a539eb 100644 --- a/sim/core/unit.go +++ b/sim/core/unit.go @@ -53,6 +53,9 @@ type Unit struct { // Used by certain APL values and actions. ReactionTime time.Duration + // Amount of time following a post-GCD channel tick, to when the next action can be performed. + ChannelClipDelay time.Duration + // How far this unit is from its target(s). Measured in yards, this is used // for calculating spell travel time for certain spells. DistanceFromTarget float64 diff --git a/sim/druid/balance/TestBalance.results b/sim/druid/balance/TestBalance.results index bc611bbaab..fc1571575a 100644 --- a/sim/druid/balance/TestBalance.results +++ b/sim/druid/balance/TestBalance.results @@ -950,43 +950,43 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P1-Default-FullBuffs-LongMultiTarget" value: { - dps: 11630.70209 - tps: 13726.97957 + dps: 11526.60968 + tps: 13647.85752 } } dps_results: { key: "TestBalance-Settings-Tauren-P1-Default-FullBuffs-LongSingleTarget" value: { - dps: 8127.48725 - tps: 7950.68879 + dps: 8085.12785 + tps: 7909.90711 } } dps_results: { key: "TestBalance-Settings-Tauren-P1-Default-FullBuffs-ShortSingleTarget" value: { - dps: 9105.42241 - tps: 8511.32929 + dps: 8992.04978 + tps: 8402.66657 } } dps_results: { key: "TestBalance-Settings-Tauren-P1-Default-NoBuffs-LongMultiTarget" value: { - dps: 4321.86145 - tps: 4595.62568 + dps: 4280.66809 + tps: 4527.30148 } } dps_results: { key: "TestBalance-Settings-Tauren-P1-Default-NoBuffs-LongSingleTarget" value: { - dps: 2365.94199 - tps: 2256.67334 + dps: 2383.47311 + tps: 2274.54014 } } dps_results: { key: "TestBalance-Settings-Tauren-P1-Default-NoBuffs-ShortSingleTarget" value: { - dps: 5226.40318 - tps: 4955.07563 + dps: 5360.49427 + tps: 5093.30441 } } dps_results: { @@ -999,15 +999,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P1-MultidotBoth-FullBuffs-LongSingleTarget" value: { - dps: 8073.44349 - tps: 7897.52207 + dps: 8082.97131 + tps: 7909.66978 } } dps_results: { key: "TestBalance-Settings-Tauren-P1-MultidotBoth-FullBuffs-ShortSingleTarget" value: { - dps: 9046.36031 - tps: 8451.98538 + dps: 9013.56435 + tps: 8423.88254 } } dps_results: { @@ -1020,15 +1020,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P1-MultidotBoth-NoBuffs-LongSingleTarget" value: { - dps: 2293.61296 - tps: 2182.87499 + dps: 2298.55284 + tps: 2188.33772 } } dps_results: { key: "TestBalance-Settings-Tauren-P1-MultidotBoth-NoBuffs-ShortSingleTarget" value: { - dps: 5252.53953 - tps: 4981.21199 + dps: 5256.46082 + tps: 4985.79531 } } dps_results: { @@ -1041,15 +1041,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P1-MultidotIs-FullBuffs-LongSingleTarget" value: { - dps: 8103.00988 - tps: 7924.43842 + dps: 8090.72863 + tps: 7915.24291 } } dps_results: { key: "TestBalance-Settings-Tauren-P1-MultidotIs-FullBuffs-ShortSingleTarget" value: { - dps: 9135.52318 - tps: 8540.39367 + dps: 9015.21323 + tps: 8424.08086 } } dps_results: { @@ -1062,15 +1062,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P1-MultidotIs-NoBuffs-LongSingleTarget" value: { - dps: 2336.32268 - tps: 2225.55317 + dps: 2358.07879 + tps: 2248.29509 } } dps_results: { key: "TestBalance-Settings-Tauren-P1-MultidotIs-NoBuffs-ShortSingleTarget" value: { - dps: 5266.75198 - tps: 4995.75546 + dps: 5212.1088 + tps: 4940.78125 } } dps_results: { @@ -1083,15 +1083,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P1-MultidotMf-FullBuffs-LongSingleTarget" value: { - dps: 8148.26047 - tps: 7974.84003 + dps: 8073.9094 + tps: 7901.65795 } } dps_results: { key: "TestBalance-Settings-Tauren-P1-MultidotMf-FullBuffs-ShortSingleTarget" value: { - dps: 9066.91939 - tps: 8473.99896 + dps: 8997.91405 + tps: 8409.79393 } } dps_results: { @@ -1104,57 +1104,57 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P1-MultidotMf-NoBuffs-LongSingleTarget" value: { - dps: 2320.13069 - tps: 2210.1512 + dps: 2325.25244 + tps: 2216.07563 } } dps_results: { key: "TestBalance-Settings-Tauren-P1-MultidotMf-NoBuffs-ShortSingleTarget" value: { - dps: 5247.68072 - tps: 4977.84275 + dps: 5365.17979 + tps: 5097.82442 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-Default-FullBuffs-LongMultiTarget" value: { - dps: 14005.68303 - tps: 16274.84154 + dps: 13901.41626 + tps: 16177.46721 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-Default-FullBuffs-LongSingleTarget" value: { - dps: 9857.78605 - tps: 9661.37051 + dps: 9761.32099 + tps: 9566.51621 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-Default-FullBuffs-ShortSingleTarget" value: { - dps: 11165.76435 - tps: 10504.91725 + dps: 10970.45672 + tps: 10311.163 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-Default-NoBuffs-LongMultiTarget" value: { - dps: 6278.67606 - tps: 6804.88416 + dps: 6311.88778 + tps: 6866.90083 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-Default-NoBuffs-LongSingleTarget" value: { - dps: 3521.53908 - tps: 3405.53533 + dps: 3496.53748 + tps: 3380.5883 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-Default-NoBuffs-ShortSingleTarget" value: { - dps: 6617.78401 - tps: 6313.98493 + dps: 6574.07132 + tps: 6270.27224 } } dps_results: { @@ -1167,15 +1167,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-MultidotBoth-FullBuffs-LongSingleTarget" value: { - dps: 9820.55622 - tps: 9625.45033 + dps: 9794.21743 + tps: 9598.74971 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-MultidotBoth-FullBuffs-ShortSingleTarget" value: { - dps: 11115.46561 - tps: 10454.48518 + dps: 10976.63803 + tps: 10319.50463 } } dps_results: { @@ -1188,15 +1188,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-MultidotBoth-NoBuffs-LongSingleTarget" value: { - dps: 3447.01595 - tps: 3330.21868 + dps: 3462.89789 + tps: 3347.1573 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-MultidotBoth-NoBuffs-ShortSingleTarget" value: { - dps: 6659.83802 - tps: 6356.80475 + dps: 6578.64729 + tps: 6274.84821 } } dps_results: { @@ -1209,15 +1209,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-MultidotIs-FullBuffs-LongSingleTarget" value: { - dps: 9838.83709 - tps: 9639.98956 + dps: 9730.69781 + tps: 9532.7958 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-MultidotIs-FullBuffs-ShortSingleTarget" value: { - dps: 11201.95272 - tps: 10540.27552 + dps: 11086.20205 + tps: 10428.28743 } } dps_results: { @@ -1230,15 +1230,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-MultidotIs-NoBuffs-LongSingleTarget" value: { - dps: 3521.53908 - tps: 3405.53533 + dps: 3496.53748 + tps: 3380.5883 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-MultidotIs-NoBuffs-ShortSingleTarget" value: { - dps: 6617.78401 - tps: 6313.98493 + dps: 6574.07132 + tps: 6270.27224 } } dps_results: { @@ -1251,15 +1251,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-MultidotMf-FullBuffs-LongSingleTarget" value: { - dps: 9844.79687 - tps: 9650.68126 + dps: 9716.05864 + tps: 9520.89803 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-MultidotMf-FullBuffs-ShortSingleTarget" value: { - dps: 11092.77388 - tps: 10433.57183 + dps: 10964.04237 + tps: 10306.81211 } } dps_results: { @@ -1272,57 +1272,57 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-MultidotMf-NoBuffs-LongSingleTarget" value: { - dps: 3447.01595 - tps: 3330.21868 + dps: 3462.89789 + tps: 3347.1573 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-4P-MultidotMf-NoBuffs-ShortSingleTarget" value: { - dps: 6659.83802 - tps: 6356.80475 + dps: 6578.64729 + tps: 6274.84821 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-Default-FullBuffs-LongMultiTarget" value: { - dps: 14256.97484 - tps: 16553.38444 + dps: 14263.73838 + tps: 16602.97957 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-Default-FullBuffs-LongSingleTarget" value: { - dps: 9933.40106 - tps: 9735.65891 + dps: 9808.726 + tps: 9609.36036 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-Default-FullBuffs-ShortSingleTarget" value: { - dps: 11198.26259 - tps: 10527.8503 + dps: 11089.40333 + tps: 10422.89489 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-Default-NoBuffs-LongMultiTarget" value: { - dps: 6915.86057 - tps: 7598.39565 + dps: 6758.96049 + tps: 7405.57185 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-Default-NoBuffs-LongSingleTarget" value: { - dps: 3984.73879 - tps: 3874.08317 + dps: 3981.57009 + tps: 3871.5503 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-Default-NoBuffs-ShortSingleTarget" value: { - dps: 6653.90773 - tps: 6351.44042 + dps: 6614.96003 + tps: 6312.68823 } } dps_results: { @@ -1335,15 +1335,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P2-MultidotBoth-FullBuffs-LongSingleTarget" value: { - dps: 9856.25654 - tps: 9652.89892 + dps: 9834.59776 + tps: 9632.99676 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-MultidotBoth-FullBuffs-ShortSingleTarget" value: { - dps: 11155.54668 - tps: 10486.2559 + dps: 11023.44921 + tps: 10356.45252 } } dps_results: { @@ -1356,15 +1356,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P2-MultidotBoth-NoBuffs-LongSingleTarget" value: { - dps: 3846.03241 - tps: 3733.87721 + dps: 3818.63293 + tps: 3706.04759 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-MultidotBoth-NoBuffs-ShortSingleTarget" value: { - dps: 6676.46602 - tps: 6372.43454 + dps: 6647.40139 + tps: 6343.56543 } } dps_results: { @@ -1377,15 +1377,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P2-MultidotIs-FullBuffs-LongSingleTarget" value: { - dps: 9851.69284 - tps: 9649.39283 + dps: 9775.12774 + tps: 9572.64325 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-MultidotIs-FullBuffs-ShortSingleTarget" value: { - dps: 11212.13608 - tps: 10540.68973 + dps: 11104.56187 + tps: 10436.99448 } } dps_results: { @@ -1398,15 +1398,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P2-MultidotIs-NoBuffs-LongSingleTarget" value: { - dps: 3952.80112 - tps: 3841.31559 + dps: 3842.74365 + tps: 3729.686 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-MultidotIs-NoBuffs-ShortSingleTarget" value: { - dps: 6682.61192 - tps: 6377.79835 + dps: 6555.14668 + tps: 6250.13759 } } dps_results: { @@ -1419,15 +1419,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P2-MultidotMf-FullBuffs-LongSingleTarget" value: { - dps: 9862.31763 - tps: 9661.9153 + dps: 9805.89401 + tps: 9610.27794 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-MultidotMf-FullBuffs-ShortSingleTarget" value: { - dps: 11183.13104 - tps: 10514.53613 + dps: 11016.15302 + tps: 10349.85306 } } dps_results: { @@ -1440,57 +1440,57 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P2-MultidotMf-NoBuffs-LongSingleTarget" value: { - dps: 3877.43157 - tps: 3765.77493 + dps: 3886.87817 + tps: 3775.94741 } } dps_results: { key: "TestBalance-Settings-Tauren-P2-MultidotMf-NoBuffs-ShortSingleTarget" value: { - dps: 6697.30963 - tps: 6395.62439 + dps: 6644.01154 + tps: 6342.13079 } } dps_results: { key: "TestBalance-Settings-Tauren-P3-Default-FullBuffs-LongMultiTarget" value: { - dps: 15902.09862 - tps: 18290.66075 + dps: 16032.40775 + tps: 18498.70034 } } dps_results: { key: "TestBalance-Settings-Tauren-P3-Default-FullBuffs-LongSingleTarget" value: { - dps: 11370.07484 - tps: 11172.82054 + dps: 11236.57786 + tps: 11038.02733 } } dps_results: { key: "TestBalance-Settings-Tauren-P3-Default-FullBuffs-ShortSingleTarget" value: { - dps: 12452.9894 - tps: 11765.71426 + dps: 12233.60154 + tps: 11547.82181 } } dps_results: { key: "TestBalance-Settings-Tauren-P3-Default-NoBuffs-LongMultiTarget" value: { - dps: 8959.94607 - tps: 10059.56916 + dps: 8537.04078 + tps: 9590.75971 } } dps_results: { key: "TestBalance-Settings-Tauren-P3-Default-NoBuffs-LongSingleTarget" value: { - dps: 6149.84953 - tps: 6061.56228 + dps: 5577.9187 + tps: 5479.45502 } } dps_results: { key: "TestBalance-Settings-Tauren-P3-Default-NoBuffs-ShortSingleTarget" value: { - dps: 7885.0132 - tps: 7585.39586 + dps: 7636.84992 + tps: 7330.39248 } } dps_results: { @@ -1503,15 +1503,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P3-MultidotBoth-FullBuffs-LongSingleTarget" value: { - dps: 11460.35675 - tps: 11254.24777 + dps: 11371.42362 + tps: 11164.30316 } } dps_results: { key: "TestBalance-Settings-Tauren-P3-MultidotBoth-FullBuffs-ShortSingleTarget" value: { - dps: 12550.46101 - tps: 11836.98411 + dps: 12372.39525 + tps: 11660.97868 } } dps_results: { @@ -1524,15 +1524,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P3-MultidotBoth-NoBuffs-LongSingleTarget" value: { - dps: 5739.03619 - tps: 5643.83742 + dps: 5577.91692 + tps: 5481.46405 } } dps_results: { key: "TestBalance-Settings-Tauren-P3-MultidotBoth-NoBuffs-ShortSingleTarget" value: { - dps: 7973.91073 - tps: 7667.50166 + dps: 7843.24465 + tps: 7534.9118 } } dps_results: { @@ -1545,15 +1545,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P3-MultidotIs-FullBuffs-LongSingleTarget" value: { - dps: 11350.23971 - tps: 11149.04566 + dps: 11223.99456 + tps: 11021.65189 } } dps_results: { key: "TestBalance-Settings-Tauren-P3-MultidotIs-FullBuffs-ShortSingleTarget" value: { - dps: 12587.75086 - tps: 11899.37186 + dps: 12309.79694 + tps: 11625.52709 } } dps_results: { @@ -1566,15 +1566,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P3-MultidotIs-NoBuffs-LongSingleTarget" value: { - dps: 5979.73683 - tps: 5886.25365 + dps: 5419.22031 + tps: 5318.6909 } } dps_results: { key: "TestBalance-Settings-Tauren-P3-MultidotIs-NoBuffs-ShortSingleTarget" value: { - dps: 7918.41331 - tps: 7616.23093 + dps: 7741.6518 + tps: 7434.5531 } } dps_results: { @@ -1587,15 +1587,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P3-MultidotMf-FullBuffs-LongSingleTarget" value: { - dps: 11468.36449 - tps: 11265.63854 + dps: 11504.09353 + tps: 11302.54634 } } dps_results: { key: "TestBalance-Settings-Tauren-P3-MultidotMf-FullBuffs-ShortSingleTarget" value: { - dps: 12489.45729 - tps: 11777.52396 + dps: 12415.10593 + tps: 11703.36311 } } dps_results: { @@ -1608,15 +1608,15 @@ dps_results: { dps_results: { key: "TestBalance-Settings-Tauren-P3-MultidotMf-NoBuffs-LongSingleTarget" value: { - dps: 5934.45015 - tps: 5842.95077 + dps: 5619.21663 + tps: 5523.70984 } } dps_results: { key: "TestBalance-Settings-Tauren-P3-MultidotMf-NoBuffs-ShortSingleTarget" value: { - dps: 8051.96714 - tps: 7748.97812 + dps: 7792.62158 + tps: 7485.99875 } } dps_results: { diff --git a/sim/druid/balance/TestBalancePhase3.results b/sim/druid/balance/TestBalancePhase3.results index 1232506312..89e75e4a2d 100644 --- a/sim/druid/balance/TestBalancePhase3.results +++ b/sim/druid/balance/TestBalancePhase3.results @@ -950,43 +950,43 @@ dps_results: { dps_results: { key: "TestBalancePhase3-Settings-Tauren-P3-Default-FullBuffs-LongMultiTarget" value: { - dps: 16247.09519 - tps: 19082.08476 + dps: 16268.29629 + tps: 19059.08231 } } dps_results: { key: "TestBalancePhase3-Settings-Tauren-P3-Default-FullBuffs-LongSingleTarget" value: { - dps: 11637.97629 - tps: 11398.07117 + dps: 11595.72394 + tps: 11355.66931 } } dps_results: { key: "TestBalancePhase3-Settings-Tauren-P3-Default-FullBuffs-ShortSingleTarget" value: { - dps: 12764.41661 - tps: 11943.56415 + dps: 12477.70954 + tps: 11655.99038 } } dps_results: { key: "TestBalancePhase3-Settings-Tauren-P3-Default-NoBuffs-LongMultiTarget" value: { - dps: 7598.75872 - tps: 8557.75778 + dps: 7581.49561 + tps: 8542.14929 } } dps_results: { key: "TestBalancePhase3-Settings-Tauren-P3-Default-NoBuffs-LongSingleTarget" value: { - dps: 5170.42916 - tps: 5049.26513 + dps: 4866.60447 + tps: 4740.51292 } } dps_results: { key: "TestBalancePhase3-Settings-Tauren-P3-Default-NoBuffs-ShortSingleTarget" value: { - dps: 8115.22773 - tps: 7759.44925 + dps: 7922.54853 + tps: 7563.35001 } } dps_results: { diff --git a/sim/mage/TestArcane.results b/sim/mage/TestArcane.results index ba9522b2a5..daa8efe2b8 100644 --- a/sim/mage/TestArcane.results +++ b/sim/mage/TestArcane.results @@ -812,43 +812,43 @@ dps_results: { dps_results: { key: "TestArcane-Settings-Troll-P1Arcane-ArcaneRotation-FullBuffs-LongMultiTarget" value: { - dps: 7480.80624 - tps: 6247.65645 + dps: 7474.16034 + tps: 6243.66891 } } dps_results: { key: "TestArcane-Settings-Troll-P1Arcane-ArcaneRotation-FullBuffs-LongSingleTarget" value: { - dps: 7480.80624 - tps: 4509.52329 + dps: 7474.16034 + tps: 4505.53575 } } dps_results: { key: "TestArcane-Settings-Troll-P1Arcane-ArcaneRotation-FullBuffs-ShortSingleTarget" value: { - dps: 9810.75659 - tps: 5807.99577 + dps: 9808.9837 + tps: 5806.93203 } } dps_results: { key: "TestArcane-Settings-Troll-P1Arcane-ArcaneRotation-NoBuffs-LongMultiTarget" value: { - dps: 3530.15269 - tps: 3487.01539 + dps: 3528.81558 + tps: 3486.21313 } } dps_results: { key: "TestArcane-Settings-Troll-P1Arcane-ArcaneRotation-NoBuffs-LongSingleTarget" value: { - dps: 3530.15269 - tps: 2141.16404 + dps: 3528.81558 + tps: 2140.36177 } } dps_results: { key: "TestArcane-Settings-Troll-P1Arcane-ArcaneRotation-NoBuffs-ShortSingleTarget" value: { - dps: 4703.39915 - tps: 2817.39563 + dps: 4702.11826 + tps: 2816.6271 } } dps_results: { diff --git a/sim/mage/TestFire.results b/sim/mage/TestFire.results index bb8dce337b..ffcda1ac78 100644 --- a/sim/mage/TestFire.results +++ b/sim/mage/TestFire.results @@ -812,43 +812,43 @@ dps_results: { dps_results: { key: "TestFire-Settings-Troll-P1Fire-FireRotation-FullBuffs-LongMultiTarget" value: { - dps: 9821.10427 - tps: 10007.24054 + dps: 9823.45749 + tps: 10214.40161 } } dps_results: { key: "TestFire-Settings-Troll-P1Fire-FireRotation-FullBuffs-LongSingleTarget" value: { - dps: 6715.7705 - tps: 5370.16551 + dps: 6733.71935 + tps: 5384.40184 } } dps_results: { key: "TestFire-Settings-Troll-P1Fire-FireRotation-FullBuffs-ShortSingleTarget" value: { - dps: 8281.56936 - tps: 6528.4292 + dps: 8154.00104 + tps: 6427.43618 } } dps_results: { key: "TestFire-Settings-Troll-P1Fire-FireRotation-NoBuffs-LongMultiTarget" value: { - dps: 4807.82985 - tps: 5484.26682 + dps: 4832.03892 + tps: 5516.51403 } } dps_results: { key: "TestFire-Settings-Troll-P1Fire-FireRotation-NoBuffs-LongSingleTarget" value: { - dps: 2493.43537 - tps: 1986.45043 + dps: 2489.04624 + tps: 1983.24614 } } dps_results: { key: "TestFire-Settings-Troll-P1Fire-FireRotation-NoBuffs-ShortSingleTarget" value: { - dps: 3792.17796 - tps: 2935.01657 + dps: 3803.56404 + tps: 2946.34195 } } dps_results: { diff --git a/sim/mage/TestFrost.results b/sim/mage/TestFrost.results index e29b83aec6..71ad650425 100644 --- a/sim/mage/TestFrost.results +++ b/sim/mage/TestFrost.results @@ -812,43 +812,43 @@ dps_results: { dps_results: { key: "TestFrost-Settings-Troll-P1Frost-FrostRotation-FullBuffs-LongMultiTarget" value: { - dps: 5461.19449 - tps: 4957.56348 + dps: 5473.04742 + tps: 4990.8246 } } dps_results: { key: "TestFrost-Settings-Troll-P1Frost-FrostRotation-FullBuffs-LongSingleTarget" value: { - dps: 5461.19449 - tps: 4346.12465 + dps: 5473.04742 + tps: 4364.42179 } } dps_results: { key: "TestFrost-Settings-Troll-P1Frost-FrostRotation-FullBuffs-ShortSingleTarget" value: { - dps: 6784.97631 - tps: 5413.88148 + dps: 6666.47075 + tps: 5318.65811 } } dps_results: { key: "TestFrost-Settings-Troll-P1Frost-FrostRotation-NoBuffs-LongMultiTarget" value: { - dps: 3238.90741 - tps: 3289.59783 + dps: 3227.22119 + tps: 3280.0317 } } dps_results: { key: "TestFrost-Settings-Troll-P1Frost-FrostRotation-NoBuffs-LongSingleTarget" value: { - dps: 3238.90741 - tps: 2529.2762 + dps: 3227.22119 + tps: 2520.08271 } } dps_results: { key: "TestFrost-Settings-Troll-P1Frost-FrostRotation-NoBuffs-ShortSingleTarget" value: { - dps: 3742.36834 - tps: 2879.64551 + dps: 3715.47655 + tps: 2856.11816 } } dps_results: { diff --git a/sim/mage/TestFrostFire.results b/sim/mage/TestFrostFire.results index cda26b26c5..6777a2e123 100644 --- a/sim/mage/TestFrostFire.results +++ b/sim/mage/TestFrostFire.results @@ -770,43 +770,43 @@ dps_results: { dps_results: { key: "TestFrostFire-Settings-Troll-P1FrostFire-FrostFireRotation-FullBuffs-LongMultiTarget" value: { - dps: 9264.04901 - tps: 9165.87075 + dps: 9231.00799 + tps: 9179.0138 } } dps_results: { key: "TestFrostFire-Settings-Troll-P1FrostFire-FrostFireRotation-FullBuffs-LongSingleTarget" value: { - dps: 6326.12814 - tps: 5052.38832 + dps: 6308.53608 + tps: 5042.0864 } } dps_results: { key: "TestFrostFire-Settings-Troll-P1FrostFire-FrostFireRotation-FullBuffs-ShortSingleTarget" value: { - dps: 7590.37105 - tps: 5962.85414 + dps: 7378.96003 + tps: 5796.4892 } } dps_results: { key: "TestFrostFire-Settings-Troll-P1FrostFire-FrostFireRotation-NoBuffs-LongMultiTarget" value: { - dps: 4911.60501 - tps: 5570.39361 + dps: 4903.30866 + tps: 5571.01283 } } dps_results: { key: "TestFrostFire-Settings-Troll-P1FrostFire-FrostFireRotation-NoBuffs-LongSingleTarget" value: { - dps: 2687.49138 - tps: 2144.73855 + dps: 2650.47412 + tps: 2114.43191 } } dps_results: { key: "TestFrostFire-Settings-Troll-P1FrostFire-FrostFireRotation-NoBuffs-ShortSingleTarget" value: { - dps: 3220.25844 - tps: 2475.90303 + dps: 3158.21612 + tps: 2426.14 } } dps_results: { diff --git a/sim/priest/mind_flay.go b/sim/priest/mind_flay.go index 8267970b43..89cfafdd5c 100644 --- a/sim/priest/mind_flay.go +++ b/sim/priest/mind_flay.go @@ -41,6 +41,9 @@ func (priest *Priest) newMindFlaySpell(numTicks int32) *core.Spell { ChannelTime: channelTime, }, ModifyCast: func(sim *core.Simulation, spell *core.Spell, cast *core.Cast) { + if spell.Unit.IsUsingAPL { + return + } // if our channel is longer than GCD it will have human latency to end it beause you can't queue the next spell. wait := priest.ApplyCastSpeed(channelTime) gcd := core.MaxDuration(core.GCDMin, priest.ApplyCastSpeed(core.GCDDefault)) diff --git a/sim/priest/shadow/TestShadow.results b/sim/priest/shadow/TestShadow.results index 128667567f..859eba204b 100644 --- a/sim/priest/shadow/TestShadow.results +++ b/sim/priest/shadow/TestShadow.results @@ -46,1158 +46,1158 @@ character_stats_results: { dps_results: { key: "TestShadow-AllItems-AbsolutionRegalia" value: { - dps: 5463.91051 - tps: 5331.86775 + dps: 5437.11928 + tps: 5305.49786 } } dps_results: { key: "TestShadow-AllItems-Althor'sAbacus-50359" value: { - dps: 7447.3593 - tps: 7381.99345 + dps: 7335.16133 + tps: 7287.86828 } } dps_results: { key: "TestShadow-AllItems-Althor'sAbacus-50366" value: { - dps: 7502.35041 - tps: 7435.61183 + dps: 7390.47799 + tps: 7339.76974 } } dps_results: { key: "TestShadow-AllItems-AustereEarthsiegeDiamond" value: { - dps: 7277.56895 - tps: 7216.08594 + dps: 7191.86217 + tps: 7146.75809 } } dps_results: { key: "TestShadow-AllItems-Bandit'sInsignia-40371" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-BaubleofTrueBlood-50354" value: { - dps: 7154.1443 - tps: 7092.85825 - hps: 88.26687 + dps: 7042.11481 + tps: 6998.58174 + hps: 87.65631 } } dps_results: { key: "TestShadow-AllItems-BaubleofTrueBlood-50726" value: { - dps: 7154.1443 - tps: 7092.85825 - hps: 88.26687 + dps: 7042.11481 + tps: 6998.58174 + hps: 87.65631 } } dps_results: { key: "TestShadow-AllItems-BeamingEarthsiegeDiamond" value: { - dps: 7368.05437 - tps: 7297.68503 + dps: 7277.21075 + tps: 7212.05182 } } dps_results: { key: "TestShadow-AllItems-BlessedRegaliaofUndeadCleansing" value: { - dps: 6251.47919 - tps: 6092.95118 + dps: 6170.8237 + tps: 6007.08774 } } dps_results: { key: "TestShadow-AllItems-BracingEarthsiegeDiamond" value: { - dps: 7318.30299 - tps: 7112.11814 + dps: 7232.03653 + tps: 7043.71894 } } dps_results: { key: "TestShadow-AllItems-ChaoticSkyflareDiamond" value: { - dps: 7492.19739 - tps: 7424.42019 + dps: 7381.11362 + tps: 7328.61165 } } dps_results: { key: "TestShadow-AllItems-CorpseTongueCoin-50349" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-CorpseTongueCoin-50352" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-CorrodedSkeletonKey-50356" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 hps: 64 } } dps_results: { key: "TestShadow-AllItems-CrimsonAcolyte'sRaiment" value: { - dps: 7062.26485 - tps: 6977.34222 + dps: 6980.52869 + tps: 6893.35653 } } dps_results: { key: "TestShadow-AllItems-CrimsonAcolyte'sRegalia" value: { - dps: 8161.18487 - tps: 8089.25125 + dps: 8076.34527 + tps: 8001.00571 } } dps_results: { key: "TestShadow-AllItems-DarkmoonCard:Berserker!-42989" value: { - dps: 7266.69299 - tps: 7202.79566 + dps: 7152.76072 + tps: 7121.81398 } } dps_results: { key: "TestShadow-AllItems-DarkmoonCard:Death-42990" value: { - dps: 7315.10336 - tps: 7260.22022 + dps: 7239.35802 + tps: 7193.88835 } } dps_results: { key: "TestShadow-AllItems-DarkmoonCard:Greatness-44255" value: { - dps: 7309.04939 - tps: 7224.77157 + dps: 7235.03535 + tps: 7163.91902 } } dps_results: { key: "TestShadow-AllItems-Death'sChoice-47464" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-DeathKnight'sAnguish-38212" value: { - dps: 7196.02428 - tps: 7133.87541 + dps: 7087.07635 + tps: 7047.54191 } } dps_results: { key: "TestShadow-AllItems-Deathbringer'sWill-50362" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-Deathbringer'sWill-50363" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-Defender'sCode-40257" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-DestructiveSkyflareDiamond" value: { - dps: 7320.88879 - tps: 7253.44307 + dps: 7220.15955 + tps: 7169.28701 } } dps_results: { key: "TestShadow-AllItems-DislodgedForeignObject-50348" value: { - dps: 7829.70847 - tps: 7748.85102 + dps: 7710.54667 + tps: 7632.24489 } } dps_results: { key: "TestShadow-AllItems-DislodgedForeignObject-50353" value: { - dps: 7774.171 - tps: 7670.03755 + dps: 7669.54151 + tps: 7566.34034 } } dps_results: { key: "TestShadow-AllItems-EffulgentSkyflareDiamond" value: { - dps: 7277.56895 - tps: 7216.08594 + dps: 7191.86217 + tps: 7146.75809 } } dps_results: { key: "TestShadow-AllItems-EmberSkyflareDiamond" value: { - dps: 7388.68212 - tps: 7314.19757 + dps: 7300.70143 + tps: 7235.15339 } } dps_results: { key: "TestShadow-AllItems-EnigmaticSkyflareDiamond" value: { - dps: 7319.23435 - tps: 7251.78863 + dps: 7208.89347 + tps: 7158.99824 } } dps_results: { key: "TestShadow-AllItems-EnigmaticStarflareDiamond" value: { - dps: 7300.94839 - tps: 7239.47927 + dps: 7206.08858 + tps: 7155.40298 } } dps_results: { key: "TestShadow-AllItems-EphemeralSnowflake-50260" value: { - dps: 7282.88862 - tps: 7192.97129 + dps: 7256.03285 + tps: 7154.36137 } } dps_results: { key: "TestShadow-AllItems-EssenceofGossamer-37220" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-EternalEarthsiegeDiamond" value: { - dps: 7277.56895 - tps: 7216.08594 + dps: 7191.86217 + tps: 7146.75809 } } dps_results: { key: "TestShadow-AllItems-ExtractofNecromanticPower-40373" value: { - dps: 7306.65514 - tps: 7264.09212 + dps: 7223.99524 + tps: 7183.77146 } } dps_results: { key: "TestShadow-AllItems-EyeoftheBroodmother-45308" value: { - dps: 7490.55771 - tps: 7421.52526 + dps: 7365.15711 + tps: 7324.253 } } dps_results: { key: "TestShadow-AllItems-Figurine-SapphireOwl-42413" value: { - dps: 7238.76134 - tps: 7166.63651 + dps: 7164.63374 + tps: 7093.13824 } } dps_results: { key: "TestShadow-AllItems-ForethoughtTalisman-40258" value: { - dps: 7337.01549 - tps: 7272.7943 + dps: 7223.22385 + tps: 7177.39641 } } dps_results: { key: "TestShadow-AllItems-ForgeEmber-37660" value: { - dps: 7346.41711 - tps: 7281.79602 + dps: 7214.39529 + tps: 7176.25332 } } dps_results: { key: "TestShadow-AllItems-ForlornSkyflareDiamond" value: { - dps: 7318.30299 - tps: 7256.18662 + dps: 7232.03653 + tps: 7186.43785 } } dps_results: { key: "TestShadow-AllItems-ForlornStarflareDiamond" value: { - dps: 7310.15619 - tps: 7248.16648 + dps: 7224.00166 + tps: 7178.5019 } } dps_results: { key: "TestShadow-AllItems-FuryoftheFiveFlights-40431" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-FuturesightRune-38763" value: { - dps: 7350.38985 - tps: 7278.48608 + dps: 7243.00961 + tps: 7168.42378 } } dps_results: { key: "TestShadow-AllItems-GarbofFaith" value: { - dps: 6657.8581 - tps: 6536.4679 + dps: 6588.76801 + tps: 6484.49351 } } dps_results: { key: "TestShadow-AllItems-Gladiator'sInvestiture" value: { - dps: 6938.87889 - tps: 6841.2789 + dps: 6895.57112 + tps: 6798.92543 } } dps_results: { key: "TestShadow-AllItems-Gladiator'sRaiment" value: { - dps: 7144.2252 - tps: 7010.03803 + dps: 7080.23481 + tps: 6946.59731 } } dps_results: { key: "TestShadow-AllItems-GlowingTwilightScale-54573" value: { - dps: 7465.76398 - tps: 7400.10111 + dps: 7353.26887 + tps: 7305.73873 } } dps_results: { key: "TestShadow-AllItems-GlowingTwilightScale-54589" value: { - dps: 7544.72197 - tps: 7469.61935 + dps: 7415.45165 + tps: 7364.23207 } } dps_results: { key: "TestShadow-AllItems-GnomishLightningGenerator-41121" value: { - dps: 7278.29301 - tps: 7233.64612 + dps: 7178.18663 + tps: 7133.6013 } } dps_results: { key: "TestShadow-AllItems-Heartpierce-49982" value: { - dps: 7492.19739 - tps: 7424.42019 + dps: 7381.11362 + tps: 7328.61165 } } dps_results: { key: "TestShadow-AllItems-Heartpierce-50641" value: { - dps: 7492.19739 - tps: 7424.42019 + dps: 7381.11362 + tps: 7328.61165 } } dps_results: { key: "TestShadow-AllItems-ImpassiveSkyflareDiamond" value: { - dps: 7319.23435 - tps: 7251.78863 + dps: 7208.89347 + tps: 7158.99824 } } dps_results: { key: "TestShadow-AllItems-ImpassiveStarflareDiamond" value: { - dps: 7300.94839 - tps: 7239.47927 + dps: 7206.08858 + tps: 7155.40298 } } dps_results: { key: "TestShadow-AllItems-IncisorFragment-37723" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-InsightfulEarthsiegeDiamond" value: { - dps: 7382.09209 - tps: 7306.96825 + dps: 7310.12374 + tps: 7234.74334 } } dps_results: { key: "TestShadow-AllItems-InvigoratingEarthsiegeDiamond" value: { - dps: 7277.56895 - tps: 7216.08594 + dps: 7191.86217 + tps: 7146.75809 } } dps_results: { key: "TestShadow-AllItems-LastWord-50179" value: { - dps: 7492.19739 - tps: 7424.42019 + dps: 7381.11362 + tps: 7328.61165 } } dps_results: { key: "TestShadow-AllItems-LastWord-50708" value: { - dps: 7492.19739 - tps: 7424.42019 + dps: 7381.11362 + tps: 7328.61165 } } dps_results: { key: "TestShadow-AllItems-Lavanthor'sTalisman-37872" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-MajesticDragonFigurine-40430" value: { - dps: 7302.84235 - tps: 7223.55782 + dps: 7232.60175 + tps: 7155.53691 } } dps_results: { key: "TestShadow-AllItems-MeteoriteWhetstone-37390" value: { - dps: 7246.21412 - tps: 7176.90348 + dps: 7143.68235 + tps: 7099.35358 } } dps_results: { key: "TestShadow-AllItems-NevermeltingIceCrystal-50259" value: { - dps: 7543.54119 - tps: 7487.07689 + dps: 7431.47711 + tps: 7394.95447 } } dps_results: { key: "TestShadow-AllItems-Nibelung-49992" value: { - dps: 7492.19739 - tps: 7424.42019 + dps: 7381.11362 + tps: 7328.61165 } } dps_results: { key: "TestShadow-AllItems-Nibelung-50648" value: { - dps: 7492.19739 - tps: 7424.42019 + dps: 7381.11362 + tps: 7328.61165 } } dps_results: { key: "TestShadow-AllItems-OfferingofSacrifice-37638" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-PersistentEarthshatterDiamond" value: { - dps: 7277.56895 - tps: 7216.08594 + dps: 7191.86217 + tps: 7146.75809 } } dps_results: { key: "TestShadow-AllItems-PersistentEarthsiegeDiamond" value: { - dps: 7277.56895 - tps: 7216.08594 + dps: 7191.86217 + tps: 7146.75809 } } dps_results: { key: "TestShadow-AllItems-PetrifiedScarab-21685" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-PetrifiedTwilightScale-54571" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-PowerfulEarthshatterDiamond" value: { - dps: 7277.56895 - tps: 7216.08594 + dps: 7191.86217 + tps: 7146.75809 } } dps_results: { key: "TestShadow-AllItems-PowerfulEarthsiegeDiamond" value: { - dps: 7277.56895 - tps: 7216.08594 + dps: 7191.86217 + tps: 7146.75809 } } dps_results: { key: "TestShadow-AllItems-PurifiedShardoftheGods" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-RegaliaofFaith" value: { - dps: 6358.40864 - tps: 6269.57164 + dps: 6288.90913 + tps: 6205.47251 } } dps_results: { key: "TestShadow-AllItems-ReignoftheDead-47316" value: { - dps: 7574.41572 - tps: 7516.14862 + dps: 7485.07892 + tps: 7431.65794 } } dps_results: { key: "TestShadow-AllItems-ReignoftheDead-47477" value: { - dps: 7624.84892 - tps: 7566.12645 + dps: 7534.02479 + tps: 7480.17948 } } dps_results: { key: "TestShadow-AllItems-RelentlessEarthsiegeDiamond" value: { - dps: 7461.93138 - tps: 7397.16559 + dps: 7371.5022 + tps: 7307.2249 } } dps_results: { key: "TestShadow-AllItems-RevitalizingSkyflareDiamond" value: { - dps: 7337.87566 - tps: 7259.76362 + dps: 7238.67848 + tps: 7183.05711 } } dps_results: { key: "TestShadow-AllItems-RuneofRepulsion-40372" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-SanctificationGarb" value: { - dps: 7252.35117 - tps: 7128.97509 + dps: 7065.8714 + tps: 7025.5407 } } dps_results: { key: "TestShadow-AllItems-SanctificationRegalia" value: { - dps: 6767.50496 - tps: 6686.77289 + dps: 6733.34387 + tps: 6645.25359 } } dps_results: { key: "TestShadow-AllItems-SealofthePantheon-36993" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-ShinyShardoftheGods" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-Sindragosa'sFlawlessFang-50361" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-SliverofPureIce-50339" value: { - dps: 7474.92293 - tps: 7410.67907 + dps: 7399.32084 + tps: 7335.07108 } } dps_results: { key: "TestShadow-AllItems-SliverofPureIce-50346" value: { - dps: 7516.75708 - tps: 7451.73232 + dps: 7431.48913 + tps: 7369.47963 } } dps_results: { key: "TestShadow-AllItems-SoulPreserver-37111" value: { - dps: 7276.76084 - tps: 7213.51182 + dps: 7163.96283 + tps: 7118.91129 } } dps_results: { key: "TestShadow-AllItems-SouloftheDead-40382" value: { - dps: 7337.23753 - tps: 7262.29258 + dps: 7234.34936 + tps: 7166.40469 } } dps_results: { key: "TestShadow-AllItems-SparkofLife-37657" value: { - dps: 7347.51111 - tps: 7271.29005 + dps: 7250.5521 + tps: 7173.97163 } } dps_results: { key: "TestShadow-AllItems-SphereofRedDragon'sBlood-37166" value: { - dps: 7172.98915 - tps: 7110.74386 + dps: 7052.12465 + tps: 7009.20662 } } dps_results: { key: "TestShadow-AllItems-SwiftSkyflareDiamond" value: { - dps: 7277.56895 - tps: 7216.08594 + dps: 7191.86217 + tps: 7146.75809 } } dps_results: { key: "TestShadow-AllItems-SwiftStarflareDiamond" value: { - dps: 7277.56895 - tps: 7216.08594 + dps: 7191.86217 + tps: 7146.75809 } } dps_results: { key: "TestShadow-AllItems-SwiftWindfireDiamond" value: { - dps: 7277.56895 - tps: 7216.08594 + dps: 7191.86217 + tps: 7146.75809 } } dps_results: { key: "TestShadow-AllItems-TalismanofTrollDivinity-37734" value: { - dps: 7280.73488 - tps: 7205.27986 + dps: 7184.85972 + tps: 7114.49272 } } dps_results: { key: "TestShadow-AllItems-TearsoftheVanquished-47215" value: { - dps: 7249.38728 - tps: 7176.7348 + dps: 7176.87659 + tps: 7103.33763 } } dps_results: { key: "TestShadow-AllItems-TheGeneral'sHeart-45507" value: { - dps: 7151.23032 - tps: 7090.00665 + dps: 7041.21314 + tps: 6997.77808 } } dps_results: { key: "TestShadow-AllItems-ThunderingSkyflareDiamond" value: { - dps: 7277.56895 - tps: 7216.08594 + dps: 7191.86217 + tps: 7146.75809 } } dps_results: { key: "TestShadow-AllItems-TinyAbominationinaJar-50351" value: { - dps: 7172.98915 - tps: 7110.74386 + dps: 7052.12465 + tps: 7009.20662 } } dps_results: { key: "TestShadow-AllItems-TinyAbominationinaJar-50706" value: { - dps: 7172.98915 - tps: 7110.74386 + dps: 7052.12465 + tps: 7009.20662 } } dps_results: { key: "TestShadow-AllItems-TirelessSkyflareDiamond" value: { - dps: 7318.30299 - tps: 7256.18662 + dps: 7232.03653 + tps: 7186.43785 } } dps_results: { key: "TestShadow-AllItems-TirelessStarflareDiamond" value: { - dps: 7310.15619 - tps: 7248.16648 + dps: 7224.00166 + tps: 7178.5019 } } dps_results: { key: "TestShadow-AllItems-TomeofArcanePhenomena-36972" value: { - dps: 7277.93606 - tps: 7244.71972 + dps: 7295.06776 + tps: 7231.89184 } } dps_results: { key: "TestShadow-AllItems-TrenchantEarthshatterDiamond" value: { - dps: 7310.15619 - tps: 7248.16648 + dps: 7224.00166 + tps: 7178.5019 } } dps_results: { key: "TestShadow-AllItems-TrenchantEarthsiegeDiamond" value: { - dps: 7318.30299 - tps: 7256.18662 + dps: 7232.03653 + tps: 7186.43785 } } dps_results: { key: "TestShadow-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 7714.69972 - tps: 7666.27193 + dps: 7619.72747 + tps: 7569.62682 } } dps_results: { key: "TestShadow-AllItems-VestmentsofAbsolution" value: { - dps: 5291.93386 - tps: 5154.45032 + dps: 5237.38966 + tps: 5098.18072 } } dps_results: { key: "TestShadow-AllItems-WingedTalisman-37844" value: { - dps: 7282.27346 - tps: 7213.89939 + dps: 7178.48013 + tps: 7130.82072 } } dps_results: { key: "TestShadow-AllItems-Zabra'sRaiment" value: { - dps: 6713.50411 - tps: 6633.33469 + dps: 6637.67071 + tps: 6556.88402 } } dps_results: { key: "TestShadow-AllItems-Zabra'sRegalia" value: { - dps: 7113.32682 - tps: 7034.318 + dps: 7038.3981 + tps: 6960.88663 } } dps_results: { key: "TestShadow-Average-Default" value: { - dps: 7499.39786 - tps: 7448.12043 + dps: 7430.35258 + tps: 7374.24596 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Basic-FullBuffs-LongMultiTarget" value: { - dps: 7444.40013 - tps: 8363.59465 + dps: 7406.7255 + tps: 8149.81173 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Basic-FullBuffs-LongSingleTarget" value: { - dps: 7444.40013 - tps: 7398.55089 + dps: 7406.7255 + tps: 7329.0255 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Basic-FullBuffs-ShortSingleTarget" value: { - dps: 8148.03635 - tps: 8227.14861 + dps: 8016.49117 + tps: 8095.24933 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Basic-NoBuffs-LongMultiTarget" value: { - dps: 3838.96599 - tps: 4765.57221 + dps: 3827.70514 + tps: 4696.59221 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Basic-NoBuffs-LongSingleTarget" value: { - dps: 3838.96599 - tps: 3767.77783 + dps: 3827.70514 + tps: 3752.067 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Basic-NoBuffs-ShortSingleTarget" value: { - dps: 3943.83239 - tps: 3914.12272 + dps: 3873.63106 + tps: 3862.8793 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Clipping-FullBuffs-LongMultiTarget" value: { - dps: 6932.91453 - tps: 7914.71383 + dps: 6987.56679 + tps: 7910.35766 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Clipping-FullBuffs-LongSingleTarget" value: { - dps: 6932.91453 - tps: 6898.29806 + dps: 6987.56679 + tps: 6933.31474 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Clipping-FullBuffs-ShortSingleTarget" value: { - dps: 7752.42093 - tps: 7831.53319 + dps: 7768.68484 + tps: 7847.73271 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Clipping-NoBuffs-LongMultiTarget" value: { - dps: 3573.24184 - tps: 4510.14179 + dps: 3631.82627 + tps: 4589.33439 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Clipping-NoBuffs-LongSingleTarget" value: { - dps: 3573.24184 - tps: 3500.3189 + dps: 3631.82627 + tps: 3560.60954 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Clipping-NoBuffs-ShortSingleTarget" value: { - dps: 3816.3108 - tps: 3741.50616 + dps: 3962.56033 + tps: 3783.57323 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Ideal-FullBuffs-LongMultiTarget" value: { - dps: 7471.57943 - tps: 8383.25003 + dps: 7381.54421 + tps: 8314.04601 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Ideal-FullBuffs-LongSingleTarget" value: { - dps: 7471.57943 - tps: 7413.73925 + dps: 7381.54421 + tps: 7332.03073 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Ideal-FullBuffs-ShortSingleTarget" value: { - dps: 8273.44935 - tps: 8340.32063 + dps: 8191.88992 + tps: 8271.32409 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Ideal-NoBuffs-LongMultiTarget" value: { - dps: 3708.07871 - tps: 4666.19925 + dps: 3757.53604 + tps: 4705.22117 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Ideal-NoBuffs-LongSingleTarget" value: { - dps: 3708.07871 - tps: 3637.47439 + dps: 3757.53604 + tps: 3686.80648 } } dps_results: { key: "TestShadow-Settings-Draenei-P1-Ideal-NoBuffs-ShortSingleTarget" value: { - dps: 4336.28326 - tps: 4106.83281 + dps: 4242.1543 + tps: 4024.48132 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Basic-FullBuffs-LongMultiTarget" value: { - dps: 7440.66879 - tps: 8345.66498 + dps: 7397.74555 + tps: 8137.92826 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Basic-FullBuffs-LongSingleTarget" value: { - dps: 7440.66879 - tps: 7393.52371 + dps: 7397.74555 + tps: 7320.10053 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Basic-FullBuffs-ShortSingleTarget" value: { - dps: 8139.66119 - tps: 8218.77345 + dps: 8016.64498 + tps: 8095.43532 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Basic-NoBuffs-LongMultiTarget" value: { - dps: 3836.97148 - tps: 4760.37801 + dps: 3823.98997 + tps: 4705.46966 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Basic-NoBuffs-LongSingleTarget" value: { - dps: 3836.97148 - tps: 3766.02035 + dps: 3823.98997 + tps: 3748.91593 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Basic-NoBuffs-ShortSingleTarget" value: { - dps: 3933.83302 - tps: 3905.81382 + dps: 3864.81908 + tps: 3855.28788 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Clipping-FullBuffs-LongMultiTarget" value: { - dps: 6925.75562 - tps: 7913.13885 + dps: 6988.54037 + tps: 7889.95109 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Clipping-FullBuffs-LongSingleTarget" value: { - dps: 6925.75562 - tps: 6891.6079 + dps: 6988.54037 + tps: 6926.04976 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Clipping-FullBuffs-ShortSingleTarget" value: { - dps: 7742.06858 - tps: 7821.14865 + dps: 7764.84329 + tps: 7843.89116 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Clipping-NoBuffs-LongMultiTarget" value: { - dps: 3568.59247 - tps: 4495.8822 + dps: 3622.8236 + tps: 4595.8928 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Clipping-NoBuffs-LongSingleTarget" value: { - dps: 3568.59247 - tps: 3494.65111 + dps: 3622.8236 + tps: 3553.42107 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Clipping-NoBuffs-ShortSingleTarget" value: { - dps: 3810.57252 - tps: 3737.28767 + dps: 3954.18057 + tps: 3776.61089 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Ideal-FullBuffs-LongMultiTarget" value: { - dps: 7489.85686 - tps: 8392.27553 + dps: 7375.53443 + tps: 8303.38858 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Ideal-FullBuffs-LongSingleTarget" value: { - dps: 7489.85686 - tps: 7422.1012 + dps: 7375.53443 + tps: 7322.4474 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Ideal-FullBuffs-ShortSingleTarget" value: { - dps: 8264.11287 - tps: 8330.95196 + dps: 8180.8026 + tps: 8260.23678 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Ideal-NoBuffs-LongMultiTarget" value: { - dps: 3724.99904 - tps: 4697.55919 + dps: 3712.698 + tps: 4630.37909 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Ideal-NoBuffs-LongSingleTarget" value: { - dps: 3724.99904 - tps: 3655.08746 + dps: 3712.698 + tps: 3639.45816 } } dps_results: { key: "TestShadow-Settings-NightElf-P1-Ideal-NoBuffs-ShortSingleTarget" value: { - dps: 4335.1819 - tps: 4106.1694 + dps: 4242.30193 + tps: 4024.59798 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Basic-FullBuffs-LongMultiTarget" value: { - dps: 7439.61075 - tps: 8354.11251 + dps: 7402.11289 + tps: 8141.05434 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Basic-FullBuffs-LongSingleTarget" value: { - dps: 7439.61075 - tps: 7397.11516 + dps: 7402.11289 + tps: 7324.33035 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Basic-FullBuffs-ShortSingleTarget" value: { - dps: 8144.32438 - tps: 8223.37064 + dps: 8021.23604 + tps: 8099.96039 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Basic-NoBuffs-LongMultiTarget" value: { - dps: 3837.11737 - tps: 4751.55613 + dps: 3835.20609 + tps: 4696.70819 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Basic-NoBuffs-LongSingleTarget" value: { - dps: 3837.11737 - tps: 3765.70972 + dps: 3835.20609 + tps: 3758.89606 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Basic-NoBuffs-ShortSingleTarget" value: { - dps: 3936.16456 - tps: 3907.9176 + dps: 3867.08914 + tps: 3857.35329 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Clipping-FullBuffs-LongMultiTarget" value: { - dps: 6928.27417 - tps: 7914.12536 + dps: 6994.73157 + tps: 7886.99304 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Clipping-FullBuffs-LongSingleTarget" value: { - dps: 6928.27417 - tps: 6894.02483 + dps: 6994.73157 + tps: 6932.2259 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Clipping-FullBuffs-ShortSingleTarget" value: { - dps: 7746.45585 - tps: 7825.46992 + dps: 7769.2298 + tps: 7848.21168 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Clipping-NoBuffs-LongMultiTarget" value: { - dps: 3567.81082 - tps: 4493.33373 + dps: 3619.07872 + tps: 4590.09967 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Clipping-NoBuffs-LongSingleTarget" value: { - dps: 3567.81082 - tps: 3493.76324 + dps: 3619.07872 + tps: 3549.35693 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Clipping-NoBuffs-ShortSingleTarget" value: { - dps: 3812.77645 - tps: 3739.22399 + dps: 3956.48681 + tps: 3778.60276 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Ideal-FullBuffs-LongMultiTarget" value: { - dps: 7492.19739 - tps: 8395.07093 + dps: 7381.11362 + tps: 8320.09651 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Ideal-FullBuffs-LongSingleTarget" value: { - dps: 7492.19739 - tps: 7424.42019 + dps: 7381.11362 + tps: 7328.61165 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Ideal-FullBuffs-ShortSingleTarget" value: { - dps: 8268.83021 - tps: 8335.60331 + dps: 8185.47487 + tps: 8264.84305 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Ideal-NoBuffs-LongMultiTarget" value: { - dps: 3741.61183 - tps: 4712.95187 + dps: 3729.55626 + tps: 4660.00521 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Ideal-NoBuffs-LongSingleTarget" value: { - dps: 3741.61183 - tps: 3672.20913 + dps: 3729.55626 + tps: 3657.00369 } } dps_results: { key: "TestShadow-Settings-Undead-P1-Ideal-NoBuffs-ShortSingleTarget" value: { - dps: 4337.66951 - tps: 4108.30977 + dps: 4244.77146 + tps: 4026.71378 } } dps_results: { key: "TestShadow-SwitchInFrontOfTarget-Default" value: { - dps: 7478.45948 - tps: 7424.42019 + dps: 7371.08738 + tps: 7328.61165 } } diff --git a/sim/priest/shadow/rotation.go b/sim/priest/shadow/rotation.go index 138905f4fc..f8724d32ec 100644 --- a/sim/priest/shadow/rotation.go +++ b/sim/priest/shadow/rotation.go @@ -1158,7 +1158,7 @@ func (spriest *ShadowPriest) ClippingMindflayRotation(sim *core.Simulation, gcd } // How many ticks we have time for. - numTicks := int((nextCD - time.Duration(spriest.rotation.Latency)) / tickLength) + numTicks := int((nextCD - time.Duration(spriest.Latency)) / tickLength) if numTicks == 1 { return 1 } else if numTicks == 2 || numTicks == 4 { diff --git a/sim/priest/shadow/shadow_priest.go b/sim/priest/shadow/shadow_priest.go index 85af224887..853d66ed81 100644 --- a/sim/priest/shadow/shadow_priest.go +++ b/sim/priest/shadow/shadow_priest.go @@ -1,9 +1,9 @@ package shadow import ( - "github.com/wowsims/wotlk/sim/common/wotlk" "time" + "github.com/wowsims/wotlk/sim/common/wotlk" "github.com/wowsims/wotlk/sim/core" "github.com/wowsims/wotlk/sim/core/proto" "github.com/wowsims/wotlk/sim/priest" @@ -35,7 +35,7 @@ func NewShadowPriest(character core.Character, options *proto.Player) *ShadowPri } basePriest := priest.New(character, selfBuffs, options.TalentsString) - basePriest.Latency = shadowOptions.Options.Latency + basePriest.Latency = float64(basePriest.ChannelClipDelay.Milliseconds()) spriest := &ShadowPriest{ Priest: basePriest, rotation: shadowOptions.Rotation, diff --git a/sim/priest/shadow/shadow_priest_test.go b/sim/priest/shadow/shadow_priest_test.go index 4dbe335202..afb5ce93e7 100644 --- a/sim/priest/shadow/shadow_priest_test.go +++ b/sim/priest/shadow/shadow_priest_test.go @@ -70,7 +70,6 @@ var PlayerOptionsBasic = &proto.Player_ShadowPriest{ }, Rotation: &proto.ShadowPriest_Rotation{ RotationType: proto.ShadowPriest_Rotation_Basic, - Latency: 50, }, }, } @@ -85,7 +84,6 @@ var PlayerOptionsClipping = &proto.Player_ShadowPriest{ Rotation: &proto.ShadowPriest_Rotation{ RotationType: proto.ShadowPriest_Rotation_Clipping, PrecastType: 1, - Latency: 50, }, }, } @@ -100,7 +98,6 @@ var PlayerOptionsIdeal = &proto.Player_ShadowPriest{ Rotation: &proto.ShadowPriest_Rotation{ RotationType: proto.ShadowPriest_Rotation_Ideal, PrecastType: 1, - Latency: 50, }, }, } diff --git a/sim/rogue/TestAssassination.results b/sim/rogue/TestAssassination.results index a4e93e1fef..075f598364 100644 --- a/sim/rogue/TestAssassination.results +++ b/sim/rogue/TestAssassination.results @@ -13,7 +13,7 @@ character_stats_results: { final_stats: 221 final_stats: 0 final_stats: 5636.84 - final_stats: 469.94995 + final_stats: 469.94994 final_stats: 2072.9756 final_stats: 221 final_stats: 94 diff --git a/sim/rogue/TestCombat.results b/sim/rogue/TestCombat.results index 371ad19040..ed7361cea4 100644 --- a/sim/rogue/TestCombat.results +++ b/sim/rogue/TestCombat.results @@ -13,7 +13,7 @@ character_stats_results: { final_stats: 221 final_stats: 0 final_stats: 5862.3136 - final_stats: 469.94995 + final_stats: 469.94994 final_stats: 2164.78757 final_stats: 221 final_stats: 94 diff --git a/sim/warlock/TestAffliction.results b/sim/warlock/TestAffliction.results index 3ad53f437e..1d8c695cf3 100644 --- a/sim/warlock/TestAffliction.results +++ b/sim/warlock/TestAffliction.results @@ -742,85 +742,85 @@ dps_results: { dps_results: { key: "TestAffliction-Settings-Orc-P3-AffItemSwap-FullBuffs-LongMultiTarget" value: { - dps: 31205.80815 - tps: 36222.06031 + dps: 31006.40413 + tps: 36040.22631 } } dps_results: { key: "TestAffliction-Settings-Orc-P3-AffItemSwap-FullBuffs-LongSingleTarget" value: { - dps: 11910.47045 - tps: 10766.8304 + dps: 11897.51885 + tps: 10754.55652 } } dps_results: { key: "TestAffliction-Settings-Orc-P3-AffItemSwap-FullBuffs-ShortSingleTarget" value: { - dps: 12914.71668 - tps: 11737.35881 + dps: 12905.73028 + tps: 11724.54175 } } dps_results: { key: "TestAffliction-Settings-Orc-P3-AffItemSwap-NoBuffs-LongMultiTarget" value: { - dps: 18699.22493 - tps: 24051.16762 + dps: 18696.91539 + tps: 24054.02815 } } dps_results: { key: "TestAffliction-Settings-Orc-P3-AffItemSwap-NoBuffs-LongSingleTarget" value: { - dps: 6958.40597 - tps: 6542.63816 + dps: 6935.65437 + tps: 6522.92244 } } dps_results: { key: "TestAffliction-Settings-Orc-P3-AffItemSwap-NoBuffs-ShortSingleTarget" value: { - dps: 6792.73259 - tps: 6289.8065 + dps: 6872.74986 + tps: 6373.79672 } } dps_results: { key: "TestAffliction-Settings-Orc-P3-Affliction Warlock-FullBuffs-LongMultiTarget" value: { - dps: 33907.96516 - tps: 39023.35401 + dps: 33680.99513 + tps: 38781.09777 } } dps_results: { key: "TestAffliction-Settings-Orc-P3-Affliction Warlock-FullBuffs-LongSingleTarget" value: { - dps: 11853.41145 - tps: 10710.53898 + dps: 11819.32135 + tps: 10672.3726 } } dps_results: { key: "TestAffliction-Settings-Orc-P3-Affliction Warlock-FullBuffs-ShortSingleTarget" value: { - dps: 12905.37446 - tps: 11736.47518 + dps: 13019.89825 + tps: 11849.92968 } } dps_results: { key: "TestAffliction-Settings-Orc-P3-Affliction Warlock-NoBuffs-LongMultiTarget" value: { - dps: 20525.23652 - tps: 25957.6116 + dps: 20481.64778 + tps: 25913.33266 } } dps_results: { key: "TestAffliction-Settings-Orc-P3-Affliction Warlock-NoBuffs-LongSingleTarget" value: { - dps: 6909.25619 - tps: 6494.50428 + dps: 6913.29467 + tps: 6498.7916 } } dps_results: { key: "TestAffliction-Settings-Orc-P3-Affliction Warlock-NoBuffs-ShortSingleTarget" value: { - dps: 6899.61246 - tps: 6395.63495 + dps: 6857.04872 + tps: 6354.9422 } } dps_results: { diff --git a/sim/warlock/TestDemonology.results b/sim/warlock/TestDemonology.results index 6926a1e101..49e0df210c 100644 --- a/sim/warlock/TestDemonology.results +++ b/sim/warlock/TestDemonology.results @@ -742,43 +742,43 @@ dps_results: { dps_results: { key: "TestDemonology-Settings-Orc-P2-Demonology Warlock-FullBuffs-LongMultiTarget" value: { - dps: 36637.10136 - tps: 40921.80148 + dps: 36487.73236 + tps: 40760.9842 } } dps_results: { key: "TestDemonology-Settings-Orc-P2-Demonology Warlock-FullBuffs-LongSingleTarget" value: { - dps: 11050.06235 - tps: 9301.03775 + dps: 11028.43587 + tps: 9280.41618 } } dps_results: { key: "TestDemonology-Settings-Orc-P2-Demonology Warlock-FullBuffs-ShortSingleTarget" value: { - dps: 12820.79265 - tps: 10844.81235 + dps: 12542.18456 + tps: 10566.58221 } } dps_results: { key: "TestDemonology-Settings-Orc-P2-Demonology Warlock-NoBuffs-LongMultiTarget" value: { - dps: 22643.38398 - tps: 27948.38916 + dps: 22450.6182 + tps: 27732.27995 } } dps_results: { key: "TestDemonology-Settings-Orc-P2-Demonology Warlock-NoBuffs-LongSingleTarget" value: { - dps: 6431.99523 - tps: 5826.53889 + dps: 6409.62669 + tps: 5803.04161 } } dps_results: { key: "TestDemonology-Settings-Orc-P2-Demonology Warlock-NoBuffs-ShortSingleTarget" value: { - dps: 6849.2602 - tps: 6119.5422 + dps: 6708.60048 + tps: 5978.76668 } } dps_results: { diff --git a/sim/warlock/TestDestruction.results b/sim/warlock/TestDestruction.results index 8b6afb133f..b8ccf8f7b2 100644 --- a/sim/warlock/TestDestruction.results +++ b/sim/warlock/TestDestruction.results @@ -735,43 +735,43 @@ dps_results: { dps_results: { key: "TestDestruction-Settings-Orc-P2-Destruction Warlock-FullBuffs-LongMultiTarget" value: { - dps: 25449.94233 - tps: 30009.46242 + dps: 25400.01436 + tps: 29973.35511 } } dps_results: { key: "TestDestruction-Settings-Orc-P2-Destruction Warlock-FullBuffs-LongSingleTarget" value: { - dps: 11503.98348 - tps: 9431.31204 + dps: 11462.71624 + tps: 9386.4201 } } dps_results: { key: "TestDestruction-Settings-Orc-P2-Destruction Warlock-FullBuffs-ShortSingleTarget" value: { - dps: 12998.83521 - tps: 10647.67651 + dps: 13023.40831 + tps: 10661.00442 } } dps_results: { key: "TestDestruction-Settings-Orc-P2-Destruction Warlock-NoBuffs-LongMultiTarget" value: { - dps: 15124.34222 - tps: 20263.7896 + dps: 14979.46532 + tps: 20117.12009 } } dps_results: { key: "TestDestruction-Settings-Orc-P2-Destruction Warlock-NoBuffs-LongSingleTarget" value: { - dps: 6485.93814 - tps: 5489.27478 + dps: 6438.58318 + tps: 5449.1427 } } dps_results: { key: "TestDestruction-Settings-Orc-P2-Destruction Warlock-NoBuffs-ShortSingleTarget" value: { - dps: 6654.86586 - tps: 5615.64448 + dps: 6521.27281 + tps: 5493.45637 } } dps_results: { diff --git a/ui/core/components/other_inputs.ts b/ui/core/components/other_inputs.ts index cc3e53d508..4dd2ea1ac8 100644 --- a/ui/core/components/other_inputs.ts +++ b/ui/core/components/other_inputs.ts @@ -5,6 +5,7 @@ import { Player } from '../player.js'; import { Sim } from '../sim.js'; import { EventID, TypedEvent } from '../typed_event.js'; import { emptyUnitReference } from '../proto_utils/utils.js'; +import { APLRotation_Type } from '../proto/apl.js'; export function makeShow1hWeaponsSelector(parent: HTMLElement, sim: Sim): BooleanPicker { return new BooleanPicker(parent, sim, { @@ -86,12 +87,22 @@ export const ReactionTime = { type: 'number' as const, label: 'Reaction Time', labelTooltip: 'Reaction time of the player, in milliseconds. Used with certain APL values (such as \'Aura Is Active With Reaction Time\').', - changedEvent: (player: Player) => TypedEvent.onAny([player.reactionTimeChangeEmitter, player.rotationChangeEmitter]), + changedEvent: (player: Player) => player.miscOptionsChangeEmitter, getValue: (player: Player) => player.getReactionTime(), setValue: (eventID: EventID, player: Player, newValue: number) => { player.setReactionTime(eventID, newValue); }, - enableWhen: (player: Player) => player.aplRotation.enabled, +}; + +export const ChannelClipDelay = { + type: 'number' as const, + label: 'Channel Clip Delay', + labelTooltip: 'Clip delay following channeled spells, in milliseconds. This delay occurs following any full or partial channel ending after the GCD becomes available, due to the player not being able to queue the next spell.', + changedEvent: (player: Player) => player.miscOptionsChangeEmitter, + getValue: (player: Player) => player.getChannelClipDelay(), + setValue: (eventID: EventID, player: Player, newValue: number) => { + player.setChannelClipDelay(eventID, newValue); + }, }; export const InFrontOfTarget = { diff --git a/ui/core/player.ts b/ui/core/player.ts index 8e5ed6d59d..666c6e0050 100644 --- a/ui/core/player.ts +++ b/ui/core/player.ts @@ -215,6 +215,7 @@ export class Player { private specOptions: SpecOptions; private cooldowns: Cooldowns = Cooldowns.create(); private reactionTime: number = 0; + private channelClipDelay: number = 0; private inFrontOfTarget: boolean = false; private distanceFromTarget: number = 0; private healingModel: HealingModel = HealingModel.create(); @@ -249,11 +250,11 @@ export class Player { readonly glyphsChangeEmitter = new TypedEvent('PlayerGlyphs'); readonly specOptionsChangeEmitter = new TypedEvent('PlayerSpecOptions'); readonly cooldownsChangeEmitter = new TypedEvent('PlayerCooldowns'); - readonly reactionTimeChangeEmitter = new TypedEvent('PlayerReactionTime'); readonly inFrontOfTargetChangeEmitter = new TypedEvent('PlayerInFrontOfTarget'); readonly distanceFromTargetChangeEmitter = new TypedEvent('PlayerDistanceFromTarget'); readonly healingModelChangeEmitter = new TypedEvent('PlayerHealingModel'); readonly epWeightsChangeEmitter = new TypedEvent('PlayerEpWeights'); + readonly miscOptionsChangeEmitter = new TypedEvent('PlayerMiscOptions'); readonly currentStatsEmitter = new TypedEvent('PlayerCurrentStats'); readonly epRatiosChangeEmitter = new TypedEvent('PlayerEpRatios'); @@ -290,7 +291,7 @@ export class Player { this.glyphsChangeEmitter, this.specOptionsChangeEmitter, this.cooldownsChangeEmitter, - this.reactionTimeChangeEmitter, + this.miscOptionsChangeEmitter, this.inFrontOfTargetChangeEmitter, this.distanceFromTargetChangeEmitter, this.healingModelChangeEmitter, @@ -822,7 +823,19 @@ export class Player { return; this.reactionTime = newReactionTime; - this.reactionTimeChangeEmitter.emit(eventID); + this.miscOptionsChangeEmitter.emit(eventID); + } + + getChannelClipDelay(): number { + return this.reactionTime; + } + + setChannelClipDelay(eventID: EventID, newChannelClipDelay: number) { + if (newChannelClipDelay == this.reactionTime) + return; + + this.channelClipDelay = newChannelClipDelay; + this.miscOptionsChangeEmitter.emit(eventID); } getInFrontOfTarget(): boolean { @@ -1229,6 +1242,7 @@ export class Player { profession1: this.getProfession1(), profession2: this.getProfession2(), reactionTimeMs: this.getReactionTime(), + channelClipDelayMs: this.getChannelClipDelay(), inFrontOfTarget: this.getInFrontOfTarget(), distanceFromTarget: this.getDistanceFromTarget(), healingModel: this.getHealingModel(), @@ -1288,6 +1302,7 @@ export class Player { this.setProfession1(eventID, proto.profession1); this.setProfession2(eventID, proto.profession2); this.setReactionTime(eventID, proto.reactionTimeMs); + this.setChannelClipDelay(eventID, proto.channelClipDelayMs); this.setInFrontOfTarget(eventID, proto.inFrontOfTarget); this.setDistanceFromTarget(eventID, proto.distanceFromTarget); this.setHealingModel(eventID, proto.healingModel || HealingModel.create()); @@ -1326,6 +1341,13 @@ export class Player { } } + if (this.spec == Spec.SpecShadowPriest) { + const options = this.getSpecOptions() as SpecOptions; + this.setChannelClipDelay(eventID, options.latency); + options.latency = 0; + this.setSpecOptions(eventID, options as SpecOptions) + } + if ([Spec.SpecEnhancementShaman, Spec.SpecRestorationShaman, Spec.SpecElementalShaman].includes(this.spec)) { const rot = this.getRotation() as SpecRotation; if (rot.totems) { @@ -1348,6 +1370,7 @@ export class Player { applySharedDefaults(eventID: EventID) { TypedEvent.freezeAllAndDo(() => { this.setReactionTime(eventID, 200); + this.setChannelClipDelay(eventID, this.spec == Spec.SpecShadowPriest ? 100 : 0); this.setInFrontOfTarget(eventID, isTankSpec(this.spec)); this.setHealingModel(eventID, HealingModel.create({ burstWindow: isTankSpec(this.spec) ? 6 : 0, diff --git a/ui/shadow_priest/inputs.ts b/ui/shadow_priest/inputs.ts index dedc14bd4e..563819ecef 100644 --- a/ui/shadow_priest/inputs.ts +++ b/ui/shadow_priest/inputs.ts @@ -37,12 +37,6 @@ export const ShadowfiendInput = InputHelpers.makeSpecOptionsBooleanIconInput({ - fieldName: 'latency', - label: 'Channeling Latency (ms)', - labelTooltip: 'Latency after a channel that lasts longer than GCD. 0 to disable. Has a minimum value of 100ms if set.', -}); - export const ShadowPriestRotationConfig = { inputs: [ InputHelpers.makeRotationEnumInput({ diff --git a/ui/shadow_priest/sim.ts b/ui/shadow_priest/sim.ts index 5e0fe36e5a..24db349ee7 100644 --- a/ui/shadow_priest/sim.ts +++ b/ui/shadow_priest/sim.ts @@ -126,7 +126,7 @@ export class ShadowPriestSimUI extends IndividualSimUI { otherInputs: { inputs: [ OtherInputs.TankAssignment, - ShadowPriestInputs.MindFlayLatencyInput, + OtherInputs.ChannelClipDelay, ], }, encounterPicker: { From 3c877a8eee694b09bc041ef9c64a2a795a59a173 Mon Sep 17 00:00:00 2001 From: James Tanner Date: Tue, 19 Sep 2023 22:35:00 -0700 Subject: [PATCH 2/3] Properly deprecate spriest latency option --- ui/core/player.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ui/core/player.ts b/ui/core/player.ts index 666c6e0050..3b326d39e9 100644 --- a/ui/core/player.ts +++ b/ui/core/player.ts @@ -1343,9 +1343,11 @@ export class Player { if (this.spec == Spec.SpecShadowPriest) { const options = this.getSpecOptions() as SpecOptions; - this.setChannelClipDelay(eventID, options.latency); - options.latency = 0; - this.setSpecOptions(eventID, options as SpecOptions) + if (options.latency) { + this.setChannelClipDelay(eventID, options.latency); + options.latency = 0; + this.setSpecOptions(eventID, options as SpecOptions) + } } if ([Spec.SpecEnhancementShaman, Spec.SpecRestorationShaman, Spec.SpecElementalShaman].includes(this.spec)) { From 97613b6dad55d93fd17dc8a2f20513bce2d0d52f Mon Sep 17 00:00:00 2001 From: James Tanner Date: Tue, 19 Sep 2023 22:41:31 -0700 Subject: [PATCH 3/3] Include new option in saved settings --- proto/ui.proto | 1 + ui/core/components/individual_sim_ui/settings_tab.ts | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/proto/ui.proto b/proto/ui.proto index 16f3a07e44..1fb71be1c8 100644 --- a/proto/ui.proto +++ b/proto/ui.proto @@ -295,6 +295,7 @@ message SavedSettings { repeated Profession professions = 9; int32 reaction_time_ms = 10; + int32 channel_clip_delay_ms = 14; bool in_front_of_target = 11; double distance_from_target = 12; HealingModel healing_model = 13; diff --git a/ui/core/components/individual_sim_ui/settings_tab.ts b/ui/core/components/individual_sim_ui/settings_tab.ts index 8f54959642..8f75fe8414 100644 --- a/ui/core/components/individual_sim_ui/settings_tab.ts +++ b/ui/core/components/individual_sim_ui/settings_tab.ts @@ -395,6 +395,7 @@ export class SettingsTab extends SimTab { race: player.getRace(), professions: player.getProfessions(), reactionTimeMs: player.getReactionTime(), + channelClipDelayMs: player.getChannelClipDelay(), inFrontOfTarget: player.getInFrontOfTarget(), distanceFromTarget: player.getDistanceFromTarget(), healingModel: player.getHealingModel(), @@ -415,6 +416,7 @@ export class SettingsTab extends SimTab { simUI.player.setRace(eventID, newSettings.race); simUI.player.setProfessions(eventID, newSettings.professions); simUI.player.setReactionTime(eventID, newSettings.reactionTimeMs); + simUI.player.setChannelClipDelay(eventID, newSettings.channelClipDelayMs); simUI.player.setInFrontOfTarget(eventID, newSettings.inFrontOfTarget); simUI.player.setDistanceFromTarget(eventID, newSettings.distanceFromTarget); simUI.player.setHealingModel(eventID, newSettings.healingModel || HealingModel.create()); @@ -434,7 +436,7 @@ export class SettingsTab extends SimTab { this.simUI.player.consumesChangeEmitter, this.simUI.player.raceChangeEmitter, this.simUI.player.professionChangeEmitter, - this.simUI.player.reactionTimeChangeEmitter, + this.simUI.player.miscOptionsChangeEmitter, this.simUI.player.inFrontOfTargetChangeEmitter, this.simUI.player.distanceFromTargetChangeEmitter, this.simUI.player.healingModelChangeEmitter,