Skip to content

Commit ceb6b53

Browse files
committed
Remove preferHitOverExpertise option, auto-detect caster specs
- Removed preferHitOverExpertise boolean parameter from ReforgeOptimizer - Replaced with automatic caster spec detection - Casters (Mage, Warlock, Priest, Balance/Resto Druid, Ele/Resto Shaman, Holy Paladin, Mistweaver Monk) now automatically prefer Hit over Expertise - Removed preferHitOverExpertise: true from all mage spec UIs
1 parent 7b44a15 commit ceb6b53

File tree

4 files changed

+13
-11
lines changed

4 files changed

+13
-11
lines changed

ui/core/components/suggest_reforges_action.tsx

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,6 @@ export type ReforgeOptimizerOptions = {
108108
// Sets the default stat to be the highest for relative stat cap calculations
109109
// Defaults to Any
110110
defaultRelativeStatCap?: Stat | null;
111-
// For casters: prefer Hit Rating over Expertise Rating
112-
// This filters out Expertise reforges when Hit reforges are available for the same item
113-
preferHitOverExpertise?: boolean;
114111
};
115112

116113
// Used to force a particular proc from trinkets like Matrix Restabilizer and Apparatus of Khaz'goroth.
@@ -248,7 +245,6 @@ export class ReforgeOptimizer {
248245
protected statTooltips: StatTooltipContent = {};
249246
protected additionalSoftCapTooltipInformation: StatTooltipContent = {};
250247
protected statSelectionPresets: ReforgeOptimizerOptions['statSelectionPresets'];
251-
protected preferHitOverExpertise: boolean;
252248
protected includeGems = false;
253249
protected includeEOTBPGemSocket = false;
254250
protected freezeItemSlots = false;
@@ -295,7 +291,6 @@ export class ReforgeOptimizer {
295291
this._statCaps = this.defaults.statCaps || new Stats();
296292
this.enableBreakpointLimits = !!options?.enableBreakpointLimits;
297293
this.relativeStatCapStat = options?.defaultRelativeStatCap ?? -1;
298-
this.preferHitOverExpertise = options?.preferHitOverExpertise ?? false;
299294

300295
// Pre-warm the worker pool
301296
getReforgeWorkerPool().warmUp();
@@ -1364,11 +1359,21 @@ export class ReforgeOptimizer {
13641359

13651360
// For casters: prefer Hit over Expertise
13661361
// If the item doesn't have Hit or Expertise natively, remove Expertise as a reforge option
1367-
if (this.preferHitOverExpertise && reforgeData.toStat === Stat.StatExpertiseRating) {
1368-
const itemStats = scaledItem.calcStats(slot);
1362+
const isCaster = this.playerClass === Class.ClassMage ||
1363+
this.playerClass === Class.ClassWarlock ||
1364+
this.playerClass === Class.ClassPriest ||
1365+
this.player.getSpec() === Spec.SpecBalanceDruid ||
1366+
this.player.getSpec() === Spec.SpecRestorationDruid ||
1367+
this.player.getSpec() === Spec.SpecElementalShaman ||
1368+
this.player.getSpec() === Spec.SpecRestorationShaman ||
1369+
this.player.getSpec() === Spec.SpecHolyPaladin ||
1370+
this.player.getSpec() === Spec.SpecMistweaverMonk;
1371+
1372+
if (isCaster && reforgeData.toStat === Stat.StatExpertiseRating) {
1373+
const itemStats = scaledItem.calcStats();
13691374
const hasNativeHit = itemStats.getStat(Stat.StatHitRating) > 0;
13701375
const hasNativeExpertise = itemStats.getStat(Stat.StatExpertiseRating) > 0;
1371-
1376+
13721377
// If item has neither Hit nor Expertise natively, don't allow reforging to Expertise
13731378
if (!hasNativeHit && !hasNativeExpertise) {
13741379
return false;

ui/mage/arcane/sim.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,6 @@ export class ArcaneMageSimUI extends IndividualSimUI<Spec.SpecArcaneMage> {
172172
this.reforger = new ReforgeOptimizer(this, {
173173
statSelectionPresets: statSelectionPresets,
174174
enableBreakpointLimits: true,
175-
preferHitOverExpertise: true,
176175
getEPDefaults: player => {
177176
const avgIlvl = player.getGear().getAverageItemLevel(false);
178177
if (avgIlvl >= 525) {

ui/mage/fire/sim.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,6 @@ export class FireMageSimUI extends IndividualSimUI<Spec.SpecFireMage> {
309309
this.reforger = new ReforgeOptimizer(this, {
310310
statSelectionPresets: statSelectionPresets,
311311
enableBreakpointLimits: true,
312-
preferHitOverExpertise: true,
313312
// updateSoftCaps: softCaps => {
314313
// const raidBuffs = player.getRaid()?.getBuffs();
315314
// const hasBL = !!raidBuffs?.bloodlust;

ui/mage/frost/sim.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,6 @@ export class FrostMageSimUI extends IndividualSimUI<Spec.SpecFrostMage> {
188188
this.reforger = new ReforgeOptimizer(this, {
189189
statSelectionPresets: [MAGE_BREAKPOINTS],
190190
enableBreakpointLimits: true,
191-
preferHitOverExpertise: true,
192191
getEPDefaults: player => {
193192
const avgIlvl = player.getGear().getAverageItemLevel(false);
194193
if (avgIlvl >= 517) {

0 commit comments

Comments
 (0)