From 30dd098620b170bbb92cb826435c66d1852c42b4 Mon Sep 17 00:00:00 2001 From: vigo Date: Sun, 2 Oct 2022 14:57:06 +0200 Subject: [PATCH 1/7] [core] remove support for binary spells. only thorns and retribution aura ignore partial resists, but they miss (logged as "resist") like regular spells, without a binary penalty --- sim/core/buffs.go | 4 +- sim/core/spell_outcome.go | 53 ---- sim/core/spell_resistances.go | 40 +-- sim/core/target.go | 7 - sim/druid/tank/TestFeralTank.results | 8 +- sim/mage/TestFrost.results | 288 +++++++++--------- sim/mage/frostbolt.go | 2 +- sim/paladin/holy_shield.go | 5 +- sim/paladin/protection/TestProtection.results | 8 +- sim/priest/Mind_Sear.go | 2 +- sim/warlock/TestWarlock.results | 180 +++++------ sim/warlock/pet_abilities.go | 2 +- .../protection/TestProtectionWarrior.results | 18 +- 13 files changed, 268 insertions(+), 349 deletions(-) diff --git a/sim/core/buffs.go b/sim/core/buffs.go index 2d9701c7f1..bf87e4bfe4 100644 --- a/sim/core/buffs.go +++ b/sim/core/buffs.go @@ -385,7 +385,7 @@ func RetributionAura(character *Character, sanctifiedRetribution bool) *Aura { ThreatMultiplier: 1, ApplyEffects: func(sim *Simulation, target *Unit, spell *Spell) { - spell.CalcAndDealDamageMagicHitBinary(sim, target, baseDamage) + spell.CalcAndDealDamageMagicHit(sim, target, baseDamage) }, }) @@ -418,7 +418,7 @@ func ThornsAura(character *Character, points int32) *Aura { ThreatMultiplier: 1, ApplyEffects: func(sim *Simulation, target *Unit, spell *Spell) { - spell.CalcAndDealDamageMagicHitBinary(sim, target, baseDamage) + spell.CalcAndDealDamageMagicHit(sim, target, baseDamage) }, }) diff --git a/sim/core/spell_outcome.go b/sim/core/spell_outcome.go index 5793f50fed..b100c66728 100644 --- a/sim/core/spell_outcome.go +++ b/sim/core/spell_outcome.go @@ -124,30 +124,6 @@ func (unit *Unit) OutcomeFuncMagicCrit() OutcomeApplier { } } -func (spell *Spell) OutcomeMagicHitAndCritBinary(sim *Simulation, result *SpellEffect, attackTable *AttackTable) { - if spell.CritMultiplier == 0 { - panic("Spell " + spell.ActionID.String() + " missing CritMultiplier") - } - if spell.MagicHitCheckBinary(sim, attackTable) { - if result.MagicCritCheck(sim, spell, attackTable) { - result.Outcome = OutcomeCrit - result.Damage *= spell.CritMultiplier - spell.SpellMetrics[result.Target.UnitIndex].Crits++ - } else { - result.Outcome = OutcomeHit - spell.SpellMetrics[result.Target.UnitIndex].Hits++ - } - } else { - result.Outcome = OutcomeMiss - result.Damage = 0 - spell.SpellMetrics[result.Target.UnitIndex].Misses++ - } -} -func (spell *Spell) CalcAndDealDamageMagicHitAndCritBinary(sim *Simulation, target *Unit, baseDamage float64) { - result := spell.CalcDamage(sim, target, baseDamage, spell.OutcomeMagicHitAndCritBinary) - spell.DealDamage(sim, &result) -} - func (spell *Spell) OutcomeHealingCrit(sim *Simulation, result *SpellEffect, attackTable *AttackTable) { if spell.CritMultiplier == 0 { panic("Spell " + spell.ActionID.String() + " missing CritMultiplier") @@ -218,26 +194,6 @@ func (unit *Unit) OutcomeFuncMagicHit() OutcomeApplier { } } -func (spell *Spell) OutcomeMagicHitBinary(sim *Simulation, result *SpellEffect, attackTable *AttackTable) { - if spell.MagicHitCheckBinary(sim, attackTable) { - result.Outcome = OutcomeHit - spell.SpellMetrics[result.Target.UnitIndex].Hits++ - } else { - result.Outcome = OutcomeMiss - result.Damage = 0 - spell.SpellMetrics[result.Target.UnitIndex].Misses++ - } -} -func (spell *Spell) CalcAndDealDamageMagicHitBinary(sim *Simulation, target *Unit, baseDamage float64) { - result := spell.CalcDamage(sim, target, baseDamage, spell.OutcomeMagicHitBinary) - spell.DealDamage(sim, &result) -} -func (unit *Unit) OutcomeFuncMagicHitBinary() OutcomeApplier { - return func(sim *Simulation, spell *Spell, spellEffect *SpellEffect, attackTable *AttackTable) { - spell.OutcomeMagicHitBinary(sim, spellEffect, attackTable) - } -} - func (spell *Spell) OutcomeMeleeWhite(sim *Simulation, result *SpellEffect, attackTable *AttackTable) { unit := spell.Unit roll := sim.RandomFloat("White Hit Table") @@ -502,15 +458,6 @@ func (spell *Spell) MagicHitCheck(sim *Simulation, attackTable *AttackTable) boo return sim.RandomFloat("Magical Hit Roll") > missChance } -// TODO if a binary spell misses, it's logged as "resist" (similar to "dodge", "miss", etc.), so it's treated -// as just another HitOutcome. -// TODO research the few remaining binary spells (Thorns, Retribution Aura, and Holy Shield). -func (spell *Spell) MagicHitCheckBinary(sim *Simulation, attackTable *AttackTable) bool { - baseHitChance := (1 - attackTable.BaseSpellMissChance) * attackTable.GetBinaryHitChance(spell.SpellSchool) - missChance := 1 - baseHitChance - spell.SpellHitChance(attackTable.Defender) - return sim.RandomFloat("Magical Hit Roll") > missChance -} - func (spell *Spell) fixedCritCheck(sim *Simulation, critChance float64) bool { return sim.RandomFloat("Fixed Crit Roll") < critChance } diff --git a/sim/core/spell_resistances.go b/sim/core/spell_resistances.go index 9e1bab9b62..aa612d6703 100644 --- a/sim/core/spell_resistances.go +++ b/sim/core/spell_resistances.go @@ -12,7 +12,7 @@ func (spellEffect *SpellEffect) applyResistances(sim *Simulation, spell *Spell, return } - // CHECKME spellEffect.Outcome isn't updated with resists anymore - why? + // TODO check why spellEffect.Outcome isn't updated with resists anymore resistanceMult := spell.ResistanceMultiplier(sim, spellEffect.IsPeriodic, attackTable) spellEffect.Damage *= resistanceMult } @@ -63,12 +63,12 @@ func (at *AttackTable) GetArmorDamageModifier(spell *Spell) float64 { } func (at *AttackTable) UpdatePartialResists() { - at.PartialResistArcaneThresholds, at.BinaryArcaneHitChance = at.Defender.partialResistRollThresholds(SpellSchoolArcane, at.Attacker) - at.PartialResistHolyThresholds, at.BinaryHolyHitChance = at.Defender.partialResistRollThresholds(SpellSchoolHoly, at.Attacker) - at.PartialResistFireThresholds, at.BinaryFireHitChance = at.Defender.partialResistRollThresholds(SpellSchoolFire, at.Attacker) - at.PartialResistFrostThresholds, at.BinaryFrostHitChance = at.Defender.partialResistRollThresholds(SpellSchoolFrost, at.Attacker) - at.PartialResistNatureThresholds, at.BinaryNatureHitChance = at.Defender.partialResistRollThresholds(SpellSchoolNature, at.Attacker) - at.PartialResistShadowThresholds, at.BinaryShadowHitChance = at.Defender.partialResistRollThresholds(SpellSchoolShadow, at.Attacker) + at.PartialResistArcaneThresholds = at.Defender.partialResistRollThresholds(SpellSchoolArcane, at.Attacker) + at.PartialResistHolyThresholds = at.Defender.partialResistRollThresholds(SpellSchoolHoly, at.Attacker) + at.PartialResistFireThresholds = at.Defender.partialResistRollThresholds(SpellSchoolFire, at.Attacker) + at.PartialResistFrostThresholds = at.Defender.partialResistRollThresholds(SpellSchoolFrost, at.Attacker) + at.PartialResistNatureThresholds = at.Defender.partialResistRollThresholds(SpellSchoolNature, at.Attacker) + at.PartialResistShadowThresholds = at.Defender.partialResistRollThresholds(SpellSchoolShadow, at.Attacker) } func (at *AttackTable) GetPartialResistThresholds(ss SpellSchool) Thresholds { @@ -89,24 +89,6 @@ func (at *AttackTable) GetPartialResistThresholds(ss SpellSchool) Thresholds { return Thresholds{{cumulativeChance: 1, bracket: 0}} } -func (at *AttackTable) GetBinaryHitChance(ss SpellSchool) float64 { - switch ss { - case SpellSchoolArcane: - return at.BinaryArcaneHitChance - case SpellSchoolHoly: - return at.BinaryHolyHitChance - case SpellSchoolFire: - return at.BinaryFireHitChance - case SpellSchoolFrost: - return at.BinaryFrostHitChance - case SpellSchoolNature: - return at.BinaryNatureHitChance - case SpellSchoolShadow: - return at.BinaryShadowHitChance - } - return 0 -} - /* The following calculations are based on https://web.archive.org/web/20110207221537/http://elitistjerks.com/f15/t44675-resistance_mechanics_wotlk/ @@ -167,7 +149,7 @@ func (x Thresholds) String() string { return sb.String() } -func (unit *Unit) partialResistRollThresholds(school SpellSchool, attacker *Unit) (Thresholds, float64) { +func (unit *Unit) partialResistRollThresholds(school SpellSchool, attacker *Unit) Thresholds { ar := unit.averageResist(school, attacker, false) if ar <= 0.1 { // always 0%, 10%, or 20%; this covers all player vs. mob cases, in practice @@ -175,7 +157,7 @@ func (unit *Unit) partialResistRollThresholds(school SpellSchool, attacker *Unit {cumulativeChance: 1 - 7.5*ar, bracket: 0}, {cumulativeChance: 1 - 2.5*ar, bracket: 1}, {cumulativeChance: 1, bracket: 2}, - }, 1 - ar + } } if ar >= 0.9 { // always 80%, 90%, or 100%; only relevant for tests ;) @@ -183,7 +165,7 @@ func (unit *Unit) partialResistRollThresholds(school SpellSchool, attacker *Unit {cumulativeChance: 1 - 7.5*(1-ar), bracket: 10}, {cumulativeChance: 1 - 2.5*(1-ar), bracket: 9}, {cumulativeChance: 1, bracket: 8}, - }, 1 - ar + } } p := func(x float64) float64 { @@ -207,5 +189,5 @@ func (unit *Unit) partialResistRollThresholds(school SpellSchool, attacker *Unit thresholds[index-1].cumulativeChance = 1 } - return thresholds, 1 - ar + return thresholds } diff --git a/sim/core/target.go b/sim/core/target.go index 03b93a461e..9ce0b4cda0 100644 --- a/sim/core/target.go +++ b/sim/core/target.go @@ -227,13 +227,6 @@ type AttackTable struct { PartialResistNatureThresholds Thresholds PartialResistShadowThresholds Thresholds - BinaryArcaneHitChance float64 - BinaryHolyHitChance float64 - BinaryFireHitChance float64 - BinaryFrostHitChance float64 - BinaryNatureHitChance float64 - BinaryShadowHitChance float64 - DamageDealtMultiplier float64 NatureDamageDealtMultiplier float64 PeriodicShadowDamageDealtMultiplier float64 diff --git a/sim/druid/tank/TestFeralTank.results b/sim/druid/tank/TestFeralTank.results index fbbb804b2e..d55b8d56e5 100644 --- a/sim/druid/tank/TestFeralTank.results +++ b/sim/druid/tank/TestFeralTank.results @@ -619,8 +619,8 @@ dps_results: { dps_results: { key: "TestFeralTank-Average-Default" value: { - dps: 1313.9913 - tps: 1812.10673 + dps: 1316.04529 + tps: 1814.83032 dtps: 522.98961 } } @@ -669,8 +669,8 @@ dps_results: { dps_results: { key: "TestFeralTank-SwitchInFrontOfTarget-Default" value: { - dps: 1438.59896 - tps: 2002.31761 + dps: 1440.58147 + tps: 2004.94641 dtps: 488.03992 } } diff --git a/sim/mage/TestFrost.results b/sim/mage/TestFrost.results index cb7f30361e..85f9f811bc 100644 --- a/sim/mage/TestFrost.results +++ b/sim/mage/TestFrost.results @@ -45,456 +45,456 @@ character_stats_results: { dps_results: { key: "TestFrost-AllItems-AustereEarthsiegeDiamond" value: { - dps: 4309.64361 - tps: 3620.75376 + dps: 4429.83489 + tps: 3722.05702 } } dps_results: { key: "TestFrost-AllItems-Bandit'sInsignia-40371" value: { - dps: 4210.15272 - tps: 3541.24815 + dps: 4288.05074 + tps: 3606.66711 } } dps_results: { key: "TestFrost-AllItems-BeamingEarthsiegeDiamond" value: { - dps: 4323.7748 - tps: 3632.3891 + dps: 4445.33584 + tps: 3735.50606 } } dps_results: { key: "TestFrost-AllItems-BlessedRegaliaofUndeadCleansing" value: { - dps: 3688.57792 - tps: 3089.85357 + dps: 3760.03955 + tps: 3150.28123 } } dps_results: { key: "TestFrost-AllItems-Bloodmage'sRegalia" value: { - dps: 4885.14041 - tps: 4125.01281 + dps: 5052.81727 + tps: 4272.99576 } } dps_results: { key: "TestFrost-AllItems-BracingEarthsiegeDiamond" value: { - dps: 4338.65503 - tps: 3572.8787 + dps: 4459.71893 + tps: 3672.8962 } } dps_results: { key: "TestFrost-AllItems-ChaoticSkyflareDiamond" value: { - dps: 4433.06461 - tps: 3731.03766 + dps: 4556.81784 + tps: 3835.66985 } } dps_results: { key: "TestFrost-AllItems-DarkmoonCard:Berserker!-42989" value: { - dps: 4279.06059 - tps: 3602.82825 + dps: 4356.17979 + tps: 3667.26347 } } dps_results: { key: "TestFrost-AllItems-DarkmoonCard:Death-42990" value: { - dps: 4248.91475 - tps: 3576.9471 + dps: 4390.25779 + tps: 3699.00242 } } dps_results: { key: "TestFrost-AllItems-DarkmoonCard:Greatness-42987" value: { - dps: 4228.54419 - tps: 3566.10082 + dps: 4335.18705 + tps: 3655.52212 } } dps_results: { key: "TestFrost-AllItems-DarkmoonCard:Greatness-44253" value: { - dps: 4228.54419 - tps: 3566.10082 + dps: 4335.18705 + tps: 3655.52212 } } dps_results: { key: "TestFrost-AllItems-DarkmoonCard:Greatness-44254" value: { - dps: 4227.11816 - tps: 3564.12386 + dps: 4333.85893 + tps: 3653.61979 } } dps_results: { key: "TestFrost-AllItems-Defender'sCode-40257" value: { - dps: 4210.15272 - tps: 3541.24815 + dps: 4288.05074 + tps: 3606.66711 } } dps_results: { key: "TestFrost-AllItems-DestructiveSkyflareDiamond" value: { - dps: 4326.3931 - tps: 3635.27961 + dps: 4447.48626 + tps: 3737.41633 } } dps_results: { key: "TestFrost-AllItems-EffulgentSkyflareDiamond" value: { - dps: 4309.64361 - tps: 3620.75376 + dps: 4429.83489 + tps: 3722.05702 } } dps_results: { key: "TestFrost-AllItems-EmberSkyflareDiamond" value: { - dps: 4343.42406 - tps: 3648.9127 + dps: 4466.71056 + tps: 3753.22981 } } dps_results: { key: "TestFrost-AllItems-EnigmaticSkyflareDiamond" value: { - dps: 4324.28908 - tps: 3633.38599 + dps: 4446.63987 + tps: 3736.73854 } } dps_results: { key: "TestFrost-AllItems-EnigmaticStarflareDiamond" value: { - dps: 4320.94445 - tps: 3630.47096 + dps: 4441.43345 + tps: 3732.12473 } } dps_results: { key: "TestFrost-AllItems-EternalEarthsiegeDiamond" value: { - dps: 4309.64361 - tps: 3620.75376 + dps: 4429.83489 + tps: 3722.05702 } } dps_results: { key: "TestFrost-AllItems-ExtractofNecromanticPower-40373" value: { - dps: 4226.44167 - tps: 3551.29552 + dps: 4349.03576 + tps: 3657.73635 } } dps_results: { key: "TestFrost-AllItems-EyeoftheBroodmother-45308" value: { - dps: 4418.39687 - tps: 3721.85155 + dps: 4494.86386 + tps: 3785.91027 } } dps_results: { key: "TestFrost-AllItems-ForgeEmber-37660" value: { - dps: 4366.47256 - tps: 3677.57625 + dps: 4440.15823 + tps: 3738.80687 } } dps_results: { key: "TestFrost-AllItems-ForlornSkyflareDiamond" value: { - dps: 4338.65503 - tps: 3645.29112 + dps: 4459.71893 + tps: 3747.33609 } } dps_results: { key: "TestFrost-AllItems-ForlornStarflareDiamond" value: { - dps: 4332.85275 - tps: 3640.38365 + dps: 4453.74212 + tps: 3742.28027 } } dps_results: { key: "TestFrost-AllItems-FrostfireGarb" value: { - dps: 3875.28869 - tps: 3245.25152 + dps: 3940.14169 + tps: 3304.03879 } } dps_results: { key: "TestFrost-AllItems-FuryoftheFiveFlights-40431" value: { - dps: 4210.15272 - tps: 3541.24815 + dps: 4288.05074 + tps: 3606.66711 } } dps_results: { key: "TestFrost-AllItems-FuturesightRune-38763" value: { - dps: 4282.02436 - tps: 3601.54277 + dps: 4358.47684 + tps: 3664.23 } } dps_results: { key: "TestFrost-AllItems-IllustrationoftheDragonSoul-40432" value: { - dps: 4440.10998 - tps: 3739.7173 + dps: 4521.79324 + tps: 3808.42911 } } dps_results: { key: "TestFrost-AllItems-ImpassiveSkyflareDiamond" value: { - dps: 4324.28908 - tps: 3633.38599 + dps: 4446.63987 + tps: 3736.73854 } } dps_results: { key: "TestFrost-AllItems-ImpassiveStarflareDiamond" value: { - dps: 4320.94445 - tps: 3630.47096 + dps: 4441.43345 + tps: 3732.12473 } } dps_results: { key: "TestFrost-AllItems-IncisorFragment-37723" value: { - dps: 4151.25733 - tps: 3482.23488 + dps: 4319.01662 + tps: 3635.70484 } } dps_results: { key: "TestFrost-AllItems-InsightfulEarthsiegeDiamond" value: { - dps: 4299.20951 - tps: 3613.96586 + dps: 4420.91034 + tps: 3714.87792 } } dps_results: { key: "TestFrost-AllItems-InvigoratingEarthsiegeDiamond" value: { - dps: 4309.64361 - tps: 3620.75376 + dps: 4429.83489 + tps: 3722.05702 } } dps_results: { key: "TestFrost-AllItems-Khadgar'sRegalia" value: { - dps: 4467.17643 - tps: 3752.56528 + dps: 4565.42078 + tps: 3841.66217 } } dps_results: { key: "TestFrost-AllItems-KirinTorGarb" value: { - dps: 4125.22754 - tps: 3453.75564 + dps: 4244.64407 + tps: 3560.99603 } } dps_results: { key: "TestFrost-AllItems-Lavanthor'sTalisman-37872" value: { - dps: 4210.15272 - tps: 3541.24815 + dps: 4288.05074 + tps: 3606.66711 } } dps_results: { key: "TestFrost-AllItems-MajesticDragonFigurine-40430" value: { - dps: 4203.15348 - tps: 3531.15841 + dps: 4274.2085 + tps: 3588.85641 } } dps_results: { key: "TestFrost-AllItems-MeteoriteWhetstone-37390" value: { - dps: 4265.47223 - tps: 3590.02594 + dps: 4338.75636 + tps: 3651.36383 } } dps_results: { key: "TestFrost-AllItems-OfferingofSacrifice-37638" value: { - dps: 4210.15272 - tps: 3541.24815 + dps: 4288.05074 + tps: 3606.66711 } } dps_results: { key: "TestFrost-AllItems-PersistentEarthshatterDiamond" value: { - dps: 4309.64361 - tps: 3620.75376 + dps: 4429.83489 + tps: 3722.05702 } } dps_results: { key: "TestFrost-AllItems-PersistentEarthsiegeDiamond" value: { - dps: 4309.64361 - tps: 3620.75376 + dps: 4429.83489 + tps: 3722.05702 } } dps_results: { key: "TestFrost-AllItems-PowerfulEarthshatterDiamond" value: { - dps: 4309.64361 - tps: 3620.75376 + dps: 4429.83489 + tps: 3722.05702 } } dps_results: { key: "TestFrost-AllItems-PowerfulEarthsiegeDiamond" value: { - dps: 4309.64361 - tps: 3620.75376 + dps: 4429.83489 + tps: 3722.05702 } } dps_results: { key: "TestFrost-AllItems-PurifiedShardoftheGods" value: { - dps: 4210.15272 - tps: 3541.24815 + dps: 4288.05074 + tps: 3606.66711 } } dps_results: { key: "TestFrost-AllItems-ReignoftheDead-47316" value: { - dps: 4424.32285 - tps: 3729.72488 + dps: 4602.65125 + tps: 3893.49224 } } dps_results: { key: "TestFrost-AllItems-ReignoftheDead-47477" value: { - dps: 4462.44845 - tps: 3764.62797 + dps: 4641.70189 + tps: 3929.24484 } } dps_results: { key: "TestFrost-AllItems-RelentlessEarthsiegeDiamond" value: { - dps: 4417.14818 - tps: 3717.26852 + dps: 4538.54178 + tps: 3819.66698 } } dps_results: { key: "TestFrost-AllItems-RevitalizingSkyflareDiamond" value: { - dps: 4307.81451 - tps: 3618.11393 + dps: 4428.26807 + tps: 3720.21967 } } dps_results: { key: "TestFrost-AllItems-RuneofRepulsion-40372" value: { - dps: 4210.15272 - tps: 3541.24815 + dps: 4288.05074 + tps: 3606.66711 } } dps_results: { key: "TestFrost-AllItems-SealofthePantheon-36993" value: { - dps: 4210.15272 - tps: 3541.24815 + dps: 4288.05074 + tps: 3606.66711 } } dps_results: { key: "TestFrost-AllItems-ShinyShardoftheGods" value: { - dps: 4210.15272 - tps: 3541.24815 + dps: 4288.05074 + tps: 3606.66711 } } dps_results: { key: "TestFrost-AllItems-Sindragosa'sFlawlessFang-50361" value: { - dps: 4210.15272 - tps: 3541.24815 + dps: 4288.05074 + tps: 3606.66711 } } dps_results: { key: "TestFrost-AllItems-SparkofLife-37657" value: { - dps: 4218.20089 - tps: 3542.82833 + dps: 4362.07308 + tps: 3672.78688 } } dps_results: { key: "TestFrost-AllItems-Sunstrider'sRegalia" value: { - dps: 4467.17643 - tps: 3755.38102 + dps: 4565.42078 + tps: 3846.15344 } } dps_results: { key: "TestFrost-AllItems-SwiftSkyflareDiamond" value: { - dps: 4309.64361 - tps: 3620.75376 + dps: 4429.83489 + tps: 3722.05702 } } dps_results: { key: "TestFrost-AllItems-SwiftStarflareDiamond" value: { - dps: 4309.64361 - tps: 3620.75376 + dps: 4429.83489 + tps: 3722.05702 } } dps_results: { key: "TestFrost-AllItems-SwiftWindfireDiamond" value: { - dps: 4309.64361 - tps: 3620.75376 + dps: 4429.83489 + tps: 3722.05702 } } dps_results: { key: "TestFrost-AllItems-ThunderingSkyflareDiamond" value: { - dps: 4285.75921 - tps: 3597.12013 + dps: 4465.15451 + tps: 3753.15549 } } dps_results: { key: "TestFrost-AllItems-TinyAbominationinaJar-50351" value: { - dps: 4285.88393 - tps: 3600.35498 + dps: 4432.92642 + tps: 3726.49968 } } dps_results: { key: "TestFrost-AllItems-TinyAbominationinaJar-50706" value: { - dps: 4285.88393 - tps: 3600.35498 + dps: 4432.92642 + tps: 3726.49968 } } dps_results: { key: "TestFrost-AllItems-TirelessSkyflareDiamond" value: { - dps: 4338.65503 - tps: 3645.29112 + dps: 4459.71893 + tps: 3747.33609 } } dps_results: { key: "TestFrost-AllItems-TirelessStarflareDiamond" value: { - dps: 4332.85275 - tps: 3640.38365 + dps: 4453.74212 + tps: 3742.28027 } } dps_results: { key: "TestFrost-AllItems-TrenchantEarthshatterDiamond" value: { - dps: 4332.85275 - tps: 3640.38365 + dps: 4453.74212 + tps: 3742.28027 } } dps_results: { key: "TestFrost-AllItems-TrenchantEarthsiegeDiamond" value: { - dps: 4338.65503 - tps: 3645.29112 + dps: 4459.71893 + tps: 3747.33609 } } dps_results: { key: "TestFrost-Average-Default" value: { - dps: 4379.10959 - tps: 3677.88882 + dps: 4544.80918 + tps: 3826.91563 } } dps_results: { @@ -542,49 +542,49 @@ dps_results: { dps_results: { key: "TestFrost-Settings-Troll-P1Frost-FrostRotation-FullBuffs-LongMultiTarget" value: { - dps: 4433.06461 - tps: 4199.76686 + dps: 4556.81784 + tps: 4317.16581 } } dps_results: { key: "TestFrost-Settings-Troll-P1Frost-FrostRotation-FullBuffs-LongSingleTarget" value: { - dps: 4433.06461 - tps: 3731.03766 + dps: 4556.81784 + tps: 3835.66985 } } dps_results: { key: "TestFrost-Settings-Troll-P1Frost-FrostRotation-FullBuffs-ShortSingleTarget" value: { - dps: 5604.71679 - tps: 4543.20443 + dps: 5752.15609 + tps: 4672.61542 } } dps_results: { key: "TestFrost-Settings-Troll-P1Frost-FrostRotation-NoBuffs-LongMultiTarget" value: { - dps: 2715.73271 - tps: 2998.25589 + dps: 2789.18396 + tps: 3068.70846 } } dps_results: { key: "TestFrost-Settings-Troll-P1Frost-FrostRotation-NoBuffs-LongSingleTarget" value: { - dps: 2715.73271 - tps: 2277.05546 + dps: 2789.18396 + tps: 2338.15709 } } dps_results: { key: "TestFrost-Settings-Troll-P1Frost-FrostRotation-NoBuffs-ShortSingleTarget" value: { - dps: 3156.97675 - tps: 2464.54807 + dps: 3316.03838 + tps: 2606.94928 } } dps_results: { key: "TestFrost-SwitchInFrontOfTarget-Default" value: { - dps: 4433.06461 - tps: 3731.03766 + dps: 4556.81784 + tps: 3835.66985 } } diff --git a/sim/mage/frostbolt.go b/sim/mage/frostbolt.go index ea34bbfdd7..ee08cf7463 100644 --- a/sim/mage/frostbolt.go +++ b/sim/mage/frostbolt.go @@ -39,7 +39,7 @@ func (mage *Mage) registerFrostboltSpell() { ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { baseDamage := sim.Roll(799, 861) + spellCoeff*spell.SpellPower() - spell.CalcAndDealDamageMagicHitAndCritBinary(sim, target, baseDamage) + spell.CalcAndDealDamageMagicHitAndCrit(sim, target, baseDamage) }, }) } diff --git a/sim/paladin/holy_shield.go b/sim/paladin/holy_shield.go index 9c44522a03..3abce134ae 100644 --- a/sim/paladin/holy_shield.go +++ b/sim/paladin/holy_shield.go @@ -12,9 +12,6 @@ func (paladin *Paladin) registerHolyShieldSpell() { actionID := core.ActionID{SpellID: 48952} numCharges := int32(8) - // Holy Shield can be both fully and partially resisted in WotLK, so it doesn't use SpellFlagBinary here, - // but does use CalcAndDealDamageMagicHitBinary() below. - // TODO needs research ;) procSpell := paladin.RegisterSpell(core.SpellConfig{ ActionID: actionID.WithTag(1), SpellSchool: core.SpellSchoolHoly, @@ -30,7 +27,7 @@ func (paladin *Paladin) registerHolyShieldSpell() { 0.0732*spell.MeleeAttackPower() + 0.117*spell.SpellPower() - spell.CalcAndDealDamageMagicHitBinary(sim, target, baseDamage) + spell.CalcAndDealDamageMagicHit(sim, target, baseDamage) }, }) diff --git a/sim/paladin/protection/TestProtection.results b/sim/paladin/protection/TestProtection.results index 7a139b1ab6..b01adc088f 100644 --- a/sim/paladin/protection/TestProtection.results +++ b/sim/paladin/protection/TestProtection.results @@ -668,8 +668,8 @@ dps_results: { dps_results: { key: "TestProtection-Average-Default" value: { - dps: 2015.78153 - tps: 4732.52326 + dps: 2025.7904 + tps: 4756.34442 dtps: 64.83568 } } @@ -928,8 +928,8 @@ dps_results: { dps_results: { key: "TestProtection-SwitchInFrontOfTarget-Default" value: { - dps: 2127.93782 - tps: 4977.23979 + dps: 2137.42913 + tps: 4999.88437 dtps: 67.08851 } } diff --git a/sim/priest/Mind_Sear.go b/sim/priest/Mind_Sear.go index 52dc88effa..4e106ca312 100644 --- a/sim/priest/Mind_Sear.go +++ b/sim/priest/Mind_Sear.go @@ -59,7 +59,7 @@ func (priest *Priest) newMindSearDot(numTicks int) *core.Dot { effect := core.SpellEffect{ IsPeriodic: true, - OutcomeApplier: priest.OutcomeFuncMagicHitBinary(), + OutcomeApplier: priest.OutcomeFuncMagicHit(), OnPeriodicDamageDealt: func(sim *core.Simulation, spell *core.Spell, spellEffect *core.SpellEffect) { if spellEffect.Landed() { priest.AddShadowWeavingStack(sim) diff --git a/sim/warlock/TestWarlock.results b/sim/warlock/TestWarlock.results index a315f80541..8875d05d32 100644 --- a/sim/warlock/TestWarlock.results +++ b/sim/warlock/TestWarlock.results @@ -45,309 +45,309 @@ character_stats_results: { dps_results: { key: "TestWarlock-AllItems-AshtongueTalismanofShadows-32493" value: { - dps: 7061.16009 - tps: 6351.11706 + dps: 7084.43112 + tps: 6352.63961 } } dps_results: { key: "TestWarlock-AllItems-AustereEarthsiegeDiamond" value: { - dps: 6934.7879 - tps: 6217.35939 + dps: 6918.32136 + tps: 6172.83203 } } dps_results: { key: "TestWarlock-AllItems-BeamingEarthsiegeDiamond" value: { - dps: 6951.76759 - tps: 6234.33907 + dps: 6948.48271 + tps: 6205.40364 } } dps_results: { key: "TestWarlock-AllItems-BracingEarthsiegeDiamond" value: { - dps: 6964.63793 - tps: 6250.04029 + dps: 7000.95757 + tps: 6259.34414 } } dps_results: { key: "TestWarlock-AllItems-ChaoticSkyflareDiamond" value: { - dps: 7044.01109 - tps: 6326.58257 + dps: 7039.50643 + tps: 6296.42736 } } dps_results: { key: "TestWarlock-AllItems-DarkCoven'sRegalia" value: { - dps: 7640.2064 - tps: 6900.06935 + dps: 7631.68335 + tps: 6851.89378 } } dps_results: { key: "TestWarlock-AllItems-DeathbringerGarb" value: { - dps: 6543.66614 - tps: 5858.49621 + dps: 6586.74313 + tps: 5875.82967 } } dps_results: { key: "TestWarlock-AllItems-DestructiveSkyflareDiamond" value: { - dps: 6954.50874 - tps: 6237.08022 + dps: 6920.33437 + tps: 6178.615 } } dps_results: { key: "TestWarlock-AllItems-EffulgentSkyflareDiamond" value: { - dps: 6934.7879 - tps: 6217.35939 + dps: 6918.32136 + tps: 6172.83203 } } dps_results: { key: "TestWarlock-AllItems-EmberSkyflareDiamond" value: { - dps: 6964.63793 - tps: 6250.04029 + dps: 7000.95757 + tps: 6259.34414 } } dps_results: { key: "TestWarlock-AllItems-EnigmaticSkyflareDiamond" value: { - dps: 6951.76759 - tps: 6234.33907 + dps: 6948.48271 + tps: 6205.40364 } } dps_results: { key: "TestWarlock-AllItems-EnigmaticStarflareDiamond" value: { - dps: 6947.31906 - tps: 6229.89054 + dps: 6932.8595 + tps: 6187.37018 } } dps_results: { key: "TestWarlock-AllItems-EternalEarthsiegeDiamond" value: { - dps: 6934.7879 - tps: 6217.35939 + dps: 6918.32136 + tps: 6172.83203 } } dps_results: { key: "TestWarlock-AllItems-ForlornSkyflareDiamond" value: { - dps: 6964.63793 - tps: 6250.04029 + dps: 7000.95757 + tps: 6259.34414 } } dps_results: { key: "TestWarlock-AllItems-ForlornStarflareDiamond" value: { - dps: 6950.89267 - tps: 6232.82787 + dps: 6998.48215 + tps: 6251.36227 } } dps_results: { key: "TestWarlock-AllItems-Gladiator'sFelshroud" value: { - dps: 6947.8285 - tps: 6255.44215 + dps: 6967.26884 + tps: 6256.67516 } } dps_results: { key: "TestWarlock-AllItems-Gul'dan'sRegalia" value: { - dps: 6945.27529 - tps: 6165.40556 + dps: 7004.52721 + tps: 6202.18998 } } dps_results: { key: "TestWarlock-AllItems-ImpassiveSkyflareDiamond" value: { - dps: 6951.76759 - tps: 6234.33907 + dps: 6948.48271 + tps: 6205.40364 } } dps_results: { key: "TestWarlock-AllItems-ImpassiveStarflareDiamond" value: { - dps: 6947.31906 - tps: 6229.89054 + dps: 6932.8595 + tps: 6187.37018 } } dps_results: { key: "TestWarlock-AllItems-InsightfulEarthsiegeDiamond" value: { - dps: 6933.8285 - tps: 6221.85798 + dps: 6968.32708 + tps: 6222.68924 } } dps_results: { key: "TestWarlock-AllItems-InvigoratingEarthsiegeDiamond" value: { - dps: 6934.7879 - tps: 6217.35939 + dps: 6918.32136 + tps: 6172.83203 } } dps_results: { key: "TestWarlock-AllItems-MaleficRaiment" value: { - dps: 5171.15331 - tps: 4554.52969 + dps: 5214.10168 + tps: 4570.04616 } } dps_results: { key: "TestWarlock-AllItems-PersistentEarthshatterDiamond" value: { - dps: 6934.7879 - tps: 6217.35939 + dps: 6918.32136 + tps: 6172.83203 } } dps_results: { key: "TestWarlock-AllItems-PersistentEarthsiegeDiamond" value: { - dps: 6934.7879 - tps: 6217.35939 + dps: 6918.32136 + tps: 6172.83203 } } dps_results: { key: "TestWarlock-AllItems-PlagueheartGarb" value: { - dps: 6166.72664 - tps: 5511.71982 + dps: 6213.95837 + tps: 5531.64426 } } dps_results: { key: "TestWarlock-AllItems-PowerfulEarthshatterDiamond" value: { - dps: 6934.7879 - tps: 6217.35939 + dps: 6918.32136 + tps: 6172.83203 } } dps_results: { key: "TestWarlock-AllItems-PowerfulEarthsiegeDiamond" value: { - dps: 6934.7879 - tps: 6217.35939 + dps: 6918.32136 + tps: 6172.83203 } } dps_results: { key: "TestWarlock-AllItems-RelentlessEarthsiegeDiamond" value: { - dps: 7025.50323 - tps: 6308.07471 + dps: 7006.88708 + tps: 6261.39775 } } dps_results: { key: "TestWarlock-AllItems-RevitalizingSkyflareDiamond" value: { - dps: 6933.00349 - tps: 6223.01288 + dps: 6935.56505 + tps: 6187.53721 } } dps_results: { key: "TestWarlock-AllItems-SwiftSkyflareDiamond" value: { - dps: 6934.7879 - tps: 6217.35939 + dps: 6918.32136 + tps: 6172.83203 } } dps_results: { key: "TestWarlock-AllItems-SwiftStarflareDiamond" value: { - dps: 6934.7879 - tps: 6217.35939 + dps: 6918.32136 + tps: 6172.83203 } } dps_results: { key: "TestWarlock-AllItems-SwiftWindfireDiamond" value: { - dps: 6934.7879 - tps: 6217.35939 + dps: 6918.32136 + tps: 6172.83203 } } dps_results: { key: "TestWarlock-AllItems-ThunderingSkyflareDiamond" value: { - dps: 6934.7879 - tps: 6217.35939 + dps: 6918.32136 + tps: 6172.83203 } } dps_results: { key: "TestWarlock-AllItems-TirelessSkyflareDiamond" value: { - dps: 6964.63793 - tps: 6250.04029 + dps: 7000.95757 + tps: 6259.34414 } } dps_results: { key: "TestWarlock-AllItems-TirelessStarflareDiamond" value: { - dps: 6950.89267 - tps: 6232.82787 + dps: 6998.48215 + tps: 6251.36227 } } dps_results: { key: "TestWarlock-AllItems-TrenchantEarthshatterDiamond" value: { - dps: 6950.89267 - tps: 6232.82787 + dps: 6998.48215 + tps: 6251.36227 } } dps_results: { key: "TestWarlock-AllItems-TrenchantEarthsiegeDiamond" value: { - dps: 6964.63793 - tps: 6250.04029 + dps: 7000.95757 + tps: 6259.34414 } } dps_results: { key: "TestWarlock-Average-Default" value: { - dps: 7026.61039 - tps: 6310.99214 + dps: 7042.35258 + tps: 6300.55959 } } dps_results: { key: "TestWarlock-Settings-Orc-P1-Affliction Warlock-FullBuffs-LongMultiTarget" value: { - dps: 6129.86966 - tps: 7187.53845 + dps: 6142.93038 + tps: 7169.73753 } } dps_results: { key: "TestWarlock-Settings-Orc-P1-Affliction Warlock-FullBuffs-LongSingleTarget" value: { - dps: 6129.86966 - tps: 5436.59098 + dps: 6142.93038 + tps: 5420.86587 } } dps_results: { key: "TestWarlock-Settings-Orc-P1-Affliction Warlock-FullBuffs-ShortSingleTarget" value: { - dps: 6409.43842 - tps: 5625.28829 + dps: 6408.40705 + tps: 5602.65083 } } dps_results: { key: "TestWarlock-Settings-Orc-P1-Affliction Warlock-NoBuffs-LongMultiTarget" value: { - dps: 3630.44514 - tps: 5481.52355 + dps: 3655.09669 + tps: 5493.82968 } } dps_results: { key: "TestWarlock-Settings-Orc-P1-Affliction Warlock-NoBuffs-LongSingleTarget" value: { - dps: 3630.44514 - tps: 3402.36278 + dps: 3655.09669 + tps: 3414.66891 } } dps_results: { key: "TestWarlock-Settings-Orc-P1-Affliction Warlock-NoBuffs-ShortSingleTarget" value: { - dps: 3378.81738 - tps: 3049.73876 + dps: 3411.19452 + tps: 3064.11409 } } dps_results: { @@ -437,7 +437,7 @@ dps_results: { dps_results: { key: "TestWarlock-SwitchInFrontOfTarget-Default" value: { - dps: 7009.3036 - tps: 6326.58257 + dps: 7004.80674 + tps: 6296.42736 } } diff --git a/sim/warlock/pet_abilities.go b/sim/warlock/pet_abilities.go index af4fbf4f97..bc226387de 100644 --- a/sim/warlock/pet_abilities.go +++ b/sim/warlock/pet_abilities.go @@ -216,7 +216,7 @@ func (wp *WarlockPet) newShadowBite() *core.Spell { baseDamage *= 1 + 0.15*float64(counter) - result := spell.CalcDamage(sim, target, baseDamage, spell.OutcomeMagicHitAndCritBinary) + result := spell.CalcDamage(sim, target, baseDamage, spell.OutcomeMagicHitAndCrit) if impFelhunter && result.Landed() { wp.AddMana(sim, wp.MaxMana()*maxManaMult, petManaMetrics, true) } diff --git a/sim/warrior/protection/TestProtectionWarrior.results b/sim/warrior/protection/TestProtectionWarrior.results index f59f790529..05e4a25355 100644 --- a/sim/warrior/protection/TestProtectionWarrior.results +++ b/sim/warrior/protection/TestProtectionWarrior.results @@ -45,7 +45,7 @@ character_stats_results: { stat_weights_results: { key: "TestProtectionWarrior-StatWeights-Default" value: { - weights: 0.79554 + weights: 0.79543 weights: 0 weights: 0 weights: 0 @@ -56,7 +56,7 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.2045 + weights: 0.20448 weights: 0 weights: 0 weights: 0 @@ -65,12 +65,12 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.10475 + weights: 0.10478 weights: 0 weights: 0 weights: 0 - weights: 0.54013 - weights: -0.12653 + weights: 0.54019 + weights: -0.12733 weights: 0 weights: 0 weights: 0 @@ -600,8 +600,8 @@ dps_results: { dps_results: { key: "TestProtectionWarrior-Average-Default" value: { - dps: 2813.56903 - tps: 7411.64965 + dps: 2814.66157 + tps: 7413.91504 dtps: 95.43257 } } @@ -692,8 +692,8 @@ dps_results: { dps_results: { key: "TestProtectionWarrior-SwitchInFrontOfTarget-Default" value: { - dps: 2958.94956 - tps: 7796.33813 + dps: 2960.37697 + tps: 7799.29786 dtps: 99.39883 } } From ead49258c9336b3f0847228450243236970e720c Mon Sep 17 00:00:00 2001 From: vigo Date: Sun, 2 Oct 2022 22:10:50 +0200 Subject: [PATCH 2/7] (update failing warlock test results) --- sim/warlock/TestWarlock.results | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/sim/warlock/TestWarlock.results b/sim/warlock/TestWarlock.results index 8875d05d32..7e0c49cb65 100644 --- a/sim/warlock/TestWarlock.results +++ b/sim/warlock/TestWarlock.results @@ -45,8 +45,8 @@ character_stats_results: { dps_results: { key: "TestWarlock-AllItems-AshtongueTalismanofShadows-32493" value: { - dps: 7084.43112 - tps: 6352.63961 + dps: 7101.56325 + tps: 6369.72967 } } dps_results: { @@ -59,8 +59,8 @@ dps_results: { dps_results: { key: "TestWarlock-AllItems-BeamingEarthsiegeDiamond" value: { - dps: 6948.48271 - tps: 6205.40364 + dps: 6935.84464 + tps: 6190.35532 } } dps_results: { @@ -73,8 +73,8 @@ dps_results: { dps_results: { key: "TestWarlock-AllItems-ChaoticSkyflareDiamond" value: { - dps: 7039.50643 - tps: 6296.42736 + dps: 7025.98746 + tps: 6280.49813 } } dps_results: { @@ -94,8 +94,8 @@ dps_results: { dps_results: { key: "TestWarlock-AllItems-DestructiveSkyflareDiamond" value: { - dps: 6920.33437 - tps: 6178.615 + dps: 6936.90865 + tps: 6191.41932 } } dps_results: { @@ -115,8 +115,8 @@ dps_results: { dps_results: { key: "TestWarlock-AllItems-EnigmaticSkyflareDiamond" value: { - dps: 6948.48271 - tps: 6205.40364 + dps: 6935.84464 + tps: 6190.35532 } } dps_results: { @@ -164,8 +164,8 @@ dps_results: { dps_results: { key: "TestWarlock-AllItems-ImpassiveSkyflareDiamond" value: { - dps: 6948.48271 - tps: 6205.40364 + dps: 6935.84464 + tps: 6190.35532 } } dps_results: { @@ -304,8 +304,8 @@ dps_results: { dps_results: { key: "TestWarlock-Average-Default" value: { - dps: 7042.35258 - tps: 6300.55959 + dps: 7052.51393 + tps: 6311.08561 } } dps_results: { @@ -437,7 +437,7 @@ dps_results: { dps_results: { key: "TestWarlock-SwitchInFrontOfTarget-Default" value: { - dps: 7004.80674 - tps: 6296.42736 + dps: 6991.31323 + tps: 6280.49813 } } From a19471a7b672ef6c740a8c399bfd5abfd9fbf550 Mon Sep 17 00:00:00 2001 From: James Tanner Date: Mon, 3 Oct 2022 18:31:03 -0700 Subject: [PATCH 3/7] Fix calc for bestial wrath CD --- sim/hunter/talents.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sim/hunter/talents.go b/sim/hunter/talents.go index ba648fe18f..f1209de868 100644 --- a/sim/hunter/talents.go +++ b/sim/hunter/talents.go @@ -465,7 +465,7 @@ func (hunter *Hunter) registerBestialWrathCD() { }, CD: core.Cooldown{ Timer: hunter.NewTimer(), - Duration: hunter.applyLongevity(time.Minute*2) - core.TernaryDuration(hunter.HasMajorGlyph(proto.HunterMajorGlyph_GlyphOfBestialWrath), time.Second*20, 0), + Duration: hunter.applyLongevity(time.Minute*2 - core.TernaryDuration(hunter.HasMajorGlyph(proto.HunterMajorGlyph_GlyphOfBestialWrath), time.Second*20, 0)), }, }, From 7093a7a9dc1b398fe1c816b4b1545cee66c1101f Mon Sep 17 00:00:00 2001 From: JooperGH Date: Tue, 4 Oct 2022 10:28:15 +0100 Subject: [PATCH 4/7] Updated --- ui/deathknight/presets.ts | 150 +++++--------------------------------- ui/deathknight/sim.ts | 1 - 2 files changed, 20 insertions(+), 131 deletions(-) diff --git a/ui/deathknight/presets.ts b/ui/deathknight/presets.ts index 7fbc304c8b..2f468a12d9 100644 --- a/ui/deathknight/presets.ts +++ b/ui/deathknight/presets.ts @@ -562,7 +562,7 @@ export const P1_FROST_PRE_BIS_PRESET = { name: 'Pre-Raid Frost', tooltip: Tooltips.BASIC_BIS_DISCLAIMER, enableWhen: (player: Player) => player.getTalents().howlingBlast, - gear: EquipmentSpec.fromJsonString(`{ "items": [ + gear: EquipmentSpec.fromJsonString(`{ "items": [ { "id": 41386, "enchant": 44879, @@ -572,11 +572,18 @@ export const P1_FROST_PRE_BIS_PRESET = { ] }, { - "id": 37397 + "id": 42645, + "gems": [ + 42142 + ] }, { - "id": 37593, - "enchant": 44871 + "id": 34388, + "enchant": 44871, + "gems": [ + 39996, + 39996 + ] }, { "id": 37647, @@ -606,10 +613,10 @@ export const P1_FROST_PRE_BIS_PRESET = { ] }, { - "id": 37194, + "id": 37171, "gems": [ 39996, - 42142 + 39996 ] }, { @@ -629,10 +636,13 @@ export const P1_FROST_PRE_BIS_PRESET = { ] }, { - "id": 37642 + "id": 42642, + "gems": [ + 39996 + ] }, { - "id": 37151 + "id": 44935 }, { "id": 40684 @@ -641,11 +651,11 @@ export const P1_FROST_PRE_BIS_PRESET = { "id": 42987 }, { - "id": 44250, + "id": 41383, "enchant": 53343 }, { - "id": 44250, + "id": 43611, "enchant": 53344 }, { @@ -753,126 +763,6 @@ export const P1_FROST_BIS_PRESET = { ]}`), }; -export const P1_FROST_GAME_BIS_PRESET = { - name: 'End Game Frost', - tooltip: Tooltips.BASIC_BIS_DISCLAIMER, - enableWhen: (player: Player) => player.getTalents().howlingBlast, - gear: EquipmentSpec.fromJsonString(`{ "items": [ - { - "id": 51312, - "enchant": 44879, - "gems": [ - 41398, - 49110 - ] - }, - { - "id": 54581, - "gems": [ - 40117 - ] - }, - { - "id": 51314, - "enchant": 44871, - "gems": [ - 42153 - ] - }, - { - "id": 47548, - "enchant": 44472, - "gems": [ - 42153 - ] - }, - { - "id": 51310, - "enchant": 44489, - "gems": [ - 42153, - 40117 - ] - }, - { - "id": 50670, - "enchant": 44484, - "gems": [ - 40117, - 0 - ] - }, - { - "id": 50675, - "enchant": 54999, - "gems": [ - 40117, - 40117, - 0 - ] - }, - { - "id": 50620, - "gems": [ - 40117, - 40117, - 40117 - ] - }, - { - "id": 51313, - "enchant": 38374, - "gems": [ - 40117, - 40117 - ] - }, - { - "id": 54578, - "enchant": 55016, - "gems": [ - 40117, - 40117 - ] - }, - { - "id": 50693, - "gems": [ - 40117 - ] - }, - { - "id": 52572, - "gems": [ - 40117 - ] - }, - { - "id": 50363 - }, - { - "id": 54590 - }, - { - "id": 50737, - "enchant": 53343, - "gems": [ - 40117 - ] - }, - { - "id": 50737, - "enchant": 53344, - "gems": [ - 40111 - ] - }, - { - "id": 50459 - } -]}`), -}; - export const P1_BLOOD_BIS_PRESET = { name: 'P1 Blood', toolbar: Tooltips.BASIC_BIS_DISCLAIMER, diff --git a/ui/deathknight/sim.ts b/ui/deathknight/sim.ts index 09ec3e9e93..3aa1013712 100644 --- a/ui/deathknight/sim.ts +++ b/ui/deathknight/sim.ts @@ -175,7 +175,6 @@ export class DeathknightSimUI extends IndividualSimUI { gear: [ Presets.P1_FROST_PRE_BIS_PRESET, Presets.P1_FROST_BIS_PRESET, - Presets.P1_FROST_GAME_BIS_PRESET, Presets.P1_UNHOLY_DW_PRERAID_PRESET, Presets.P1_UNHOLY_DW_BIS_PRESET, Presets.P1_UNHOLY_2H_PRERAID_PRESET, From 6bf74cc834b2568effda39b8c2fde5979b8e13e1 Mon Sep 17 00:00:00 2001 From: Ben Echols Date: Tue, 4 Oct 2022 09:18:21 -0600 Subject: [PATCH 5/7] fix item id for meta requirements on effulgent --- ui/core/proto_utils/gems.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/core/proto_utils/gems.ts b/ui/core/proto_utils/gems.ts index 7d3feb8ecc..483a2f3a71 100644 --- a/ui/core/proto_utils/gems.ts +++ b/ui/core/proto_utils/gems.ts @@ -142,7 +142,7 @@ export const CHAOTIC_SKYFLARE_DIAMOND = MetaGemCondition.fromMinColors(41285, 'R export const DESTRUCTIVE_SKYFLARE_DIAMOND = MetaGemCondition.fromMinColors(41307, 'Requires at least 1 Red Gem, at least 1 Yellow Gem, and at least 1 Blue Gem.', 1, 1, 1); export const EMBER_SKYFLARE_DIAMOND = MetaGemCondition.fromMinColors(41333, 'Requires at least 3 Red Gems.', 3, 0, 0); export const ENIGMATIC_SKYFLARE_DIAMOND = MetaGemCondition.fromMinColors(41335, 'Requires at least 2 Red Gems and at least 1 Yellow Gem.', 2, 1, 0); -export const EFFULGENT_SKYFLARE_DIAMOND = MetaGemCondition.fromMinColors(41337, 'Requires at least 2 Blue Gems and at least 1 Red Gem.', 1, 0, 2); +export const EFFULGENT_SKYFLARE_DIAMOND = MetaGemCondition.fromMinColors(41377, 'Requires at least 2 Blue Gems and at least 1 Red Gem.', 1, 0, 2); export const SWIFT_SKYFLARE_DIAMOND = MetaGemCondition.fromMinColors(41339, 'Requires at least 2 Yellow Gems and at least 1 Red Gem.', 1, 2, 0); export const TIRELESS_SKYFLARE_DIAMOND = MetaGemCondition.fromMinColors(41375, 'Requires at least 1 Red Gem, at least 1 Yellow Gem, and at least 1 Blue Gem.', 1, 1, 1); export const REVITALIZING_SKYFLARE_DIAMOND = MetaGemCondition.fromMinColors(41376, 'Requires at least 2 Red Gems.', 2, 0, 0); From ba34ddb1380e3f341000f3dfebcfad4a0eb5ea12 Mon Sep 17 00:00:00 2001 From: Ben Echols Date: Tue, 4 Oct 2022 09:34:49 -0600 Subject: [PATCH 6/7] added some missing items --- sim/core/items/all_items.go | 3 +++ sim/deathknight/dps/TestFrost.results | 7 +++++++ sim/deathknight/dps/TestUnholy.results | 7 +++++++ sim/druid/balance/TestBalance.results | 7 +++++++ sim/druid/feral/TestFeral.results | 7 +++++++ sim/druid/tank/TestFeralTank.results | 7 +++++++ sim/hunter/TestHunter.results | 7 +++++++ sim/mage/TestArcane.results | 7 +++++++ sim/mage/TestFire.results | 7 +++++++ sim/mage/TestFrost.results | 7 +++++++ sim/paladin/protection/TestProtection.results | 7 +++++++ sim/paladin/retribution/TestRetribution.results | 7 +++++++ sim/priest/healing/TestDisc.results | 8 ++++++++ sim/priest/healing/TestHoly.results | 8 ++++++++ sim/priest/shadow/TestShadow.results | 7 +++++++ sim/priest/smite/TestSmite.results | 7 +++++++ sim/rogue/TestAssassination.results | 7 +++++++ sim/rogue/TestCombat.results | 7 +++++++ sim/shaman/elemental/TestElemental.results | 7 +++++++ sim/shaman/enhancement/TestEnhancement.results | 7 +++++++ sim/warrior/dps/TestArms.results | 7 +++++++ sim/warrior/dps/TestFury.results | 7 +++++++ sim/warrior/protection/TestProtectionWarrior.results | 7 +++++++ tools/generate_items/item_declarations.go | 2 ++ tools/generate_items/writer.go | 3 +++ 25 files changed, 164 insertions(+) diff --git a/sim/core/items/all_items.go b/sim/core/items/all_items.go index 6ed98e0fed..001b46c42b 100644 --- a/sim/core/items/all_items.go +++ b/sim/core/items/all_items.go @@ -1865,6 +1865,7 @@ var Items = []Item{ {Name: "Deadly Gladiator's Wyrmhide Spaulders", ID: 41280, ClassAllowlist: []proto.Class{proto.Class_ClassDruid}, Type: proto.ItemType_ItemTypeShoulder, ArmorType: proto.ArmorType_ArmorTypeLeather, Phase: 1, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 213, Stats: stats.Stats{stats.Stamina: 85, stats.Intellect: 37, stats.SpellPower: 78, stats.SpellCrit: 42, stats.MeleeCrit: 42, stats.Armor: 434, stats.Resilience: 50}, GemSockets: []proto.GemColor{proto.GemColor_GemColorYellow}, SocketBonus: stats.Stats{stats.Spirit: 4}, SetName: "Gladiator's Wildhide"}, {Name: "Deadly Razordarts", ID: 39138, Type: proto.ItemType_ItemTypeRanged, RangedWeaponType: proto.RangedWeaponType_RangedWeaponTypeThrown, WeaponDamageMin: 176.0, WeaponDamageMax: 328.0, SwingSpeed: 1.90, Phase: 1, Quality: proto.ItemQuality_ItemQualityUncommon, Ilvl: 174, Stats: stats.Stats{stats.Agility: 17, stats.SpellCrit: 16, stats.MeleeCrit: 16, stats.Dodge: 14}}, {Name: "Deadly Saronite Dirk", ID: 41245, Type: proto.ItemType_ItemTypeRanged, RangedWeaponType: proto.RangedWeaponType_RangedWeaponTypeThrown, WeaponDamageMin: 168.0, WeaponDamageMax: 314.0, SwingSpeed: 1.70, Phase: 1, Quality: proto.ItemQuality_ItemQualityRare, Ilvl: 171, Stats: stats.Stats{stats.SpellHit: 17, stats.MeleeHit: 17, stats.Expertise: 27}}, + {Name: "Death Knight's Anguish", ID: 38212, Type: proto.ItemType_ItemTypeTrinket, Phase: 0, Quality: proto.ItemQuality_ItemQualityUncommon, Ilvl: 138, Stats: stats.Stats{stats.SpellCrit: 31, stats.MeleeCrit: 31}}, {Name: "Death Surgeon's Sleeves", ID: 50032, Type: proto.ItemType_ItemTypeWrist, ArmorType: proto.ArmorType_ArmorTypeCloth, Phase: 4, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 264, Stats: stats.Stats{stats.Stamina: 69, stats.Intellect: 69, stats.Spirit: 60, stats.SpellPower: 106, stats.SpellCrit: 60, stats.MeleeCrit: 60, stats.Armor: 155}, GemSockets: []proto.GemColor{proto.GemColor_GemColorBlue}, SocketBonus: stats.Stats{stats.SpellPower: 5}}, {Name: "Death Surgeon's Sleeves", ID: 50686, Type: proto.ItemType_ItemTypeWrist, ArmorType: proto.ArmorType_ArmorTypeCloth, Phase: 4, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 277, Stats: stats.Stats{stats.Stamina: 78, stats.Intellect: 78, stats.Spirit: 68, stats.SpellPower: 119, stats.SpellCrit: 68, stats.MeleeCrit: 68, stats.Armor: 162}, GemSockets: []proto.GemColor{proto.GemColor_GemColorBlue}, SocketBonus: stats.Stats{stats.SpellPower: 5}, Heroic: true}, {Name: "Death's Bite", ID: 39417, Type: proto.ItemType_ItemTypeWeapon, WeaponType: proto.WeaponType_WeaponTypeAxe, HandType: proto.HandType_HandTypeTwoHand, WeaponDamageMin: 554.0, WeaponDamageMax: 831.0, SwingSpeed: 3.40, Phase: 1, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 213, Stats: stats.Stats{stats.Strength: 101, stats.Stamina: 114, stats.SpellHit: 62, stats.SpellCrit: 90, stats.MeleeHit: 62, stats.MeleeCrit: 90}}, @@ -6931,6 +6932,7 @@ var Items = []Item{ {Name: "Terrorblade Legplates", ID: 46291, ClassAllowlist: []proto.Class{proto.Class_ClassRogue}, Type: proto.ItemType_ItemTypeLegs, ArmorType: proto.ArmorType_ArmorTypeLeather, Phase: 2, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 219, Stats: stats.Stats{stats.Agility: 94, stats.Stamina: 83, stats.SpellCrit: 62, stats.SpellHaste: 66, stats.AttackPower: 152, stats.MeleeCrit: 62, stats.MeleeHaste: 66, stats.Armor: 511, stats.RangedAttackPower: 152}, GemSockets: []proto.GemColor{proto.GemColor_GemColorRed, proto.GemColor_GemColorYellow}, SocketBonus: stats.Stats{stats.Agility: 6}, SetName: "Terrorblade Battlegear"}, {Name: "Terrorblade Pauldrons", ID: 46292, ClassAllowlist: []proto.Class{proto.Class_ClassRogue}, Type: proto.ItemType_ItemTypeShoulder, ArmorType: proto.ArmorType_ArmorTypeLeather, Phase: 2, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 219, Stats: stats.Stats{stats.Agility: 79, stats.Stamina: 69, stats.SpellHit: 52, stats.SpellCrit: 36, stats.AttackPower: 114, stats.MeleeHit: 52, stats.MeleeCrit: 36, stats.Armor: 438, stats.RangedAttackPower: 114}, GemSockets: []proto.GemColor{proto.GemColor_GemColorRed}, SocketBonus: stats.Stats{stats.AttackPower: 8, stats.RangedAttackPower: 8}, SetName: "Terrorblade Battlegear"}, {Name: "Thalassian Ranger Gauntlets", ID: 34343, Type: proto.ItemType_ItemTypeHands, ArmorType: proto.ArmorType_ArmorTypeMail, Phase: 1, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 164, Stats: stats.Stats{stats.Agility: 40, stats.Stamina: 43, stats.Intellect: 27, stats.SpellCrit: 23, stats.AttackPower: 80, stats.MeleeCrit: 23, stats.ArmorPenetration: 26, stats.Armor: 715, stats.RangedAttackPower: 80}, GemSockets: []proto.GemColor{proto.GemColor_GemColorRed, proto.GemColor_GemColorYellow}, SocketBonus: stats.Stats{stats.Agility: 3}}, + {Name: "Thalassian Wildercloak", ID: 29994, Type: proto.ItemType_ItemTypeBack, Phase: 1, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 138, Stats: stats.Stats{stats.Agility: 28, stats.Stamina: 28, stats.AttackPower: 68, stats.Armor: 116, stats.RangedAttackPower: 68}}, {Name: "Thane's Restraints", ID: 43980, Type: proto.ItemType_ItemTypeWrist, ArmorType: proto.ArmorType_ArmorTypeMail, Phase: 1, Quality: proto.ItemQuality_ItemQualityUncommon, Ilvl: 174, Stats: stats.Stats{stats.Agility: 10, stats.Stamina: 30, stats.AttackPower: 78, stats.Armor: 387, stats.RangedAttackPower: 78}, GemSockets: []proto.GemColor{proto.GemColor_GemColorRed}, SocketBonus: stats.Stats{stats.Agility: 4}}, {Name: "Thane's Tainted Greathelm", ID: 39395, Type: proto.ItemType_ItemTypeHead, ArmorType: proto.ArmorType_ArmorTypePlate, Phase: 1, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 200, Stats: stats.Stats{stats.Strength: 73, stats.Stamina: 111, stats.Armor: 1821, stats.Defense: 40, stats.Dodge: 39, stats.Parry: 44}, GemSockets: []proto.GemColor{proto.GemColor_GemColorMeta, proto.GemColor_GemColorYellow}, SocketBonus: stats.Stats{stats.Defense: 8}}, {Name: "Thane-Reaper's Signet", ID: 38749, Type: proto.ItemType_ItemTypeFinger, Phase: 0, Quality: proto.ItemQuality_ItemQualityUncommon, Ilvl: 154, Stats: stats.Stats{stats.Stamina: 33, stats.SpellHit: 22, stats.AttackPower: 62, stats.MeleeHit: 22, stats.RangedAttackPower: 62}}, @@ -7368,6 +7370,7 @@ var Items = []Item{ {Name: "True-aim Long Rifle", ID: 47568, Type: proto.ItemType_ItemTypeRanged, RangedWeaponType: proto.RangedWeaponType_RangedWeaponTypeGun, WeaponDamageMin: 309.0, WeaponDamageMax: 575.0, SwingSpeed: 3.00, Phase: 3, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 219, Stats: stats.Stats{stats.Agility: 106, stats.Stamina: 111, stats.AttackPower: 131, stats.ArmorPenetration: 106, stats.RangedAttackPower: 131}}, {Name: "Trueheart Girdle", ID: 47510, Type: proto.ItemType_ItemTypeWaist, ArmorType: proto.ArmorType_ArmorTypePlate, Phase: 3, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 219, Stats: stats.Stats{stats.Stamina: 60, stats.Intellect: 60, stats.SpellPower: 92, stats.SpellCrit: 56, stats.SpellHaste: 46, stats.MeleeCrit: 56, stats.MeleeHaste: 46, stats.Armor: 1306}, GemSockets: []proto.GemColor{proto.GemColor_GemColorYellow}, SocketBonus: stats.Stats{stats.SpellHaste: 4, stats.MeleeHaste: 4}}, {Name: "Truesight Ice Blinders", ID: 42551, Type: proto.ItemType_ItemTypeHead, ArmorType: proto.ArmorType_ArmorTypeMail, Phase: 1, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 200, Stats: stats.Stats{stats.Agility: 74, stats.Stamina: 90, stats.Intellect: 42, stats.SpellCrit: 44, stats.AttackPower: 120, stats.MeleeCrit: 44, stats.Armor: 1019, stats.RangedAttackPower: 120}, GemSockets: []proto.GemColor{proto.GemColor_GemColorMeta, proto.GemColor_GemColorYellow}, SocketBonus: stats.Stats{stats.SpellCrit: 8, stats.MeleeCrit: 8}}, + {Name: "Tsunami Talisman", ID: 30627, Type: proto.ItemType_ItemTypeTrinket, Phase: 1, Quality: proto.ItemQuality_ItemQualityEpic, Unique: true, Ilvl: 128, Stats: stats.Stats{stats.SpellHit: 10, stats.SpellCrit: 38, stats.MeleeHit: 10, stats.MeleeCrit: 38}}, {Name: "Tundra Pauldrons", ID: 43184, Type: proto.ItemType_ItemTypeShoulder, ArmorType: proto.ArmorType_ArmorTypePlate, Phase: 0, Quality: proto.ItemQuality_ItemQualityRare, Ilvl: 155, Stats: stats.Stats{stats.Strength: 37, stats.Stamina: 56, stats.Armor: 1315, stats.Defense: 24, stats.BlockValue: 51, stats.Dodge: 25}}, {Name: "Tundra Tracker's Shoulderguards", ID: 43183, Type: proto.ItemType_ItemTypeShoulder, ArmorType: proto.ArmorType_ArmorTypeMail, Phase: 0, Quality: proto.ItemQuality_ItemQualityRare, Ilvl: 155, Stats: stats.Stats{stats.Agility: 37, stats.Stamina: 36, stats.SpellHaste: 24, stats.AttackPower: 72, stats.MeleeHaste: 24, stats.Armor: 736, stats.RangedAttackPower: 72}}, {Name: "Tundra Wolf Boots", ID: 37070, Type: proto.ItemType_ItemTypeFeet, ArmorType: proto.ArmorType_ArmorTypeLeather, Phase: 1, Quality: proto.ItemQuality_ItemQualityRare, Ilvl: 187, Stats: stats.Stats{stats.Stamina: 39, stats.Intellect: 38, stats.SpellPower: 60, stats.SpellCrit: 51, stats.MeleeCrit: 51, stats.Armor: 362}}, diff --git a/sim/deathknight/dps/TestFrost.results b/sim/deathknight/dps/TestFrost.results index 9158a388db..9ee007dc90 100644 --- a/sim/deathknight/dps/TestFrost.results +++ b/sim/deathknight/dps/TestFrost.results @@ -154,6 +154,13 @@ dps_results: { tps: 4443.26719 } } +dps_results: { + key: "TestFrost-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 7674.92847 + tps: 4560.33185 + } +} dps_results: { key: "TestFrost-AllItems-Defender'sCode-40257" value: { diff --git a/sim/deathknight/dps/TestUnholy.results b/sim/deathknight/dps/TestUnholy.results index 53dc24fa9f..ccc2e2ca96 100644 --- a/sim/deathknight/dps/TestUnholy.results +++ b/sim/deathknight/dps/TestUnholy.results @@ -154,6 +154,13 @@ dps_results: { tps: 6116.99153 } } +dps_results: { + key: "TestUnholy-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 7108.16188 + tps: 5748.15214 + } +} dps_results: { key: "TestUnholy-AllItems-Defender'sCode-40257" value: { diff --git a/sim/druid/balance/TestBalance.results b/sim/druid/balance/TestBalance.results index aa99f0725e..99fc9caa56 100644 --- a/sim/druid/balance/TestBalance.results +++ b/sim/druid/balance/TestBalance.results @@ -133,6 +133,13 @@ dps_results: { tps: 7089.20389 } } +dps_results: { + key: "TestBalance-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 7126.55241 + tps: 6949.07671 + } +} dps_results: { key: "TestBalance-AllItems-Defender'sCode-40257" value: { diff --git a/sim/druid/feral/TestFeral.results b/sim/druid/feral/TestFeral.results index 6f00f69604..e60ebdd11b 100644 --- a/sim/druid/feral/TestFeral.results +++ b/sim/druid/feral/TestFeral.results @@ -126,6 +126,13 @@ dps_results: { tps: 5804.61398 } } +dps_results: { + key: "TestFeral-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 7487.14747 + tps: 5690.49844 + } +} dps_results: { key: "TestFeral-AllItems-Defender'sCode-40257" value: { diff --git a/sim/druid/tank/TestFeralTank.results b/sim/druid/tank/TestFeralTank.results index d55b8d56e5..5aa0fb6197 100644 --- a/sim/druid/tank/TestFeralTank.results +++ b/sim/druid/tank/TestFeralTank.results @@ -133,6 +133,13 @@ dps_results: { tps: 1543.71045 } } +dps_results: { + key: "TestFeralTank-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 1134.20551 + tps: 1544.89214 + } +} dps_results: { key: "TestFeralTank-AllItems-Defender'sCode-40257" value: { diff --git a/sim/hunter/TestHunter.results b/sim/hunter/TestHunter.results index 2d2555014e..2b76212cf5 100644 --- a/sim/hunter/TestHunter.results +++ b/sim/hunter/TestHunter.results @@ -154,6 +154,13 @@ dps_results: { tps: 5682.44232 } } +dps_results: { + key: "TestHunter-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 6678.10806 + tps: 5670.5178 + } +} dps_results: { key: "TestHunter-AllItems-Defender'sCode-40257" value: { diff --git a/sim/mage/TestArcane.results b/sim/mage/TestArcane.results index 901bce56c0..72a0602acb 100644 --- a/sim/mage/TestArcane.results +++ b/sim/mage/TestArcane.results @@ -126,6 +126,13 @@ dps_results: { tps: 4036.06339 } } +dps_results: { + key: "TestArcane-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 6649.57406 + tps: 3986.86513 + } +} dps_results: { key: "TestArcane-AllItems-Defender'sCode-40257" value: { diff --git a/sim/mage/TestFire.results b/sim/mage/TestFire.results index 0b219f8bff..0cbe30c959 100644 --- a/sim/mage/TestFire.results +++ b/sim/mage/TestFire.results @@ -126,6 +126,13 @@ dps_results: { tps: 4175.6232 } } +dps_results: { + key: "TestFire-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 5826.14645 + tps: 4196.12131 + } +} dps_results: { key: "TestFire-AllItems-Defender'sCode-40257" value: { diff --git a/sim/mage/TestFrost.results b/sim/mage/TestFrost.results index 85f9f811bc..7fd17502ad 100644 --- a/sim/mage/TestFrost.results +++ b/sim/mage/TestFrost.results @@ -126,6 +126,13 @@ dps_results: { tps: 3653.61979 } } +dps_results: { + key: "TestFrost-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 4307.00598 + tps: 3623.31122 + } +} dps_results: { key: "TestFrost-AllItems-Defender'sCode-40257" value: { diff --git a/sim/paladin/protection/TestProtection.results b/sim/paladin/protection/TestProtection.results index b01adc088f..9cd8fb9a14 100644 --- a/sim/paladin/protection/TestProtection.results +++ b/sim/paladin/protection/TestProtection.results @@ -168,6 +168,13 @@ dps_results: { tps: 3702.08231 } } +dps_results: { + key: "TestProtection-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 1638.63002 + tps: 3775.83143 + } +} dps_results: { key: "TestProtection-AllItems-Defender'sCode-40257" value: { diff --git a/sim/paladin/retribution/TestRetribution.results b/sim/paladin/retribution/TestRetribution.results index 0d19319c02..de4e683035 100644 --- a/sim/paladin/retribution/TestRetribution.results +++ b/sim/paladin/retribution/TestRetribution.results @@ -154,6 +154,13 @@ dps_results: { tps: 5650.78027 } } +dps_results: { + key: "TestRetribution-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 5598.80308 + tps: 5697.2056 + } +} dps_results: { key: "TestRetribution-AllItems-Defender'sCode-40257" value: { diff --git a/sim/priest/healing/TestDisc.results b/sim/priest/healing/TestDisc.results index 95593cbe49..36b9b339f2 100644 --- a/sim/priest/healing/TestDisc.results +++ b/sim/priest/healing/TestDisc.results @@ -162,6 +162,14 @@ dps_results: { hps: 5663.93966 } } +dps_results: { + key: "TestDisc-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 126.05665 + tps: 55.03076 + hps: 5611.10528 + } +} dps_results: { key: "TestDisc-AllItems-Defender'sCode-40257" value: { diff --git a/sim/priest/healing/TestHoly.results b/sim/priest/healing/TestHoly.results index 1319c073dd..35c31be8a7 100644 --- a/sim/priest/healing/TestHoly.results +++ b/sim/priest/healing/TestHoly.results @@ -162,6 +162,14 @@ dps_results: { hps: 4565.68858 } } +dps_results: { + key: "TestHoly-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 129.54401 + tps: 48.911 + hps: 4456.30257 + } +} dps_results: { key: "TestHoly-AllItems-Defender'sCode-40257" value: { diff --git a/sim/priest/shadow/TestShadow.results b/sim/priest/shadow/TestShadow.results index 144c5ff1e2..82bfaa4647 100644 --- a/sim/priest/shadow/TestShadow.results +++ b/sim/priest/shadow/TestShadow.results @@ -147,6 +147,13 @@ dps_results: { tps: 3599.99281 } } +dps_results: { + key: "TestShadow-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 4442.18303 + tps: 3380.47453 + } +} dps_results: { key: "TestShadow-AllItems-Defender'sCode-40257" value: { diff --git a/sim/priest/smite/TestSmite.results b/sim/priest/smite/TestSmite.results index 55b5a6024c..77063744c2 100644 --- a/sim/priest/smite/TestSmite.results +++ b/sim/priest/smite/TestSmite.results @@ -147,6 +147,13 @@ dps_results: { tps: 2407.65938 } } +dps_results: { + key: "TestSmite-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 2899.46035 + tps: 2443.38885 + } +} dps_results: { key: "TestSmite-AllItems-Defender'sCode-40257" value: { diff --git a/sim/rogue/TestAssassination.results b/sim/rogue/TestAssassination.results index 2dfa2505df..b1557deba0 100644 --- a/sim/rogue/TestAssassination.results +++ b/sim/rogue/TestAssassination.results @@ -126,6 +126,13 @@ dps_results: { tps: 5218.99316 } } +dps_results: { + key: "TestAssassination-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 7310.93763 + tps: 5190.76571 + } +} dps_results: { key: "TestAssassination-AllItems-Defender'sCode-40257" value: { diff --git a/sim/rogue/TestCombat.results b/sim/rogue/TestCombat.results index 0be9179aca..9d726d0209 100644 --- a/sim/rogue/TestCombat.results +++ b/sim/rogue/TestCombat.results @@ -126,6 +126,13 @@ dps_results: { tps: 4563.77179 } } +dps_results: { + key: "TestCombat-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 6390.98412 + tps: 4537.59872 + } +} dps_results: { key: "TestCombat-AllItems-Defender'sCode-40257" value: { diff --git a/sim/shaman/elemental/TestElemental.results b/sim/shaman/elemental/TestElemental.results index 9f34486ac7..842ab0f688 100644 --- a/sim/shaman/elemental/TestElemental.results +++ b/sim/shaman/elemental/TestElemental.results @@ -191,6 +191,13 @@ dps_results: { tps: 3110.73341 } } +dps_results: { + key: "TestElemental-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 4044.24367 + tps: 3106.64546 + } +} dps_results: { key: "TestElemental-AllItems-Defender'sCode-40257" value: { diff --git a/sim/shaman/enhancement/TestEnhancement.results b/sim/shaman/enhancement/TestEnhancement.results index 4c6f1bdb0a..6d26b22537 100644 --- a/sim/shaman/enhancement/TestEnhancement.results +++ b/sim/shaman/enhancement/TestEnhancement.results @@ -147,6 +147,13 @@ dps_results: { tps: 3755.02991 } } +dps_results: { + key: "TestEnhancement-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 6676.86424 + tps: 3758.19152 + } +} dps_results: { key: "TestEnhancement-AllItems-Defender'sCode-40257" value: { diff --git a/sim/warrior/dps/TestArms.results b/sim/warrior/dps/TestArms.results index 06aa3de624..ed2add99f4 100644 --- a/sim/warrior/dps/TestArms.results +++ b/sim/warrior/dps/TestArms.results @@ -140,6 +140,13 @@ dps_results: { tps: 6542.64066 } } +dps_results: { + key: "TestArms-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 8122.76725 + tps: 6666.30734 + } +} dps_results: { key: "TestArms-AllItems-Defender'sCode-40257" value: { diff --git a/sim/warrior/dps/TestFury.results b/sim/warrior/dps/TestFury.results index 6d3ba2af8a..ffdb352ad9 100644 --- a/sim/warrior/dps/TestFury.results +++ b/sim/warrior/dps/TestFury.results @@ -140,6 +140,13 @@ dps_results: { tps: 4849.38942 } } +dps_results: { + key: "TestFury-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 6650.99784 + tps: 4892.63388 + } +} dps_results: { key: "TestFury-AllItems-Defender'sCode-40257" value: { diff --git a/sim/warrior/protection/TestProtectionWarrior.results b/sim/warrior/protection/TestProtectionWarrior.results index 05e4a25355..aa9f4dc5ac 100644 --- a/sim/warrior/protection/TestProtectionWarrior.results +++ b/sim/warrior/protection/TestProtectionWarrior.results @@ -191,6 +191,13 @@ dps_results: { tps: 5651.66461 } } +dps_results: { + key: "TestProtectionWarrior-AllItems-DeathKnight'sAnguish-38212" + value: { + dps: 1927.79542 + tps: 5611.81381 + } +} dps_results: { key: "TestProtectionWarrior-AllItems-DestructiveSkyflareDiamond" value: { diff --git a/tools/generate_items/item_declarations.go b/tools/generate_items/item_declarations.go index 0dfe430bfe..460b023f8b 100644 --- a/tools/generate_items/item_declarations.go +++ b/tools/generate_items/item_declarations.go @@ -71,6 +71,8 @@ var ItemDeclarationOverrides = []ItemDeclaration{ {ID: 28657, HandType: proto.HandType_HandTypeOneHand}, {ID: 28767, HandType: proto.HandType_HandTypeOneHand}, + {ID: 29994}, // Wildercloak + // Include the items we want icons for here. {ID: 43005}, // Pet foods {ID: 33874}, // diff --git a/tools/generate_items/writer.go b/tools/generate_items/writer.go index 1ee7933d5d..2f85ade7a3 100644 --- a/tools/generate_items/writer.go +++ b/tools/generate_items/writer.go @@ -316,6 +316,9 @@ var denyListNameRegexes = []*regexp.Regexp{ // allowList allows overriding to allow an item var allowList = map[int]bool{ + 29994: true, // Thalassian Wildercloak + 30627: true, // Tsunami Talisman + 38212: true, // Death Knight's Anguish 11815: true, // Hand of Justice 12590: true, // Felstriker 12632: true, // Storm Gauntlets From 380fbaca1defae06fd613604758c7b43818bf80c Mon Sep 17 00:00:00 2001 From: dbyena Date: Tue, 4 Oct 2022 08:39:48 -0700 Subject: [PATCH 7/7] MF Bug added to the sim. Will remove when bug is fixed --- sim/priest/mind_flay.go | 34 +++++++++++++++++++++++++++- sim/priest/shadow/TestShadow.results | 4 ++-- sim/priest/shadow/rotation.go | 16 +++++++++++++ 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/sim/priest/mind_flay.go b/sim/priest/mind_flay.go index c19fa6ab79..f6cdb946dd 100644 --- a/sim/priest/mind_flay.go +++ b/sim/priest/mind_flay.go @@ -19,6 +19,15 @@ func (priest *Priest) newMindFlaySpell(numTicks int) *core.Spell { baseCost := priest.BaseMana * 0.09 channelTime := time.Second * time.Duration(numTicks) + for _, gem := range priest.Equip[proto.ItemSlot_ItemSlotHead].Gems { + if gem.ID == 25895 || gem.ID == 41335 { + channelTime = channelTime - time.Duration(numTicks)*(time.Millisecond*100) + } + } + // ADDED TROLL MF BUG 15% REDUCED CHANNEL TIME DUE TO DA VOODOO SHUFFLE + if priest.GetCharacter().Race == proto.Race_RaceTroll { + channelTime = channelTime - time.Duration(numTicks)*(time.Millisecond*150) + } if priest.HasSetBonus(ItemSetCrimsonAcolyte, 4) { channelTime = channelTime - time.Duration(numTicks)*(time.Millisecond*170) } @@ -86,6 +95,20 @@ func (priest *Priest) newMindFlayDot(numTicks int) *core.Dot { normMod := 1 + float64(priest.Talents.Darkness)*0.02 + float64(priest.Talents.TwinDisciplines)*0.01 // initialize modifier var mfReducTime time.Duration + // ADDED Bug where root resist gem reduces MF by 10% + // ADDED TROLL MF BUG 15% REDUCED CHANNEL TIME DUE TO DA VOODOO SHUFFLE + if priest.GetCharacter().Race == proto.Race_RaceTroll { + mfReducTime = time.Millisecond * 150 + } + + for _, gem := range priest.Equip[proto.ItemSlot_ItemSlotHead].Gems { + if gem.ID == 25895 || gem.ID == 41335 { + mfReducTime = time.Millisecond * 100 + if priest.GetCharacter().Race == proto.Race_RaceTroll { + mfReducTime = time.Millisecond*150 + time.Millisecond*100 + } + } + } if priest.HasSetBonus(ItemSetCrimsonAcolyte, 4) { mfReducTime = time.Millisecond * 170 } @@ -144,5 +167,14 @@ func (priest *Priest) newMindFlayDot(numTicks int) *core.Dot { } func (priest *Priest) MindFlayTickDuration() time.Duration { - return priest.ApplyCastSpeed(time.Second - core.TernaryDuration(priest.T10FourSetBonus, time.Millisecond*170, 0)) + mfReducTime := time.Millisecond * 0 + for _, gem := range priest.Equip[proto.ItemSlot_ItemSlotHead].Gems { + if gem.ID == 25895 || gem.ID == 41335 { + mfReducTime = time.Millisecond * 100 + if priest.GetCharacter().Race == proto.Race_RaceTroll { + mfReducTime = time.Millisecond*150 + time.Millisecond*100 + } + } + } + return priest.ApplyCastSpeed(time.Second - core.TernaryDuration(priest.T10FourSetBonus, time.Millisecond*170, 0) - core.TernaryDuration(priest.GetCharacter().Race == proto.Race_RaceTroll, time.Millisecond*150, 0) - mfReducTime) } diff --git a/sim/priest/shadow/TestShadow.results b/sim/priest/shadow/TestShadow.results index 144c5ff1e2..60503bd03c 100644 --- a/sim/priest/shadow/TestShadow.results +++ b/sim/priest/shadow/TestShadow.results @@ -178,8 +178,8 @@ dps_results: { dps_results: { key: "TestShadow-AllItems-EnigmaticSkyflareDiamond" value: { - dps: 4567.06306 - tps: 3471.94338 + dps: 4691.41308 + tps: 3564.6456 } } dps_results: { diff --git a/sim/priest/shadow/rotation.go b/sim/priest/shadow/rotation.go index 83c4006a4e..d74c7d2c18 100644 --- a/sim/priest/shadow/rotation.go +++ b/sim/priest/shadow/rotation.go @@ -699,6 +699,22 @@ func (spriest *ShadowPriest) tryUseGCD(sim *core.Simulation) { return } + if numTicks == 3 { + // IF TROLL IS ALSO USING STUN RESIST META GEM, THEN THEY LOSE THE LAST TICK OF MF + reduc1 := 0 + reduc2 := 0 + for _, gem := range spriest.Equip[proto.ItemSlot_ItemSlotHead].Gems { + if gem.ID == 25895 || gem.ID == 41335 { + reduc1 = 1 + if spriest.GetCharacter().Race == proto.Race_RaceTroll { + reduc2 = 1 + } + } + } + if reduc1+reduc2 == 2 { + numTicks = numTicks - 1 + } + } spell = spriest.MindFlay[numTicks] } else {