Here is a little bit of information about the reforger:
Hit/Exp Target: This is the "effective" lower bound that reforging is used to satisfy both Hit and Exp constraints. It was designed as a lower bound since Feral/DoC should not be below the 7.5% cap. It will automatically adjust this number if your gear, even under the best possible arrangement, cannot get your hit and/exp near the target. So for all intents and purposes, I'd leave this at 2550, or something really close, like 2545+.
Range: this is how much extra Hit and/or Exp it will accept as a possible partial solution that's worth looking into. Right now, the typical Hit/Exp space is somewhere between 1 and 16 billion permutations. With range at 5, you might find 100 candidates, at 50, you might find 40000, at 500, you might find 2 million.
In phase 1 of the reforger, I'm finding all possible arrangements of Hit/Exp that meet the above criteria. Then I sort those solutions from Best to Worst, based on how far over the Target they are, and start looking for 1:1:1 solutions.
The next phase of the reforger was suggested by aggixx. For a given, Hit/Exp solution, like "Hit = 2551 and Exp = 2550", I find all possible combinations that match this setup. Then I find all possible arrangements of Mastery and then compute OneThird = (MaxTotalSecondary - Hit(2551) - Exp(2550)) / 3 + 1. I look through all Mastery permutations and find those whose sum is >= OneThird and less than OneThird + Fluff (where fluff is like 400 or so). This is phase 2.
Now that I've shrunk maybe 0.5-10 million permutations down to about 1-128, I find all possible permutations where "Hit = 2551, Exp = 2550, and Mastery = 7000", and maybe there is only a few. For phase 3, I compute the resulting Crit and Haste, and check to see if: "Mastery + HasteGap >= Haste" and "Mastery + CritGap >= Crit" and possible if "Crit > Haste" (if that checkbox is checked).
If all the criteria is met, I add it to a heap of solutions, sorted by the score "M+2*(H+C)", and keep the best 400.
Once I've exhausted the entire space, I take the best set of solutions, and remove any "effective duplicates" same stats, different permutations. Then voila, you have the best possible list of reforging, that will be same if you run the algorithm again (there is no randomness.)
- I'd keep the Range small, like 50, and/or cancel the reforger during the second stage part way through (if it's taking too long with a large Range setting.)
- I've only tested this on modern hardware with 8+ cores, so I'm unsure what it feels like on 2-ish.
- Haste/Crit gap is really only for potential trinkets that have Crit or Haste procs (like Talisman) but the Haste Gap you'd need would be like 2x typical proc, which is a fuckton: ~3.5K.
The monk gemmer considers the following Gem id's (I have the agility ones commented out for now):
Code: Select all
new Pair(gems_yw, api.loadGems_toArray(76697, 76699, 76700)),
new Pair(gems_oj, api.loadGems_toArray(76667, 76659, 76671)), //, 76670, 76666, 76658)),
new Pair(gems_gr, api.loadGems_toArray(76642, 76643, 76641))
There is a checkbox that I forgot to make visible that changes how it gems. Right now, it will consider any colored socket (Red, Yellow, Blue, Prismatic) that doesn't contain a gem with a profession requirement. However, if for example, you have a double blue socket, in which you placed two yellows (and broke the bonus), right now, the reforger will try to put two greens in those sockets. The checkbox that will be in the next update, will retain your existing gem colors.
I also made the assumption that prismatic should be yellow. If people are reporting that it isn't find good enough solutions, I can relax this such that all gems are tried in prismatic sockets.
Freezing a socket will prevent the gems from changing too. Enchants will still respect the checkboxes.
If you have tailor back enchant, I'd recommend turning off [x] Enchant Back, as it only considers Hit/Crit.
I can add a [x] Enchant Boot check (although it seems like a bad trade since it's 1 Agility : 1 Mastery) if anyone is interested.