@@ -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 ;
0 commit comments