diff --git a/proto/deathknight.proto b/proto/deathknight.proto index 3bd4ad273a..0ed1b32c72 100644 --- a/proto/deathknight.proto +++ b/proto/deathknight.proto @@ -189,6 +189,12 @@ message Deathknight { Custom = 2; } FrostRotationType frost_rotation_type = 19; + + enum BloodOpener { + Standard = 0; + Experimental_1 = 1; + Experimental_2 = 2; + } enum CustomSpellOption { CustomNoSpell = 0; @@ -250,6 +256,7 @@ message Deathknight { Presence gargoyle_presence = 25; DrwDiseases drw_diseases = 26; + BloodOpener blood_opener = 27; } Rotation rotation = 1; diff --git a/sim/deathknight/deathknight.go b/sim/deathknight/deathknight.go index cf8fd2b151..58fb6bebc2 100644 --- a/sim/deathknight/deathknight.go +++ b/sim/deathknight/deathknight.go @@ -30,6 +30,7 @@ type DeathknightInputs struct { PrecastHornOfWinter bool PetUptime float64 DrwPestiApply bool + BloodOpener proto.Deathknight_Rotation_BloodOpener // Rotation Vars RefreshHornOfWinter bool diff --git a/sim/deathknight/dps/TestBlood.results b/sim/deathknight/dps/TestBlood.results index b8d7b681cd..1e0c2f571d 100644 --- a/sim/deathknight/dps/TestBlood.results +++ b/sim/deathknight/dps/TestBlood.results @@ -46,905 +46,905 @@ character_stats_results: { dps_results: { key: "TestBlood-AllItems-Althor'sAbacus-50359" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-Althor'sAbacus-50366" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-AustereEarthsiegeDiamond" value: { - dps: 6913.45153 - tps: 3547.15063 + dps: 6889.0272 + tps: 3527.17778 } } dps_results: { key: "TestBlood-AllItems-Bandit'sInsignia-40371" value: { - dps: 6793.03392 - tps: 3518.23431 + dps: 6783.40787 + tps: 3508.46847 } } dps_results: { key: "TestBlood-AllItems-BaubleofTrueBlood-50354" value: { - dps: 6633.09884 - tps: 8191.92268 + dps: 6606.7547 + tps: 8220.8207 } } dps_results: { key: "TestBlood-AllItems-BaubleofTrueBlood-50726" value: { - dps: 6633.09884 - tps: 8191.92268 + dps: 6606.7547 + tps: 8220.8207 } } dps_results: { key: "TestBlood-AllItems-BeamingEarthsiegeDiamond" value: { - dps: 6929.49272 - tps: 3555.86545 + dps: 6907.12129 + tps: 3537.08789 } } dps_results: { key: "TestBlood-AllItems-Beast-tamer'sShoulders-30892" value: { - dps: 6742.33173 - tps: 3459.79259 + dps: 6754.48303 + tps: 3460.65444 } } dps_results: { key: "TestBlood-AllItems-BlessedBattlegearofUndeadSlaying" value: { - dps: 5781.71313 - tps: 2964.18996 + dps: 5725.2133 + tps: 2926.36925 } } dps_results: { key: "TestBlood-AllItems-BlessedGarboftheUndeadSlayer" value: { - dps: 5667.87488 - tps: 2905.61089 + dps: 5708.57883 + tps: 2932.03514 } } dps_results: { key: "TestBlood-AllItems-BlessedRegaliaofUndeadCleansing" value: { - dps: 5459.23258 - tps: 2792.68748 + dps: 5436.10149 + tps: 2775.94014 } } dps_results: { key: "TestBlood-AllItems-BracingEarthsiegeDiamond" value: { - dps: 6908.68368 - tps: 3473.6728 + dps: 6884.27735 + tps: 3454.11308 } } dps_results: { key: "TestBlood-AllItems-ChaoticSkyflareDiamond" value: { - dps: 7048.05912 - tps: 3621.79201 + dps: 7024.90411 + tps: 3602.5417 } } dps_results: { key: "TestBlood-AllItems-CorpseTongueCoin-50349" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-CorpseTongueCoin-50352" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-CorrodedSkeletonKey-50356" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 hps: 42.66667 } } dps_results: { key: "TestBlood-AllItems-DarkmoonCard:Berserker!-42989" value: { - dps: 6745.13644 - tps: 3487.47237 + dps: 6721.16352 + tps: 3468.80861 } } dps_results: { key: "TestBlood-AllItems-DarkmoonCard:Death-42990" value: { - dps: 6791.20231 - tps: 3517.79417 + dps: 6746.28957 + tps: 3487.05376 } } dps_results: { key: "TestBlood-AllItems-DarkmoonCard:Greatness-44255" value: { - dps: 6873.02929 - tps: 3530.38774 + dps: 6848.12241 + tps: 3509.95234 } } dps_results: { key: "TestBlood-AllItems-DarkrunedBattlegear" value: { - dps: 6690.95299 - tps: 3444.0497 + dps: 6646.20516 + tps: 3416.26515 } } dps_results: { key: "TestBlood-AllItems-DarkrunedPlate" value: { - dps: 5803.53308 - tps: 2962.7389 + dps: 5824.80048 + tps: 2968.97727 } } dps_results: { key: "TestBlood-AllItems-DeadlyGladiator'sSigilofStrife-42620" value: { - dps: 6940.21718 - tps: 3560.04013 + dps: 6919.40511 + tps: 3541.24136 } } dps_results: { key: "TestBlood-AllItems-Death'sChoice-47464" value: { - dps: 7228.86062 - tps: 3706.23863 + dps: 7197.82394 + tps: 3683.74862 } } dps_results: { key: "TestBlood-AllItems-DeathKnight'sAnguish-38212" value: { - dps: 6720.25877 - tps: 3473.75382 + dps: 6691.37919 + tps: 3452.01583 } } dps_results: { key: "TestBlood-AllItems-Deathbringer'sWill-50362" value: { - dps: 7050.55727 - tps: 3655.45355 + dps: 7040.08358 + tps: 3648.94569 } } dps_results: { key: "TestBlood-AllItems-Deathbringer'sWill-50363" value: { - dps: 7120.84932 - tps: 3701.32591 + dps: 7111.85506 + tps: 3689.0017 } } dps_results: { key: "TestBlood-AllItems-Defender'sCode-40257" value: { - dps: 6648.44442 - tps: 3434.03498 + dps: 6622.04847 + tps: 3413.42342 } } dps_results: { key: "TestBlood-AllItems-DestructiveSkyflareDiamond" value: { - dps: 6934.06238 - tps: 3558.60725 + dps: 6911.04794 + tps: 3539.44388 } } dps_results: { key: "TestBlood-AllItems-DislodgedForeignObject-50348" value: { - dps: 6718.37544 - tps: 3468.85745 + dps: 6687.68974 + tps: 3441.97061 } } dps_results: { key: "TestBlood-AllItems-DislodgedForeignObject-50353" value: { - dps: 6720.46894 - tps: 3471.20042 + dps: 6725.3083 + tps: 3462.6999 } } dps_results: { key: "TestBlood-AllItems-EffulgentSkyflareDiamond" value: { - dps: 6908.68368 - tps: 3544.56408 + dps: 6884.27735 + tps: 3524.60518 } } dps_results: { key: "TestBlood-AllItems-EmberSkyflareDiamond" value: { - dps: 6908.68368 - tps: 3544.56408 + dps: 6884.27735 + tps: 3524.60518 } } dps_results: { key: "TestBlood-AllItems-EnigmaticSkyflareDiamond" value: { - dps: 6929.49272 - tps: 3555.86545 + dps: 6907.12129 + tps: 3537.08789 } } dps_results: { key: "TestBlood-AllItems-EnigmaticStarflareDiamond" value: { - dps: 6923.36879 - tps: 3552.44483 + dps: 6899.50579 + tps: 3532.62087 } } dps_results: { key: "TestBlood-AllItems-EphemeralSnowflake-50260" value: { - dps: 6607.71311 - tps: 3396.74572 + dps: 6628.24582 + tps: 3403.86784 } } dps_results: { key: "TestBlood-AllItems-EssenceofGossamer-37220" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-EternalEarthsiegeDiamond" value: { - dps: 6908.68368 - tps: 3544.56408 + dps: 6884.27735 + tps: 3524.60518 } } dps_results: { key: "TestBlood-AllItems-ExtractofNecromanticPower-40373" value: { - dps: 6771.19817 - tps: 3501.99892 + dps: 6777.48963 + tps: 3503.97521 } } dps_results: { key: "TestBlood-AllItems-EyeoftheBroodmother-45308" value: { - dps: 6737.58102 - tps: 3483.45646 + dps: 6714.77465 + tps: 3465.35724 } } dps_results: { key: "TestBlood-AllItems-Figurine-SapphireOwl-42413" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-ForethoughtTalisman-40258" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-ForgeEmber-37660" value: { - dps: 6722.4518 - tps: 3476.09698 + dps: 6693.23234 + tps: 3453.49272 } } dps_results: { key: "TestBlood-AllItems-ForlornSkyflareDiamond" value: { - dps: 6908.68368 - tps: 3544.56408 + dps: 6884.27735 + tps: 3524.60518 } } dps_results: { key: "TestBlood-AllItems-ForlornStarflareDiamond" value: { - dps: 6908.68368 - tps: 3544.56408 + dps: 6884.27735 + tps: 3524.60518 } } dps_results: { key: "TestBlood-AllItems-FuriousGladiator'sSigilofStrife-42621" value: { - dps: 6941.37783 - tps: 3560.49995 + dps: 6920.63169 + tps: 3541.73569 } } dps_results: { key: "TestBlood-AllItems-FuryoftheFiveFlights-40431" value: { - dps: 6832.17498 - tps: 3534.59454 + dps: 6805.07242 + tps: 3513.41015 } } dps_results: { key: "TestBlood-AllItems-FuturesightRune-38763" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-GlowingTwilightScale-54573" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-GlowingTwilightScale-54589" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-GnomishLightningGenerator-41121" value: { - dps: 6745.05478 - tps: 3491.81866 + dps: 6713.55941 + tps: 3466.45455 } } dps_results: { key: "TestBlood-AllItems-HatefulGladiator'sSigilofStrife-42619" value: { - dps: 6936.16818 - tps: 3558.74856 + dps: 6915.18605 + tps: 3539.87642 } } dps_results: { key: "TestBlood-AllItems-IllustrationoftheDragonSoul-40432" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-ImpassiveSkyflareDiamond" value: { - dps: 6929.49272 - tps: 3555.86545 + dps: 6907.12129 + tps: 3537.08789 } } dps_results: { key: "TestBlood-AllItems-ImpassiveStarflareDiamond" value: { - dps: 6923.36879 - tps: 3552.44483 + dps: 6899.50579 + tps: 3532.62087 } } dps_results: { key: "TestBlood-AllItems-IncisorFragment-37723" value: { - dps: 6793.3148 - tps: 3516.32643 + dps: 6768.94735 + tps: 3496.87655 } } dps_results: { key: "TestBlood-AllItems-InsightfulEarthsiegeDiamond" value: { - dps: 6908.68368 - tps: 3544.56408 + dps: 6884.27735 + tps: 3524.60518 } } dps_results: { key: "TestBlood-AllItems-InvigoratingEarthsiegeDiamond" value: { - dps: 6935.83782 - tps: 3559.31497 - hps: 12.40192 + dps: 6911.0483 + tps: 3539.10845 + hps: 12.57537 } } dps_results: { key: "TestBlood-AllItems-Lavanthor'sTalisman-37872" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-MajesticDragonFigurine-40430" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-MeteoriteWhetstone-37390" value: { - dps: 6789.06536 - tps: 3501.92384 + dps: 6735.89118 + tps: 3464.80252 } } dps_results: { key: "TestBlood-AllItems-NevermeltingIceCrystal-50259" value: { - dps: 6790.97923 - tps: 3500.77712 + dps: 6765.55689 + tps: 3477.55706 } } dps_results: { key: "TestBlood-AllItems-OfferingofSacrifice-37638" value: { - dps: 6643.02712 - tps: 3431.09484 + dps: 6616.65168 + tps: 3410.49929 } } dps_results: { key: "TestBlood-AllItems-PersistentEarthshatterDiamond" value: { - dps: 6930.38635 - tps: 3556.33773 + dps: 6905.89809 + tps: 3536.31534 } } dps_results: { key: "TestBlood-AllItems-PersistentEarthsiegeDiamond" value: { - dps: 6935.49287 - tps: 3559.108 + dps: 6910.98533 + tps: 3539.07067 } } dps_results: { key: "TestBlood-AllItems-PetrifiedTwilightScale-54571" value: { - dps: 6674.303 - tps: 3448.06927 + dps: 6647.80917 + tps: 3427.38126 } } dps_results: { key: "TestBlood-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 6679.61195 - tps: 3450.95061 + dps: 6653.09803 + tps: 3430.2469 } } dps_results: { key: "TestBlood-AllItems-PowerfulEarthshatterDiamond" value: { - dps: 6908.68368 - tps: 3544.56408 + dps: 6884.27735 + tps: 3524.60518 } } dps_results: { key: "TestBlood-AllItems-PowerfulEarthsiegeDiamond" value: { - dps: 6908.68368 - tps: 3544.56408 + dps: 6884.27735 + tps: 3524.60518 } } dps_results: { key: "TestBlood-AllItems-PurifiedShardoftheGods" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-ReignoftheDead-47316" value: { - dps: 6680.67586 - tps: 3458.0355 + dps: 6638.01213 + tps: 3423.93352 } } dps_results: { key: "TestBlood-AllItems-ReignoftheDead-47477" value: { - dps: 6687.53597 - tps: 3462.15156 + dps: 6645.0163 + tps: 3428.13602 } } dps_results: { key: "TestBlood-AllItems-RelentlessEarthsiegeDiamond" value: { - dps: 7040.49084 - tps: 3617.65696 + dps: 7015.03048 + tps: 3596.77027 } } dps_results: { key: "TestBlood-AllItems-RelentlessGladiator'sSigilofStrife-42622" value: { - dps: 6942.73193 - tps: 3561.03641 + dps: 6922.06271 + tps: 3542.3124 } } dps_results: { key: "TestBlood-AllItems-RevitalizingSkyflareDiamond" value: { - dps: 6908.68368 - tps: 3544.56408 + dps: 6884.27735 + tps: 3524.60518 } } dps_results: { key: "TestBlood-AllItems-RuneofRepulsion-40372" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-SavageGladiator'sSigilofStrife-42618" value: { - dps: 6935.96959 - tps: 3558.6345 + dps: 6914.96938 + tps: 3539.75113 } } dps_results: { key: "TestBlood-AllItems-ScourgeborneBattlegear" value: { - dps: 6374.54895 - tps: 3268.50559 + dps: 6315.08877 + tps: 3234.74057 } } dps_results: { key: "TestBlood-AllItems-ScourgebornePlate" value: { - dps: 5769.51845 - tps: 2943.83166 + dps: 5778.0554 + tps: 2940.9688 } } dps_results: { key: "TestBlood-AllItems-Scourgelord'sBattlegear" value: { - dps: 7271.55909 - tps: 3775.83498 + dps: 7269.65539 + tps: 3767.0422 } } dps_results: { key: "TestBlood-AllItems-Scourgelord'sPlate" value: { - dps: 6118.20907 - tps: 3126.52847 + dps: 6117.3166 + tps: 3119.93646 } } dps_results: { key: "TestBlood-AllItems-SealofthePantheon-36993" value: { - dps: 6643.76968 - tps: 3431.08586 + dps: 6617.56412 + tps: 3410.60789 } } dps_results: { key: "TestBlood-AllItems-Shadowmourne-49623" value: { - dps: 9116.72723 - tps: 4792.00347 + dps: 9098.10114 + tps: 4779.8869 } } dps_results: { key: "TestBlood-AllItems-ShinyShardoftheGods" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-SigilofHauntedDreams-40715" value: { - dps: 6934.4139 - tps: 3557.74105 + dps: 6913.2722 + tps: 3538.76972 } } dps_results: { key: "TestBlood-AllItems-SigilofVirulence-47673" value: { - dps: 7254.23691 - tps: 3725.52084 + dps: 7226.08013 + tps: 3701.95002 } } dps_results: { key: "TestBlood-AllItems-SigiloftheHangedMan-50459" value: { - dps: 7285.63804 - tps: 3745.57441 + dps: 7207.15743 + tps: 3694.02846 } } dps_results: { key: "TestBlood-AllItems-Sindragosa'sFlawlessFang-50361" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-SliverofPureIce-50339" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-SliverofPureIce-50346" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-SouloftheDead-40382" value: { - dps: 6740.5433 - tps: 3485.08715 + dps: 6714.77465 + tps: 3465.35724 } } dps_results: { key: "TestBlood-AllItems-SparkofHope-45703" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-SparkofLife-37657" value: { - dps: 6674.75068 - tps: 3444.1973 + dps: 6705.91749 + tps: 3461.16428 } } dps_results: { key: "TestBlood-AllItems-SphereofRedDragon'sBlood-37166" value: { - dps: 6745.52949 - tps: 3467.47228 + dps: 6773.36831 + tps: 3484.04612 } } dps_results: { key: "TestBlood-AllItems-StormshroudArmor" value: { - dps: 5399.22173 - tps: 2765.86015 + dps: 5399.63216 + tps: 2761.02476 } } dps_results: { key: "TestBlood-AllItems-SwiftSkyflareDiamond" value: { - dps: 6935.49287 - tps: 3559.108 + dps: 6910.98533 + tps: 3539.07067 } } dps_results: { key: "TestBlood-AllItems-SwiftStarflareDiamond" value: { - dps: 6930.38635 - tps: 3556.33773 + dps: 6905.89809 + tps: 3536.31534 } } dps_results: { key: "TestBlood-AllItems-SwiftWindfireDiamond" value: { - dps: 6921.44996 - tps: 3551.48976 + dps: 6896.99543 + tps: 3531.49351 } } dps_results: { key: "TestBlood-AllItems-TalismanofTrollDivinity-37734" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-TearsoftheVanquished-47215" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-Thassarian'sBattlegear" value: { - dps: 6794.81122 - tps: 3492.92775 + dps: 6808.47792 + tps: 3495.30534 } } dps_results: { key: "TestBlood-AllItems-Thassarian'sPlate" value: { - dps: 5924.28018 - tps: 3022.6334 + dps: 5985.00477 + tps: 3053.32997 } } dps_results: { key: "TestBlood-AllItems-TheGeneral'sHeart-45507" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-TheTwinBladesofAzzinoth" value: { - dps: 5963.49701 - tps: 3021.80455 + dps: 6029.09185 + tps: 3057.87647 } } dps_results: { key: "TestBlood-AllItems-ThunderingSkyflareDiamond" value: { - dps: 6898.71487 - tps: 3538.6416 + dps: 6918.53175 + tps: 3534.9551 } } dps_results: { key: "TestBlood-AllItems-TinyAbominationinaJar-50351" value: { - dps: 6869.63495 - tps: 3547.27308 + dps: 6805.71806 + tps: 3511.67053 } } dps_results: { key: "TestBlood-AllItems-TinyAbominationinaJar-50706" value: { - dps: 6863.91829 - tps: 3541.82563 + dps: 6829.24024 + tps: 3525.93693 } } dps_results: { key: "TestBlood-AllItems-TirelessSkyflareDiamond" value: { - dps: 6908.68368 - tps: 3544.56408 + dps: 6884.27735 + tps: 3524.60518 } } dps_results: { key: "TestBlood-AllItems-TirelessStarflareDiamond" value: { - dps: 6908.68368 - tps: 3544.56408 + dps: 6884.27735 + tps: 3524.60518 } } dps_results: { key: "TestBlood-AllItems-TomeofArcanePhenomena-36972" value: { - dps: 6601.20939 - tps: 3395.05179 + dps: 6669.41759 + tps: 3438.04513 } } dps_results: { key: "TestBlood-AllItems-TrenchantEarthshatterDiamond" value: { - dps: 6908.68368 - tps: 3544.56408 + dps: 6884.27735 + tps: 3524.60518 } } dps_results: { key: "TestBlood-AllItems-TrenchantEarthsiegeDiamond" value: { - dps: 6908.68368 - tps: 3544.56408 + dps: 6884.27735 + tps: 3524.60518 } } dps_results: { key: "TestBlood-AllItems-UndeadSlayer'sBlessedArmor" value: { - dps: 5678.67573 - tps: 2910.40934 + dps: 5672.39837 + tps: 2904.36788 } } dps_results: { key: "TestBlood-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 5341.4794 - tps: 2612.33092 + dps: 5392.72715 + tps: 2640.6695 } } dps_results: { key: "TestBlood-AllItems-WingedTalisman-37844" value: { - dps: 6633.0954 - tps: 3425.70457 + dps: 6606.75756 + tps: 3405.13839 } } dps_results: { key: "TestBlood-AllItems-WrathfulGladiator'sSigilofStrife-51417" value: { - dps: 6944.27947 - tps: 3561.6495 + dps: 6923.69815 + tps: 3542.97151 } } dps_results: { key: "TestBlood-Average-Default" value: { - dps: 6981.38123 - tps: 3585.79738 + dps: 6980.45095 + tps: 3582.02363 } } dps_results: { key: "TestBlood-Settings-Human-Blood P1 -Basic-FullBuffs-LongMultiTarget" value: { - dps: 15337.10877 - tps: 8073.04448 + dps: 15319.15094 + tps: 8032.19051 } } dps_results: { key: "TestBlood-Settings-Human-Blood P1 -Basic-FullBuffs-LongSingleTarget" value: { - dps: 6963.99924 - tps: 3590.23527 + dps: 6954.04661 + tps: 3581.59466 } } dps_results: { key: "TestBlood-Settings-Human-Blood P1 -Basic-FullBuffs-ShortSingleTarget" value: { - dps: 8922.93771 - tps: 4093.62641 + dps: 8883.30055 + tps: 4064.33793 } } dps_results: { key: "TestBlood-Settings-Human-Blood P1 -Basic-NoBuffs-LongMultiTarget" value: { - dps: 10179.83602 - tps: 5355.7268 + dps: 10174.30717 + tps: 5332.67948 } } dps_results: { key: "TestBlood-Settings-Human-Blood P1 -Basic-NoBuffs-LongSingleTarget" value: { - dps: 3940.0921 - tps: 2036.54835 + dps: 3935.76663 + tps: 2031.99448 } } dps_results: { key: "TestBlood-Settings-Human-Blood P1 -Basic-NoBuffs-ShortSingleTarget" value: { - dps: 4693.08371 - tps: 2098.35624 + dps: 4715.29396 + tps: 2111.89927 } } dps_results: { key: "TestBlood-Settings-Orc-Blood P1 -Basic-FullBuffs-LongMultiTarget" value: { - dps: 15436.0179 - tps: 8100.48164 + dps: 15500.49409 + tps: 8114.61336 } } dps_results: { key: "TestBlood-Settings-Orc-Blood P1 -Basic-FullBuffs-LongSingleTarget" value: { - dps: 7040.49084 - tps: 3617.65696 + dps: 7015.03048 + tps: 3596.77027 } } dps_results: { key: "TestBlood-Settings-Orc-Blood P1 -Basic-FullBuffs-ShortSingleTarget" value: { - dps: 9088.40449 - tps: 4132.3436 + dps: 9060.87528 + tps: 4109.24122 } } dps_results: { key: "TestBlood-Settings-Orc-Blood P1 -Basic-NoBuffs-LongMultiTarget" value: { - dps: 10288.6056 - tps: 5395.74711 + dps: 10289.91771 + tps: 5381.3073 } } dps_results: { key: "TestBlood-Settings-Orc-Blood P1 -Basic-NoBuffs-LongSingleTarget" value: { - dps: 3985.9476 - tps: 2052.19838 + dps: 3971.42138 + tps: 2040.92468 } } dps_results: { key: "TestBlood-Settings-Orc-Blood P1 -Basic-NoBuffs-ShortSingleTarget" value: { - dps: 4787.2415 - tps: 2118.69153 + dps: 4796.82484 + tps: 2124.14768 } } dps_results: { key: "TestBlood-SwitchInFrontOfTarget-Default" value: { - dps: 6674.07937 - tps: 3431.86673 + dps: 6715.68935 + tps: 3454.85287 } } diff --git a/sim/deathknight/dps/dps_deathknight.go b/sim/deathknight/dps/dps_deathknight.go index 7f959e36ee..ccef02bf27 100644 --- a/sim/deathknight/dps/dps_deathknight.go +++ b/sim/deathknight/dps/dps_deathknight.go @@ -49,6 +49,7 @@ func NewDpsDeathknight(character core.Character, player *proto.Player) *DpsDeath PrecastHornOfWinter: dk.Options.PrecastHornOfWinter, PetUptime: dk.Options.PetUptime, DrwPestiApply: dk.Options.DrwPestiApply, + BloodOpener: dk.Rotation.BloodOpener, IsDps: true, RefreshHornOfWinter: dk.Rotation.RefreshHornOfWinter, diff --git a/sim/deathknight/dps/rotation_blood.go b/sim/deathknight/dps/rotation_blood.go index c6282aa57e..f57ee734fc 100644 --- a/sim/deathknight/dps/rotation_blood.go +++ b/sim/deathknight/dps/rotation_blood.go @@ -16,6 +16,7 @@ func (dk *DpsDeathknight) setupBloodRotations() { dk.setupDrwCooldowns() + //if dk.Inputs.BloodOpener == proto.Deathknight_Rotation_Standard { dk.RotationSequence.Clear(). NewAction(dk.RotationActionCallback_IT). NewAction(dk.RotationActionCallback_PS). @@ -31,6 +32,8 @@ func (dk *DpsDeathknight) setupBloodRotations() { NewAction(dk.RotationActionCallback_Pesti). NewAction(dk.RotationActionCallback_FU). NewAction(dk.RotationActionCallback_HS). + NewAction(dk.RotationActionCallback_BT). + NewAction(dk.RotationActionCallback_HS). NewAction(dk.RotationActionCallback_HS). NewAction(dk.RotationActionCallback_HS) } else if dk.Rotation.DrwDiseases == proto.Deathknight_Rotation_Normal { @@ -39,6 +42,8 @@ func (dk *DpsDeathknight) setupBloodRotations() { NewAction(dk.RotationActionCallback_PS). NewAction(dk.RotationActionCallback_HS). NewAction(dk.RotationActionCallback_HS). + NewAction(dk.RotationActionCallback_BT). + NewAction(dk.RotationActionCallback_HS). NewAction(dk.RotationActionCallback_HS). NewAction(dk.RotationActionCallback_HS) } else { @@ -46,9 +51,13 @@ func (dk *DpsDeathknight) setupBloodRotations() { NewAction(dk.RotationActionCallback_FU). NewAction(dk.RotationActionCallback_HS). NewAction(dk.RotationActionCallback_HS). + NewAction(dk.RotationActionCallback_BT). + NewAction(dk.RotationActionCallback_HS). NewAction(dk.RotationActionCallback_HS). NewAction(dk.RotationActionCallback_HS) } + // } else if dk.Inputs.BloodOpener == proto.Deathknight_Rotation_Experimental_1 { + // } dk.RotationSequence.NewAction(dk.RotationActionCallback_BloodRotation) } @@ -64,6 +73,10 @@ func (dk *DpsDeathknight) RotationActionCallback_BloodRotation(sim *core.Simulat return sim.CurrentTime } + if dk.blBloodTapCheck(sim, target) { + return sim.CurrentTime + } + if dk.RaiseDead.CanCast(sim) && sim.GetRemainingDuration() >= time.Second*30 { dk.RaiseDead.Cast(sim, target) return sim.CurrentTime @@ -157,6 +170,14 @@ func (dk *DpsDeathknight) RotationAction_ResetToBloodMain(sim *core.Simulation, return sim.CurrentTime } +func (dk *DpsDeathknight) RotationActionCallback_DRW_Snapshot(sim *core.Simulation, target *core.Unit, s *deathknight.Sequence) time.Duration { + dk.br.activatingDrw = true + dk.br.drwSnapshot.ActivateMajorCooldowns(sim) + dk.br.activatingDrw = false + s.Advance() + return sim.CurrentTime +} + func (dk *DpsDeathknight) RotationActionCallback_DRW_Custom(sim *core.Simulation, target *core.Unit, s *deathknight.Sequence) time.Duration { casted := dk.DancingRuneWeapon.Cast(sim, target) if casted { diff --git a/sim/deathknight/dps/rotation_blood_helper.go b/sim/deathknight/dps/rotation_blood_helper.go index f5f4b2b44f..5fbddf79cf 100644 --- a/sim/deathknight/dps/rotation_blood_helper.go +++ b/sim/deathknight/dps/rotation_blood_helper.go @@ -25,7 +25,7 @@ func (br *BloodRotation) Reset(sim *core.Simulation) { func (dk *DpsDeathknight) blDiseaseCheck(sim *core.Simulation, target *core.Unit, spell *deathknight.RuneSpell, costRunes bool, casts int) bool { ffRemaining := dk.FrostFeverDisease[target.Index].RemainingDuration(sim) bpRemaining := dk.BloodPlagueDisease[target.Index].RemainingDuration(sim) - castGcd := dk.SpellGCD() * time.Duration(casts) + castGcd := core.GCDDefault * time.Duration(casts) // FF is not active or will drop before Gcd is ready after this cast if !dk.FrostFeverDisease[target.Index].IsActive() || ffRemaining < castGcd { @@ -42,13 +42,16 @@ func (dk *DpsDeathknight) blDiseaseCheck(sim *core.Simulation, target *core.Unit ffExpiresAt := ffRemaining + sim.CurrentTime bpExpiresAt := bpRemaining + sim.CurrentTime + afterCastTime := sim.CurrentTime + castGcd + 50*time.Millisecond + if ffExpiresAt <= afterCastTime || bpExpiresAt <= afterCastTime { + return false + } + crpb := dk.CopyRunicPowerBar() spellCost := crpb.OptimalRuneCost(core.RuneCost(spell.DefaultCast.Cost)) crpb.SpendRuneCost(sim, spell.Spell, spellCost) - afterCastTime := sim.CurrentTime + castGcd - if dk.sr.hasGod { currentBloodRunes := crpb.CurrentBloodRunes() nextBloodRuneAt := crpb.BloodRuneReadyAt(sim) @@ -105,6 +108,18 @@ func (dk *DpsDeathknight) blDeathCoilCheck(sim *core.Simulation) bool { return (!canCastDrw && currentRP >= 65) || (canCastDrw && dk.CurrentRunicPower() >= 100) } +func (dk *DpsDeathknight) blBloodTapCheck(sim *core.Simulation, target *core.Unit) bool { + if dk.CurrentBloodRunes() > 0 { + return false + } + + if dk.RuneWeapon.IsEnabled() && dk.BloodTap.IsReady(sim) { + return dk.BloodTap.Cast(sim, target) + } + + return false +} + // Combined checks for casting gargoyle sequence & going back to blood presence after func (dk *DpsDeathknight) blDrwCheck(sim *core.Simulation, target *core.Unit, castTime time.Duration) bool { if dk.blDrwCanCast(sim, castTime) { diff --git a/ui/deathknight/inputs.ts b/ui/deathknight/inputs.ts index a49af4acec..8a07ef6f12 100644 --- a/ui/deathknight/inputs.ts +++ b/ui/deathknight/inputs.ts @@ -5,6 +5,7 @@ import { DeathknightTalents as DeathKnightTalents, Deathknight_Rotation_ArmyOfTheDead as ArmyOfTheDead, Deathknight_Rotation_DrwDiseases as DrwDiseases, + Deathknight_Rotation_BloodOpener as BloodOpener, Deathknight_Rotation_FirstDisease as FirstDisease, Deathknight_Rotation_DeathAndDecayPrio as DeathAndDecayPrio, Deathknight_Rotation_Presence as StartingPresence, @@ -316,6 +317,18 @@ export const DrwDiseasesInput = InputHelpers.makeRotationEnumInput) => !player.getRotation().autoRotation && player.getTalentTree() == 0 && player.getRotation().bloodOpener == BloodOpener.Standard, + changeEmitter: (player: Player) => TypedEvent.onAny([player.rotationChangeEmitter, player.talentsChangeEmitter]), +}); + +export const BloodOpenerInput = InputHelpers.makeRotationEnumInput({ + fieldName: 'bloodOpener', + label: 'Opener', + labelTooltip: 'Chose which opener to use.', + values: [ + { name: 'Standard', value: BloodOpener.Standard }, + { name: 'Incan', value: BloodOpener.Experimental_1 }, + ], showWhen: (player: Player) => !player.getRotation().autoRotation && player.getTalentTree() == 0, changeEmitter: (player: Player) => TypedEvent.onAny([player.rotationChangeEmitter, player.talentsChangeEmitter]), }); @@ -359,10 +372,11 @@ export const DeathKnightRotationConfig = { BloodTapGhoulFrenzy, UseGargoyle, UseEmpowerRuneWeapon, - DrwDiseasesInput, HoldErwArmy, BloodTapInput, ArmyOfTheDeadInput, + //BloodOpenerInput, + DrwDiseasesInput, FirstDiseaseInput, StartingPresenceInput, BloodlustPresence,