diff --git a/sim/death_knight/frost/TestFrost.results b/sim/death_knight/frost/TestFrost.results index 8ed8a069cb..ac59202e87 100644 --- a/sim/death_knight/frost/TestFrost.results +++ b/sim/death_knight/frost/TestFrost.results @@ -320,7 +320,7 @@ dps_results: { value: { dps: 21998.53427 tps: 19961.6477 - hps: 245.25882 + hps: 245.25883 } } dps_results: { @@ -336,7 +336,7 @@ dps_results: { value: { dps: 21944.09428 tps: 20055.84482 - hps: 245.25882 + hps: 245.25883 } } dps_results: { @@ -344,7 +344,7 @@ dps_results: { value: { dps: 21351.64308 tps: 19499.4618 - hps: 245.25882 + hps: 245.25883 } } dps_results: { @@ -368,7 +368,7 @@ dps_results: { value: { dps: 21150.92099 tps: 19199.08409 - hps: 245.25882 + hps: 245.25883 } } dps_results: { @@ -1024,7 +1024,7 @@ dps_results: { value: { dps: 20899.85176 tps: 19038.60319 - hps: 245.25882 + hps: 245.25883 } } dps_results: { diff --git a/sim/hunter/beast_mastery/TestBM.results b/sim/hunter/beast_mastery/TestBM.results index 104356c2f8..d5a7cbfde4 100644 --- a/sim/hunter/beast_mastery/TestBM.results +++ b/sim/hunter/beast_mastery/TestBM.results @@ -487,8 +487,8 @@ dps_results: { dps_results: { key: "TestBM-AllItems-Flamewaker'sBattlegear" value: { - dps: 22901.40754 - tps: 19274.16058 + dps: 22901.28393 + tps: 19273.40391 } } dps_results: { diff --git a/sim/hunter/hunter.go b/sim/hunter/hunter.go index 410b55a11b..bb2ab4bba6 100644 --- a/sim/hunter/hunter.go +++ b/sim/hunter/hunter.go @@ -245,8 +245,7 @@ const ( HunterSpellBestialWrath HunterPetFocusDump HunterSpellsTierTwelve = HunterSpellArcaneShot | HunterSpellKillCommand | HunterSpellChimeraShot | HunterSpellExplosiveShot | - HunterSpellBlackArrow | HunterSpellMultiShot | HunterSpellAimedShot | - HunterSpellSerpentSting + HunterSpellMultiShot | HunterSpellAimedShot HunterSpellsAll = HunterSpellSteadyShot | HunterSpellCobraShot | HunterSpellArcaneShot | HunterSpellKillCommand | HunterSpellChimeraShot | HunterSpellExplosiveShot | HunterSpellExplosiveTrap | HunterSpellBlackArrow | HunterSpellMultiShot | HunterSpellAimedShot | diff --git a/sim/hunter/survival/TestSV.results b/sim/hunter/survival/TestSV.results index ee87102800..d101ea20d5 100644 --- a/sim/hunter/survival/TestSV.results +++ b/sim/hunter/survival/TestSV.results @@ -487,8 +487,8 @@ dps_results: { dps_results: { key: "TestSV-AllItems-Flamewaker'sBattlegear" value: { - dps: 26578.98545 - tps: 24005.0804 + dps: 26633.74628 + tps: 24069.21807 } } dps_results: { diff --git a/ui/core/proto_utils/gear.ts b/ui/core/proto_utils/gear.ts index e2714d20f1..3f6ca3bae6 100644 --- a/ui/core/proto_utils/gear.ts +++ b/ui/core/proto_utils/gear.ts @@ -360,6 +360,18 @@ export class Gear extends BaseGear { getFailedProfessionRequirements(professions: Array): Array { return (this.asArray().filter(ei => ei != null) as Array).map(ei => ei.getFailedProfessionRequirements(professions)).flat(); } + getItemSetCount(name: string) { + if (!name) return 0; + + const validSetItemSlots = [ItemSlot.ItemSlotHead, ItemSlot.ItemSlotShoulder, ItemSlot.ItemSlotChest, ItemSlot.ItemSlotHands, ItemSlot.ItemSlotLegs]; + let setItemCount = 0; + for (const slot of validSetItemSlots) { + const item = this.getEquippedItem(slot); + if (item?.item?.setName === name) setItemCount++; + } + + return setItemCount; + } } /** diff --git a/ui/hunter/survival/presets.ts b/ui/hunter/survival/presets.ts index 289b26e2fa..3bb46be3f6 100644 --- a/ui/hunter/survival/presets.ts +++ b/ui/hunter/survival/presets.ts @@ -44,7 +44,6 @@ export const P1_EP_PRESET = PresetUtils.makePresetEpWeights( { [Stat.StatStamina]: 0.5, [Stat.StatAgility]: 3.27, - [Stat.StatIntellect]: 1.1, [Stat.StatRangedAttackPower]: 1.0, [Stat.StatHitRating]: 2.16, [Stat.StatCritRating]: 1.17, @@ -57,6 +56,24 @@ export const P1_EP_PRESET = PresetUtils.makePresetEpWeights( ), ); +export const P2_EP_PRESET = PresetUtils.makePresetEpWeights( + 'SV P2 (T12 4 set)', + Stats.fromMap( + { + [Stat.StatStamina]: 0.5, + [Stat.StatAgility]: 3.37, + [Stat.StatRangedAttackPower]: 1.0, + [Stat.StatHitRating]: 2.56, + [Stat.StatCritRating]: 1.27, + [Stat.StatHasteRating]: 0.94, + [Stat.StatMasteryRating]: 1.04, + }, + { + [PseudoStat.PseudoStatRangedDps]: 4.16, + }, + ), +); + // Default talents. Uses the wowhead calculator format, make the talents on // https://wowhead.com/wotlk/talent-calc and copy the numbers in the url. diff --git a/ui/hunter/survival/sim.ts b/ui/hunter/survival/sim.ts index ec592e6b5e..e6213a4761 100644 --- a/ui/hunter/survival/sim.ts +++ b/ui/hunter/survival/sim.ts @@ -37,24 +37,22 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecSurvivalHunter, { warnings: [], // All stats for which EP should be calculated. - epStats: [Stat.StatStamina, Stat.StatAgility, Stat.StatRangedAttackPower, Stat.StatHitRating, Stat.StatCritRating, Stat.StatHasteRating, Stat.StatMasteryRating], + epStats: [ + Stat.StatStamina, + Stat.StatAgility, + Stat.StatRangedAttackPower, + Stat.StatHitRating, + Stat.StatCritRating, + Stat.StatHasteRating, + Stat.StatMasteryRating, + ], epPseudoStats: [PseudoStat.PseudoStatRangedDps], // Reference stat against which to calculate EP. epReferenceStat: Stat.StatRangedAttackPower, // Which stats to display in the Character Stats section, at the bottom of the left-hand sidebar. displayStats: UnitStat.createDisplayStatArray( - [ - Stat.StatHealth, - Stat.StatStamina, - Stat.StatAgility, - Stat.StatRangedAttackPower, - Stat.StatMasteryRating, - ], - [ - PseudoStat.PseudoStatPhysicalHitPercent, - PseudoStat.PseudoStatPhysicalCritPercent, - PseudoStat.PseudoStatRangedHastePercent, - ], + [Stat.StatHealth, Stat.StatStamina, Stat.StatAgility, Stat.StatRangedAttackPower, Stat.StatMasteryRating], + [PseudoStat.PseudoStatPhysicalHitPercent, PseudoStat.PseudoStatPhysicalCritPercent, PseudoStat.PseudoStatRangedHastePercent], ), modifyDisplayStats: (player: Player) => { return sharedHunterDisplayStatsModifiers(player); @@ -248,7 +246,14 @@ export class SurvivalHunterSimUI extends IndividualSimUI { - new ReforgeOptimizer(this); + new ReforgeOptimizer(this, { + getEPDefaults: (player: Player) => { + if (player.getGear().getItemSetCount('Lightning-Charged Battlegear') >= 4) { + return Presets.P1_EP_PRESET.epWeights; + } + return Presets.P2_EP_PRESET.epWeights; + }, + }); }); } }