did 2.3.9 break cost feature?

Topics: Rawr.Base, Rawr.Base.Items, Rawr.Base.Optimizer
Feb 14, 2010 at 9:33 AM

I don't know if it is only for 2 specific items or across the board, but Rawr refuses to pick Circle of Ossus or Volde's Back when optimizing using their EoF cost.

My mage collected 60 EoFs.  Using 2.3.8, Rawr correctly identified Circle of Ossus as my best use for 60 emblems.  Before making the purchase, I wanted to double check it was still the correct upgrade.  I found that 2.3.9 was released.  I downloaded and set up the new version, reset the item costs, loaded the frost emblem costs and ran the optimizer with the criteria of cost ≤ 60.  It showed no change when complete.  It did not show the Circle (60 eof) or Volde's (50 eof) both of which do give upgrades in the optimizer if they are simply marked as available.  I even tried running the optimizer with cost ≤ 1000.  It gave me a 4pc Bloodmage set (the new tier only pays to break the current 4pc bonus at the 4pc point for new) but still neither the waist or the back, both of which are upgrades with the new 4pc equipped as well.  I removed 2.3.9 and went back to 2.3.8 and the cost optimization worked again.  I then removed 2.3.8 and retried 2.3.9.  Still no go.  I tried refreshing the item data even though that made no sense since it picks correctly if the item is marked available.  I checked to make sure the costs were correct..  I have no idea of anything I could be doing wrong.  The exact same procedure works in 2.3.8 and doesn't in 2.3.9.  Ideas?

Developer
Feb 14, 2010 at 11:11 AM

After getting the new version, did you re-load the emblem of frost filter from the menu?

Feb 14, 2010 at 6:54 PM

I'm not sure what you are asking.  Yes, after getting the new version, I did reset the item costs, to make sure they were clean, and loaded the frost emblem costs from the menu.  And, yes, I did make sure the frost emblem filter was checked (only filters unchecked are the disable filters).  As I said, when I set the criteria as essentially saying give me anything I can buy with eofs that is an upgrade (cost ≤ 1000), it does give me the 4pc Bloodmage set but still not the waist or back.  Even after marking the 4pc set as if I have it, using cost ≤ 1000 will not give me either.  Yet, marking the waist and back as available, the optimizer does pick both.  Also, thoroughness is set to max.  Although I don't know why it would do so, it feels like the cost feature of the optimizer was changed to only look at set pieces.

Feb 15, 2010 at 4:59 PM

Did you double check to make sure that the waist/back still have a cost associated with them?  To do this, right click on the item, select Edit.  You should see a "Cost" box near the bottom, which should be set to 60.

Feb 15, 2010 at 9:02 PM

Yes.  I've even re-entered the cost in the box for each of them and rerun it.  No go.  Hmm, let me try one more thing...

I tried clearing all costs and setting those two items to one each and then used cost ≤ 2 to see if it just did not like those numbers for some reason.  That made no difference, still not finding them.  Then, staring at the item data, I found the problem!  Neither of the items had any class requirements checked, rightfully so.  When I check mage as a class requirement, it picks them up.  As a reminder, 2.3.8 correctly found the pieces with no class requirements checked.  Therefore, something was changed in 2.3.9 to make the cost optimizer only consider items with the given class as a requirement.

 

Developer
Feb 15, 2010 at 9:07 PM

I specifically coded it that if there was no class requirement listed it would ignore the class requirement check...

Feb 15, 2010 at 9:18 PM

And that appears to have broken in 2.3.9.  With no class requirement checked, it does not pick up the item but as soon as one is checked (mage in this case) it does.  It worked correctly in 2.3.8.

Developer
Feb 15, 2010 at 9:18 PM

Crap... I see where i went wrong. I didn't account for items with no class requirement properly

if (cost > 0 && (item.reqclasses != null && item.reqclasses.contains(char.class)))

is what i had and we needed

if (cost > 0 && (item.reqclasses == null || (item.reqclasses != null && item.reqclasses.contains(char.class))))

Feb 15, 2010 at 11:29 PM

Cool beans, thanks for looking at it again.